diff --git a/Chapter 1/bank_terminal/build/web/bank_terminal_s5.css b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.css
new file mode 100644
index 0000000..1a4d4c0
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.css
@@ -0,0 +1,35 @@
+body {
+ background-color: #F8F8F8;
+ font-family: 'Open Sans', sans-serif;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.2em;
+ margin: 15px;
+ padding: 20px;
+}
+
+form {
+ background: #9cbc2c;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ padding: 20px;
+ width: 400px;
+}
+
+h1, p {
+ color: #333;
+}
+
+.auto-style1 {
+ width: 25%;
+ border: 1px solid #0000FF;
+}
+
+.auto-style2 {
+ width: 107px;
+ }
+
+.btns {
+ width: 127px;
+}
\ No newline at end of file
diff --git a/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart
new file mode 100644
index 0000000..630c00c
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart
@@ -0,0 +1,100 @@
+import 'dart:html';
+import 'package:bank_terminal_s5/bank_terminal.dart';
+
+LabelElement owner, balance, error;
+InputElement number, amount;
+ButtonElement btn_other, btn_deposit, btn_withdrawal, btn_interest;
+BankAccount bac;
+
+void main() {
+ bind_elements();
+ attach_event_handlers();
+ disable_transactions(true);
+}
+
+bind_elements() {
+ owner = querySelector('#owner');
+ balance = querySelector('#balance');
+ number = querySelector('#number');
+ btn_other = querySelector('#btn_other');
+ amount = querySelector('#amount');
+ btn_deposit = querySelector('#btn_deposit');
+ btn_interest = querySelector('#btn_interest');
+ error = querySelector('#error');
+}
+
+attach_event_handlers() {
+ number.onInput.listen(readData);
+ amount.onChange.listen(nonNegative);
+ amount.onBlur.listen(nonNegative);
+ btn_other.onClick.listen(clearData);
+ btn_deposit.onClick.listen(changeBalance);
+ btn_interest.onClick.listen(interest);
+}
+
+readData(Event e) {
+ // show data:
+ var key = 'Bankaccount:${number.value}';
+ if (!window.localStorage.containsKey(key)) {
+ error.innerHtml = "Unknown bank account!";
+ number.focus();
+ return;
+ }
+ error.innerHtml = "";
+ // read data from local storage:
+ String acc_json = window.localStorage[key];
+ bac = new BankAccount.fromJsonString(acc_json);
+ // show owner and balance:
+ owner.innerHtml = "${bac.owner.name} ";
+ balance.innerHtml = "${bac.balance.toStringAsFixed(2)} ";
+ // enable transactions part:
+ disable_transactions(false);
+}
+
+clearData(Event e) => clear();
+
+clear() {
+ number.value = "";
+ owner.innerHtml = "----------";
+ balance.innerHtml = "0.0";
+ number.focus();
+ disable_transactions(true);
+}
+
+disable_transactions(bool off) {
+ amount.disabled = off;
+ btn_deposit.disabled = off;
+ btn_interest.disabled = off;
+}
+
+nonNegative(Event e) {
+ num input;
+ try {
+ input = double.parse(amount.value);
+ } on FormatException catch(e) {
+ window.alert("This is not a valid amount!");
+ amount.focus();
+ }
+}
+
+changeBalance(Event e) {
+ // read amount:
+ double money_amount = double.parse(amount.value);
+ // call deposit on BankAccount object:
+ if (money_amount >= 0) bac.deposit(money_amount);
+ else bac.withdraw(money_amount);
+ window.localStorage["Bankaccount:${bac.number}"] = bac.toJson();
+ // show new amount:
+ balance.innerHtml = "${bac.balance.toStringAsFixed(2)} ";
+ // disable refresh screen:
+ e.preventDefault();
+ e.stopPropagation();
+}
+
+interest(Event e) {
+ bac.interest();
+ window.localStorage["Bankaccount:${bac.number}"] = bac.toJson();
+ balance.innerHtml = "${bac.balance.toStringAsFixed(2)} ";
+ e.preventDefault();
+ e.stopPropagation();
+}
diff --git a/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.js b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.js
new file mode 100644
index 0000000..91dcaa2
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.js
@@ -0,0 +1,8200 @@
+// Generated by dart2js, the Dart to JavaScript compiler.
+// The code supports the following hooks:
+// dartPrint(message):
+// if this function is defined it is called instead of the Dart [print]
+// method.
+//
+// dartMainRunner(main, args):
+// if this function is defined, the Dart [main] method will not be invoked
+// directly. Instead, a closure that will invoke [main], and its arguments
+// [args] is passed to [dartMainRunner].
+(function($) {
+function dart(){ this.x = 0 }var A = new dart;
+delete A.x;
+var B = new dart;
+delete B.x;
+var C = new dart;
+delete C.x;
+var D = new dart;
+delete D.x;
+var E = new dart;
+delete E.x;
+var F = new dart;
+delete F.x;
+var G = new dart;
+delete G.x;
+var H = new dart;
+delete H.x;
+var J = new dart;
+delete J.x;
+var K = new dart;
+delete K.x;
+var L = new dart;
+delete L.x;
+var M = new dart;
+delete M.x;
+var N = new dart;
+delete N.x;
+var O = new dart;
+delete O.x;
+var P = new dart;
+delete P.x;
+var Q = new dart;
+delete Q.x;
+var R = new dart;
+delete R.x;
+var S = new dart;
+delete S.x;
+var T = new dart;
+delete T.x;
+var U = new dart;
+delete U.x;
+var V = new dart;
+delete V.x;
+var W = new dart;
+delete W.x;
+var X = new dart;
+delete X.x;
+var Y = new dart;
+delete Y.x;
+var Z = new dart;
+delete Z.x;
+function Isolate() {}
+init();
+
+$ = Isolate.$isolateProperties;
+var $$ = {};
+
+// Native classes
+(function (reflectionData) {
+ "use strict";
+ function map(x){x={x:x};delete x.x;return x}
+ function processStatics(descriptor) {
+ for (var property in descriptor) {
+ if (!hasOwnProperty.call(descriptor, property)) continue;
+ if (property === "^") continue;
+ var element = descriptor[property];
+ var firstChar = property.substring(0, 1);
+ var previousProperty;
+ if (firstChar === "+") {
+ mangledGlobalNames[previousProperty] = property.substring(1);
+ var flag = descriptor[property];
+ if (flag > 0) descriptor[previousProperty].$reflectable = flag;
+ if (element && element.length) init.typeInformation[previousProperty] = element;
+ } else if (firstChar === "@") {
+ property = property.substring(1);
+ $[property]["@"] = element;
+ } else if (firstChar === "*") {
+ globalObject[previousProperty].$defaultValues = element;
+ var optionalMethods = descriptor.$methodsWithOptionalArguments;
+ if (!optionalMethods) {
+ descriptor.$methodsWithOptionalArguments = optionalMethods = {}
+ }
+ optionalMethods[property] = previousProperty;
+ } else if (typeof element === "function") {
+ globalObject[previousProperty = property] = element;
+ functions.push(property);
+ init.globalFunctions[property] = element;
+ } else if (element.constructor === Array) {
+ addStubs(globalObject, element, property, true, descriptor, functions);
+ } else {
+ previousProperty = property;
+ var newDesc = {};
+ var previousProp;
+ for (var prop in element) {
+ if (!hasOwnProperty.call(element, prop)) continue;
+ firstChar = prop.substring(0, 1);
+ if (prop === "static") {
+ processStatics(init.statics[property] = element[prop]);
+ } else if (firstChar === "+") {
+ mangledNames[previousProp] = prop.substring(1);
+ var flag = element[prop];
+ if (flag > 0) element[previousProp].$reflectable = flag;
+ } else if (firstChar === "@" && prop !== "@") {
+ newDesc[prop.substring(1)]["@"] = element[prop];
+ } else if (firstChar === "*") {
+ newDesc[previousProp].$defaultValues = element[prop];
+ var optionalMethods = newDesc.$methodsWithOptionalArguments;
+ if (!optionalMethods) {
+ newDesc.$methodsWithOptionalArguments = optionalMethods={}
+ }
+ optionalMethods[prop] = previousProp;
+ } else {
+ var elem = element[prop];
+ if (prop !== "^" && elem != null && elem.constructor === Array && prop !== "<>") {
+ addStubs(newDesc, elem, prop, false, element, []);
+ } else {
+ newDesc[previousProp = prop] = elem;
+ }
+ }
+ }
+ $$[property] = [globalObject, newDesc];
+ classes.push(property);
+ }
+ }
+ }
+ function addStubs(descriptor, array, name, isStatic, originalDescriptor, functions) {
+ var f, funcs = [originalDescriptor[name] = descriptor[name] = f = array[0]];
+ f.$stubName = name;
+ functions.push(name);
+ for (var index = 0; index < array.length; index += 2) {
+ f = array[index + 1];
+ if (typeof f != "function") break;
+ f.$stubName = array[index + 2];
+ funcs.push(f);
+ if (f.$stubName) {
+ originalDescriptor[f.$stubName] = descriptor[f.$stubName] = f;
+ functions.push(f.$stubName);
+ }
+ }
+ for (var i = 0; i < funcs.length; index++, i++) {
+ funcs[i].$callName = array[index + 1];
+ }
+ var getterStubName = array[++index];
+ array = array.slice(++index);
+ var requiredParameterInfo = array[0];
+ var requiredParameterCount = requiredParameterInfo >> 1;
+ var isAccessor = (requiredParameterInfo & 1) === 1;
+ var isSetter = requiredParameterInfo === 3;
+ var isGetter = requiredParameterInfo === 1;
+ var optionalParameterInfo = array[1];
+ var optionalParameterCount = optionalParameterInfo >> 1;
+ var optionalParametersAreNamed = (optionalParameterInfo & 1) === 1;
+ var isIntercepted = requiredParameterCount + optionalParameterCount != funcs[0].length;
+ var functionTypeIndex = array[2];
+ var unmangledNameIndex = 2 * optionalParameterCount + requiredParameterCount + 3;
+ var isReflectable = array.length > unmangledNameIndex;
+
+ if (getterStubName) {
+ f = tearOff(funcs, array, isStatic, name, isIntercepted);
+ f.getterStub = true;
+ if (isStatic) init.globalFunctions[name] = f;
+ originalDescriptor[getterStubName] = descriptor[getterStubName] = f;
+ funcs.push(f);
+ if (getterStubName) functions.push(getterStubName);
+ f.$stubName = getterStubName;
+ f.$callName = null;
+ if (isIntercepted) init.interceptedNames[getterStubName] = true;
+ }
+ if (isReflectable) {
+ for (var i = 0; i < funcs.length; i++) {
+ funcs[i].$reflectable = 1;
+ funcs[i].$reflectionInfo = array;
+ }
+ var mangledNames = isStatic ? init.mangledGlobalNames : init.mangledNames;
+ var unmangledName = array[unmangledNameIndex];
+ var reflectionName = unmangledName;
+ if (getterStubName) mangledNames[getterStubName] = reflectionName;
+ if (isSetter) {
+ reflectionName += "=";
+ } else if (!isGetter) {
+ reflectionName += ":" + requiredParameterCount + ":" + optionalParameterCount;
+ }
+ mangledNames[name] = reflectionName;
+ funcs[0].$reflectionName = reflectionName;
+ funcs[0].$metadataIndex = unmangledNameIndex + 1;
+ if (optionalParameterCount) descriptor[unmangledName + "*"] = funcs[0];
+ }
+ }
+ function tearOffGetterNoCsp(funcs, reflectionInfo, name, isIntercepted) {
+ return isIntercepted
+ ? new Function("funcs", "reflectionInfo", "name", "H", "c",
+ "return function tearOff_" + name + (functionCounter++)+ "(x) {" +
+ "if (c === null) c = H.closureFromTearOff(" +
+ "this, funcs, reflectionInfo, false, [x], name);" +
+ "return new c(this, funcs[0], x, name);" +
+ "}")(funcs, reflectionInfo, name, H, null)
+ : new Function("funcs", "reflectionInfo", "name", "H", "c",
+ "return function tearOff_" + name + (functionCounter++)+ "() {" +
+ "if (c === null) c = H.closureFromTearOff(" +
+ "this, funcs, reflectionInfo, false, [], name);" +
+ "return new c(this, funcs[0], null, name);" +
+ "}")(funcs, reflectionInfo, name, H, null)
+ }
+ function tearOffGetterCsp(funcs, reflectionInfo, name, isIntercepted) {
+ var cache = null;
+ return isIntercepted
+ ? function(x) {
+ if (cache === null) cache = H.closureFromTearOff(this, funcs, reflectionInfo, false, [x], name);
+ return new cache(this, funcs[0], x, name)
+ }
+ : function() {
+ if (cache === null) cache = H.closureFromTearOff(this, funcs, reflectionInfo, false, [], name);
+ return new cache(this, funcs[0], null, name)
+ }
+ }
+ function tearOff(funcs, reflectionInfo, isStatic, name, isIntercepted) {
+ var cache;
+ return isStatic
+ ? function() {
+ if (cache === void 0) cache = H.closureFromTearOff(this, funcs, reflectionInfo, true, [], name).prototype;
+ return cache;
+ }
+ : tearOffGetter(funcs, reflectionInfo, name, isIntercepted);
+ }
+ var functionCounter = 0;
+ var tearOffGetter = (typeof dart_precompiled == "function")
+ ? tearOffGetterCsp : tearOffGetterNoCsp;
+ if (!init.libraries) init.libraries = [];
+ if (!init.mangledNames) init.mangledNames = map();
+ if (!init.mangledGlobalNames) init.mangledGlobalNames = map();
+ if (!init.statics) init.statics = map();
+ if (!init.typeInformation) init.typeInformation = map();
+ if (!init.globalFunctions) init.globalFunctions = map();
+ if (!init.interceptedNames) init.interceptedNames = map();
+ var libraries = init.libraries;
+ var mangledNames = init.mangledNames;
+ var mangledGlobalNames = init.mangledGlobalNames;
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ var length = reflectionData.length;
+ for (var i = 0; i < length; i++) {
+ var data = reflectionData[i];
+ var name = data[0];
+ var uri = data[1];
+ var metadata = data[2];
+ var globalObject = data[3];
+ var descriptor = data[4];
+ var isRoot = !!data[5];
+ var fields = descriptor && descriptor["^"];
+ var classes = [];
+ var functions = [];
+ processStatics(descriptor);
+ libraries.push([name, uri, classes, functions, metadata, fields, isRoot,
+ globalObject]);
+ }
+})
+([
+["_foreign_helper", "dart:_foreign_helper", , H, {
+ "^": "",
+ JS_CONST: {
+ "^": "Object;code"
+ }
+}],
+["_interceptors", "dart:_interceptors", , J, {
+ "^": "",
+ getInterceptor: function(object) {
+ return void 0;
+ },
+ makeDispatchRecord: function(interceptor, proto, extension, indexability) {
+ return {i: interceptor, p: proto, e: extension, x: indexability};
+ },
+ getNativeInterceptor: function(object) {
+ var record, proto, objectProto, interceptor;
+ record = object[init.dispatchPropertyName];
+ if (record == null)
+ if ($.initNativeDispatchFlag == null) {
+ H.initNativeDispatch();
+ record = object[init.dispatchPropertyName];
+ }
+ if (record != null) {
+ proto = record.p;
+ if (false === proto)
+ return record.i;
+ if (true === proto)
+ return object;
+ objectProto = Object.getPrototypeOf(object);
+ if (proto === objectProto)
+ return record.i;
+ if (record.e === objectProto)
+ throw H.wrapException(P.UnimplementedError$("Return interceptor for " + H.S(proto(object, record))));
+ }
+ interceptor = H.lookupAndCacheInterceptor(object);
+ if (interceptor == null) {
+ proto = Object.getPrototypeOf(object);
+ if (proto == null || proto === Object.prototype)
+ return C.PlainJavaScriptObject_methods;
+ else
+ return C.UnknownJavaScriptObject_methods;
+ }
+ return interceptor;
+ },
+ Interceptor: {
+ "^": "Object;",
+ $eq: function(receiver, other) {
+ return receiver === other;
+ },
+ get$hashCode: function(receiver) {
+ return H.Primitives_objectHashCode(receiver);
+ },
+ toString$0: function(receiver) {
+ return H.Primitives_objectToString(receiver);
+ },
+ "%": "DOMError|DOMImplementation|FileError|MediaError|MediaKeyError|Navigator|NavigatorUserMediaError|PositionError|SQLError|SVGAnimatedNumberList"
+ },
+ JSBool: {
+ "^": "bool/Interceptor;",
+ toString$0: function(receiver) {
+ return String(receiver);
+ },
+ get$hashCode: function(receiver) {
+ return receiver ? 519018 : 218159;
+ },
+ $isbool: true
+ },
+ JSNull: {
+ "^": "Null/Interceptor;",
+ $eq: function(receiver, other) {
+ return null == other;
+ },
+ toString$0: function(receiver) {
+ return "null";
+ },
+ get$hashCode: function(receiver) {
+ return 0;
+ }
+ },
+ JavaScriptObject: {
+ "^": "Interceptor;",
+ get$hashCode: function(_) {
+ return 0;
+ }
+ },
+ PlainJavaScriptObject: {
+ "^": "JavaScriptObject;"
+ },
+ UnknownJavaScriptObject: {
+ "^": "JavaScriptObject;"
+ },
+ JSArray: {
+ "^": "List/Interceptor;",
+ remove$1: function(receiver, element) {
+ var i;
+ if (!!receiver.fixed$length)
+ H.throwExpression(P.UnsupportedError$("remove"));
+ for (i = 0; i < receiver.length; ++i)
+ if (J.$eq(receiver[i], element)) {
+ receiver.splice(i, 1);
+ return true;
+ }
+ return false;
+ },
+ forEach$1: function(receiver, f) {
+ return H.IterableMixinWorkaround_forEach(receiver, f);
+ },
+ elementAt$1: function(receiver, index) {
+ if (index < 0 || index >= receiver.length)
+ return H.ioore(receiver, index);
+ return receiver[index];
+ },
+ contains$1: function(receiver, other) {
+ var i;
+ for (i = 0; i < receiver.length; ++i)
+ if (J.$eq(receiver[i], other))
+ return true;
+ return false;
+ },
+ get$isEmpty: function(receiver) {
+ return receiver.length === 0;
+ },
+ toString$0: function(receiver) {
+ return H.IterableMixinWorkaround_toStringIterable(receiver, "[", "]");
+ },
+ toList$1$growable: function(receiver, growable) {
+ var t1;
+ if (growable)
+ return H.setRuntimeTypeInfo(receiver.slice(), [H.getTypeArgumentByIndex(receiver, 0)]);
+ else {
+ t1 = H.setRuntimeTypeInfo(receiver.slice(), [H.getTypeArgumentByIndex(receiver, 0)]);
+ t1.fixed$length = init;
+ return t1;
+ }
+ },
+ toList$0: function($receiver) {
+ return this.toList$1$growable($receiver, true);
+ },
+ get$iterator: function(receiver) {
+ return new H.ListIterator(receiver, receiver.length, 0, null);
+ },
+ get$hashCode: function(receiver) {
+ return H.Primitives_objectHashCode(receiver);
+ },
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ set$length: function(receiver, newLength) {
+ if (newLength < 0)
+ throw H.wrapException(P.RangeError$value(newLength));
+ if (!!receiver.fixed$length)
+ H.throwExpression(P.UnsupportedError$("set length"));
+ receiver.length = newLength;
+ },
+ $index: function(receiver, index) {
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ throw H.wrapException(new P.ArgumentError(index));
+ if (index >= receiver.length || index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ if (!!receiver.immutable$list)
+ H.throwExpression(P.UnsupportedError$("indexed set"));
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ throw H.wrapException(new P.ArgumentError(index));
+ if (index >= receiver.length || index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ receiver[index] = value;
+ },
+ $isList: true,
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true,
+ static: {JSArray_JSArray$fixed: function($length, $E) {
+ var t1;
+ if (typeof $length !== "number" || Math.floor($length) !== $length || $length < 0)
+ throw H.wrapException(P.ArgumentError$("Length must be a non-negative integer: " + H.S($length)));
+ t1 = H.setRuntimeTypeInfo(new Array($length), [$E]);
+ t1.fixed$length = init;
+ return t1;
+ }}
+ },
+ JSNumber: {
+ "^": "num/Interceptor;",
+ get$isFinite: function(receiver) {
+ return isFinite(receiver);
+ },
+ remainder$1: function(receiver, b) {
+ return receiver % b;
+ },
+ toInt$0: function(receiver) {
+ var t1;
+ if (receiver >= -2147483648 && receiver <= 2147483647)
+ return receiver | 0;
+ if (isFinite(receiver)) {
+ t1 = receiver < 0 ? Math.ceil(receiver) : Math.floor(receiver);
+ return t1 + 0;
+ }
+ throw H.wrapException(P.UnsupportedError$('' + receiver));
+ },
+ round$0: function(receiver) {
+ return this.toInt$0(this.roundToDouble$0(receiver));
+ },
+ roundToDouble$0: function(receiver) {
+ if (receiver < 0)
+ return -Math.round(-receiver);
+ else
+ return Math.round(receiver);
+ },
+ toStringAsFixed$1: function(receiver, fractionDigits) {
+ var result, t1;
+ if (fractionDigits > 20)
+ throw H.wrapException(P.RangeError$(fractionDigits));
+ result = receiver.toFixed(fractionDigits);
+ if (receiver === 0)
+ t1 = 1 / receiver < 0;
+ else
+ t1 = false;
+ if (t1)
+ return "-" + result;
+ return result;
+ },
+ toString$0: function(receiver) {
+ if (receiver === 0 && 1 / receiver < 0)
+ return "-0.0";
+ else
+ return "" + receiver;
+ },
+ get$hashCode: function(receiver) {
+ return receiver & 0x1FFFFFFF;
+ },
+ $add: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver + other;
+ },
+ $sub: function(receiver, other) {
+ return receiver - other;
+ },
+ $mul: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver * other;
+ },
+ _tdivFast$1: function(receiver, other) {
+ return (receiver | 0) === receiver ? receiver / other | 0 : this.toInt$0(receiver / other);
+ },
+ _shrOtherPositive$1: function(receiver, other) {
+ var t1;
+ if (receiver > 0)
+ t1 = other > 31 ? 0 : receiver >>> other;
+ else {
+ t1 = other > 31 ? 31 : other;
+ t1 = receiver >> t1 >>> 0;
+ }
+ return t1;
+ },
+ $lt: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(P.ArgumentError$(other));
+ return receiver < other;
+ },
+ $le: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver <= other;
+ },
+ $ge: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(P.ArgumentError$(other));
+ return receiver >= other;
+ },
+ $isnum: true,
+ static: {"^": "JSNumber__MIN_INT32,JSNumber__MAX_INT32"}
+ },
+ JSInt: {
+ "^": "int/JSNumber;",
+ $isnum: true,
+ $isint: true
+ },
+ JSDouble: {
+ "^": "double/JSNumber;",
+ $isnum: true
+ },
+ JSString: {
+ "^": "String/Interceptor;",
+ codeUnitAt$1: function(receiver, index) {
+ if (index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ if (index >= receiver.length)
+ throw H.wrapException(P.RangeError$value(index));
+ return receiver.charCodeAt(index);
+ },
+ $add: function(receiver, other) {
+ if (typeof other !== "string")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver + other;
+ },
+ startsWith$2: function(receiver, pattern, index) {
+ var endIndex;
+ if (index > receiver.length)
+ throw H.wrapException(P.RangeError$range(index, 0, receiver.length));
+ endIndex = index + pattern.length;
+ if (endIndex > receiver.length)
+ return false;
+ return pattern === receiver.substring(index, endIndex);
+ },
+ startsWith$1: function($receiver, pattern) {
+ return this.startsWith$2($receiver, pattern, 0);
+ },
+ substring$2: function(receiver, startIndex, endIndex) {
+ if (endIndex == null)
+ endIndex = receiver.length;
+ if (typeof endIndex !== "number" || Math.floor(endIndex) !== endIndex)
+ H.throwExpression(P.ArgumentError$(endIndex));
+ if (startIndex < 0)
+ throw H.wrapException(P.RangeError$value(startIndex));
+ if (typeof endIndex !== "number")
+ return H.iae(endIndex);
+ if (startIndex > endIndex)
+ throw H.wrapException(P.RangeError$value(startIndex));
+ if (endIndex > receiver.length)
+ throw H.wrapException(P.RangeError$value(endIndex));
+ return receiver.substring(startIndex, endIndex);
+ },
+ substring$1: function($receiver, startIndex) {
+ return this.substring$2($receiver, startIndex, null);
+ },
+ toLowerCase$0: function(receiver) {
+ return receiver.toLowerCase();
+ },
+ trim$0: function(receiver) {
+ var result, endIndex, startIndex, t1, endIndex0;
+ result = receiver.trim();
+ endIndex = result.length;
+ if (endIndex === 0)
+ return result;
+ if (this.codeUnitAt$1(result, 0) === 133) {
+ startIndex = J.JSString__skipLeadingWhitespace(result, 1);
+ if (startIndex === endIndex)
+ return "";
+ } else
+ startIndex = 0;
+ t1 = endIndex - 1;
+ endIndex0 = this.codeUnitAt$1(result, t1) === 133 ? J.JSString__skipTrailingWhitespace(result, t1) : endIndex;
+ if (startIndex === 0 && endIndex0 === endIndex)
+ return result;
+ return result.substring(startIndex, endIndex0);
+ },
+ $mul: function(receiver, times) {
+ var s, result;
+ if (0 >= times)
+ return "";
+ if (times === 1 || receiver.length === 0)
+ return receiver;
+ if (times !== times >>> 0)
+ throw H.wrapException(C.C_OutOfMemoryError);
+ for (s = receiver, result = ""; true;) {
+ if ((times & 1) === 1)
+ result = s + result;
+ times = times >>> 1;
+ if (times === 0)
+ break;
+ s += s;
+ }
+ return result;
+ },
+ get$isEmpty: function(receiver) {
+ return receiver.length === 0;
+ },
+ toString$0: function(receiver) {
+ return receiver;
+ },
+ get$hashCode: function(receiver) {
+ var t1, hash, i;
+ for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {
+ hash = 536870911 & hash + receiver.charCodeAt(i);
+ hash = 536870911 & hash + ((524287 & hash) << 10 >>> 0);
+ hash ^= hash >> 6;
+ }
+ hash = 536870911 & hash + ((67108863 & hash) << 3 >>> 0);
+ hash ^= hash >> 11;
+ return 536870911 & hash + ((16383 & hash) << 15 >>> 0);
+ },
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ throw H.wrapException(new P.ArgumentError(index));
+ if (index >= receiver.length || index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ return receiver[index];
+ },
+ $isString: true,
+ static: {JSString__isWhitespace: function(codeUnit) {
+ if (codeUnit < 256)
+ switch (codeUnit) {
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 32:
+ case 133:
+ case 160:
+ return true;
+ default:
+ return false;
+ }
+ switch (codeUnit) {
+ case 5760:
+ case 6158:
+ case 8192:
+ case 8193:
+ case 8194:
+ case 8195:
+ case 8196:
+ case 8197:
+ case 8198:
+ case 8199:
+ case 8200:
+ case 8201:
+ case 8202:
+ case 8232:
+ case 8233:
+ case 8239:
+ case 8287:
+ case 12288:
+ case 65279:
+ return true;
+ default:
+ return false;
+ }
+ }, JSString__skipLeadingWhitespace: function(string, index) {
+ var t1, codeUnit;
+ for (t1 = string.length; index < t1;) {
+ if (index >= t1)
+ H.throwExpression(P.RangeError$value(index));
+ codeUnit = string.charCodeAt(index);
+ if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
+ break;
+ ++index;
+ }
+ return index;
+ }, JSString__skipTrailingWhitespace: function(string, index) {
+ var t1, index0, codeUnit;
+ for (t1 = string.length; index > 0; index = index0) {
+ index0 = index - 1;
+ if (index0 >= t1)
+ H.throwExpression(P.RangeError$value(index0));
+ codeUnit = string.charCodeAt(index0);
+ if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
+ break;
+ }
+ return index;
+ }}
+ }
+}],
+["_isolate_helper", "dart:_isolate_helper", , H, {
+ "^": "",
+ _callInIsolate: function(isolate, $function) {
+ var result = isolate.eval$1($function);
+ init.globalState.topEventLoop.run$0();
+ return result;
+ },
+ leaveJsAsync: function() {
+ var t1 = init.globalState.topEventLoop;
+ t1._activeJsAsyncCount = t1._activeJsAsyncCount - 1;
+ },
+ startRootIsolate: function(entry, args) {
+ var t1, t2, t3, t4, t5, rootContext;
+ t1 = {};
+ t1.args_0 = args;
+ args = args;
+ t1.args_0 = args;
+ if (args == null) {
+ args = [];
+ t1.args_0 = args;
+ t2 = args;
+ } else
+ t2 = args;
+ if (!J.getInterceptor(t2).$isList)
+ throw H.wrapException(new P.ArgumentError("Arguments to main must be a List: " + H.S(t2)));
+ t2 = new H._Manager(0, 0, 1, null, null, null, null, null, null, null, null, null, entry);
+ t2._Manager$1(entry);
+ init.globalState = t2;
+ if (init.globalState.isWorker === true)
+ return;
+ t2 = init.globalState;
+ t3 = t2.nextIsolateId;
+ t2.nextIsolateId = t3 + 1;
+ t2 = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, H.RawReceivePortImpl);
+ t4 = P.LinkedHashSet_LinkedHashSet(null, null, null, J.JSInt);
+ t5 = new H.RawReceivePortImpl(0, null, false);
+ rootContext = new H._IsolateContext(t3, t2, t4, new Isolate(), t5, P.Capability_Capability(), P.Capability_Capability(), false, [], P.LinkedHashSet_LinkedHashSet(null, null, null, null), null, false);
+ t4.add$1(0, 0);
+ rootContext._addRegistration$2(0, t5);
+ init.globalState.rootContext = rootContext;
+ init.globalState.currentContext = rootContext;
+ t2 = H.getDynamicRuntimeType();
+ t3 = H.buildFunctionType(t2, [t2])._isTest$1(entry);
+ if (t3)
+ rootContext.eval$1(new H.startRootIsolate_closure(t1, entry));
+ else {
+ t2 = H.buildFunctionType(t2, [t2, t2])._isTest$1(entry);
+ if (t2)
+ rootContext.eval$1(new H.startRootIsolate_closure0(t1, entry));
+ else
+ rootContext.eval$1(entry);
+ }
+ init.globalState.topEventLoop.run$0();
+ },
+ IsolateNatives_computeThisScript: function() {
+ var currentScript = init.currentScript;
+ if (currentScript != null)
+ return String(currentScript.src);
+ if (typeof version == "function" && typeof os == "object" && "system" in os)
+ return H.IsolateNatives_computeThisScriptFromTrace();
+ if (typeof version == "function" && typeof system == "function")
+ return thisFilename();
+ if (init.globalState.isWorker === true)
+ return H.IsolateNatives_computeThisScriptFromTrace();
+ return;
+ },
+ IsolateNatives_computeThisScriptFromTrace: function() {
+ var stack, matches;
+ stack = new Error().stack;
+ if (stack == null) {
+ stack = (function() {try { throw new Error() } catch(e) { return e.stack }})();
+ if (stack == null)
+ throw H.wrapException(P.UnsupportedError$("No stack trace"));
+ }
+ matches = stack.match(new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "m"));
+ if (matches != null)
+ return matches[1];
+ matches = stack.match(new RegExp("^[^@]*@(.*):[0-9]*$", "m"));
+ if (matches != null)
+ return matches[1];
+ throw H.wrapException(P.UnsupportedError$("Cannot extract URI from \"" + H.S(stack) + "\""));
+ },
+ IsolateNatives__processWorkerMessage: function(sender, e) {
+ var msg, t1, functionName, entryPoint, args, message, isSpawnUri, startPaused, replyTo, t2, t3, t4, context, uri, t5, t6, worker, t7, workerId;
+ msg = H._deserializeMessage(e.data);
+ t1 = J.getInterceptor$asx(msg);
+ switch (t1.$index(msg, "command")) {
+ case "start":
+ init.globalState.currentManagerId = t1.$index(msg, "id");
+ functionName = t1.$index(msg, "functionName");
+ entryPoint = functionName == null ? init.globalState.entry : init.globalFunctions[functionName]();
+ args = t1.$index(msg, "args");
+ message = H._deserializeMessage(t1.$index(msg, "msg"));
+ isSpawnUri = t1.$index(msg, "isSpawnUri");
+ startPaused = t1.$index(msg, "startPaused");
+ replyTo = H._deserializeMessage(t1.$index(msg, "replyTo"));
+ t1 = init.globalState;
+ t2 = t1.nextIsolateId;
+ t1.nextIsolateId = t2 + 1;
+ t1 = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, H.RawReceivePortImpl);
+ t3 = P.LinkedHashSet_LinkedHashSet(null, null, null, J.JSInt);
+ t4 = new H.RawReceivePortImpl(0, null, false);
+ context = new H._IsolateContext(t2, t1, t3, new Isolate(), t4, P.Capability_Capability(), P.Capability_Capability(), false, [], P.LinkedHashSet_LinkedHashSet(null, null, null, null), null, false);
+ t3.add$1(0, 0);
+ context._addRegistration$2(0, t4);
+ init.globalState.topEventLoop.events._add$1(new H._IsolateEvent(context, new H.IsolateNatives__processWorkerMessage_closure(entryPoint, args, message, isSpawnUri, startPaused, replyTo), "worker-start"));
+ init.globalState.currentContext = context;
+ init.globalState.topEventLoop.run$0();
+ break;
+ case "spawn-worker":
+ t2 = t1.$index(msg, "functionName");
+ uri = t1.$index(msg, "uri");
+ t3 = t1.$index(msg, "args");
+ t4 = t1.$index(msg, "msg");
+ t5 = t1.$index(msg, "isSpawnUri");
+ t6 = t1.$index(msg, "startPaused");
+ t1 = t1.$index(msg, "replyPort");
+ if (uri == null)
+ uri = $.get$IsolateNatives_thisScript();
+ worker = new Worker(uri);
+ worker.onmessage = function(e) { H.IsolateNatives__processWorkerMessage(worker, e); };
+ t7 = init.globalState;
+ workerId = t7.nextManagerId;
+ t7.nextManagerId = workerId + 1;
+ $.get$IsolateNatives_workerIds().$indexSet(0, worker, workerId);
+ init.globalState.managers.$indexSet(0, workerId, worker);
+ worker.postMessage(H._serializeMessage(H.fillLiteralMap(["command", "start", "id", workerId, "replyTo", H._serializeMessage(t1), "args", t3, "msg", H._serializeMessage(t4), "isSpawnUri", t5, "startPaused", t6, "functionName", t2], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null))));
+ break;
+ case "message":
+ if (t1.$index(msg, "port") != null)
+ J.send$1$x(t1.$index(msg, "port"), t1.$index(msg, "msg"));
+ init.globalState.topEventLoop.run$0();
+ break;
+ case "close":
+ init.globalState.managers.remove$1(0, $.get$IsolateNatives_workerIds().$index(0, sender));
+ sender.terminate();
+ init.globalState.topEventLoop.run$0();
+ break;
+ case "log":
+ H.IsolateNatives__log(t1.$index(msg, "msg"));
+ break;
+ case "print":
+ if (init.globalState.isWorker === true) {
+ t1 = init.globalState.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "print", "msg", msg], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ } else
+ P.print(t1.$index(msg, "msg"));
+ break;
+ case "error":
+ throw H.wrapException(t1.$index(msg, "msg"));
+ }
+ },
+ IsolateNatives__log: function(msg) {
+ var trace, t1, t2, exception;
+ if (init.globalState.isWorker === true) {
+ t1 = init.globalState.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "log", "msg", msg], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ } else
+ try {
+ $.get$globalThis().console.log(msg);
+ } catch (exception) {
+ H.unwrapException(exception);
+ trace = new H._StackTrace(exception, null);
+ throw H.wrapException(P.Exception_Exception(trace));
+ }
+
+ },
+ IsolateNatives__startIsolate: function(topLevel, args, message, isSpawnUri, startPaused, replyTo) {
+ var context, t1, t2, t3;
+ context = init.globalState.currentContext;
+ t1 = context.id;
+ $.Primitives_mirrorFunctionCacheName = $.Primitives_mirrorFunctionCacheName + ("_" + t1);
+ $.Primitives_mirrorInvokeCacheName = $.Primitives_mirrorInvokeCacheName + ("_" + t1);
+ t1 = context.controlPort;
+ t2 = init.globalState.currentContext.id;
+ t3 = context.pauseCapability;
+ J.send$1$x(replyTo, ["spawned", new H._NativeJsSendPort(t1, t2), t3, context.terminateCapability]);
+ t2 = new H.IsolateNatives__startIsolate_runStartFunction(topLevel, args, message, isSpawnUri);
+ if (startPaused === true) {
+ context.addPause$2(t3, t3);
+ init.globalState.topEventLoop.events._add$1(new H._IsolateEvent(context, t2, "start isolate"));
+ } else
+ t2.call$0();
+ },
+ _serializeMessage: function(message) {
+ var t1;
+ if (init.globalState.supportsWorkers === true) {
+ t1 = new H._JsSerializer(0, new H._MessageTraverserVisitedMap());
+ t1._visited = new H._JsVisitedMap(null);
+ return t1.traverse$1(message);
+ } else {
+ t1 = new H._JsCopier(new H._MessageTraverserVisitedMap());
+ t1._visited = new H._JsVisitedMap(null);
+ return t1.traverse$1(message);
+ }
+ },
+ _deserializeMessage: function(message) {
+ if (init.globalState.supportsWorkers === true)
+ return new H._JsDeserializer(null).deserialize$1(message);
+ else
+ return message;
+ },
+ _MessageTraverser_isPrimitive: function(x) {
+ return x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean";
+ },
+ _Deserializer_isPrimitive: function(x) {
+ return x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean";
+ },
+ startRootIsolate_closure: {
+ "^": "Closure:9;box_0,entry_1",
+ call$0: function() {
+ this.entry_1.call$1(this.box_0.args_0);
+ }
+ },
+ startRootIsolate_closure0: {
+ "^": "Closure:9;box_0,entry_2",
+ call$0: function() {
+ this.entry_2.call$2(this.box_0.args_0, null);
+ }
+ },
+ _Manager: {
+ "^": "Object;nextIsolateId,currentManagerId,nextManagerId,currentContext,rootContext,topEventLoop,fromCommandLine,isWorker,supportsWorkers,isolates,mainManager,managers,entry",
+ _Manager$1: function(entry) {
+ var t1, t2, t3, $function;
+ t1 = $.get$globalWindow() == null;
+ t2 = $.get$globalWorker();
+ t3 = t1 && $.get$globalPostMessageDefined() === true;
+ this.isWorker = t3;
+ if (!t3)
+ t2 = t2 != null && $.get$IsolateNatives_thisScript() != null;
+ else
+ t2 = true;
+ this.supportsWorkers = t2;
+ this.fromCommandLine = t1 && !t3;
+ t2 = H._IsolateEvent;
+ t3 = H.setRuntimeTypeInfo(new P.ListQueue(null, 0, 0, 0), [t2]);
+ t3.ListQueue$1(null, t2);
+ this.topEventLoop = new H._EventLoop(t3, 0);
+ this.isolates = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, H._IsolateContext);
+ this.managers = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, null);
+ if (this.isWorker === true) {
+ t1 = new H._MainManagerStub();
+ this.mainManager = t1;
+ $function = function (e) { H.IsolateNatives__processWorkerMessage(t1, e); };
+ $.get$globalThis().onmessage = $function;
+ $.get$globalThis().dartPrint = function (object) {};
+ }
+ }
+ },
+ _IsolateContext: {
+ "^": "Object;id,ports,weakPorts,isolateStatics<,controlPort<,pauseCapability,terminateCapability,isPaused,delayedEvents,pauseTokens,doneHandlers,errorsAreFatal",
+ addPause$2: function(authentification, resume) {
+ if (!this.pauseCapability.$eq(0, authentification))
+ return;
+ if (this.pauseTokens.add$1(0, resume) && !this.isPaused)
+ this.isPaused = true;
+ this._updateGlobalState$0();
+ },
+ removePause$1: function(resume) {
+ var t1, t2, $event, t3, t4, t5;
+ if (!this.isPaused)
+ return;
+ t1 = this.pauseTokens;
+ t1.remove$1(0, resume);
+ if (t1._collection$_length === 0) {
+ for (t1 = this.delayedEvents; t2 = t1.length, t2 !== 0;) {
+ if (0 >= t2)
+ return H.ioore(t1, 0);
+ $event = t1.pop();
+ t2 = init.globalState.topEventLoop.events;
+ t3 = t2._head;
+ t4 = t2._table;
+ t5 = t4.length;
+ t3 = (t3 - 1 & t5 - 1) >>> 0;
+ t2._head = t3;
+ if (t3 < 0 || t3 >= t5)
+ return H.ioore(t4, t3);
+ t4[t3] = $event;
+ if (t3 === t2._tail)
+ t2._grow$0();
+ t2._modificationCount = t2._modificationCount + 1;
+ }
+ this.isPaused = false;
+ }
+ this._updateGlobalState$0();
+ },
+ addDoneListener$1: function(responsePort) {
+ var t1 = this.doneHandlers;
+ if (t1 == null) {
+ t1 = [];
+ this.doneHandlers = t1;
+ }
+ if (J.contains$1$asx(t1, responsePort))
+ return;
+ this.doneHandlers.push(responsePort);
+ },
+ removeDoneListener$1: function(responsePort) {
+ var t1 = this.doneHandlers;
+ if (t1 == null)
+ return;
+ J.remove$1$ax(t1, responsePort);
+ },
+ setErrorsFatal$2: function(authentification, errorsAreFatal) {
+ if (!this.terminateCapability.$eq(0, authentification))
+ return;
+ this.errorsAreFatal = errorsAreFatal;
+ },
+ handlePing$2: function(responsePort, pingType) {
+ if (J.$eq(pingType, 2))
+ init.globalState.topEventLoop.events._add$1(new H._IsolateEvent(this, new H._IsolateContext_handlePing_closure(responsePort), "ping"));
+ else
+ J.send$1$x(responsePort, null);
+ },
+ eval$1: function(code) {
+ var old, result;
+ old = init.globalState.currentContext;
+ init.globalState.currentContext = this;
+ $ = this.isolateStatics;
+ result = null;
+ try {
+ result = code.call$0();
+ } finally {
+ init.globalState.currentContext = old;
+ if (old != null)
+ $ = old.get$isolateStatics();
+ }
+ return result;
+ },
+ lookup$1: function(portId) {
+ return this.ports.$index(0, portId);
+ },
+ _addRegistration$2: function(portId, port) {
+ var t1 = this.ports;
+ if (t1.containsKey$1(0, portId))
+ throw H.wrapException(P.Exception_Exception("Registry: ports must be registered only once."));
+ t1.$indexSet(0, portId, port);
+ },
+ _updateGlobalState$0: function() {
+ if (this.ports._collection$_length - this.weakPorts._collection$_length > 0 || this.isPaused)
+ init.globalState.isolates.$indexSet(0, this.id, this);
+ else
+ this._shutdown$0();
+ },
+ _shutdown$0: function() {
+ init.globalState.isolates.remove$1(0, this.id);
+ var t1 = this.doneHandlers;
+ if (t1 != null)
+ for (t1 = new H.ListIterator(t1, t1.length, 0, null); t1.moveNext$0();)
+ J.send$1$x(t1._current, null);
+ }
+ },
+ _IsolateContext_handlePing_closure: {
+ "^": "Closure:9;responsePort_0",
+ call$0: function() {
+ J.send$1$x(this.responsePort_0, null);
+ }
+ },
+ _EventLoop: {
+ "^": "Object;events,_activeJsAsyncCount",
+ dequeue$0: function() {
+ var t1, t2, t3, t4, result;
+ t1 = this.events;
+ t2 = t1._head;
+ if (t2 === t1._tail)
+ return;
+ t1._modificationCount = t1._modificationCount + 1;
+ t3 = t1._table;
+ t4 = t3.length;
+ if (t2 >= t4)
+ return H.ioore(t3, t2);
+ result = t3[t2];
+ t3[t2] = null;
+ t1._head = (t2 + 1 & t4 - 1) >>> 0;
+ return result;
+ },
+ runIteration$0: function() {
+ var $event, t1, t2;
+ $event = this.dequeue$0();
+ if ($event == null) {
+ if (init.globalState.rootContext != null && init.globalState.isolates.containsKey$1(0, init.globalState.rootContext.id) && init.globalState.fromCommandLine === true && init.globalState.rootContext.ports._collection$_length === 0)
+ H.throwExpression(P.Exception_Exception("Program exited with open ReceivePorts."));
+ t1 = init.globalState;
+ if (t1.isWorker === true && t1.isolates._collection$_length === 0 && t1.topEventLoop._activeJsAsyncCount === 0) {
+ t1 = t1.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "close"], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ }
+ return false;
+ }
+ $event.process$0();
+ return true;
+ },
+ _runHelper$0: function() {
+ if ($.get$globalWindow() != null)
+ new H._EventLoop__runHelper_next(this).call$0();
+ else
+ for (; this.runIteration$0();)
+ ;
+ },
+ run$0: function() {
+ var e, trace, exception, t1, t2;
+ if (init.globalState.isWorker !== true)
+ this._runHelper$0();
+ else
+ try {
+ this._runHelper$0();
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ trace = new H._StackTrace(exception, null);
+ t1 = init.globalState.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "error", "msg", H.S(e) + "\n" + H.S(trace)], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ }
+
+ }
+ },
+ _EventLoop__runHelper_next: {
+ "^": "Closure:1;this_0",
+ call$0: function() {
+ if (!this.this_0.runIteration$0())
+ return;
+ P.Timer_Timer(C.Duration_0, this);
+ }
+ },
+ _IsolateEvent: {
+ "^": "Object;isolate,fn,message",
+ process$0: function() {
+ var t1 = this.isolate;
+ if (t1.isPaused) {
+ t1.delayedEvents.push(this);
+ return;
+ }
+ t1.eval$1(this.fn);
+ }
+ },
+ _MainManagerStub: {
+ "^": "Object;"
+ },
+ IsolateNatives__processWorkerMessage_closure: {
+ "^": "Closure:9;entryPoint_0,args_1,message_2,isSpawnUri_3,startPaused_4,replyTo_5",
+ call$0: function() {
+ H.IsolateNatives__startIsolate(this.entryPoint_0, this.args_1, this.message_2, this.isSpawnUri_3, this.startPaused_4, this.replyTo_5);
+ }
+ },
+ IsolateNatives__startIsolate_runStartFunction: {
+ "^": "Closure:1;topLevel_0,args_1,message_2,isSpawnUri_3",
+ call$0: function() {
+ var t1, t2, t3;
+ if (this.isSpawnUri_3 !== true)
+ this.topLevel_0.call$1(this.message_2);
+ else {
+ t1 = this.topLevel_0;
+ t2 = H.getDynamicRuntimeType();
+ t3 = H.buildFunctionType(t2, [t2, t2])._isTest$1(t1);
+ if (t3)
+ t1.call$2(this.args_1, this.message_2);
+ else {
+ t2 = H.buildFunctionType(t2, [t2])._isTest$1(t1);
+ if (t2)
+ t1.call$1(this.args_1);
+ else
+ t1.call$0();
+ }
+ }
+ }
+ },
+ _BaseSendPort: {
+ "^": "Object;",
+ $isSendPort: true,
+ $isCapability: true
+ },
+ _NativeJsSendPort: {
+ "^": "_BaseSendPort;_receivePort,_isolateId",
+ send$1: function(_, message) {
+ var t1, t2, isolate, t3, shouldSerialize, msg;
+ t1 = {};
+ t2 = this._isolateId;
+ isolate = init.globalState.isolates.$index(0, t2);
+ if (isolate == null)
+ return;
+ t3 = this._receivePort;
+ if (t3.get$_isClosed())
+ return;
+ shouldSerialize = init.globalState.currentContext != null && init.globalState.currentContext.id !== t2;
+ t1.msg_0 = message;
+ if (shouldSerialize) {
+ msg = H._serializeMessage(message);
+ t1.msg_0 = msg;
+ t2 = msg;
+ } else
+ t2 = message;
+ if (isolate.get$controlPort() === t3) {
+ t1 = J.getInterceptor$asx(t2);
+ switch (t1.$index(t2, 0)) {
+ case "pause":
+ isolate.addPause$2(t1.$index(t2, 1), t1.$index(t2, 2));
+ break;
+ case "resume":
+ isolate.removePause$1(t1.$index(t2, 1));
+ break;
+ case "add-ondone":
+ isolate.addDoneListener$1(t1.$index(t2, 1));
+ break;
+ case "remove-ondone":
+ isolate.removeDoneListener$1(t1.$index(t2, 1));
+ break;
+ case "set-errors-fatal":
+ isolate.setErrorsFatal$2(t1.$index(t2, 1), t1.$index(t2, 2));
+ break;
+ case "ping":
+ isolate.handlePing$2(t1.$index(t2, 1), t1.$index(t2, 2));
+ break;
+ default:
+ P.print("UNKNOWN MESSAGE: " + H.S(t2));
+ }
+ return;
+ }
+ t2 = init.globalState.topEventLoop;
+ t3 = "receive " + H.S(message);
+ t2.events._add$1(new H._IsolateEvent(isolate, new H._NativeJsSendPort_send_closure(t1, this, shouldSerialize), t3));
+ },
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ return !!J.getInterceptor(other).$is_NativeJsSendPort && J.$eq(this._receivePort, other._receivePort);
+ },
+ get$hashCode: function(_) {
+ return this._receivePort.get$_id();
+ },
+ $is_NativeJsSendPort: true,
+ $isSendPort: true,
+ $isCapability: true
+ },
+ _NativeJsSendPort_send_closure: {
+ "^": "Closure:9;box_0,this_1,shouldSerialize_2",
+ call$0: function() {
+ var t1, t2;
+ t1 = this.this_1._receivePort;
+ if (!t1.get$_isClosed()) {
+ if (this.shouldSerialize_2) {
+ t2 = this.box_0;
+ t2.msg_0 = H._deserializeMessage(t2.msg_0);
+ }
+ t1.__isolate_helper$_add$1(this.box_0.msg_0);
+ }
+ }
+ },
+ _WorkerSendPort: {
+ "^": "_BaseSendPort;_workerId,_receivePortId,_isolateId",
+ send$1: function(_, message) {
+ var workerMessage, manager;
+ workerMessage = H._serializeMessage(H.fillLiteralMap(["command", "message", "port", this, "msg", message], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ if (init.globalState.isWorker === true) {
+ init.globalState.mainManager.toString;
+ self.postMessage(workerMessage);
+ } else {
+ manager = init.globalState.managers.$index(0, this._workerId);
+ if (manager != null)
+ manager.postMessage(workerMessage);
+ }
+ },
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ return !!J.getInterceptor(other).$is_WorkerSendPort && J.$eq(this._workerId, other._workerId) && J.$eq(this._isolateId, other._isolateId) && J.$eq(this._receivePortId, other._receivePortId);
+ },
+ get$hashCode: function(_) {
+ var t1, t2, t3;
+ t1 = this._workerId;
+ if (typeof t1 !== "number")
+ return t1.$shl();
+ t2 = this._isolateId;
+ if (typeof t2 !== "number")
+ return t2.$shl();
+ t3 = this._receivePortId;
+ if (typeof t3 !== "number")
+ return H.iae(t3);
+ return (t1 << 16 ^ t2 << 8 ^ t3) >>> 0;
+ },
+ $is_WorkerSendPort: true,
+ $isSendPort: true,
+ $isCapability: true
+ },
+ RawReceivePortImpl: {
+ "^": "Object;_id<,_handler,_isClosed<",
+ _handler$1: function(arg0) {
+ return this._handler.call$1(arg0);
+ },
+ __isolate_helper$_add$1: function(dataEvent) {
+ if (this._isClosed)
+ return;
+ this._handler$1(dataEvent);
+ },
+ static: {"^": "RawReceivePortImpl__nextFreeId"}
+ },
+ _JsSerializer: {
+ "^": "_Serializer;_nextFreeRefId,_visited",
+ visitSendPort$1: function(x) {
+ if (!!x.$is_NativeJsSendPort)
+ return ["sendport", init.globalState.currentManagerId, x._isolateId, x._receivePort.get$_id()];
+ if (!!x.$is_WorkerSendPort)
+ return ["sendport", x._workerId, x._isolateId, x._receivePortId];
+ throw H.wrapException("Illegal underlying port " + H.S(x));
+ },
+ visitCapability$1: function(x) {
+ if (!!x.$isCapabilityImpl)
+ return ["capability", x._id];
+ throw H.wrapException("Capability not serializable: " + H.S(x));
+ }
+ },
+ _JsCopier: {
+ "^": "_Copier;_visited",
+ visitSendPort$1: function(x) {
+ if (!!x.$is_NativeJsSendPort)
+ return new H._NativeJsSendPort(x._receivePort, x._isolateId);
+ if (!!x.$is_WorkerSendPort)
+ return new H._WorkerSendPort(x._workerId, x._receivePortId, x._isolateId);
+ throw H.wrapException("Illegal underlying port " + H.S(x));
+ },
+ visitCapability$1: function(x) {
+ if (!!x.$isCapabilityImpl)
+ return new H.CapabilityImpl(x._id);
+ throw H.wrapException("Capability not serializable: " + H.S(x));
+ }
+ },
+ _JsDeserializer: {
+ "^": "_Deserializer;_deserialized",
+ deserializeSendPort$1: function(list) {
+ var t1, managerId, isolateId, receivePortId, isolate, receivePort;
+ t1 = J.getInterceptor$asx(list);
+ managerId = t1.$index(list, 1);
+ isolateId = t1.$index(list, 2);
+ receivePortId = t1.$index(list, 3);
+ if (J.$eq(managerId, init.globalState.currentManagerId)) {
+ isolate = init.globalState.isolates.$index(0, isolateId);
+ if (isolate == null)
+ return;
+ receivePort = isolate.lookup$1(receivePortId);
+ if (receivePort == null)
+ return;
+ return new H._NativeJsSendPort(receivePort, isolateId);
+ } else
+ return new H._WorkerSendPort(managerId, receivePortId, isolateId);
+ },
+ deserializeCapability$1: function(list) {
+ return new H.CapabilityImpl(J.$index$asx(list, 1));
+ }
+ },
+ _JsVisitedMap: {
+ "^": "Object;tagged",
+ $index: function(_, object) {
+ return object.__MessageTraverser__attached_info__;
+ },
+ $indexSet: function(_, object, info) {
+ this.tagged.push(object);
+ object.__MessageTraverser__attached_info__ = info;
+ },
+ reset$0: function(_) {
+ this.tagged = [];
+ },
+ cleanup$0: function() {
+ var $length, i, t1;
+ for ($length = this.tagged.length, i = 0; i < $length; ++i) {
+ t1 = this.tagged;
+ if (i >= t1.length)
+ return H.ioore(t1, i);
+ t1[i].__MessageTraverser__attached_info__ = null;
+ }
+ this.tagged = null;
+ }
+ },
+ _MessageTraverserVisitedMap: {
+ "^": "Object;",
+ $index: function(_, object) {
+ return;
+ },
+ $indexSet: function(_, object, info) {
+ },
+ reset$0: function(_) {
+ },
+ cleanup$0: function() {
+ }
+ },
+ _MessageTraverser: {
+ "^": "Object;",
+ traverse$1: function(x) {
+ var result;
+ if (H._MessageTraverser_isPrimitive(x))
+ return this.visitPrimitive$1(x);
+ this._visited.reset$0(0);
+ result = null;
+ try {
+ result = this._dispatch$1(x);
+ } finally {
+ this._visited.cleanup$0();
+ }
+ return result;
+ },
+ _dispatch$1: function(x) {
+ var t1;
+ if (x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean")
+ return this.visitPrimitive$1(x);
+ t1 = J.getInterceptor(x);
+ if (!!t1.$isList)
+ return this.visitList$1(x);
+ if (!!t1.$isMap)
+ return this.visitMap$1(x);
+ if (!!t1.$isSendPort)
+ return this.visitSendPort$1(x);
+ if (!!t1.$isCapability)
+ return this.visitCapability$1(x);
+ return this.visitObject$1(x);
+ },
+ visitObject$1: function(x) {
+ throw H.wrapException("Message serialization: Illegal value " + H.S(x) + " passed");
+ }
+ },
+ _Copier: {
+ "^": "_MessageTraverser;",
+ visitPrimitive$1: function(x) {
+ return x;
+ },
+ visitList$1: function(list) {
+ var copy, t1, len, i;
+ copy = this._visited.$index(0, list);
+ if (copy != null)
+ return copy;
+ t1 = J.getInterceptor$asx(list);
+ len = t1.get$length(list);
+ copy = Array(len);
+ copy.fixed$length = init;
+ this._visited.$indexSet(0, list, copy);
+ for (i = 0; i < len; ++i)
+ copy[i] = this._dispatch$1(t1.$index(list, i));
+ return copy;
+ },
+ visitMap$1: function(map) {
+ var t1, copy;
+ t1 = {};
+ copy = this._visited.$index(0, map);
+ t1.copy_0 = copy;
+ if (copy != null)
+ return copy;
+ copy = P.LinkedHashMap_LinkedHashMap(null, null, null, null, null);
+ t1.copy_0 = copy;
+ this._visited.$indexSet(0, map, copy);
+ J.forEach$1$ax(map, new H._Copier_visitMap_closure(t1, this));
+ return t1.copy_0;
+ },
+ visitSendPort$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ },
+ visitCapability$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ }
+ },
+ _Copier_visitMap_closure: {
+ "^": "Closure:10;box_0,this_1",
+ call$2: function(key, val) {
+ var t1 = this.this_1;
+ J.$indexSet$ax(this.box_0.copy_0, t1._dispatch$1(key), t1._dispatch$1(val));
+ }
+ },
+ _Serializer: {
+ "^": "_MessageTraverser;",
+ visitPrimitive$1: function(x) {
+ return x;
+ },
+ visitList$1: function(list) {
+ var copyId, id;
+ copyId = this._visited.$index(0, list);
+ if (copyId != null)
+ return ["ref", copyId];
+ id = this._nextFreeRefId;
+ this._nextFreeRefId = id + 1;
+ this._visited.$indexSet(0, list, id);
+ return ["list", id, this._serializeList$1(list)];
+ },
+ visitMap$1: function(map) {
+ var copyId, id, t1;
+ copyId = this._visited.$index(0, map);
+ if (copyId != null)
+ return ["ref", copyId];
+ id = this._nextFreeRefId;
+ this._nextFreeRefId = id + 1;
+ this._visited.$indexSet(0, map, id);
+ t1 = J.getInterceptor$x(map);
+ return ["map", id, this._serializeList$1(J.toList$0$ax(t1.get$keys(map))), this._serializeList$1(J.toList$0$ax(t1.get$values(map)))];
+ },
+ _serializeList$1: function(list) {
+ var t1, len, result, i, t2;
+ t1 = J.getInterceptor$asx(list);
+ len = t1.get$length(list);
+ result = [];
+ C.JSArray_methods.set$length(result, len);
+ for (i = 0; i < len; ++i) {
+ t2 = this._dispatch$1(t1.$index(list, i));
+ if (i >= result.length)
+ return H.ioore(result, i);
+ result[i] = t2;
+ }
+ return result;
+ },
+ visitSendPort$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ },
+ visitCapability$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ }
+ },
+ _Deserializer: {
+ "^": "Object;",
+ deserialize$1: function(x) {
+ if (H._Deserializer_isPrimitive(x))
+ return x;
+ this._deserialized = P.HashMap_HashMap(null, null, null, null, null);
+ return this._deserializeHelper$1(x);
+ },
+ _deserializeHelper$1: function(x) {
+ var t1, id;
+ if (x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean")
+ return x;
+ t1 = J.getInterceptor$asx(x);
+ switch (t1.$index(x, 0)) {
+ case "ref":
+ id = t1.$index(x, 1);
+ return this._deserialized.$index(0, id);
+ case "list":
+ return this._deserializeList$1(x);
+ case "map":
+ return this._deserializeMap$1(x);
+ case "sendport":
+ return this.deserializeSendPort$1(x);
+ case "capability":
+ return this.deserializeCapability$1(x);
+ default:
+ return this.deserializeObject$1(x);
+ }
+ },
+ _deserializeList$1: function(x) {
+ var t1, id, dartList, len, i;
+ t1 = J.getInterceptor$asx(x);
+ id = t1.$index(x, 1);
+ dartList = t1.$index(x, 2);
+ this._deserialized.$indexSet(0, id, dartList);
+ t1 = J.getInterceptor$asx(dartList);
+ len = t1.get$length(dartList);
+ if (typeof len !== "number")
+ return H.iae(len);
+ i = 0;
+ for (; i < len; ++i)
+ t1.$indexSet(dartList, i, this._deserializeHelper$1(t1.$index(dartList, i)));
+ return dartList;
+ },
+ _deserializeMap$1: function(x) {
+ var result, t1, id, keys, values, len, t2, i;
+ result = P.LinkedHashMap_LinkedHashMap(null, null, null, null, null);
+ t1 = J.getInterceptor$asx(x);
+ id = t1.$index(x, 1);
+ this._deserialized.$indexSet(0, id, result);
+ keys = t1.$index(x, 2);
+ values = t1.$index(x, 3);
+ t1 = J.getInterceptor$asx(keys);
+ len = t1.get$length(keys);
+ if (typeof len !== "number")
+ return H.iae(len);
+ t2 = J.getInterceptor$asx(values);
+ i = 0;
+ for (; i < len; ++i)
+ result.$indexSet(0, this._deserializeHelper$1(t1.$index(keys, i)), this._deserializeHelper$1(t2.$index(values, i)));
+ return result;
+ },
+ deserializeObject$1: function(x) {
+ throw H.wrapException("Unexpected serialized object");
+ }
+ },
+ TimerImpl: {
+ "^": "Object;_once,_inEventLoop,_handle",
+ TimerImpl$2: function(milliseconds, callback) {
+ var t1, t2;
+ if (milliseconds === 0)
+ t1 = $.get$globalThis().setTimeout == null || init.globalState.isWorker === true;
+ else
+ t1 = false;
+ if (t1) {
+ this._handle = 1;
+ t1 = init.globalState.topEventLoop;
+ t2 = init.globalState.currentContext;
+ t1.events._add$1(new H._IsolateEvent(t2, new H.TimerImpl_internalCallback(this, callback), "timer"));
+ this._inEventLoop = true;
+ } else {
+ t1 = $.get$globalThis();
+ if (t1.setTimeout != null) {
+ t2 = init.globalState.topEventLoop;
+ t2._activeJsAsyncCount = t2._activeJsAsyncCount + 1;
+ this._handle = t1.setTimeout(H.convertDartClosureToJS(new H.TimerImpl_internalCallback0(this, callback), 0), milliseconds);
+ } else
+ throw H.wrapException(P.UnsupportedError$("Timer greater than 0."));
+ }
+ },
+ static: {TimerImpl$: function(milliseconds, callback) {
+ var t1 = new H.TimerImpl(true, false, null);
+ t1.TimerImpl$2(milliseconds, callback);
+ return t1;
+ }}
+ },
+ TimerImpl_internalCallback: {
+ "^": "Closure:1;this_0,callback_1",
+ call$0: function() {
+ this.this_0._handle = null;
+ this.callback_1.call$0();
+ }
+ },
+ TimerImpl_internalCallback0: {
+ "^": "Closure:1;this_2,callback_3",
+ call$0: function() {
+ this.this_2._handle = null;
+ H.leaveJsAsync();
+ this.callback_3.call$0();
+ }
+ },
+ CapabilityImpl: {
+ "^": "Object;_id<",
+ get$hashCode: function(_) {
+ var hash = this._id;
+ if (typeof hash !== "number")
+ return hash.$shr();
+ hash = C.JSNumber_methods._shrOtherPositive$1(hash, 0) ^ C.JSNumber_methods._tdivFast$1(hash, 4294967296);
+ hash = (~hash >>> 0) + (hash << 15 >>> 0) & 4294967295;
+ hash = ((hash ^ hash >>> 12) >>> 0) * 5 & 4294967295;
+ hash = ((hash ^ hash >>> 4) >>> 0) * 2057 & 4294967295;
+ return (hash ^ hash >>> 16) >>> 0;
+ },
+ $eq: function(_, other) {
+ var t1, t2;
+ if (other == null)
+ return false;
+ if (other === this)
+ return true;
+ if (!!J.getInterceptor(other).$isCapabilityImpl) {
+ t1 = this._id;
+ t2 = other._id;
+ return t1 == null ? t2 == null : t1 === t2;
+ }
+ return false;
+ },
+ $isCapabilityImpl: true,
+ $isCapability: true
+ }
+}],
+["_js_helper", "dart:_js_helper", , H, {
+ "^": "",
+ isJsIndexable: function(object, record) {
+ var result;
+ if (record != null) {
+ result = record.x;
+ if (result != null)
+ return result;
+ }
+ return !!J.getInterceptor(object).$isJavaScriptIndexingBehavior;
+ },
+ S: function(value) {
+ var res;
+ if (typeof value === "string")
+ return value;
+ if (typeof value === "number") {
+ if (value !== 0)
+ return "" + value;
+ } else if (true === value)
+ return "true";
+ else if (false === value)
+ return "false";
+ else if (value == null)
+ return "null";
+ res = J.toString$0(value);
+ if (typeof res !== "string")
+ throw H.wrapException(P.ArgumentError$(value));
+ return res;
+ },
+ Primitives_objectHashCode: function(object) {
+ var hash = object.$identityHash;
+ if (hash == null) {
+ hash = Math.random() * 0x3fffffff | 0;
+ object.$identityHash = hash;
+ }
+ return hash;
+ },
+ Primitives__throwFormatException: [function(string) {
+ throw H.wrapException(P.FormatException$(string));
+ }, "call$1", "Primitives__throwFormatException$closure", 2, 0, 0],
+ Primitives_parseInt: function(source, radix, handleError) {
+ var match, t1;
+ handleError = H.Primitives__throwFormatException$closure();
+ if (typeof source !== "string")
+ H.throwExpression(new P.ArgumentError(source));
+ match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
+ if (match != null) {
+ t1 = match.length;
+ if (2 >= t1)
+ return H.ioore(match, 2);
+ if (match[2] != null)
+ return parseInt(source, 16);
+ if (3 >= t1)
+ return H.ioore(match, 3);
+ if (match[3] != null)
+ return parseInt(source, 10);
+ return handleError.call$1(source);
+ }
+ if (match == null)
+ return handleError.call$1(source);
+ return parseInt(source, 10);
+ },
+ Primitives_parseDouble: function(source, handleError) {
+ var result, trimmed;
+ if (typeof source !== "string")
+ H.throwExpression(new P.ArgumentError(source));
+ handleError = H.Primitives__throwFormatException$closure();
+ if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(source))
+ return handleError.call$1(source);
+ result = parseFloat(source);
+ if (isNaN(result)) {
+ trimmed = J.trim$0$s(source);
+ if (trimmed === "NaN" || trimmed === "+NaN" || trimmed === "-NaN")
+ return result;
+ return handleError.call$1(source);
+ }
+ return result;
+ },
+ Primitives_objectTypeName: function(object) {
+ var $name, decompiled;
+ $name = C.JS_CONST_IX5(J.getInterceptor(object));
+ if ($name === "Object") {
+ decompiled = String(object.constructor).match(/^\s*function\s*(\S*)\s*\(/)[1];
+ if (typeof decompiled === "string")
+ $name = decompiled;
+ }
+ if (J.getInterceptor$s($name).codeUnitAt$1($name, 0) === 36)
+ $name = C.JSString_methods.substring$1($name, 1);
+ return $name + H.joinArguments(H.getRuntimeTypeInfo(object), 0, null);
+ },
+ Primitives_objectToString: function(object) {
+ return "Instance of '" + H.Primitives_objectTypeName(object) + "'";
+ },
+ Primitives__fromCharCodeApply: function(array) {
+ var end, t1, result, i, subarray, t2;
+ end = array.length;
+ for (t1 = end <= 500, result = "", i = 0; i < end; i += 500) {
+ if (t1)
+ subarray = array;
+ else {
+ t2 = i + 500;
+ t2 = t2 < end ? t2 : end;
+ subarray = array.slice(i, t2);
+ }
+ result += String.fromCharCode.apply(null, subarray);
+ }
+ return result;
+ },
+ Primitives_stringFromCodePoints: function(codePoints) {
+ var a, t1, i;
+ a = [];
+ a.$builtinTypeInfo = [J.JSInt];
+ for (t1 = new H.ListIterator(codePoints, codePoints.length, 0, null); t1.moveNext$0();) {
+ i = t1._current;
+ if (typeof i !== "number" || Math.floor(i) !== i)
+ throw H.wrapException(P.ArgumentError$(i));
+ if (i <= 65535)
+ a.push(i);
+ else if (i <= 1114111) {
+ a.push(55296 + (C.JSInt_methods._shrOtherPositive$1(i - 65536, 10) & 1023));
+ a.push(56320 + (i & 1023));
+ } else
+ throw H.wrapException(P.ArgumentError$(i));
+ }
+ return H.Primitives__fromCharCodeApply(a);
+ },
+ Primitives_stringFromCharCodes: function(charCodes) {
+ var t1, i;
+ for (t1 = new H.ListIterator(charCodes, charCodes.length, 0, null); t1.moveNext$0();) {
+ i = t1._current;
+ if (typeof i !== "number" || Math.floor(i) !== i)
+ throw H.wrapException(P.ArgumentError$(i));
+ if (i < 0)
+ throw H.wrapException(P.ArgumentError$(i));
+ if (i > 65535)
+ return H.Primitives_stringFromCodePoints(charCodes);
+ }
+ return H.Primitives__fromCharCodeApply(charCodes);
+ },
+ Primitives_valueFromDecomposedDate: function(years, month, day, hours, minutes, seconds, milliseconds, isUtc) {
+ var jsMonth, value, t1, date;
+ if (typeof years !== "number" || Math.floor(years) !== years)
+ H.throwExpression(new P.ArgumentError(years));
+ if (typeof month !== "number" || Math.floor(month) !== month)
+ H.throwExpression(new P.ArgumentError(month));
+ if (typeof day !== "number" || Math.floor(day) !== day)
+ H.throwExpression(new P.ArgumentError(day));
+ if (typeof hours !== "number" || Math.floor(hours) !== hours)
+ H.throwExpression(new P.ArgumentError(hours));
+ if (typeof minutes !== "number" || Math.floor(minutes) !== minutes)
+ H.throwExpression(new P.ArgumentError(minutes));
+ if (typeof seconds !== "number" || Math.floor(seconds) !== seconds)
+ H.throwExpression(new P.ArgumentError(seconds));
+ jsMonth = J.$sub$n(month, 1);
+ value = isUtc ? Date.UTC(years, jsMonth, day, hours, minutes, seconds, milliseconds) : new Date(years, jsMonth, day, hours, minutes, seconds, milliseconds).valueOf();
+ if (isNaN(value) || value < -8640000000000000 || value > 8640000000000000)
+ throw H.wrapException(new P.ArgumentError(null));
+ t1 = J.getInterceptor$n(years);
+ if (t1.$le(years, 0) || t1.$lt(years, 100)) {
+ date = new Date(value);
+ if (isUtc)
+ date.setUTCFullYear(years);
+ else
+ date.setFullYear(years);
+ return date.valueOf();
+ }
+ return value;
+ },
+ Primitives_lazyAsJsDate: function(receiver) {
+ if (receiver.date === void 0)
+ receiver.date = new Date(receiver.millisecondsSinceEpoch);
+ return receiver.date;
+ },
+ Primitives_getProperty: function(object, key) {
+ if (object == null || typeof object === "boolean" || typeof object === "number" || typeof object === "string")
+ throw H.wrapException(new P.ArgumentError(object));
+ return object[key];
+ },
+ Primitives_setProperty: function(object, key, value) {
+ if (object == null || typeof object === "boolean" || typeof object === "number" || typeof object === "string")
+ throw H.wrapException(new P.ArgumentError(object));
+ object[key] = value;
+ },
+ iae: function(argument) {
+ throw H.wrapException(P.ArgumentError$(argument));
+ },
+ ioore: function(receiver, index) {
+ if (receiver == null)
+ J.get$length$asx(receiver);
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ H.iae(index);
+ throw H.wrapException(P.RangeError$value(index));
+ },
+ wrapException: function(ex) {
+ var wrapper;
+ if (ex == null)
+ ex = new P.NullThrownError();
+ wrapper = new Error();
+ wrapper.dartException = ex;
+ if ("defineProperty" in Object) {
+ Object.defineProperty(wrapper, "message", { get: H.toStringWrapper });
+ wrapper.name = "";
+ } else
+ wrapper.toString = H.toStringWrapper;
+ return wrapper;
+ },
+ toStringWrapper: function() {
+ return J.toString$0(this.dartException);
+ },
+ throwExpression: function(ex) {
+ var wrapper;
+ if (ex == null)
+ ex = new P.NullThrownError();
+ wrapper = new Error();
+ wrapper.dartException = ex;
+ if ("defineProperty" in Object) {
+ Object.defineProperty(wrapper, "message", { get: H.toStringWrapper });
+ wrapper.name = "";
+ } else
+ wrapper.toString = H.toStringWrapper;
+ throw wrapper;
+ },
+ unwrapException: function(ex) {
+ var t1, message, number, ieErrorCode, t2, t3, t4, nullLiteralCall, t5, t6, t7, t8, t9, match;
+ t1 = new H.unwrapException_saveStackTrace(ex);
+ if (ex == null)
+ return;
+ if (typeof ex !== "object")
+ return ex;
+ if ("dartException" in ex)
+ return t1.call$1(ex.dartException);
+ else if (!("message" in ex))
+ return ex;
+ message = ex.message;
+ if ("number" in ex && typeof ex.number == "number") {
+ number = ex.number;
+ ieErrorCode = number & 65535;
+ if ((C.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)
+ switch (ieErrorCode) {
+ case 438:
+ return t1.call$1(H.JsNoSuchMethodError$(H.S(message) + " (Error " + ieErrorCode + ")", null));
+ case 445:
+ case 5007:
+ t2 = H.S(message) + " (Error " + ieErrorCode + ")";
+ return t1.call$1(new H.NullError(t2, null));
+ }
+ }
+ if (ex instanceof TypeError) {
+ t2 = $.get$TypeErrorDecoder_noSuchMethodPattern();
+ t3 = $.get$TypeErrorDecoder_notClosurePattern();
+ t4 = $.get$TypeErrorDecoder_nullCallPattern();
+ nullLiteralCall = $.get$TypeErrorDecoder_nullLiteralCallPattern();
+ t5 = $.get$TypeErrorDecoder_undefinedCallPattern();
+ t6 = $.get$TypeErrorDecoder_undefinedLiteralCallPattern();
+ t7 = $.get$TypeErrorDecoder_nullPropertyPattern();
+ $.get$TypeErrorDecoder_nullLiteralPropertyPattern();
+ t8 = $.get$TypeErrorDecoder_undefinedPropertyPattern();
+ t9 = $.get$TypeErrorDecoder_undefinedLiteralPropertyPattern();
+ match = t2.matchTypeError$1(message);
+ if (match != null)
+ return t1.call$1(H.JsNoSuchMethodError$(message, match));
+ else {
+ match = t3.matchTypeError$1(message);
+ if (match != null) {
+ match.method = "call";
+ return t1.call$1(H.JsNoSuchMethodError$(message, match));
+ } else {
+ match = t4.matchTypeError$1(message);
+ if (match == null) {
+ match = nullLiteralCall.matchTypeError$1(message);
+ if (match == null) {
+ match = t5.matchTypeError$1(message);
+ if (match == null) {
+ match = t6.matchTypeError$1(message);
+ if (match == null) {
+ match = t7.matchTypeError$1(message);
+ if (match == null) {
+ match = nullLiteralCall.matchTypeError$1(message);
+ if (match == null) {
+ match = t8.matchTypeError$1(message);
+ if (match == null) {
+ match = t9.matchTypeError$1(message);
+ t2 = match != null;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ if (t2) {
+ t2 = match == null ? null : match.method;
+ return t1.call$1(new H.NullError(message, t2));
+ }
+ }
+ }
+ t2 = typeof message === "string" ? message : "";
+ return t1.call$1(new H.UnknownJsTypeError(t2));
+ }
+ if (ex instanceof RangeError) {
+ if (typeof message === "string" && message.indexOf("call stack") !== -1)
+ return new P.StackOverflowError();
+ return t1.call$1(new P.ArgumentError(null));
+ }
+ if (typeof InternalError == "function" && ex instanceof InternalError)
+ if (typeof message === "string" && message === "too much recursion")
+ return new P.StackOverflowError();
+ return ex;
+ },
+ objectHashCode: function(object) {
+ if (object == null || typeof object != 'object')
+ return J.get$hashCode$(object);
+ else
+ return H.Primitives_objectHashCode(object);
+ },
+ fillLiteralMap: function(keyValuePairs, result) {
+ var $length, index, index0, index1;
+ $length = keyValuePairs.length;
+ for (index = 0; index < $length; index = index1) {
+ index0 = index + 1;
+ index1 = index0 + 1;
+ result.$indexSet(0, keyValuePairs[index], keyValuePairs[index0]);
+ }
+ return result;
+ },
+ invokeClosure: function(closure, isolate, numberOfArguments, arg1, arg2, arg3, arg4) {
+ var t1 = J.getInterceptor(numberOfArguments);
+ if (t1.$eq(numberOfArguments, 0))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure(closure));
+ else if (t1.$eq(numberOfArguments, 1))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure0(closure, arg1));
+ else if (t1.$eq(numberOfArguments, 2))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure1(closure, arg1, arg2));
+ else if (t1.$eq(numberOfArguments, 3))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure2(closure, arg1, arg2, arg3));
+ else if (t1.$eq(numberOfArguments, 4))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure3(closure, arg1, arg2, arg3, arg4));
+ else
+ throw H.wrapException(P.Exception_Exception("Unsupported number of arguments for wrapped closure"));
+ },
+ convertDartClosureToJS: function(closure, arity) {
+ var $function;
+ if (closure == null)
+ return;
+ $function = closure.$identity;
+ if (!!$function)
+ return $function;
+ $function = (function(closure, arity, context, invoke) { return function(a1, a2, a3, a4) { return invoke(closure, context, arity, a1, a2, a3, a4); };})(closure,arity,init.globalState.currentContext,H.invokeClosure);
+ closure.$identity = $function;
+ return $function;
+ },
+ Closure_fromTearOff: function(receiver, functions, reflectionInfo, isStatic, jsArguments, propertyName) {
+ var $function, callName, functionType, $prototype, $constructor, t1, isIntercepted, trampoline, signatureFunction, getReceiver, i, stub, stubCallName, t2;
+ $function = functions[0];
+ $function.$stubName;
+ callName = $function.$callName;
+ $function.$reflectionInfo = reflectionInfo;
+ functionType = H.ReflectionInfo_ReflectionInfo($function).functionType;
+ $prototype = isStatic ? Object.create(new H.TearOffClosure().constructor.prototype) : Object.create(new H.BoundClosure(null, null, null, null).constructor.prototype);
+ $prototype.$initialize = $prototype.constructor;
+ if (isStatic)
+ $constructor = function(){this.$initialize()};
+ else if (typeof dart_precompiled == "function") {
+ t1 = function(a,b,c,d) {this.$initialize(a,b,c,d)};
+ $constructor = t1;
+ } else {
+ t1 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t1, 1);
+ t1 = new Function("a", "b", "c", "d", "this.$initialize(a,b,c,d);" + t1);
+ $constructor = t1;
+ }
+ $prototype.constructor = $constructor;
+ $constructor.prototype = $prototype;
+ t1 = !isStatic;
+ if (t1) {
+ isIntercepted = jsArguments.length == 1 && true;
+ trampoline = H.Closure_forwardCallTo(receiver, $function, isIntercepted);
+ trampoline.$reflectionInfo = reflectionInfo;
+ } else {
+ $prototype.$name = propertyName;
+ trampoline = $function;
+ isIntercepted = false;
+ }
+ if (typeof functionType == "number")
+ signatureFunction = (function(s){return function(){return init.metadata[s]}})(functionType);
+ else if (t1 && typeof functionType == "function") {
+ getReceiver = isIntercepted ? H.BoundClosure_receiverOf : H.BoundClosure_selfOf;
+ signatureFunction = function(f,r){return function(){return f.apply({$receiver:r(this)},arguments)}}(functionType,getReceiver);
+ } else
+ throw H.wrapException("Error in reflectionInfo.");
+ $prototype.$signature = signatureFunction;
+ $prototype[callName] = trampoline;
+ for (t1 = functions.length, i = 1; i < t1; ++i) {
+ stub = functions[i];
+ stubCallName = stub.$callName;
+ if (stubCallName != null) {
+ t2 = isStatic ? stub : H.Closure_forwardCallTo(receiver, stub, isIntercepted);
+ $prototype[stubCallName] = t2;
+ }
+ }
+ $prototype["call*"] = trampoline;
+ return $constructor;
+ },
+ Closure_cspForwardCall: function(arity, isSuperCall, stubName, $function) {
+ var getSelf = H.BoundClosure_selfOf;
+ switch (isSuperCall ? -1 : arity) {
+ case 0:
+ return function(n,S){return function(){return S(this)[n]()}}(stubName,getSelf);
+ case 1:
+ return function(n,S){return function(a){return S(this)[n](a)}}(stubName,getSelf);
+ case 2:
+ return function(n,S){return function(a,b){return S(this)[n](a,b)}}(stubName,getSelf);
+ case 3:
+ return function(n,S){return function(a,b,c){return S(this)[n](a,b,c)}}(stubName,getSelf);
+ case 4:
+ return function(n,S){return function(a,b,c,d){return S(this)[n](a,b,c,d)}}(stubName,getSelf);
+ case 5:
+ return function(n,S){return function(a,b,c,d,e){return S(this)[n](a,b,c,d,e)}}(stubName,getSelf);
+ default:
+ return function(f,s){return function(){return f.apply(s(this),arguments)}}($function,getSelf);
+ }
+ },
+ Closure_forwardCallTo: function(receiver, $function, isIntercepted) {
+ var stubName, arity, lookedUpFunction, t1, t2, $arguments;
+ if (isIntercepted)
+ return H.Closure_forwardInterceptedCallTo(receiver, $function);
+ stubName = $function.$stubName;
+ arity = $function.length;
+ lookedUpFunction = receiver[stubName];
+ t1 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
+ if (typeof dart_precompiled == "function" || !t1 || arity >= 27)
+ return H.Closure_cspForwardCall(arity, !t1, stubName, $function);
+ if (arity === 0) {
+ t1 = $.BoundClosure_selfFieldNameCache;
+ if (t1 == null) {
+ t1 = H.BoundClosure_computeFieldNamed("self");
+ $.BoundClosure_selfFieldNameCache = t1;
+ }
+ t1 = "return function(){return this." + H.S(t1) + "." + H.S(stubName) + "();";
+ t2 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t2, 1);
+ return new Function(t1 + H.S(t2) + "}")();
+ }
+ $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity).join(",");
+ t1 = "return function(" + $arguments + "){return this.";
+ t2 = $.BoundClosure_selfFieldNameCache;
+ if (t2 == null) {
+ t2 = H.BoundClosure_computeFieldNamed("self");
+ $.BoundClosure_selfFieldNameCache = t2;
+ }
+ t2 = t1 + H.S(t2) + "." + H.S(stubName) + "(" + $arguments + ");";
+ t1 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t1, 1);
+ return new Function(t2 + H.S(t1) + "}")();
+ },
+ Closure_cspForwardInterceptedCall: function(arity, isSuperCall, $name, $function) {
+ var getSelf, getReceiver;
+ getSelf = H.BoundClosure_selfOf;
+ getReceiver = H.BoundClosure_receiverOf;
+ switch (isSuperCall ? -1 : arity) {
+ case 0:
+ throw H.wrapException(H.RuntimeError$("Intercepted function with no arguments."));
+ case 1:
+ return function(n,s,r){return function(){return s(this)[n](r(this))}}($name,getSelf,getReceiver);
+ case 2:
+ return function(n,s,r){return function(a){return s(this)[n](r(this),a)}}($name,getSelf,getReceiver);
+ case 3:
+ return function(n,s,r){return function(a,b){return s(this)[n](r(this),a,b)}}($name,getSelf,getReceiver);
+ case 4:
+ return function(n,s,r){return function(a,b,c){return s(this)[n](r(this),a,b,c)}}($name,getSelf,getReceiver);
+ case 5:
+ return function(n,s,r){return function(a,b,c,d){return s(this)[n](r(this),a,b,c,d)}}($name,getSelf,getReceiver);
+ case 6:
+ return function(n,s,r){return function(a,b,c,d,e){return s(this)[n](r(this),a,b,c,d,e)}}($name,getSelf,getReceiver);
+ default:
+ return function(f,s,r,a){return function(){a=[r(this)];Array.prototype.push.apply(a,arguments);return f.apply(s(this),a)}}($function,getSelf,getReceiver);
+ }
+ },
+ Closure_forwardInterceptedCallTo: function(receiver, $function) {
+ var selfField, t1, stubName, arity, isCsp, lookedUpFunction, t2, $arguments;
+ selfField = H.BoundClosure_selfFieldName();
+ t1 = $.BoundClosure_receiverFieldNameCache;
+ if (t1 == null) {
+ t1 = H.BoundClosure_computeFieldNamed("receiver");
+ $.BoundClosure_receiverFieldNameCache = t1;
+ }
+ stubName = $function.$stubName;
+ arity = $function.length;
+ isCsp = typeof dart_precompiled == "function";
+ lookedUpFunction = receiver[stubName];
+ t2 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
+ if (isCsp || !t2 || arity >= 28)
+ return H.Closure_cspForwardInterceptedCall(arity, !t2, stubName, $function);
+ if (arity === 1) {
+ t1 = "return function(){return this." + H.S(selfField) + "." + H.S(stubName) + "(this." + H.S(t1) + ");";
+ t2 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t2, 1);
+ return new Function(t1 + H.S(t2) + "}")();
+ }
+ $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity - 1).join(",");
+ t1 = "return function(" + $arguments + "){return this." + H.S(selfField) + "." + H.S(stubName) + "(this." + H.S(t1) + ", " + $arguments + ");";
+ t2 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t2, 1);
+ return new Function(t1 + H.S(t2) + "}")();
+ },
+ closureFromTearOff: function(receiver, functions, reflectionInfo, isStatic, jsArguments, $name) {
+ functions.fixed$length = init;
+ reflectionInfo.fixed$length = init;
+ return H.Closure_fromTearOff(receiver, functions, reflectionInfo, !!isStatic, jsArguments, $name);
+ },
+ throwCyclicInit: function(staticName) {
+ throw H.wrapException(P.CyclicInitializationError$("Cyclic initialization for static " + H.S(staticName)));
+ },
+ buildFunctionType: function(returnType, parameterTypes, optionalParameterTypes) {
+ return new H.RuntimeFunctionType(returnType, parameterTypes, optionalParameterTypes, null);
+ },
+ getDynamicRuntimeType: function() {
+ return C.C_DynamicRuntimeType;
+ },
+ setRuntimeTypeInfo: function(target, typeInfo) {
+ if (target != null)
+ target.$builtinTypeInfo = typeInfo;
+ return target;
+ },
+ getRuntimeTypeInfo: function(target) {
+ if (target == null)
+ return;
+ return target.$builtinTypeInfo;
+ },
+ getRuntimeTypeArguments: function(target, substitutionName) {
+ return H.substitute(target["$as" + H.S(substitutionName)], H.getRuntimeTypeInfo(target));
+ },
+ getRuntimeTypeArgument: function(target, substitutionName, index) {
+ var $arguments = H.getRuntimeTypeArguments(target, substitutionName);
+ return $arguments == null ? null : $arguments[index];
+ },
+ getTypeArgumentByIndex: function(target, index) {
+ var rti = H.getRuntimeTypeInfo(target);
+ return rti == null ? null : rti[index];
+ },
+ runtimeTypeToString: function(type, onTypeVariable) {
+ if (type == null)
+ return "dynamic";
+ else if (typeof type === "object" && type !== null && type.constructor === Array)
+ return type[0].builtin$cls + H.joinArguments(type, 1, onTypeVariable);
+ else if (typeof type == "function")
+ return type.builtin$cls;
+ else if (typeof type === "number" && Math.floor(type) === type)
+ return C.JSInt_methods.toString$0(type);
+ else
+ return;
+ },
+ joinArguments: function(types, startIndex, onTypeVariable) {
+ var buffer, index, firstArgument, allDynamic, argument, str;
+ if (types == null)
+ return "";
+ buffer = P.StringBuffer$("");
+ for (index = startIndex, firstArgument = true, allDynamic = true; index < types.length; ++index) {
+ if (firstArgument)
+ firstArgument = false;
+ else
+ buffer._contents = buffer._contents + ", ";
+ argument = types[index];
+ if (argument != null)
+ allDynamic = false;
+ str = H.runtimeTypeToString(argument, onTypeVariable);
+ str = typeof str === "string" ? str : H.S(str);
+ buffer._contents = buffer._contents + str;
+ }
+ return allDynamic ? "" : "<" + H.S(buffer) + ">";
+ },
+ substitute: function(substitution, $arguments) {
+ if (typeof substitution === "object" && substitution !== null && substitution.constructor === Array)
+ $arguments = substitution;
+ else if (typeof substitution == "function") {
+ substitution = H.invokeOn(substitution, null, $arguments);
+ if (typeof substitution === "object" && substitution !== null && substitution.constructor === Array)
+ $arguments = substitution;
+ else if (typeof substitution == "function")
+ $arguments = H.invokeOn(substitution, null, $arguments);
+ }
+ return $arguments;
+ },
+ areSubtypes: function(s, t) {
+ var len, i;
+ if (s == null || t == null)
+ return true;
+ len = s.length;
+ for (i = 0; i < len; ++i)
+ if (!H.isSubtype(s[i], t[i]))
+ return false;
+ return true;
+ },
+ computeSignature: function(signature, context, contextName) {
+ return H.invokeOn(signature, context, H.getRuntimeTypeArguments(context, contextName));
+ },
+ isSubtype: function(s, t) {
+ var targetSignatureFunction, t1, typeOfS, t2, typeOfT, $name, substitution;
+ if (s === t)
+ return true;
+ if (s == null || t == null)
+ return true;
+ if ("func" in t) {
+ if (!("func" in s)) {
+ if ("$is_" + H.S(t.func) in s)
+ return true;
+ targetSignatureFunction = s.$signature;
+ if (targetSignatureFunction == null)
+ return false;
+ s = targetSignatureFunction.apply(s, null);
+ }
+ return H.isFunctionSubtype(s, t);
+ }
+ if (t.builtin$cls === "Function" && "func" in s)
+ return true;
+ t1 = typeof s === "object" && s !== null && s.constructor === Array;
+ typeOfS = t1 ? s[0] : s;
+ t2 = typeof t === "object" && t !== null && t.constructor === Array;
+ typeOfT = t2 ? t[0] : t;
+ $name = H.runtimeTypeToString(typeOfT, null);
+ if (typeOfT !== typeOfS) {
+ if (!("$is" + H.S($name) in typeOfS))
+ return false;
+ substitution = typeOfS["$as" + H.S(H.runtimeTypeToString(typeOfT, null))];
+ } else
+ substitution = null;
+ if (!t1 && substitution == null || !t2)
+ return true;
+ t1 = t1 ? s.slice(1) : null;
+ t2 = t2 ? t.slice(1) : null;
+ return H.areSubtypes(H.substitute(substitution, t1), t2);
+ },
+ areAssignable: function(s, t, allowShorter) {
+ var sLength, tLength, i, t1, t2;
+ if (t == null && s == null)
+ return true;
+ if (t == null)
+ return allowShorter;
+ if (s == null)
+ return false;
+ sLength = s.length;
+ tLength = t.length;
+ if (allowShorter) {
+ if (sLength < tLength)
+ return false;
+ } else if (sLength !== tLength)
+ return false;
+ for (i = 0; i < tLength; ++i) {
+ t1 = s[i];
+ t2 = t[i];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ return true;
+ },
+ areAssignableMaps: function(s, t) {
+ var t1, names, i, $name, tType, sType;
+ if (t == null)
+ return true;
+ if (s == null)
+ return false;
+ t1 = Object.getOwnPropertyNames(t);
+ t1.fixed$length = init;
+ names = t1;
+ for (t1 = names.length, i = 0; i < t1; ++i) {
+ $name = names[i];
+ if (!Object.hasOwnProperty.call(s, $name))
+ return false;
+ tType = t[$name];
+ sType = s[$name];
+ if (!(H.isSubtype(tType, sType) || H.isSubtype(sType, tType)))
+ return false;
+ }
+ return true;
+ },
+ isFunctionSubtype: function(s, t) {
+ var sReturnType, tReturnType, sParameterTypes, tParameterTypes, sOptionalParameterTypes, tOptionalParameterTypes, sParametersLen, tParametersLen, sOptionalParametersLen, tOptionalParametersLen, pos, t1, t2, tPos, sPos;
+ if (!("func" in s))
+ return false;
+ if ("void" in s) {
+ if (!("void" in t) && "ret" in t)
+ return false;
+ } else if (!("void" in t)) {
+ sReturnType = s.ret;
+ tReturnType = t.ret;
+ if (!(H.isSubtype(sReturnType, tReturnType) || H.isSubtype(tReturnType, sReturnType)))
+ return false;
+ }
+ sParameterTypes = s.args;
+ tParameterTypes = t.args;
+ sOptionalParameterTypes = s.opt;
+ tOptionalParameterTypes = t.opt;
+ sParametersLen = sParameterTypes != null ? sParameterTypes.length : 0;
+ tParametersLen = tParameterTypes != null ? tParameterTypes.length : 0;
+ sOptionalParametersLen = sOptionalParameterTypes != null ? sOptionalParameterTypes.length : 0;
+ tOptionalParametersLen = tOptionalParameterTypes != null ? tOptionalParameterTypes.length : 0;
+ if (sParametersLen > tParametersLen)
+ return false;
+ if (sParametersLen + sOptionalParametersLen < tParametersLen + tOptionalParametersLen)
+ return false;
+ if (sParametersLen === tParametersLen) {
+ if (!H.areAssignable(sParameterTypes, tParameterTypes, false))
+ return false;
+ if (!H.areAssignable(sOptionalParameterTypes, tOptionalParameterTypes, true))
+ return false;
+ } else {
+ for (pos = 0; pos < sParametersLen; ++pos) {
+ t1 = sParameterTypes[pos];
+ t2 = tParameterTypes[pos];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ for (tPos = pos, sPos = 0; tPos < tParametersLen; ++sPos, ++tPos) {
+ t1 = sOptionalParameterTypes[sPos];
+ t2 = tParameterTypes[tPos];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ for (tPos = 0; tPos < tOptionalParametersLen; ++sPos, ++tPos) {
+ t1 = sOptionalParameterTypes[sPos];
+ t2 = tOptionalParameterTypes[tPos];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ }
+ return H.areAssignableMaps(s.named, t.named);
+ },
+ invokeOn: function($function, receiver, $arguments) {
+ return $function.apply(receiver, $arguments);
+ },
+ toStringForNativeObject: function(obj) {
+ var t1 = $.getTagFunction;
+ return "Instance of " + (t1 == null ? "" : t1.call$1(obj));
+ },
+ hashCodeForNativeObject: function(object) {
+ return H.Primitives_objectHashCode(object);
+ },
+ defineProperty: function(obj, property, value) {
+ Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
+ },
+ lookupAndCacheInterceptor: function(obj) {
+ var tag, record, interceptor, interceptorClass, mark, t1;
+ tag = $.getTagFunction.call$1(obj);
+ record = $.dispatchRecordsForInstanceTags[tag];
+ if (record != null) {
+ Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return record.i;
+ }
+ interceptor = $.interceptorsForUncacheableTags[tag];
+ if (interceptor != null)
+ return interceptor;
+ interceptorClass = init.interceptorsByTag[tag];
+ if (interceptorClass == null) {
+ tag = $.alternateTagFunction.call$2(obj, tag);
+ if (tag != null) {
+ record = $.dispatchRecordsForInstanceTags[tag];
+ if (record != null) {
+ Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return record.i;
+ }
+ interceptor = $.interceptorsForUncacheableTags[tag];
+ if (interceptor != null)
+ return interceptor;
+ interceptorClass = init.interceptorsByTag[tag];
+ }
+ }
+ if (interceptorClass == null)
+ return;
+ interceptor = interceptorClass.prototype;
+ mark = tag[0];
+ if (mark === "!") {
+ record = H.makeLeafDispatchRecord(interceptor);
+ $.dispatchRecordsForInstanceTags[tag] = record;
+ Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return record.i;
+ }
+ if (mark === "~") {
+ $.interceptorsForUncacheableTags[tag] = interceptor;
+ return interceptor;
+ }
+ if (mark === "-") {
+ t1 = H.makeLeafDispatchRecord(interceptor);
+ Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
+ return t1.i;
+ }
+ if (mark === "+")
+ return H.patchInteriorProto(obj, interceptor);
+ if (mark === "*")
+ throw H.wrapException(P.UnimplementedError$(tag));
+ if (init.leafTags[tag] === true) {
+ t1 = H.makeLeafDispatchRecord(interceptor);
+ Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
+ return t1.i;
+ } else
+ return H.patchInteriorProto(obj, interceptor);
+ },
+ patchInteriorProto: function(obj, interceptor) {
+ var proto, record;
+ proto = Object.getPrototypeOf(obj);
+ record = J.makeDispatchRecord(interceptor, proto, null, null);
+ Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return interceptor;
+ },
+ makeLeafDispatchRecord: function(interceptor) {
+ return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
+ },
+ makeDefaultDispatchRecord: function(tag, interceptorClass, proto) {
+ var interceptor = interceptorClass.prototype;
+ if (init.leafTags[tag] === true)
+ return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
+ else
+ return J.makeDispatchRecord(interceptor, proto, null, null);
+ },
+ initNativeDispatch: function() {
+ if (true === $.initNativeDispatchFlag)
+ return;
+ $.initNativeDispatchFlag = true;
+ H.initNativeDispatchContinue();
+ },
+ initNativeDispatchContinue: function() {
+ var map, tags, i, tag, proto, record, interceptorClass;
+ $.dispatchRecordsForInstanceTags = Object.create(null);
+ $.interceptorsForUncacheableTags = Object.create(null);
+ H.initHooks();
+ map = init.interceptorsByTag;
+ tags = Object.getOwnPropertyNames(map);
+ if (typeof window != "undefined") {
+ window;
+ for (i = 0; i < tags.length; ++i) {
+ tag = tags[i];
+ proto = $.prototypeForTagFunction.call$1(tag);
+ if (proto != null) {
+ record = H.makeDefaultDispatchRecord(tag, map[tag], proto);
+ if (record != null)
+ Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ }
+ }
+ }
+ for (i = 0; i < tags.length; ++i) {
+ tag = tags[i];
+ if (/^[A-Za-z_]/.test(tag)) {
+ interceptorClass = map[tag];
+ map["!" + tag] = interceptorClass;
+ map["~" + tag] = interceptorClass;
+ map["-" + tag] = interceptorClass;
+ map["+" + tag] = interceptorClass;
+ map["*" + tag] = interceptorClass;
+ }
+ }
+ },
+ initHooks: function() {
+ var hooks, transformers, i, transformer, getTag, getUnknownTag, prototypeForTag;
+ hooks = C.JS_CONST_aQP();
+ hooks = H.applyHooksTransformer(C.JS_CONST_0, H.applyHooksTransformer(C.JS_CONST_rr7, H.applyHooksTransformer(C.JS_CONST_Fs4, H.applyHooksTransformer(C.JS_CONST_Fs4, H.applyHooksTransformer(C.JS_CONST_gkc, H.applyHooksTransformer(C.JS_CONST_U4w, H.applyHooksTransformer(C.JS_CONST_QJm(C.JS_CONST_IX5), hooks)))))));
+ if (typeof dartNativeDispatchHooksTransformer != "undefined") {
+ transformers = dartNativeDispatchHooksTransformer;
+ if (typeof transformers == "function")
+ transformers = [transformers];
+ if (transformers.constructor == Array)
+ for (i = 0; i < transformers.length; ++i) {
+ transformer = transformers[i];
+ if (typeof transformer == "function")
+ hooks = transformer(hooks) || hooks;
+ }
+ }
+ getTag = hooks.getTag;
+ getUnknownTag = hooks.getUnknownTag;
+ prototypeForTag = hooks.prototypeForTag;
+ $.getTagFunction = new H.initHooks_closure(getTag);
+ $.alternateTagFunction = new H.initHooks_closure0(getUnknownTag);
+ $.prototypeForTagFunction = new H.initHooks_closure1(prototypeForTag);
+ },
+ applyHooksTransformer: function(transformer, hooks) {
+ return transformer(hooks) || hooks;
+ },
+ ReflectionInfo: {
+ "^": "Object;jsFunction,data,isAccessor,requiredParameterCount,optionalParameterCount,areOptionalParametersNamed,functionType,cachedSortedIndices",
+ static: {"^": "ReflectionInfo_REQUIRED_PARAMETERS_INFO,ReflectionInfo_OPTIONAL_PARAMETERS_INFO,ReflectionInfo_FUNCTION_TYPE_INDEX,ReflectionInfo_FIRST_DEFAULT_ARGUMENT", ReflectionInfo_ReflectionInfo: function(jsFunction) {
+ var data, requiredParametersInfo, requiredParameterCount, optionalParametersInfo;
+ data = jsFunction.$reflectionInfo;
+ if (data == null)
+ return;
+ data.fixed$length = init;
+ data = data;
+ requiredParametersInfo = data[0];
+ requiredParameterCount = requiredParametersInfo >> 1;
+ optionalParametersInfo = data[1];
+ return new H.ReflectionInfo(jsFunction, data, (requiredParametersInfo & 1) === 1, requiredParameterCount, optionalParametersInfo >> 1, (optionalParametersInfo & 1) === 1, data[2], null);
+ }}
+ },
+ TypeErrorDecoder: {
+ "^": "Object;_pattern,_arguments,_argumentsExpr,_expr,_method,_receiver",
+ matchTypeError$1: function(message) {
+ var match, result, t1;
+ match = new RegExp(this._pattern).exec(message);
+ if (match == null)
+ return;
+ result = {};
+ t1 = this._arguments;
+ if (t1 !== -1)
+ result.arguments = match[t1 + 1];
+ t1 = this._argumentsExpr;
+ if (t1 !== -1)
+ result.argumentsExpr = match[t1 + 1];
+ t1 = this._expr;
+ if (t1 !== -1)
+ result.expr = match[t1 + 1];
+ t1 = this._method;
+ if (t1 !== -1)
+ result.method = match[t1 + 1];
+ t1 = this._receiver;
+ if (t1 !== -1)
+ result.receiver = match[t1 + 1];
+ return result;
+ },
+ static: {"^": "TypeErrorDecoder_noSuchMethodPattern,TypeErrorDecoder_notClosurePattern,TypeErrorDecoder_nullCallPattern,TypeErrorDecoder_nullLiteralCallPattern,TypeErrorDecoder_undefinedCallPattern,TypeErrorDecoder_undefinedLiteralCallPattern,TypeErrorDecoder_nullPropertyPattern,TypeErrorDecoder_nullLiteralPropertyPattern,TypeErrorDecoder_undefinedPropertyPattern,TypeErrorDecoder_undefinedLiteralPropertyPattern", TypeErrorDecoder_extractPattern: function(message) {
+ var match, $arguments, argumentsExpr, expr, method, receiver;
+ message = message.replace(String({}), '$receiver$').replace(new RegExp("[[\\]{}()*+?.\\\\^$|]", 'g'), '\\$&');
+ match = message.match(/\\\$[a-zA-Z]+\\\$/g);
+ if (match == null)
+ match = [];
+ $arguments = match.indexOf("\\$arguments\\$");
+ argumentsExpr = match.indexOf("\\$argumentsExpr\\$");
+ expr = match.indexOf("\\$expr\\$");
+ method = match.indexOf("\\$method\\$");
+ receiver = match.indexOf("\\$receiver\\$");
+ return new H.TypeErrorDecoder(message.replace('\\$arguments\\$', '((?:x|[^x])*)').replace('\\$argumentsExpr\\$', '((?:x|[^x])*)').replace('\\$expr\\$', '((?:x|[^x])*)').replace('\\$method\\$', '((?:x|[^x])*)').replace('\\$receiver\\$', '((?:x|[^x])*)'), $arguments, argumentsExpr, expr, method, receiver);
+ }, TypeErrorDecoder_provokeCallErrorOn: function(expression) {
+ return function($expr$) {
+ var $argumentsExpr$ = '$arguments$'
+ try {
+ $expr$.$method$($argumentsExpr$);
+ } catch (e) {
+ return e.message;
+ }
+}(expression);
+ }, TypeErrorDecoder_provokePropertyErrorOn: function(expression) {
+ return function($expr$) {
+ try {
+ $expr$.$method$;
+ } catch (e) {
+ return e.message;
+ }
+}(expression);
+ }}
+ },
+ NullError: {
+ "^": "Error;_message,_method",
+ toString$0: function(_) {
+ var t1 = this._method;
+ if (t1 == null)
+ return "NullError: " + H.S(this._message);
+ return "NullError: Cannot call \"" + H.S(t1) + "\" on null";
+ },
+ $isError: true
+ },
+ JsNoSuchMethodError: {
+ "^": "Error;_message,_method,_receiver",
+ toString$0: function(_) {
+ var t1, t2;
+ t1 = this._method;
+ if (t1 == null)
+ return "NoSuchMethodError: " + H.S(this._message);
+ t2 = this._receiver;
+ if (t2 == null)
+ return "NoSuchMethodError: Cannot call \"" + H.S(t1) + "\" (" + H.S(this._message) + ")";
+ return "NoSuchMethodError: Cannot call \"" + H.S(t1) + "\" on \"" + H.S(t2) + "\" (" + H.S(this._message) + ")";
+ },
+ $isError: true,
+ static: {JsNoSuchMethodError$: function(_message, match) {
+ var t1, t2;
+ t1 = match == null;
+ t2 = t1 ? null : match.method;
+ t1 = t1 ? null : match.receiver;
+ return new H.JsNoSuchMethodError(_message, t2, t1);
+ }}
+ },
+ UnknownJsTypeError: {
+ "^": "Error;_message",
+ toString$0: function(_) {
+ var t1 = this._message;
+ return C.JSString_methods.get$isEmpty(t1) ? "Error" : "Error: " + t1;
+ }
+ },
+ unwrapException_saveStackTrace: {
+ "^": "Closure:11;ex_0",
+ call$1: function(error) {
+ if (!!J.getInterceptor(error).$isError)
+ if (error.$thrownJsError == null)
+ error.$thrownJsError = this.ex_0;
+ return error;
+ }
+ },
+ _StackTrace: {
+ "^": "Object;_exception,_trace",
+ toString$0: function(_) {
+ var t1, trace;
+ t1 = this._trace;
+ if (t1 != null)
+ return t1;
+ t1 = this._exception;
+ trace = typeof t1 === "object" ? t1.stack : null;
+ t1 = trace == null ? "" : trace;
+ this._trace = t1;
+ return t1;
+ }
+ },
+ invokeClosure_closure: {
+ "^": "Closure:9;closure_0",
+ call$0: function() {
+ return this.closure_0.call$0();
+ }
+ },
+ invokeClosure_closure0: {
+ "^": "Closure:9;closure_1,arg1_2",
+ call$0: function() {
+ return this.closure_1.call$1(this.arg1_2);
+ }
+ },
+ invokeClosure_closure1: {
+ "^": "Closure:9;closure_3,arg1_4,arg2_5",
+ call$0: function() {
+ return this.closure_3.call$2(this.arg1_4, this.arg2_5);
+ }
+ },
+ invokeClosure_closure2: {
+ "^": "Closure:9;closure_6,arg1_7,arg2_8,arg3_9",
+ call$0: function() {
+ return this.closure_6.call$3(this.arg1_7, this.arg2_8, this.arg3_9);
+ }
+ },
+ invokeClosure_closure3: {
+ "^": "Closure:9;closure_10,arg1_11,arg2_12,arg3_13,arg4_14",
+ call$0: function() {
+ return this.closure_10.call$4(this.arg1_11, this.arg2_12, this.arg3_13, this.arg4_14);
+ }
+ },
+ Closure: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "Closure";
+ }
+ },
+ TearOffClosure: {
+ "^": "Closure;"
+ },
+ BoundClosure: {
+ "^": "TearOffClosure;_self,__js_helper$_target,_receiver,__js_helper$_name",
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ if (this === other)
+ return true;
+ if (!J.getInterceptor(other).$isBoundClosure)
+ return false;
+ return this._self === other._self && this.__js_helper$_target === other.__js_helper$_target && this._receiver === other._receiver;
+ },
+ get$hashCode: function(_) {
+ var t1, receiverHashCode;
+ t1 = this._receiver;
+ if (t1 == null)
+ receiverHashCode = H.Primitives_objectHashCode(this._self);
+ else
+ receiverHashCode = typeof t1 !== "object" ? J.get$hashCode$(t1) : H.Primitives_objectHashCode(t1);
+ t1 = H.Primitives_objectHashCode(this.__js_helper$_target);
+ if (typeof receiverHashCode !== "number")
+ return receiverHashCode.$xor();
+ return (receiverHashCode ^ t1) >>> 0;
+ },
+ $isBoundClosure: true,
+ static: {"^": "BoundClosure_selfFieldNameCache,BoundClosure_receiverFieldNameCache", BoundClosure_selfOf: function(closure) {
+ return closure._self;
+ }, BoundClosure_receiverOf: function(closure) {
+ return closure._receiver;
+ }, BoundClosure_selfFieldName: function() {
+ var t1 = $.BoundClosure_selfFieldNameCache;
+ if (t1 == null) {
+ t1 = H.BoundClosure_computeFieldNamed("self");
+ $.BoundClosure_selfFieldNameCache = t1;
+ }
+ return t1;
+ }, BoundClosure_computeFieldNamed: function(fieldName) {
+ var template, t1, names, i, $name;
+ template = new H.BoundClosure("self", "target", "receiver", "name");
+ t1 = Object.getOwnPropertyNames(template);
+ t1.fixed$length = init;
+ names = t1;
+ for (t1 = names.length, i = 0; i < t1; ++i) {
+ $name = names[i];
+ if (template[$name] === fieldName)
+ return $name;
+ }
+ }}
+ },
+ RuntimeError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ return "RuntimeError: " + H.S(this.message);
+ },
+ static: {RuntimeError$: function(message) {
+ return new H.RuntimeError(message);
+ }}
+ },
+ RuntimeType: {
+ "^": "Object;"
+ },
+ RuntimeFunctionType: {
+ "^": "RuntimeType;returnType,parameterTypes,optionalParameterTypes,namedParameters",
+ _isTest$1: function(expression) {
+ var functionTypeObject = this._extractFunctionTypeObjectFrom$1(expression);
+ return functionTypeObject == null ? false : H.isFunctionSubtype(functionTypeObject, this.toRti$0());
+ },
+ _extractFunctionTypeObjectFrom$1: function(o) {
+ var interceptor = J.getInterceptor(o);
+ return "$signature" in interceptor ? interceptor.$signature() : null;
+ },
+ toRti$0: function() {
+ var result, t1, t2, namedRti, keys, i, $name;
+ result = { "func": "dynafunc" };
+ t1 = this.returnType;
+ t2 = J.getInterceptor(t1);
+ if (!!t2.$isVoidRuntimeType)
+ result.void = true;
+ else if (!t2.$isDynamicRuntimeType)
+ result.ret = t1.toRti$0();
+ t1 = this.parameterTypes;
+ if (t1 != null && t1.length !== 0)
+ result.args = H.RuntimeFunctionType_listToRti(t1);
+ t1 = this.optionalParameterTypes;
+ if (t1 != null && t1.length !== 0)
+ result.opt = H.RuntimeFunctionType_listToRti(t1);
+ t1 = this.namedParameters;
+ if (t1 != null) {
+ namedRti = {};
+ keys = H.extractKeys(t1);
+ for (t2 = keys.length, i = 0; i < t2; ++i) {
+ $name = keys[i];
+ namedRti[$name] = t1[$name].toRti$0();
+ }
+ result.named = namedRti;
+ }
+ return result;
+ },
+ toString$0: function(_) {
+ var t1, t2, result, needsComma, i, type, keys, $name;
+ t1 = this.parameterTypes;
+ if (t1 != null)
+ for (t2 = t1.length, result = "(", needsComma = false, i = 0; i < t2; ++i, needsComma = true) {
+ type = t1[i];
+ if (needsComma)
+ result += ", ";
+ result += H.S(type);
+ }
+ else {
+ result = "(";
+ needsComma = false;
+ }
+ t1 = this.optionalParameterTypes;
+ if (t1 != null && t1.length !== 0) {
+ result = (needsComma ? result + ", " : result) + "[";
+ for (t2 = t1.length, needsComma = false, i = 0; i < t2; ++i, needsComma = true) {
+ type = t1[i];
+ if (needsComma)
+ result += ", ";
+ result += H.S(type);
+ }
+ result += "]";
+ } else {
+ t1 = this.namedParameters;
+ if (t1 != null) {
+ result = (needsComma ? result + ", " : result) + "{";
+ keys = H.extractKeys(t1);
+ for (t2 = keys.length, needsComma = false, i = 0; i < t2; ++i, needsComma = true) {
+ $name = keys[i];
+ if (needsComma)
+ result += ", ";
+ result += H.S(t1[$name].toRti$0()) + " " + $name;
+ }
+ result += "}";
+ }
+ }
+ return result + (") -> " + H.S(this.returnType));
+ },
+ static: {"^": "RuntimeFunctionType_inAssert", RuntimeFunctionType_listToRti: function(list) {
+ var result, t1, i;
+ list = list;
+ result = [];
+ for (t1 = list.length, i = 0; i < t1; ++i)
+ result.push(list[i].toRti$0());
+ return result;
+ }}
+ },
+ DynamicRuntimeType: {
+ "^": "RuntimeType;",
+ toString$0: function(_) {
+ return "dynamic";
+ },
+ toRti$0: function() {
+ return;
+ },
+ $isDynamicRuntimeType: true
+ },
+ initHooks_closure: {
+ "^": "Closure:11;getTag_0",
+ call$1: function(o) {
+ return this.getTag_0(o);
+ }
+ },
+ initHooks_closure0: {
+ "^": "Closure:12;getUnknownTag_1",
+ call$2: function(o, tag) {
+ return this.getUnknownTag_1(o, tag);
+ }
+ },
+ initHooks_closure1: {
+ "^": "Closure:0;prototypeForTag_2",
+ call$1: function(tag) {
+ return this.prototypeForTag_2(tag);
+ }
+ },
+ JSSyntaxRegExp: {
+ "^": "Object;_nativeRegExp,_nativeGlobalRegExp,_nativeAnchoredRegExp",
+ firstMatch$1: function(str) {
+ var m;
+ if (typeof str !== "string")
+ H.throwExpression(new P.ArgumentError(str));
+ m = this._nativeRegExp.exec(str);
+ if (m == null)
+ return;
+ return H._MatchImplementation$(this, m);
+ },
+ static: {JSSyntaxRegExp_makeNative: function(pattern, multiLine, caseSensitive, global) {
+ var m, i, g, regexp, errorMessage;
+ m = multiLine ? "m" : "";
+ i = caseSensitive ? "" : "i";
+ g = global ? "g" : "";
+ regexp = (function() {try {return new RegExp(pattern, m + i + g);} catch (e) {return e;}})();
+ if (regexp instanceof RegExp)
+ return regexp;
+ errorMessage = String(regexp);
+ throw H.wrapException(P.FormatException$("Illegal RegExp pattern: " + pattern + ", " + errorMessage));
+ }}
+ },
+ _MatchImplementation: {
+ "^": "Object;pattern,_match",
+ $index: function(_, index) {
+ var t1 = this._match;
+ if (index >>> 0 !== index || index >= t1.length)
+ return H.ioore(t1, index);
+ return t1[index];
+ },
+ _MatchImplementation$2: function(pattern, _match) {
+ },
+ static: {_MatchImplementation$: function(pattern, _match) {
+ var t1 = new H._MatchImplementation(pattern, _match);
+ t1._MatchImplementation$2(pattern, _match);
+ return t1;
+ }}
+ }
+}],
+["bank_terminal", "package:bank_terminal_s5/bank_terminal.dart", , D, {
+ "^": "",
+ BankAccount: {
+ "^": "Object;_number,owner,_balance,_pin_code,date_created,date_modified",
+ set$number: function(value) {
+ var t1;
+ if (value == null || J.get$isEmpty$asx(value) === true)
+ return;
+ t1 = H.JSSyntaxRegExp_makeNative("[0-9]{3}-[0-9]{7}-[0-9]{2}", false, true, false);
+ if (typeof value !== "string")
+ H.throwExpression(new P.ArgumentError(value));
+ if (t1.test(value))
+ this._number = value;
+ },
+ toString$0: function(_) {
+ return "Bank account from " + H.S(this.owner) + " with number " + H.S(this._number) + " and balance " + H.S(this._balance);
+ },
+ toJson$0: function() {
+ var acc = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSString, P.Object);
+ acc.$indexSet(0, "number", this._number);
+ acc.$indexSet(0, "owner", this.owner.toJson$0());
+ acc.$indexSet(0, "balance", this._balance);
+ acc.$indexSet(0, "pin_code", this._pin_code);
+ acc.$indexSet(0, "creation_date", this.date_created.toString$0(0));
+ acc.$indexSet(0, "modified_date", J.toString$0(this.date_modified));
+ return C.JsonCodec_null_null.encode$1(acc);
+ },
+ BankAccount$fromJson$1: function(json) {
+ var t1, t2, t3;
+ t1 = J.getInterceptor$asx(json);
+ this.set$number(t1.$index(json, "number"));
+ t2 = new D.Person(null, null, null, null, null);
+ t2.Person$fromJson$1(t1.$index(json, "owner"));
+ this.owner = t2;
+ t2 = t1.$index(json, "balance");
+ if (J.$ge$n(t2, 0))
+ this._balance = t2;
+ t2 = t1.$index(json, "pin_code");
+ t3 = J.getInterceptor$n(t2);
+ if (t3.$ge(t2, 1) && t3.$le(t2, 999999))
+ this._pin_code = t2;
+ this.date_modified = P.DateTime_parse(t1.$index(json, "modified_date"));
+ },
+ static: {"^": "BankAccount_INTEREST"}
+ },
+ Person: {
+ "^": "Object;_bank_terminal$_name,address,_email,_gender,_date_birth",
+ toString$0: function(_) {
+ return "Person: " + H.S(this._bank_terminal$_name) + ", " + H.S(this._gender);
+ },
+ toJson$0: function() {
+ var per = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSString, P.Object);
+ per.$indexSet(0, "name", this._bank_terminal$_name);
+ per.$indexSet(0, "address", this.address);
+ per.$indexSet(0, "email", this._email);
+ per.$indexSet(0, "gender", this._gender);
+ per.$indexSet(0, "birthdate", J.toString$0(this._date_birth));
+ return per;
+ },
+ Person$fromJson$1: function(json) {
+ var t1, t2, t3;
+ t1 = J.getInterceptor$asx(json);
+ t2 = t1.$index(json, "name");
+ if (t2 != null && J.get$isEmpty$asx(t2) !== true)
+ this._bank_terminal$_name = t2;
+ this.address = t1.$index(json, "address");
+ t2 = t1.$index(json, "email");
+ if (t2 != null && J.get$isEmpty$asx(t2) !== true)
+ this._email = t2;
+ t2 = t1.$index(json, "gender");
+ t3 = J.getInterceptor(t2);
+ if (t3.$eq(t2, "M") || t3.$eq(t2, "F"))
+ this._gender = t2;
+ t1 = P.DateTime_parse(t1.$index(json, "birthdate"));
+ t2 = Date.now();
+ new P.DateTime(t2, false).DateTime$_now$0();
+ if (t1.millisecondsSinceEpoch < t2)
+ this._date_birth = t1;
+ }
+ }
+}],
+["", "bank_terminal_s5.dart", , M, {
+ "^": "",
+ main: [function() {
+ $.owner = document.querySelector("#owner");
+ $.balance = document.querySelector("#balance");
+ $.number = document.querySelector("#number");
+ $.btn_other = document.querySelector("#btn_other");
+ $.amount = document.querySelector("#amount");
+ $.btn_deposit = document.querySelector("#btn_deposit");
+ $.btn_interest = document.querySelector("#btn_interest");
+ $.error = document.querySelector("#error");
+ var t1 = J.get$onInput$x($.number);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.readData$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onChange$x($.amount);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.nonNegative$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onBlur$x($.amount);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.nonNegative$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onClick$x($.btn_other);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.clearData$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onClick$x($.btn_deposit);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.changeBalance$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onClick$x($.btn_interest);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.interest$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ M.disable_transactions(true);
+ }, "call$0", "main$closure", 0, 0, 1],
+ readData: [function(e) {
+ var key, t1, t2;
+ key = "Bankaccount:" + H.S(J.get$value$x($.number));
+ if (window.localStorage.getItem(key) == null) {
+ J.set$innerHtml$x($.error, "Unknown bank account!");
+ $.number.focus();
+ return;
+ }
+ J.set$innerHtml$x($.error, "");
+ t1 = C.JsonCodec_null_null.decode$1(window.localStorage.getItem(key));
+ t2 = new D.BankAccount(null, null, null, null, P.DateTime_parse(J.$index$asx(t1, "creation_date")), null);
+ t2.BankAccount$fromJson$1(t1);
+ $.bac = t2;
+ J.set$innerHtml$x($.owner, "" + H.S(t2.owner._bank_terminal$_name) + " ");
+ J.set$innerHtml$x($.balance, "" + J.toStringAsFixed$1$n($.bac._balance, 2) + " ");
+ M.disable_transactions(false);
+ }, "call$1", "readData$closure", 2, 0, 2],
+ clearData: [function(e) {
+ J.set$value$x($.number, "");
+ J.set$innerHtml$x($.owner, "----------");
+ J.set$innerHtml$x($.balance, "0.0");
+ $.number.focus();
+ M.disable_transactions(true);
+ return;
+ }, "call$1", "clearData$closure", 2, 0, 2],
+ disable_transactions: function(off) {
+ J.set$disabled$x($.amount, off);
+ J.set$disabled$x($.btn_deposit, off);
+ J.set$disabled$x($.btn_interest, off);
+ },
+ nonNegative: [function(e) {
+ var input, exception;
+ input = null;
+ try {
+ input = H.Primitives_parseDouble(J.get$value$x($.amount), null);
+ } catch (exception) {
+ if (!!J.getInterceptor(H.unwrapException(exception)).$isFormatException) {
+ window.alert("This is not a valid amount!");
+ $.amount.focus();
+ } else
+ throw exception;
+ }
+
+ }, "call$1", "nonNegative$closure", 2, 0, 2],
+ changeBalance: [function(e) {
+ var money_amount, t1, t2;
+ money_amount = H.Primitives_parseDouble(J.get$value$x($.amount), null);
+ t1 = J.$ge$n(money_amount, 0);
+ t2 = $.bac;
+ if (t1) {
+ t1 = J.$add$ns(t2._balance, money_amount);
+ if (J.$ge$n(t1, 0))
+ t2._balance = t1;
+ t1 = new P.DateTime(Date.now(), false);
+ t1.DateTime$_now$0();
+ t2.date_modified = t1;
+ } else {
+ t1 = J.$add$ns(t2._balance, money_amount);
+ if (J.$ge$n(t1, 0))
+ t2._balance = t1;
+ t1 = new P.DateTime(Date.now(), false);
+ t1.DateTime$_now$0();
+ t2.date_modified = t1;
+ }
+ window.localStorage.setItem("Bankaccount:" + H.S($.bac._number), $.bac.toJson$0());
+ J.set$innerHtml$x($.balance, "" + J.toStringAsFixed$1$n($.bac._balance, 2) + " ");
+ J.preventDefault$0$x(e);
+ e.stopPropagation();
+ }, "call$1", "changeBalance$closure", 2, 0, 2],
+ interest: [function(e) {
+ var t1, t2, t3, t4;
+ t1 = $.bac;
+ t2 = t1._balance;
+ t3 = J.getInterceptor$ns(t2);
+ t4 = t3.$mul(t2, 5);
+ if (typeof t4 !== "number")
+ return t4.$div();
+ t4 = t3.$add(t2, t4 / 100);
+ if (J.$ge$n(t4, 0))
+ t1._balance = t4;
+ window.localStorage.setItem("Bankaccount:" + H.S($.bac._number), $.bac.toJson$0());
+ J.set$innerHtml$x($.balance, "" + J.toStringAsFixed$1$n($.bac._balance, 2) + " ");
+ J.preventDefault$0$x(e);
+ e.stopPropagation();
+ }, "call$1", "interest$closure", 2, 0, 2]
+},
+1],
+["dart._internal", "dart:_internal", , H, {
+ "^": "",
+ IterableMixinWorkaround_forEach: function(iterable, f) {
+ var t1;
+ for (t1 = new H.ListIterator(iterable, iterable.length, 0, null); t1.moveNext$0();)
+ f.call$1(t1._current);
+ },
+ IterableMixinWorkaround_any: function(iterable, f) {
+ var t1;
+ for (t1 = new H.ListIterator(iterable, iterable.length, 0, null); t1.moveNext$0();)
+ if (f.call$1(t1._current) === true)
+ return true;
+ return false;
+ },
+ IterableMixinWorkaround_toStringIterable: function(iterable, leftDelimiter, rightDelimiter) {
+ var result, i, t1;
+ for (i = 0; t1 = $.get$IterableMixinWorkaround__toStringList(), i < t1.length; ++i)
+ if (t1[i] === iterable)
+ return H.S(leftDelimiter) + "..." + H.S(rightDelimiter);
+ result = P.StringBuffer$("");
+ try {
+ $.get$IterableMixinWorkaround__toStringList().push(iterable);
+ result.write$1(leftDelimiter);
+ result.writeAll$2(iterable, ", ");
+ result.write$1(rightDelimiter);
+ } finally {
+ t1 = $.get$IterableMixinWorkaround__toStringList();
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ }
+ return result.get$_contents();
+ },
+ IterableMixinWorkaround_setRangeList: function(list, start, end, from, skipCount) {
+ var $length;
+ if (start < 0 || start > list.length)
+ H.throwExpression(P.RangeError$range(start, 0, list.length));
+ if (end < start || end > list.length)
+ H.throwExpression(P.RangeError$range(end, start, list.length));
+ $length = end - start;
+ if ($length === 0)
+ return;
+ if (skipCount < 0)
+ throw H.wrapException(new P.ArgumentError(skipCount));
+ if (skipCount + $length > from.length)
+ throw H.wrapException(P.StateError$("Not enough elements"));
+ H.Lists_copy(from, skipCount, list, start, $length);
+ },
+ Lists_copy: function(src, srcStart, dst, dstStart, count) {
+ var i, j, t1, t2;
+ if (srcStart < dstStart)
+ for (i = srcStart + count - 1, j = dstStart + count - 1, t1 = src.length; i >= srcStart; --i, --j) {
+ if (i < 0 || i >= t1)
+ return H.ioore(src, i);
+ C.JSArray_methods.$indexSet(dst, j, src[i]);
+ }
+ else
+ for (t1 = srcStart + count, t2 = src.length, j = dstStart, i = srcStart; i < t1; ++i, ++j) {
+ if (i < 0 || i >= t2)
+ return H.ioore(src, i);
+ C.JSArray_methods.$indexSet(dst, j, src[i]);
+ }
+ },
+ Symbol_getName: function(symbol) {
+ return symbol.get$_name();
+ },
+ ListIterable: {
+ "^": "IterableBase;",
+ get$iterator: function(_) {
+ return new H.ListIterator(this, this.get$length(this), 0, null);
+ },
+ forEach$1: function(_, action) {
+ var $length, i;
+ $length = this.get$length(this);
+ for (i = 0; i < $length; ++i) {
+ action.call$1(this.elementAt$1(0, i));
+ if ($length !== this.get$length(this))
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ }
+ },
+ get$isEmpty: function(_) {
+ return this.get$length(this) === 0;
+ },
+ $isEfficientLength: true
+ },
+ ListIterator: {
+ "^": "Object;_iterable,_length,_index,_current",
+ get$current: function() {
+ return this._current;
+ },
+ moveNext$0: function() {
+ var t1, t2, $length, t3;
+ t1 = this._iterable;
+ t2 = J.getInterceptor$asx(t1);
+ $length = t2.get$length(t1);
+ if (this._length !== $length)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ t3 = this._index;
+ if (t3 >= $length) {
+ this._current = null;
+ return false;
+ }
+ this._current = t2.elementAt$1(t1, t3);
+ this._index = this._index + 1;
+ return true;
+ }
+ },
+ MappedIterable: {
+ "^": "IterableBase;_iterable,_f",
+ get$iterator: function(_) {
+ var t1 = this._iterable;
+ t1 = new H.MappedIterator(null, t1.get$iterator(t1), this._f);
+ t1.$builtinTypeInfo = this.$builtinTypeInfo;
+ return t1;
+ },
+ get$length: function(_) {
+ var t1 = this._iterable;
+ return t1.get$length(t1);
+ },
+ get$isEmpty: function(_) {
+ var t1 = this._iterable;
+ return t1.get$isEmpty(t1);
+ },
+ $asIterableBase: function($S, $T) {
+ return [$T];
+ },
+ static: {MappedIterable_MappedIterable: function(iterable, $function, $S, $T) {
+ if (!!iterable.$isEfficientLength)
+ return H.setRuntimeTypeInfo(new H.EfficientLengthMappedIterable(iterable, $function), [$S, $T]);
+ return H.setRuntimeTypeInfo(new H.MappedIterable(iterable, $function), [$S, $T]);
+ }}
+ },
+ EfficientLengthMappedIterable: {
+ "^": "MappedIterable;_iterable,_f",
+ $isEfficientLength: true
+ },
+ MappedIterator: {
+ "^": "Iterator;_current,_iterator,_f",
+ _f$1: function(arg0) {
+ return this._f.call$1(arg0);
+ },
+ moveNext$0: function() {
+ var t1 = this._iterator;
+ if (t1.moveNext$0()) {
+ this._current = this._f$1(t1.get$current());
+ return true;
+ }
+ this._current = null;
+ return false;
+ },
+ get$current: function() {
+ return this._current;
+ }
+ },
+ MappedListIterable: {
+ "^": "ListIterable;_source,_f",
+ _f$1: function(arg0) {
+ return this._f.call$1(arg0);
+ },
+ get$length: function(_) {
+ return J.get$length$asx(this._source);
+ },
+ elementAt$1: function(_, index) {
+ return this._f$1(J.elementAt$1$ax(this._source, index));
+ },
+ $asListIterable: function($S, $T) {
+ return [$T];
+ },
+ $asIterableBase: function($S, $T) {
+ return [$T];
+ },
+ $isEfficientLength: true
+ },
+ WhereIterable: {
+ "^": "IterableBase;_iterable,_f",
+ get$iterator: function(_) {
+ var t1 = new H.WhereIterator(J.get$iterator$ax(this._iterable), this._f);
+ t1.$builtinTypeInfo = this.$builtinTypeInfo;
+ return t1;
+ }
+ },
+ WhereIterator: {
+ "^": "Iterator;_iterator,_f",
+ _f$1: function(arg0) {
+ return this._f.call$1(arg0);
+ },
+ moveNext$0: function() {
+ for (var t1 = this._iterator; t1.moveNext$0();)
+ if (this._f$1(t1.get$current()) === true)
+ return true;
+ return false;
+ },
+ get$current: function() {
+ return this._iterator.get$current();
+ }
+ },
+ FixedLengthListMixin: {
+ "^": "Object;"
+ }
+}],
+["dart._js_names", "dart:_js_names", , H, {
+ "^": "",
+ extractKeys: function(victim) {
+ var t1 = H.setRuntimeTypeInfo((function(victim, hasOwnProperty) {
+ var result = [];
+ for (var key in victim) {
+ if (hasOwnProperty.call(victim, key)) result.push(key);
+ }
+ return result;
+})(victim, Object.prototype.hasOwnProperty), [null]);
+ t1.fixed$length = init;
+ return t1;
+ }
+}],
+["dart.async", "dart:async", , P, {
+ "^": "",
+ _registerErrorHandler: function(errorHandler, zone) {
+ var t1 = H.getDynamicRuntimeType();
+ t1 = H.buildFunctionType(t1, [t1, t1])._isTest$1(errorHandler);
+ if (t1) {
+ zone.toString;
+ return errorHandler;
+ } else {
+ zone.toString;
+ return errorHandler;
+ }
+ },
+ _asyncRunCallbackLoop: function() {
+ var entry = $._nextCallback;
+ for (; entry != null;) {
+ entry.callback$0();
+ entry = entry.next;
+ $._nextCallback = entry;
+ }
+ $._lastCallback = null;
+ },
+ _asyncRunCallback: [function() {
+ var exception;
+ try {
+ P._asyncRunCallbackLoop();
+ } catch (exception) {
+ H.unwrapException(exception);
+ P._createTimer(C.Duration_0, P._asyncRunCallback$closure());
+ $._nextCallback = $._nextCallback.next;
+ throw exception;
+ }
+
+ }, "call$0", "_asyncRunCallback$closure", 0, 0, 1],
+ _scheduleAsyncCallback: function(callback) {
+ var t1, t2;
+ t1 = $._lastCallback;
+ if (t1 == null) {
+ t1 = new P._AsyncCallbackEntry(callback, null);
+ $._lastCallback = t1;
+ $._nextCallback = t1;
+ P._createTimer(C.Duration_0, P._asyncRunCallback$closure());
+ } else {
+ t2 = new P._AsyncCallbackEntry(callback, null);
+ t1.next = t2;
+ $._lastCallback = t2;
+ }
+ },
+ _runUserCode: function(userCode, onSuccess, onError) {
+ var e, s, exception, t1;
+ try {
+ onSuccess.call$1(userCode.call$0());
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ onError.call$2(e, s);
+ }
+
+ },
+ _cancelAndError: function(subscription, future, error, stackTrace) {
+ subscription.cancel$0();
+ future._completeError$2(error, stackTrace);
+ },
+ _cancelAndErrorClosure: function(subscription, future) {
+ return new P._cancelAndErrorClosure_closure(subscription, future);
+ },
+ _cancelAndValue: function(subscription, future, value) {
+ subscription.cancel$0();
+ future._complete$1(value);
+ },
+ Timer_Timer: function(duration, callback) {
+ var t1 = $.Zone__current;
+ if (t1 === C.C__RootZone) {
+ t1.toString;
+ return P._rootCreateTimer(t1, null, t1, duration, callback);
+ }
+ return P._rootCreateTimer(t1, null, t1, duration, t1.bindCallback$2$runGuarded(callback, true));
+ },
+ _createTimer: function(duration, callback) {
+ var milliseconds = C.JSInt_methods._tdivFast$1(duration._duration, 1000);
+ return H.TimerImpl$(milliseconds < 0 ? 0 : milliseconds, callback);
+ },
+ Zone__enter: function(zone) {
+ var previous = $.Zone__current;
+ $.Zone__current = zone;
+ return previous;
+ },
+ _rootHandleUncaughtError: function($self, $parent, zone, error, stackTrace) {
+ P._rootRun($self, null, $self, new P._rootHandleUncaughtError_closure(error, stackTrace));
+ },
+ _rootRun: function($self, $parent, zone, f) {
+ var old, t1;
+ if ($.Zone__current === zone)
+ return f.call$0();
+ old = P.Zone__enter(zone);
+ try {
+ t1 = f.call$0();
+ return t1;
+ } finally {
+ $.Zone__current = old;
+ }
+ },
+ _rootRunUnary: function($self, $parent, zone, f, arg) {
+ var old, t1;
+ if ($.Zone__current === zone)
+ return f.call$1(arg);
+ old = P.Zone__enter(zone);
+ try {
+ t1 = f.call$1(arg);
+ return t1;
+ } finally {
+ $.Zone__current = old;
+ }
+ },
+ _rootRunBinary: function($self, $parent, zone, f, arg1, arg2) {
+ var old, t1;
+ if ($.Zone__current === zone)
+ return f.call$2(arg1, arg2);
+ old = P.Zone__enter(zone);
+ try {
+ t1 = f.call$2(arg1, arg2);
+ return t1;
+ } finally {
+ $.Zone__current = old;
+ }
+ },
+ _rootScheduleMicrotask: function($self, $parent, zone, f) {
+ P._scheduleAsyncCallback(C.C__RootZone !== zone ? zone.bindCallback$1(f) : f);
+ },
+ _rootCreateTimer: function($self, $parent, zone, duration, callback) {
+ return P._createTimer(duration, C.C__RootZone !== zone ? zone.bindCallback$1(callback) : callback);
+ },
+ _AsyncError: {
+ "^": "Object;error>,stackTrace<",
+ $isError: true
+ },
+ _Future: {
+ "^": "Object;_state,_zone<,_resultOrListeners,_nextListener<,_onValueCallback,_errorTestCallback,_onErrorCallback,_whenCompleteActionCallback",
+ get$_isComplete: function() {
+ return this._state >= 4;
+ },
+ get$_hasValue: function() {
+ return this._state === 4;
+ },
+ get$_hasError: function() {
+ return this._state === 8;
+ },
+ set$_isChained: function(value) {
+ if (value)
+ this._state = 2;
+ else
+ this._state = 0;
+ },
+ then$2$onError: function(f, onError) {
+ var t1, result;
+ t1 = $.Zone__current;
+ t1.toString;
+ result = H.setRuntimeTypeInfo(new P._Future(0, t1, null, null, f, null, P._registerErrorHandler(onError, t1), null), [null]);
+ this._addListener$1(result);
+ return result;
+ },
+ get$_async$_value: function() {
+ return this._resultOrListeners;
+ },
+ get$_error: function() {
+ return this._resultOrListeners;
+ },
+ _setValue$1: function(value) {
+ this._state = 4;
+ this._resultOrListeners = value;
+ },
+ _setError$2: function(error, stackTrace) {
+ this._state = 8;
+ this._resultOrListeners = new P._AsyncError(error, stackTrace);
+ },
+ _addListener$1: function(listener) {
+ var t1;
+ if (this._state >= 4) {
+ t1 = this._zone;
+ t1.toString;
+ P._rootScheduleMicrotask(t1, null, t1, new P._Future__addListener_closure(this, listener));
+ } else {
+ listener._nextListener = this._resultOrListeners;
+ this._resultOrListeners = listener;
+ }
+ },
+ _removeListeners$0: function() {
+ var current, prev, next;
+ current = this._resultOrListeners;
+ this._resultOrListeners = null;
+ for (prev = null; current != null; prev = current, current = next) {
+ next = current.get$_nextListener();
+ current._nextListener = prev;
+ }
+ return prev;
+ },
+ _complete$1: function(value) {
+ var t1, listeners;
+ t1 = J.getInterceptor(value);
+ if (!!t1.$isFuture)
+ if (!!t1.$is_Future)
+ P._Future__chainCoreFuture(value, this);
+ else
+ P._Future__chainForeignFuture(value, this);
+ else {
+ listeners = this._removeListeners$0();
+ this._setValue$1(value);
+ P._Future__propagateToListeners(this, listeners);
+ }
+ },
+ _completeError$2: [function(error, stackTrace) {
+ var listeners = this._removeListeners$0();
+ this._setError$2(error, stackTrace);
+ P._Future__propagateToListeners(this, listeners);
+ }, function(error) {
+ return this._completeError$2(error, null);
+ }, "_completeError$1", "call$2", "call$1", "get$_completeError", 2, 2, 13, 14],
+ $is_Future: true,
+ $isFuture: true,
+ static: {"^": "_Future__INCOMPLETE,_Future__PENDING_COMPLETE,_Future__CHAINED,_Future__VALUE,_Future__ERROR", _Future$: function($T) {
+ return H.setRuntimeTypeInfo(new P._Future(0, $.Zone__current, null, null, null, null, null, null), [$T]);
+ }, _Future__chainForeignFuture: function(source, target) {
+ target._state = 2;
+ source.then$2$onError(new P._Future__chainForeignFuture_closure(target), new P._Future__chainForeignFuture_closure0(target));
+ }, _Future__chainCoreFuture: function(source, target) {
+ target._state = 2;
+ if (source._state >= 4)
+ P._Future__propagateToListeners(source, target);
+ else
+ source._addListener$1(target);
+ }, _Future__propagateMultipleListeners: function(source, listeners) {
+ var listeners0;
+ do {
+ listeners0 = listeners.get$_nextListener();
+ listeners._nextListener = null;
+ P._Future__propagateToListeners(source, listeners);
+ if (listeners0 != null) {
+ listeners = listeners0;
+ continue;
+ } else
+ break;
+ } while (true);
+ }, _Future__propagateToListeners: function(source, listeners) {
+ var t1, t2, t3, hasError, asyncError, t4, sourceValue, t5, zone, oldZone, chainSource, listeners0;
+ t1 = {};
+ t1.source_4 = source;
+ for (t2 = source; true;) {
+ t3 = {};
+ if (!t2.get$_isComplete())
+ return;
+ hasError = t1.source_4.get$_hasError();
+ if (hasError && listeners == null) {
+ t2 = t1.source_4;
+ asyncError = t2.get$_error();
+ t2 = t2._zone;
+ t3 = J.get$error$x(asyncError);
+ t4 = asyncError.get$stackTrace();
+ t2.toString;
+ P._rootHandleUncaughtError(t2, null, t2, t3, t4);
+ return;
+ }
+ if (listeners == null)
+ return;
+ if (listeners._nextListener != null) {
+ P._Future__propagateMultipleListeners(t1.source_4, listeners);
+ return;
+ }
+ t3.listenerHasValue_1 = true;
+ sourceValue = t1.source_4.get$_hasValue() ? t1.source_4.get$_async$_value() : null;
+ t3.listenerValueOrError_2 = sourceValue;
+ t3.isPropagationAborted_3 = false;
+ t2 = !hasError;
+ if (t2) {
+ t4 = listeners._state === 2;
+ if ((t4 ? null : listeners._onValueCallback) == null) {
+ t5 = (t4 ? null : listeners._whenCompleteActionCallback) != null;
+ t4 = t5;
+ } else
+ t4 = true;
+ } else
+ t4 = true;
+ if (t4) {
+ zone = listeners._zone;
+ if (hasError) {
+ t4 = t1.source_4.get$_zone();
+ t4.toString;
+ zone.toString;
+ t4 = zone == null ? t4 != null : zone !== t4;
+ } else
+ t4 = false;
+ if (t4) {
+ t2 = t1.source_4;
+ asyncError = t2.get$_error();
+ t2 = t2._zone;
+ t3 = J.get$error$x(asyncError);
+ t4 = asyncError.get$stackTrace();
+ t2.toString;
+ P._rootHandleUncaughtError(t2, null, t2, t3, t4);
+ return;
+ }
+ oldZone = $.Zone__current;
+ if (oldZone == null ? zone != null : oldZone !== zone)
+ $.Zone__current = zone;
+ else
+ oldZone = null;
+ if (t2) {
+ if ((listeners._state === 2 ? null : listeners._onValueCallback) != null)
+ t3.listenerHasValue_1 = new P._Future__propagateToListeners_handleValueCallback(t3, listeners, sourceValue, zone).call$0();
+ } else
+ new P._Future__propagateToListeners_handleError(t1, t3, listeners, zone).call$0();
+ if ((listeners._state === 2 ? null : listeners._whenCompleteActionCallback) != null)
+ new P._Future__propagateToListeners_handleWhenCompleteCallback(t1, t3, hasError, listeners, zone).call$0();
+ if (oldZone != null)
+ $.Zone__current = oldZone;
+ if (t3.isPropagationAborted_3)
+ return;
+ if (t3.listenerHasValue_1 === true) {
+ t2 = t3.listenerValueOrError_2;
+ t2 = (sourceValue == null ? t2 != null : sourceValue !== t2) && !!J.getInterceptor(t2).$isFuture;
+ } else
+ t2 = false;
+ if (t2) {
+ chainSource = t3.listenerValueOrError_2;
+ if (!!J.getInterceptor(chainSource).$is_Future)
+ if (chainSource._state >= 4) {
+ listeners._state = 2;
+ t1.source_4 = chainSource;
+ t2 = chainSource;
+ continue;
+ } else
+ P._Future__chainCoreFuture(chainSource, listeners);
+ else
+ P._Future__chainForeignFuture(chainSource, listeners);
+ return;
+ }
+ }
+ if (t3.listenerHasValue_1 === true) {
+ listeners0 = listeners._removeListeners$0();
+ t2 = t3.listenerValueOrError_2;
+ listeners._state = 4;
+ listeners._resultOrListeners = t2;
+ } else {
+ listeners0 = listeners._removeListeners$0();
+ asyncError = t3.listenerValueOrError_2;
+ t2 = J.get$error$x(asyncError);
+ t3 = asyncError.get$stackTrace();
+ listeners._state = 8;
+ listeners._resultOrListeners = new P._AsyncError(t2, t3);
+ }
+ t1.source_4 = listeners;
+ t2 = listeners;
+ listeners = listeners0;
+ }
+ }}
+ },
+ _Future__addListener_closure: {
+ "^": "Closure:9;this_0,listener_1",
+ call$0: function() {
+ P._Future__propagateToListeners(this.this_0, this.listener_1);
+ }
+ },
+ _Future__chainForeignFuture_closure: {
+ "^": "Closure:11;target_0",
+ call$1: function(value) {
+ var t1, listeners;
+ t1 = this.target_0;
+ listeners = t1._removeListeners$0();
+ t1._setValue$1(value);
+ P._Future__propagateToListeners(t1, listeners);
+ }
+ },
+ _Future__chainForeignFuture_closure0: {
+ "^": "Closure:15;target_1",
+ call$2: function(error, stackTrace) {
+ this.target_1._completeError$2(error, stackTrace);
+ },
+ call$1: function(error) {
+ return this.call$2(error, null);
+ }
+ },
+ _Future__propagateToListeners_handleValueCallback: {
+ "^": "Closure:16;box_1,listener_3,sourceValue_4,zone_5",
+ call$0: function() {
+ var e, s, t1, t2, exception;
+ try {
+ t1 = this.zone_5;
+ t2 = this.listener_3;
+ t2 = t2._state === 2 ? null : t2._onValueCallback;
+ t1.toString;
+ this.box_1.listenerValueOrError_2 = P._rootRunUnary(t1, null, t1, t2, this.sourceValue_4);
+ return true;
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ this.box_1.listenerValueOrError_2 = new P._AsyncError(e, s);
+ return false;
+ }
+
+ }
+ },
+ _Future__propagateToListeners_handleError: {
+ "^": "Closure:1;box_2,box_1,listener_6,zone_7",
+ call$0: function() {
+ var asyncError, test, matchesTest, e, s, errorCallback, e0, s0, t1, t2, t3, exception, listenerValueOrError, t4;
+ asyncError = this.box_2.source_4.get$_error();
+ t1 = this.listener_6;
+ test = t1._state === 2 ? null : t1._errorTestCallback;
+ matchesTest = true;
+ if (test != null)
+ try {
+ t2 = this.zone_7;
+ t3 = J.get$error$x(asyncError);
+ t2.toString;
+ matchesTest = P._rootRunUnary(t2, null, t2, test, t3);
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ t1 = J.get$error$x(asyncError);
+ t2 = e;
+ listenerValueOrError = (t1 == null ? t2 == null : t1 === t2) ? asyncError : new P._AsyncError(e, s);
+ t1 = this.box_1;
+ t1.listenerValueOrError_2 = listenerValueOrError;
+ t1.listenerHasValue_1 = false;
+ return;
+ }
+
+ errorCallback = t1._state === 2 ? null : t1._onErrorCallback;
+ if (matchesTest === true && errorCallback != null) {
+ try {
+ t1 = errorCallback;
+ t2 = H.getDynamicRuntimeType();
+ t2 = H.buildFunctionType(t2, [t2, t2])._isTest$1(t1);
+ t3 = this.zone_7;
+ t4 = this.box_1;
+ if (t2) {
+ t1 = J.get$error$x(asyncError);
+ t2 = asyncError.get$stackTrace();
+ t3.toString;
+ t4.listenerValueOrError_2 = P._rootRunBinary(t3, null, t3, errorCallback, t1, t2);
+ } else {
+ t1 = J.get$error$x(asyncError);
+ t3.toString;
+ t4.listenerValueOrError_2 = P._rootRunUnary(t3, null, t3, errorCallback, t1);
+ }
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e0 = t1;
+ s0 = new H._StackTrace(exception, null);
+ t1 = J.get$error$x(asyncError);
+ t2 = e0;
+ listenerValueOrError = (t1 == null ? t2 == null : t1 === t2) ? asyncError : new P._AsyncError(e0, s0);
+ t1 = this.box_1;
+ t1.listenerValueOrError_2 = listenerValueOrError;
+ t1.listenerHasValue_1 = false;
+ return;
+ }
+
+ this.box_1.listenerHasValue_1 = true;
+ } else {
+ t1 = this.box_1;
+ t1.listenerValueOrError_2 = asyncError;
+ t1.listenerHasValue_1 = false;
+ }
+ }
+ },
+ _Future__propagateToListeners_handleWhenCompleteCallback: {
+ "^": "Closure:1;box_2,box_1,hasError_8,listener_9,zone_10",
+ call$0: function() {
+ var t1, e, s, t2, t3, exception;
+ t1 = {};
+ t1.completeResult_0 = null;
+ try {
+ t2 = this.zone_10;
+ t3 = this.listener_9;
+ t3 = t3._state === 2 ? null : t3._whenCompleteActionCallback;
+ t2.toString;
+ t1.completeResult_0 = P._rootRun(t2, null, t2, t3);
+ } catch (exception) {
+ t2 = H.unwrapException(exception);
+ e = t2;
+ s = new H._StackTrace(exception, null);
+ if (this.hasError_8) {
+ t2 = J.get$error$x(this.box_2.source_4.get$_error());
+ t3 = e;
+ t3 = t2 == null ? t3 == null : t2 === t3;
+ t2 = t3;
+ } else
+ t2 = false;
+ t3 = this.box_1;
+ if (t2)
+ t3.listenerValueOrError_2 = this.box_2.source_4.get$_error();
+ else
+ t3.listenerValueOrError_2 = new P._AsyncError(e, s);
+ t3.listenerHasValue_1 = false;
+ }
+
+ if (!!J.getInterceptor(t1.completeResult_0).$isFuture) {
+ t2 = this.listener_9;
+ t2.set$_isChained(true);
+ this.box_1.isPropagationAborted_3 = true;
+ t1.completeResult_0.then$2$onError(new P._Future__propagateToListeners_handleWhenCompleteCallback_closure(this.box_2, t2), new P._Future__propagateToListeners_handleWhenCompleteCallback_closure0(t1, t2));
+ }
+ }
+ },
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure: {
+ "^": "Closure:11;box_2,listener_11",
+ call$1: function(ignored) {
+ P._Future__propagateToListeners(this.box_2.source_4, this.listener_11);
+ }
+ },
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure0: {
+ "^": "Closure:15;box_0,listener_12",
+ call$2: function(error, stackTrace) {
+ var t1, completeResult;
+ t1 = this.box_0;
+ if (!J.getInterceptor(t1.completeResult_0).$is_Future) {
+ completeResult = P._Future$(null);
+ t1.completeResult_0 = completeResult;
+ completeResult._setError$2(error, stackTrace);
+ }
+ P._Future__propagateToListeners(t1.completeResult_0, this.listener_12);
+ },
+ call$1: function(error) {
+ return this.call$2(error, null);
+ }
+ },
+ _AsyncCallbackEntry: {
+ "^": "Object;callback,next",
+ callback$0: function() {
+ return this.callback.call$0();
+ }
+ },
+ Stream: {
+ "^": "Object;",
+ forEach$1: function(_, action) {
+ var t1, future;
+ t1 = {};
+ future = P._Future$(null);
+ t1.subscription_0 = null;
+ t1.subscription_0 = this.listen$4$cancelOnError$onDone$onError(new P.Stream_forEach_closure(t1, this, action, future), true, new P.Stream_forEach_closure0(future), future.get$_completeError());
+ return future;
+ },
+ get$length: function(_) {
+ var t1, future;
+ t1 = {};
+ future = P._Future$(J.JSInt);
+ t1.count_0 = 0;
+ this.listen$4$cancelOnError$onDone$onError(new P.Stream_length_closure(t1), true, new P.Stream_length_closure0(t1, future), future.get$_completeError());
+ return future;
+ },
+ get$isEmpty: function(_) {
+ var t1, future;
+ t1 = {};
+ future = P._Future$(J.JSBool);
+ t1.subscription_0 = null;
+ t1.subscription_0 = this.listen$4$cancelOnError$onDone$onError(new P.Stream_isEmpty_closure(t1, future), true, new P.Stream_isEmpty_closure0(future), future.get$_completeError());
+ return future;
+ }
+ },
+ Stream_forEach_closure: {
+ "^": "Closure;box_0,this_1,action_2,future_3",
+ call$1: function(element) {
+ P._runUserCode(new P.Stream_forEach__closure(this.action_2, element), new P.Stream_forEach__closure0(), P._cancelAndErrorClosure(this.box_0.subscription_0, this.future_3));
+ },
+ $signature: function() {
+ return H.computeSignature(function(T) {
+ return {func: "dynamic__T", args: [T]};
+ }, this.this_1, "Stream");
+ }
+ },
+ Stream_forEach__closure: {
+ "^": "Closure:9;action_4,element_5",
+ call$0: function() {
+ return this.action_4.call$1(this.element_5);
+ }
+ },
+ Stream_forEach__closure0: {
+ "^": "Closure:11;",
+ call$1: function(_) {
+ }
+ },
+ Stream_forEach_closure0: {
+ "^": "Closure:9;future_6",
+ call$0: function() {
+ this.future_6._complete$1(null);
+ }
+ },
+ Stream_length_closure: {
+ "^": "Closure:11;box_0",
+ call$1: function(_) {
+ var t1 = this.box_0;
+ t1.count_0 = t1.count_0 + 1;
+ }
+ },
+ Stream_length_closure0: {
+ "^": "Closure:9;box_0,future_1",
+ call$0: function() {
+ this.future_1._complete$1(this.box_0.count_0);
+ }
+ },
+ Stream_isEmpty_closure: {
+ "^": "Closure:11;box_0,future_1",
+ call$1: function(_) {
+ P._cancelAndValue(this.box_0.subscription_0, this.future_1, false);
+ }
+ },
+ Stream_isEmpty_closure0: {
+ "^": "Closure:9;future_2",
+ call$0: function() {
+ this.future_2._complete$1(true);
+ }
+ },
+ StreamSubscription: {
+ "^": "Object;"
+ },
+ _EventSink: {
+ "^": "Object;"
+ },
+ _cancelAndError_closure: {
+ "^": "Closure:9;future_0,error_1,stackTrace_2",
+ call$0: function() {
+ return this.future_0._completeError$2(this.error_1, this.stackTrace_2);
+ }
+ },
+ _cancelAndErrorClosure_closure: {
+ "^": "Closure:17;subscription_0,future_1",
+ call$2: function(error, stackTrace) {
+ return P._cancelAndError(this.subscription_0, this.future_1, error, stackTrace);
+ }
+ },
+ _cancelAndValue_closure: {
+ "^": "Closure:9;future_0,value_1",
+ call$0: function() {
+ return this.future_0._complete$1(this.value_1);
+ }
+ },
+ _BaseZone: {
+ "^": "Object;",
+ runGuarded$1: function(f) {
+ var e, s, t1, exception;
+ try {
+ t1 = this.run$1(f);
+ return t1;
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ return this.handleUncaughtError$2(e, s);
+ }
+
+ },
+ runUnaryGuarded$2: function(f, arg) {
+ var e, s, t1, exception;
+ try {
+ t1 = this.runUnary$2(f, arg);
+ return t1;
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ return this.handleUncaughtError$2(e, s);
+ }
+
+ },
+ bindCallback$2$runGuarded: function(f, runGuarded) {
+ var registered = this.registerCallback$1(f);
+ if (runGuarded)
+ return new P._BaseZone_bindCallback_closure(this, registered);
+ else
+ return new P._BaseZone_bindCallback_closure0(this, registered);
+ },
+ bindCallback$1: function(f) {
+ return this.bindCallback$2$runGuarded(f, true);
+ },
+ bindUnaryCallback$2$runGuarded: function(f, runGuarded) {
+ var registered = this.registerUnaryCallback$1(f);
+ if (runGuarded)
+ return new P._BaseZone_bindUnaryCallback_closure(this, registered);
+ else
+ return new P._BaseZone_bindUnaryCallback_closure0(this, registered);
+ }
+ },
+ _BaseZone_bindCallback_closure: {
+ "^": "Closure:9;this_0,registered_1",
+ call$0: function() {
+ return this.this_0.runGuarded$1(this.registered_1);
+ }
+ },
+ _BaseZone_bindCallback_closure0: {
+ "^": "Closure:9;this_2,registered_3",
+ call$0: function() {
+ return this.this_2.run$1(this.registered_3);
+ }
+ },
+ _BaseZone_bindUnaryCallback_closure: {
+ "^": "Closure:11;this_0,registered_1",
+ call$1: function(arg) {
+ return this.this_0.runUnaryGuarded$2(this.registered_1, arg);
+ }
+ },
+ _BaseZone_bindUnaryCallback_closure0: {
+ "^": "Closure:11;this_2,registered_3",
+ call$1: function(arg) {
+ return this.this_2.runUnary$2(this.registered_3, arg);
+ }
+ },
+ _rootHandleUncaughtError_closure: {
+ "^": "Closure:9;error_0,stackTrace_1",
+ call$0: function() {
+ P._scheduleAsyncCallback(new P._rootHandleUncaughtError__closure(this.error_0, this.stackTrace_1));
+ }
+ },
+ _rootHandleUncaughtError__closure: {
+ "^": "Closure:9;error_2,stackTrace_3",
+ call$0: function() {
+ var t1, trace;
+ t1 = this.error_2;
+ P.print("Uncaught Error: " + H.S(t1));
+ trace = this.stackTrace_3;
+ if (trace == null && !!J.getInterceptor(t1).$isError)
+ trace = t1.get$stackTrace();
+ if (trace != null)
+ P.print("Stack Trace: \n" + H.S(trace) + "\n");
+ throw H.wrapException(t1);
+ }
+ },
+ _RootZone: {
+ "^": "_BaseZone;",
+ $index: function(_, key) {
+ return;
+ },
+ handleUncaughtError$2: function(error, stackTrace) {
+ return P._rootHandleUncaughtError(this, null, this, error, stackTrace);
+ },
+ run$1: function(f) {
+ return P._rootRun(this, null, this, f);
+ },
+ runUnary$2: function(f, arg) {
+ return P._rootRunUnary(this, null, this, f, arg);
+ },
+ registerCallback$1: function(f) {
+ return f;
+ },
+ registerUnaryCallback$1: function(f) {
+ return f;
+ }
+ }
+}],
+["dart.collection", "dart:collection", , P, {
+ "^": "",
+ _defaultEquals: [function(a, b) {
+ return J.$eq(a, b);
+ }, "call$2", "_defaultEquals$closure", 4, 0, 3],
+ _defaultHashCode: [function(a) {
+ return J.get$hashCode$(a);
+ }, "call$1", "_defaultHashCode$closure", 2, 0, 4],
+ HashMap_HashMap: function(equals, hashCode, isValidKey, $K, $V) {
+ return H.setRuntimeTypeInfo(new P._HashMap(0, null, null, null, null), [$K, $V]);
+ },
+ HashSet_HashSet$identity: function($E) {
+ return H.setRuntimeTypeInfo(new P._IdentityHashSet(0, null, null, null, null), [$E]);
+ },
+ _iterableToString: function(iterable) {
+ var parts, t1;
+ if ($.get$_toStringVisiting().contains$1(0, iterable))
+ return "(...)";
+ $.get$_toStringVisiting().add$1(0, iterable);
+ parts = [];
+ try {
+ P._iterablePartsToStrings(iterable, parts);
+ } finally {
+ $.get$_toStringVisiting().remove$1(0, iterable);
+ }
+ t1 = P.StringBuffer$("(");
+ t1.writeAll$2(parts, ", ");
+ t1.write$1(")");
+ return t1._contents;
+ },
+ _iterablePartsToStrings: function(iterable, parts) {
+ var it, $length, count, next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision;
+ it = iterable.get$iterator(iterable);
+ $length = 0;
+ count = 0;
+ while (true) {
+ if (!($length < 80 || count < 3))
+ break;
+ if (!it.moveNext$0())
+ return;
+ next = H.S(it.get$current());
+ parts.push(next);
+ $length += next.length + 2;
+ ++count;
+ }
+ if (!it.moveNext$0()) {
+ if (count <= 5)
+ return;
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ ultimateString = parts.pop();
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ penultimateString = parts.pop();
+ } else {
+ penultimate = it.get$current();
+ ++count;
+ if (!it.moveNext$0()) {
+ if (count <= 4) {
+ parts.push(H.S(penultimate));
+ return;
+ }
+ ultimateString = H.S(penultimate);
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ penultimateString = parts.pop();
+ $length += ultimateString.length + 2;
+ } else {
+ ultimate = it.get$current();
+ ++count;
+ for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
+ ultimate0 = it.get$current();
+ ++count;
+ if (count > 100) {
+ while (true) {
+ if (!($length > 75 && count > 3))
+ break;
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ $length -= parts.pop().length + 2;
+ --count;
+ }
+ parts.push("...");
+ return;
+ }
+ }
+ penultimateString = H.S(penultimate);
+ ultimateString = H.S(ultimate);
+ $length += ultimateString.length + penultimateString.length + 4;
+ }
+ }
+ if (count > parts.length + 2) {
+ $length += 5;
+ elision = "...";
+ } else
+ elision = null;
+ while (true) {
+ if (!($length > 80 && parts.length > 3))
+ break;
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ $length -= parts.pop().length + 2;
+ if (elision == null) {
+ $length += 5;
+ elision = "...";
+ }
+ }
+ if (elision != null)
+ parts.push(elision);
+ parts.push(penultimateString);
+ parts.push(ultimateString);
+ },
+ LinkedHashMap_LinkedHashMap: function(equals, hashCode, isValidKey, $K, $V) {
+ return H.setRuntimeTypeInfo(new P._LinkedHashMap(0, null, null, null, null, null, 0), [$K, $V]);
+ },
+ LinkedHashSet_LinkedHashSet: function(equals, hashCode, isValidKey, $E) {
+ return H.setRuntimeTypeInfo(new P._LinkedHashSet(0, null, null, null, null, null, 0), [$E]);
+ },
+ Maps_mapToString: function(m) {
+ var t1, result, i, t2;
+ t1 = {};
+ for (i = 0; t2 = $.get$Maps__toStringList(), i < t2.length; ++i)
+ if (t2[i] === m)
+ return "{...}";
+ result = P.StringBuffer$("");
+ try {
+ $.get$Maps__toStringList().push(m);
+ result.write$1("{");
+ t1.first_0 = true;
+ J.forEach$1$ax(m, new P.Maps_mapToString_closure(t1, result));
+ result.write$1("}");
+ } finally {
+ t1 = $.get$Maps__toStringList();
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ }
+ return result.get$_contents();
+ },
+ _HashMap: {
+ "^": "Object;_collection$_length,_strings,_nums,_rest,_keys",
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ get$keys: function(_) {
+ return H.setRuntimeTypeInfo(new P.HashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]);
+ },
+ get$values: function(_) {
+ return H.MappedIterable_MappedIterable(H.setRuntimeTypeInfo(new P.HashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]), new P._HashMap_values_closure(this), H.getTypeArgumentByIndex(this, 0), H.getTypeArgumentByIndex(this, 1));
+ },
+ $index: function(_, key) {
+ var strings, t1, entry, nums, rest, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null)
+ t1 = null;
+ else {
+ entry = strings[key];
+ t1 = entry === strings ? null : entry;
+ }
+ return t1;
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null)
+ t1 = null;
+ else {
+ entry = nums[key];
+ t1 = entry === nums ? null : entry;
+ }
+ return t1;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(key)];
+ index = this._findBucketIndex$2(bucket, key);
+ return index < 0 ? null : bucket[index + 1];
+ }
+ },
+ $indexSet: function(_, key, value) {
+ var strings, nums, rest, hash, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null) {
+ strings = P._HashMap__newHashTable();
+ this._strings = strings;
+ }
+ this._addHashTableEntry$3(strings, key, value);
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null) {
+ nums = P._HashMap__newHashTable();
+ this._nums = nums;
+ }
+ this._addHashTableEntry$3(nums, key, value);
+ } else {
+ rest = this._rest;
+ if (rest == null) {
+ rest = P._HashMap__newHashTable();
+ this._rest = rest;
+ }
+ hash = this._computeHashCode$1(key);
+ bucket = rest[hash];
+ if (bucket == null) {
+ P._HashMap__setTableEntry(rest, hash, [key, value]);
+ this._collection$_length = this._collection$_length + 1;
+ this._keys = null;
+ } else {
+ index = this._findBucketIndex$2(bucket, key);
+ if (index >= 0)
+ bucket[index + 1] = value;
+ else {
+ bucket.push(key, value);
+ this._collection$_length = this._collection$_length + 1;
+ this._keys = null;
+ }
+ }
+ }
+ },
+ forEach$1: function(_, action) {
+ var keys, $length, i, key;
+ keys = this._computeKeys$0();
+ for ($length = keys.length, i = 0; i < $length; ++i) {
+ key = keys[i];
+ action.call$2(key, this.$index(0, key));
+ if (keys !== this._keys)
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ }
+ },
+ _computeKeys$0: function() {
+ var t1, result, strings, names, entries, index, i, nums, rest, bucket, $length, i0;
+ t1 = this._keys;
+ if (t1 != null)
+ return t1;
+ result = Array(this._collection$_length);
+ result.fixed$length = init;
+ strings = this._strings;
+ if (strings != null) {
+ names = Object.getOwnPropertyNames(strings);
+ entries = names.length;
+ for (index = 0, i = 0; i < entries; ++i) {
+ result[index] = names[i];
+ ++index;
+ }
+ } else
+ index = 0;
+ nums = this._nums;
+ if (nums != null) {
+ names = Object.getOwnPropertyNames(nums);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ result[index] = +names[i];
+ ++index;
+ }
+ }
+ rest = this._rest;
+ if (rest != null) {
+ names = Object.getOwnPropertyNames(rest);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ bucket = rest[names[i]];
+ $length = bucket.length;
+ for (i0 = 0; i0 < $length; i0 += 2) {
+ result[index] = bucket[i0];
+ ++index;
+ }
+ }
+ }
+ this._keys = result;
+ return result;
+ },
+ _addHashTableEntry$3: function(table, key, value) {
+ if (table[key] == null) {
+ this._collection$_length = this._collection$_length + 1;
+ this._keys = null;
+ }
+ P._HashMap__setTableEntry(table, key, value);
+ },
+ _computeHashCode$1: function(key) {
+ return J.get$hashCode$(key) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, key) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; i += 2)
+ if (J.$eq(bucket[i], key))
+ return i;
+ return -1;
+ },
+ $isMap: true,
+ $asMap: null,
+ static: {_HashMap__setTableEntry: function(table, key, value) {
+ if (value == null)
+ table[key] = table;
+ else
+ table[key] = value;
+ }, _HashMap__newHashTable: function() {
+ var table = Object.create(null);
+ P._HashMap__setTableEntry(table, "", table);
+ delete table[""];
+ return table;
+ }}
+ },
+ _HashMap_values_closure: {
+ "^": "Closure:11;this_0",
+ call$1: function(each) {
+ return this.this_0.$index(0, each);
+ }
+ },
+ HashMapKeyIterable: {
+ "^": "IterableBase;_map",
+ get$length: function(_) {
+ return this._map._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._map._collection$_length === 0;
+ },
+ get$iterator: function(_) {
+ var t1 = this._map;
+ return new P.HashMapKeyIterator(t1, t1._computeKeys$0(), 0, null);
+ },
+ forEach$1: function(_, f) {
+ var t1, keys, $length, i;
+ t1 = this._map;
+ keys = t1._computeKeys$0();
+ for ($length = keys.length, i = 0; i < $length; ++i) {
+ f.call$1(keys[i]);
+ if (keys !== t1._keys)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ }
+ },
+ $isEfficientLength: true
+ },
+ HashMapKeyIterator: {
+ "^": "Object;_map,_keys,_offset,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var keys, offset, t1;
+ keys = this._keys;
+ offset = this._offset;
+ t1 = this._map;
+ if (keys !== t1._keys)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else if (offset >= keys.length) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = keys[offset];
+ this._offset = offset + 1;
+ return true;
+ }
+ }
+ },
+ _LinkedHashMap: {
+ "^": "Object;_collection$_length,_strings,_nums,_rest,_first,_last,_modifications",
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ get$keys: function(_) {
+ return H.setRuntimeTypeInfo(new P.LinkedHashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]);
+ },
+ get$values: function(_) {
+ return H.MappedIterable_MappedIterable(H.setRuntimeTypeInfo(new P.LinkedHashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]), new P._LinkedHashMap_values_closure(this), H.getTypeArgumentByIndex(this, 0), H.getTypeArgumentByIndex(this, 1));
+ },
+ containsKey$1: function(_, key) {
+ var nums, rest;
+ if ((key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null)
+ return false;
+ return nums[key] != null;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ return this._findBucketIndex$2(rest[this._computeHashCode$1(key)], key) >= 0;
+ }
+ },
+ $index: function(_, key) {
+ var strings, cell, nums, rest, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null)
+ return;
+ cell = strings[key];
+ return cell == null ? null : cell.get$_value();
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null)
+ return;
+ cell = nums[key];
+ return cell == null ? null : cell.get$_value();
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(key)];
+ index = this._findBucketIndex$2(bucket, key);
+ if (index < 0)
+ return;
+ return bucket[index].get$_value();
+ }
+ },
+ $indexSet: function(_, key, value) {
+ var strings, nums, rest, hash, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null) {
+ strings = P._LinkedHashMap__newHashTable();
+ this._strings = strings;
+ }
+ this._addHashTableEntry$3(strings, key, value);
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null) {
+ nums = P._LinkedHashMap__newHashTable();
+ this._nums = nums;
+ }
+ this._addHashTableEntry$3(nums, key, value);
+ } else {
+ rest = this._rest;
+ if (rest == null) {
+ rest = P._LinkedHashMap__newHashTable();
+ this._rest = rest;
+ }
+ hash = this._computeHashCode$1(key);
+ bucket = rest[hash];
+ if (bucket == null)
+ rest[hash] = [this._newLinkedCell$2(key, value)];
+ else {
+ index = this._findBucketIndex$2(bucket, key);
+ if (index >= 0)
+ bucket[index].set$_value(value);
+ else
+ bucket.push(this._newLinkedCell$2(key, value));
+ }
+ }
+ },
+ remove$1: function(_, key) {
+ var rest, bucket, index, cell;
+ if (typeof key === "string" && key !== "__proto__")
+ return this._removeHashTableEntry$2(this._strings, key);
+ else if (typeof key === "number" && (key & 0x3ffffff) === key)
+ return this._removeHashTableEntry$2(this._nums, key);
+ else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(key)];
+ index = this._findBucketIndex$2(bucket, key);
+ if (index < 0)
+ return;
+ cell = bucket.splice(index, 1)[0];
+ this._unlinkCell$1(cell);
+ return cell.get$_value();
+ }
+ },
+ forEach$1: function(_, action) {
+ var cell, modifications;
+ cell = this._first;
+ modifications = this._modifications;
+ for (; cell != null;) {
+ action.call$2(cell.get$_key(cell), cell._value);
+ if (modifications !== this._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ cell = cell._next;
+ }
+ },
+ _addHashTableEntry$3: function(table, key, value) {
+ var cell = table[key];
+ if (cell == null)
+ table[key] = this._newLinkedCell$2(key, value);
+ else
+ cell.set$_value(value);
+ },
+ _removeHashTableEntry$2: function(table, key) {
+ var cell;
+ if (table == null)
+ return;
+ cell = table[key];
+ if (cell == null)
+ return;
+ this._unlinkCell$1(cell);
+ delete table[key];
+ return cell.get$_value();
+ },
+ _newLinkedCell$2: function(key, value) {
+ var cell, last;
+ cell = new P.LinkedHashMapCell(key, value, null, null);
+ if (this._first == null) {
+ this._last = cell;
+ this._first = cell;
+ } else {
+ last = this._last;
+ cell._previous = last;
+ last.set$_next(cell);
+ this._last = cell;
+ }
+ this._collection$_length = this._collection$_length + 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ return cell;
+ },
+ _unlinkCell$1: function(cell) {
+ var previous, next;
+ previous = cell.get$_previous();
+ next = cell.get$_next();
+ if (previous == null)
+ this._first = next;
+ else
+ previous.set$_next(next);
+ if (next == null)
+ this._last = previous;
+ else
+ next.set$_previous(previous);
+ this._collection$_length = this._collection$_length - 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ },
+ _computeHashCode$1: function(key) {
+ return J.get$hashCode$(key) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, key) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i)
+ if (J.$eq(J.get$_key$x(bucket[i]), key))
+ return i;
+ return -1;
+ },
+ toString$0: function(_) {
+ return P.Maps_mapToString(this);
+ },
+ $isMap: true,
+ $asMap: null,
+ static: {_LinkedHashMap__newHashTable: function() {
+ var table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ return table;
+ }}
+ },
+ _LinkedHashMap_values_closure: {
+ "^": "Closure:11;this_0",
+ call$1: function(each) {
+ return this.this_0.$index(0, each);
+ }
+ },
+ LinkedHashMapCell: {
+ "^": "Object;_key>,_value@,_next@,_previous@"
+ },
+ LinkedHashMapKeyIterable: {
+ "^": "IterableBase;_map",
+ get$length: function(_) {
+ return this._map._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._map._collection$_length === 0;
+ },
+ get$iterator: function(_) {
+ var t1, t2;
+ t1 = this._map;
+ t2 = new P.LinkedHashMapKeyIterator(t1, t1._modifications, null, null);
+ t2._cell = t1._first;
+ return t2;
+ },
+ forEach$1: function(_, f) {
+ var t1, cell, modifications;
+ t1 = this._map;
+ cell = t1._first;
+ modifications = t1._modifications;
+ for (; cell != null;) {
+ f.call$1(cell.get$_key(cell));
+ if (modifications !== t1._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ cell = cell._next;
+ }
+ },
+ $isEfficientLength: true
+ },
+ LinkedHashMapKeyIterator: {
+ "^": "Object;_map,_modifications,_cell,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var t1 = this._map;
+ if (this._modifications !== t1._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else {
+ t1 = this._cell;
+ if (t1 == null) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = t1.get$_key(t1);
+ this._cell = t1._next;
+ return true;
+ }
+ }
+ }
+ },
+ _HashSet: {
+ "^": "_HashSetBase;",
+ get$iterator: function(_) {
+ return new P.HashSetIterator(this, this._computeElements$0(), 0, null);
+ },
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ contains$1: function(_, object) {
+ var strings, nums, rest;
+ if (typeof object === "string" && object !== "__proto__") {
+ strings = this._strings;
+ return strings == null ? false : strings[object] != null;
+ } else if (typeof object === "number" && (object & 0x3ffffff) === object) {
+ nums = this._nums;
+ return nums == null ? false : nums[object] != null;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ return this._findBucketIndex$2(rest[this._computeHashCode$1(object)], object) >= 0;
+ }
+ },
+ lookup$1: function(object) {
+ var t1, rest, bucket, index;
+ if (!(typeof object === "string" && object !== "__proto__"))
+ t1 = typeof object === "number" && (object & 0x3ffffff) === object;
+ else
+ t1 = true;
+ if (t1)
+ return this.contains$1(0, object) ? object : null;
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return;
+ return J.$index$asx(bucket, index);
+ },
+ add$1: function(_, element) {
+ var rest, table, hash, bucket;
+ rest = this._rest;
+ if (rest == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._rest = table;
+ rest = table;
+ }
+ hash = this._computeHashCode$1(element);
+ bucket = rest[hash];
+ if (bucket == null)
+ rest[hash] = [element];
+ else {
+ if (this._findBucketIndex$2(bucket, element) >= 0)
+ return false;
+ bucket.push(element);
+ }
+ this._collection$_length = this._collection$_length + 1;
+ this._elements = null;
+ return true;
+ },
+ remove$1: function(_, object) {
+ var rest, bucket, index;
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return false;
+ this._collection$_length = this._collection$_length - 1;
+ this._elements = null;
+ bucket.splice(index, 1);
+ return true;
+ },
+ _computeElements$0: function() {
+ var t1, result, strings, names, entries, index, i, nums, rest, bucket, $length, i0;
+ t1 = this._elements;
+ if (t1 != null)
+ return t1;
+ result = Array(this._collection$_length);
+ result.fixed$length = init;
+ strings = this._strings;
+ if (strings != null) {
+ names = Object.getOwnPropertyNames(strings);
+ entries = names.length;
+ for (index = 0, i = 0; i < entries; ++i) {
+ result[index] = names[i];
+ ++index;
+ }
+ } else
+ index = 0;
+ nums = this._nums;
+ if (nums != null) {
+ names = Object.getOwnPropertyNames(nums);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ result[index] = +names[i];
+ ++index;
+ }
+ }
+ rest = this._rest;
+ if (rest != null) {
+ names = Object.getOwnPropertyNames(rest);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ bucket = rest[names[i]];
+ $length = bucket.length;
+ for (i0 = 0; i0 < $length; ++i0) {
+ result[index] = bucket[i0];
+ ++index;
+ }
+ }
+ }
+ this._elements = result;
+ return result;
+ },
+ _computeHashCode$1: function(element) {
+ return J.get$hashCode$(element) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, element) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i)
+ if (J.$eq(bucket[i], element))
+ return i;
+ return -1;
+ },
+ $isEfficientLength: true
+ },
+ _IdentityHashSet: {
+ "^": "_HashSet;_collection$_length,_strings,_nums,_rest,_elements",
+ _computeHashCode$1: function(key) {
+ return H.objectHashCode(key) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, element) {
+ var $length, i, t1;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i) {
+ t1 = bucket[i];
+ if (t1 == null ? element == null : t1 === element)
+ return i;
+ }
+ return -1;
+ }
+ },
+ HashSetIterator: {
+ "^": "Object;_set,_elements,_offset,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var elements, offset, t1;
+ elements = this._elements;
+ offset = this._offset;
+ t1 = this._set;
+ if (elements !== t1._elements)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else if (offset >= elements.length) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = elements[offset];
+ this._offset = offset + 1;
+ return true;
+ }
+ }
+ },
+ _LinkedHashSet: {
+ "^": "_HashSetBase;_collection$_length,_strings,_nums,_rest,_first,_last,_modifications",
+ get$iterator: function(_) {
+ var t1 = new P.LinkedHashSetIterator(this, this._modifications, null, null);
+ t1._cell = this._first;
+ return t1;
+ },
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ contains$1: function(_, object) {
+ var strings, nums, rest;
+ if (typeof object === "string" && object !== "__proto__") {
+ strings = this._strings;
+ if (strings == null)
+ return false;
+ return strings[object] != null;
+ } else if (typeof object === "number" && (object & 0x3ffffff) === object) {
+ nums = this._nums;
+ if (nums == null)
+ return false;
+ return nums[object] != null;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ return this._findBucketIndex$2(rest[this._computeHashCode$1(object)], object) >= 0;
+ }
+ },
+ lookup$1: function(object) {
+ var t1, rest, bucket, index;
+ if (!(typeof object === "string" && object !== "__proto__"))
+ t1 = typeof object === "number" && (object & 0x3ffffff) === object;
+ else
+ t1 = true;
+ if (t1)
+ return this.contains$1(0, object) ? object : null;
+ else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return;
+ return J.$index$asx(bucket, index).get$_collection$_element();
+ }
+ },
+ forEach$1: function(_, action) {
+ var cell, modifications;
+ cell = this._first;
+ modifications = this._modifications;
+ for (; cell != null;) {
+ action.call$1(cell.get$_collection$_element());
+ if (modifications !== this._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ cell = cell._next;
+ }
+ },
+ add$1: function(_, element) {
+ var strings, table, nums, rest, hash, bucket;
+ if (typeof element === "string" && element !== "__proto__") {
+ strings = this._strings;
+ if (strings == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._strings = table;
+ strings = table;
+ }
+ return this._addHashTableEntry$2(strings, element);
+ } else if (typeof element === "number" && (element & 0x3ffffff) === element) {
+ nums = this._nums;
+ if (nums == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._nums = table;
+ nums = table;
+ }
+ return this._addHashTableEntry$2(nums, element);
+ } else {
+ rest = this._rest;
+ if (rest == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._rest = table;
+ rest = table;
+ }
+ hash = this._computeHashCode$1(element);
+ bucket = rest[hash];
+ if (bucket == null)
+ rest[hash] = [this._newLinkedCell$1(element)];
+ else {
+ if (this._findBucketIndex$2(bucket, element) >= 0)
+ return false;
+ bucket.push(this._newLinkedCell$1(element));
+ }
+ return true;
+ }
+ },
+ addAll$1: function(_, objects) {
+ var t1;
+ for (t1 = J.get$iterator$ax(objects); t1.moveNext$0();)
+ this.add$1(0, t1._current);
+ },
+ remove$1: function(_, object) {
+ var rest, bucket, index;
+ if (typeof object === "string" && object !== "__proto__")
+ return this._removeHashTableEntry$2(this._strings, object);
+ else if (typeof object === "number" && (object & 0x3ffffff) === object)
+ return this._removeHashTableEntry$2(this._nums, object);
+ else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return false;
+ this._unlinkCell$1(bucket.splice(index, 1)[0]);
+ return true;
+ }
+ },
+ _addHashTableEntry$2: function(table, element) {
+ if (table[element] != null)
+ return false;
+ table[element] = this._newLinkedCell$1(element);
+ return true;
+ },
+ _removeHashTableEntry$2: function(table, element) {
+ var cell;
+ if (table == null)
+ return false;
+ cell = table[element];
+ if (cell == null)
+ return false;
+ this._unlinkCell$1(cell);
+ delete table[element];
+ return true;
+ },
+ _newLinkedCell$1: function(element) {
+ var cell, last;
+ cell = new P.LinkedHashSetCell(element, null, null);
+ if (this._first == null) {
+ this._last = cell;
+ this._first = cell;
+ } else {
+ last = this._last;
+ cell._previous = last;
+ last.set$_next(cell);
+ this._last = cell;
+ }
+ this._collection$_length = this._collection$_length + 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ return cell;
+ },
+ _unlinkCell$1: function(cell) {
+ var previous, next;
+ previous = cell.get$_previous();
+ next = cell.get$_next();
+ if (previous == null)
+ this._first = next;
+ else
+ previous.set$_next(next);
+ if (next == null)
+ this._last = previous;
+ else
+ next.set$_previous(previous);
+ this._collection$_length = this._collection$_length - 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ },
+ _computeHashCode$1: function(element) {
+ return J.get$hashCode$(element) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, element) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i)
+ if (J.$eq(bucket[i].get$_collection$_element(), element))
+ return i;
+ return -1;
+ },
+ $isEfficientLength: true
+ },
+ LinkedHashSetCell: {
+ "^": "Object;_collection$_element<,_next@,_previous@"
+ },
+ LinkedHashSetIterator: {
+ "^": "Object;_set,_modifications,_cell,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var t1 = this._set;
+ if (this._modifications !== t1._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else {
+ t1 = this._cell;
+ if (t1 == null) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = t1.get$_collection$_element();
+ this._cell = t1._next;
+ return true;
+ }
+ }
+ }
+ },
+ _HashSetBase: {
+ "^": "IterableBase;",
+ toString$0: function(_) {
+ return H.IterableMixinWorkaround_toStringIterable(this, "{", "}");
+ },
+ $isEfficientLength: true
+ },
+ IterableBase: {
+ "^": "Object;",
+ forEach$1: function(_, f) {
+ var t1;
+ for (t1 = this.get$iterator(this); t1.moveNext$0();)
+ f.call$1(t1.get$current());
+ },
+ toList$1$growable: function(_, growable) {
+ return P.List_List$from(this, growable, H.getRuntimeTypeArgument(this, "IterableBase", 0));
+ },
+ toList$0: function($receiver) {
+ return this.toList$1$growable($receiver, true);
+ },
+ get$length: function(_) {
+ var it, count;
+ it = this.get$iterator(this);
+ for (count = 0; it.moveNext$0();)
+ ++count;
+ return count;
+ },
+ get$isEmpty: function(_) {
+ return !this.get$iterator(this).moveNext$0();
+ },
+ get$single: function(_) {
+ var it, result;
+ it = this.get$iterator(this);
+ if (!it.moveNext$0())
+ throw H.wrapException(P.StateError$("No elements"));
+ result = it.get$current();
+ if (it.moveNext$0())
+ throw H.wrapException(P.StateError$("More than one element"));
+ return result;
+ },
+ elementAt$1: function(_, index) {
+ var t1, remaining, element;
+ if (index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ for (t1 = this.get$iterator(this), remaining = index; t1.moveNext$0();) {
+ element = t1.get$current();
+ if (remaining === 0)
+ return element;
+ --remaining;
+ }
+ throw H.wrapException(P.RangeError$value(index));
+ },
+ toString$0: function(_) {
+ return P._iterableToString(this);
+ }
+ },
+ ListBase: {
+ "^": "Object+ListMixin;",
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true
+ },
+ ListMixin: {
+ "^": "Object;",
+ get$iterator: function(receiver) {
+ return new H.ListIterator(receiver, this.get$length(receiver), 0, null);
+ },
+ elementAt$1: function(receiver, index) {
+ return this.$index(receiver, index);
+ },
+ forEach$1: function(receiver, action) {
+ var $length, i;
+ $length = this.get$length(receiver);
+ for (i = 0; i < $length; ++i) {
+ action.call$1(this.$index(receiver, i));
+ if ($length !== this.get$length(receiver))
+ throw H.wrapException(P.ConcurrentModificationError$(receiver));
+ }
+ },
+ get$isEmpty: function(receiver) {
+ return this.get$length(receiver) === 0;
+ },
+ where$1: function(receiver, test) {
+ return H.setRuntimeTypeInfo(new H.WhereIterable(receiver, test), [H.getRuntimeTypeArgument(receiver, "ListMixin", 0)]);
+ },
+ toString$0: function(receiver) {
+ var result;
+ if ($.get$_toStringVisiting().contains$1(0, receiver))
+ return "[...]";
+ result = P.StringBuffer$("");
+ try {
+ $.get$_toStringVisiting().add$1(0, receiver);
+ result.write$1("[");
+ result.writeAll$2(receiver, ", ");
+ result.write$1("]");
+ } finally {
+ $.get$_toStringVisiting().remove$1(0, receiver);
+ }
+ return result.get$_contents();
+ },
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true
+ },
+ Maps_mapToString_closure: {
+ "^": "Closure:10;box_0,result_1",
+ call$2: function(k, v) {
+ var t1 = this.box_0;
+ if (!t1.first_0)
+ this.result_1.write$1(", ");
+ t1.first_0 = false;
+ t1 = this.result_1;
+ t1.write$1(k);
+ t1.write$1(": ");
+ t1.write$1(v);
+ }
+ },
+ ListQueue: {
+ "^": "IterableBase;_table,_head,_tail,_modificationCount",
+ get$iterator: function(_) {
+ return new P._ListQueueIterator(this, this._tail, this._modificationCount, this._head, null);
+ },
+ forEach$1: function(_, action) {
+ var modificationCount, i, t1;
+ modificationCount = this._modificationCount;
+ for (i = this._head; i !== this._tail; i = (i + 1 & this._table.length - 1) >>> 0) {
+ t1 = this._table;
+ if (i < 0 || i >= t1.length)
+ return H.ioore(t1, i);
+ action.call$1(t1[i]);
+ if (modificationCount !== this._modificationCount)
+ H.throwExpression(P.ConcurrentModificationError$(this));
+ }
+ },
+ get$isEmpty: function(_) {
+ return this._head === this._tail;
+ },
+ get$length: function(_) {
+ return (this._tail - this._head & this._table.length - 1) >>> 0;
+ },
+ toString$0: function(_) {
+ return H.IterableMixinWorkaround_toStringIterable(this, "{", "}");
+ },
+ _add$1: function(element) {
+ var t1, t2, t3;
+ t1 = this._table;
+ t2 = this._tail;
+ t3 = t1.length;
+ if (t2 < 0 || t2 >= t3)
+ return H.ioore(t1, t2);
+ t1[t2] = element;
+ t3 = (t2 + 1 & t3 - 1) >>> 0;
+ this._tail = t3;
+ if (this._head === t3)
+ this._grow$0();
+ this._modificationCount = this._modificationCount + 1;
+ },
+ _grow$0: function() {
+ var t1, newTable, t2, split;
+ t1 = Array(this._table.length * 2);
+ t1.fixed$length = init;
+ newTable = H.setRuntimeTypeInfo(t1, [H.getTypeArgumentByIndex(this, 0)]);
+ t1 = this._table;
+ t2 = this._head;
+ split = t1.length - t2;
+ H.IterableMixinWorkaround_setRangeList(newTable, 0, split, t1, t2);
+ t1 = this._head;
+ t2 = this._table;
+ H.IterableMixinWorkaround_setRangeList(newTable, split, split + t1, t2, 0);
+ this._head = 0;
+ this._tail = this._table.length;
+ this._table = newTable;
+ },
+ ListQueue$1: function(initialCapacity, $E) {
+ var t1 = Array(8);
+ t1.fixed$length = init;
+ this._table = H.setRuntimeTypeInfo(t1, [$E]);
+ },
+ $isEfficientLength: true,
+ static: {"^": "ListQueue__INITIAL_CAPACITY"}
+ },
+ _ListQueueIterator: {
+ "^": "Object;_queue,_end,_modificationCount,_collection$_position,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var t1, t2, t3;
+ t1 = this._queue;
+ if (this._modificationCount !== t1._modificationCount)
+ H.throwExpression(P.ConcurrentModificationError$(t1));
+ t2 = this._collection$_position;
+ if (t2 === this._end) {
+ this._collection$_current = null;
+ return false;
+ }
+ t1 = t1._table;
+ t3 = t1.length;
+ if (t2 >= t3)
+ return H.ioore(t1, t2);
+ this._collection$_current = t1[t2];
+ this._collection$_position = (t2 + 1 & t3 - 1) >>> 0;
+ return true;
+ }
+ }
+}],
+["dart.convert", "dart:convert", , P, {
+ "^": "",
+ _convertJsonToDart: function(json, reviver) {
+ var revive = new P._convertJsonToDart_closure();
+ return revive.call$2(null, new P._convertJsonToDart_walk(revive).call$1(json));
+ },
+ _parseJson: function(source, reviver) {
+ var parsed, e, t1, exception;
+ t1 = source;
+ if (typeof t1 !== "string")
+ throw H.wrapException(new P.ArgumentError(source));
+ parsed = null;
+ try {
+ parsed = JSON.parse(source);
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ throw H.wrapException(P.FormatException$(String(e)));
+ }
+
+ return P._convertJsonToDart(parsed, reviver);
+ },
+ _defaultToEncodable: [function(object) {
+ return object.toJson$0();
+ }, "call$1", "_defaultToEncodable$closure", 2, 0, 5],
+ _convertJsonToDart_closure: {
+ "^": "Closure:10;",
+ call$2: function(key, value) {
+ return value;
+ }
+ },
+ _convertJsonToDart_walk: {
+ "^": "Closure:11;revive_0",
+ call$1: function(e) {
+ var list, t1, i, keys, map, key, proto;
+ if (e == null || typeof e != "object")
+ return e;
+ if (Object.getPrototypeOf(e) === Array.prototype) {
+ list = e;
+ for (t1 = this.revive_0, i = 0; i < list.length; ++i)
+ list[i] = t1.call$2(i, this.call$1(list[i]));
+ return list;
+ }
+ keys = Object.keys(e);
+ map = H.fillLiteralMap([], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null));
+ for (t1 = this.revive_0, i = 0; i < keys.length; ++i) {
+ key = keys[i];
+ map.$indexSet(0, key, t1.call$2(key, this.call$1(e[key])));
+ }
+ proto = e.__proto__;
+ if (typeof proto !== "undefined" && proto !== Object.prototype)
+ map.$indexSet(0, "__proto__", t1.call$2("__proto__", this.call$1(proto)));
+ return map;
+ }
+ },
+ Codec: {
+ "^": "Object;"
+ },
+ Converter: {
+ "^": "Object;"
+ },
+ JsonUnsupportedObjectError: {
+ "^": "Error;unsupportedObject,cause",
+ toString$0: function(_) {
+ if (this.cause != null)
+ return "Converting object to an encodable object failed.";
+ else
+ return "Converting object did not return an encodable object.";
+ },
+ static: {JsonUnsupportedObjectError$: function(unsupportedObject, cause) {
+ return new P.JsonUnsupportedObjectError(unsupportedObject, cause);
+ }}
+ },
+ JsonCyclicError: {
+ "^": "JsonUnsupportedObjectError;unsupportedObject,cause",
+ toString$0: function(_) {
+ return "Cyclic error in JSON stringify";
+ },
+ static: {JsonCyclicError$: function(object) {
+ return new P.JsonCyclicError(object, null);
+ }}
+ },
+ JsonCodec: {
+ "^": "Codec;_reviver,_toEncodable",
+ decode$2$reviver: function(source, reviver) {
+ return P._parseJson(source, this.get$decoder()._reviver);
+ },
+ decode$1: function(source) {
+ return this.decode$2$reviver(source, null);
+ },
+ encode$2$toEncodable: function(value, toEncodable) {
+ return P._JsonStringifier_stringify(value, this.get$encoder()._toEncodableFunction);
+ },
+ encode$1: function(value) {
+ return this.encode$2$toEncodable(value, null);
+ },
+ get$encoder: function() {
+ return C.JsonEncoder_null;
+ },
+ get$decoder: function() {
+ return C.JsonDecoder_null;
+ }
+ },
+ JsonEncoder: {
+ "^": "Converter;_toEncodableFunction"
+ },
+ JsonDecoder: {
+ "^": "Converter;_reviver"
+ },
+ _JsonStringifier: {
+ "^": "Object;_toEncodable,_sink,_seen",
+ _toEncodable$1: function(arg0) {
+ return this._toEncodable.call$1(arg0);
+ },
+ escape$1: function(s) {
+ var t1, $length, t2, offset, i, charCode, t3, charCodes, str;
+ t1 = J.getInterceptor$asx(s);
+ $length = t1.get$length(s);
+ if (typeof $length !== "number")
+ return H.iae($length);
+ t2 = this._sink;
+ offset = 0;
+ i = 0;
+ for (; i < $length; ++i) {
+ charCode = t1.codeUnitAt$1(s, i);
+ if (charCode > 92)
+ continue;
+ if (charCode < 32) {
+ if (i > offset) {
+ t3 = C.JSString_methods.substring$2(s, offset, i);
+ t2._contents = t2._contents + t3;
+ }
+ offset = i + 1;
+ charCodes = P.List_List$filled(1, 92, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ switch (charCode) {
+ case 8:
+ charCodes = P.List_List$filled(1, 98, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 9:
+ charCodes = P.List_List$filled(1, 116, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 10:
+ charCodes = P.List_List$filled(1, 110, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 12:
+ charCodes = P.List_List$filled(1, 102, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 13:
+ charCodes = P.List_List$filled(1, 114, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ default:
+ charCodes = P.List_List$filled(1, 117, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ charCodes = P.List_List$filled(1, 48, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ charCodes = P.List_List$filled(1, 48, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ t3 = charCode >>> 4 & 15;
+ t3 = t3 < 10 ? 48 + t3 : 87 + t3;
+ charCodes = P.List_List$filled(1, t3, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ t3 = charCode & 15;
+ t3 = t3 < 10 ? 48 + t3 : 87 + t3;
+ charCodes = P.List_List$filled(1, t3, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ }
+ } else if (charCode === 34 || charCode === 92) {
+ if (i > offset) {
+ t3 = C.JSString_methods.substring$2(s, offset, i);
+ t2._contents = t2._contents + t3;
+ }
+ offset = i + 1;
+ charCodes = P.List_List$filled(1, 92, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ charCodes = P.List_List$filled(1, charCode, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ }
+ }
+ if (offset === 0) {
+ str = typeof s === "string" ? s : H.S(s);
+ t2._contents = t2._contents + str;
+ } else if (offset < $length) {
+ t1 = t1.substring$2(s, offset, $length);
+ t2._contents = t2._contents + t1;
+ }
+ },
+ checkCycle$1: function(object) {
+ var t1, t2, i, t3;
+ for (t1 = this._seen, t2 = t1.length, i = 0; i < t2; ++i) {
+ t3 = t1[i];
+ if (object == null ? t3 == null : object === t3)
+ throw H.wrapException(P.JsonCyclicError$(object));
+ }
+ t1.push(object);
+ },
+ stringifyValue$1: function(object) {
+ var customJson, e, t1, exception;
+ if (!this.stringifyJsonValue$1(object)) {
+ this.checkCycle$1(object);
+ try {
+ customJson = this._toEncodable$1(object);
+ if (!this.stringifyJsonValue$1(customJson)) {
+ t1 = P.JsonUnsupportedObjectError$(object, null);
+ throw H.wrapException(t1);
+ }
+ t1 = this._seen;
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ throw H.wrapException(P.JsonUnsupportedObjectError$(object, e));
+ }
+
+ }
+ },
+ stringifyJsonValue$1: function(object) {
+ var t1, t2, i, t3, separator, key;
+ if (typeof object === "number") {
+ if (!C.JSNumber_methods.get$isFinite(object))
+ return false;
+ this._sink.write$1(C.JSNumber_methods.toString$0(object));
+ return true;
+ } else if (object === true) {
+ this._sink.write$1("true");
+ return true;
+ } else if (object === false) {
+ this._sink.write$1("false");
+ return true;
+ } else if (object == null) {
+ this._sink.write$1("null");
+ return true;
+ } else if (typeof object === "string") {
+ t1 = this._sink;
+ t1.write$1("\"");
+ this.escape$1(object);
+ t1.write$1("\"");
+ return true;
+ } else {
+ t1 = J.getInterceptor(object);
+ if (!!t1.$isList) {
+ this.checkCycle$1(object);
+ t2 = this._sink;
+ t2.write$1("[");
+ if (t1.get$length(object) > 0) {
+ this.stringifyValue$1(t1.$index(object, 0));
+ for (i = 1; i < t1.get$length(object); ++i) {
+ t2._contents = t2._contents + ",";
+ this.stringifyValue$1(t1.$index(object, i));
+ }
+ }
+ t2.write$1("]");
+ this._removeSeen$1(object);
+ return true;
+ } else if (!!t1.$isMap) {
+ this.checkCycle$1(object);
+ t2 = this._sink;
+ t2.write$1("{");
+ for (t3 = J.get$iterator$ax(t1.get$keys(object)), separator = "\""; t3.moveNext$0(); separator = ",\"") {
+ key = t3.get$current();
+ t2._contents = t2._contents + separator;
+ this.escape$1(key);
+ t2._contents = t2._contents + "\":";
+ this.stringifyValue$1(t1.$index(object, key));
+ }
+ t2.write$1("}");
+ this._removeSeen$1(object);
+ return true;
+ } else
+ return false;
+ }
+ },
+ _removeSeen$1: function(object) {
+ var t1 = this._seen;
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ },
+ static: {"^": "_JsonStringifier_BACKSPACE,_JsonStringifier_TAB,_JsonStringifier_NEWLINE,_JsonStringifier_CARRIAGE_RETURN,_JsonStringifier_FORM_FEED,_JsonStringifier_QUOTE,_JsonStringifier_CHAR_0,_JsonStringifier_BACKSLASH,_JsonStringifier_CHAR_b,_JsonStringifier_CHAR_f,_JsonStringifier_CHAR_n,_JsonStringifier_CHAR_r,_JsonStringifier_CHAR_t,_JsonStringifier_CHAR_u", _JsonStringifier_stringify: function(object, toEncodable) {
+ var output;
+ toEncodable = P._defaultToEncodable$closure();
+ output = P.StringBuffer$("");
+ new P._JsonStringifier(toEncodable, output, []).stringifyValue$1(object);
+ return output._contents;
+ }}
+ }
+}],
+["dart.core", "dart:core", , P, {
+ "^": "",
+ _symbolToString: function(symbol) {
+ return H.Symbol_getName(symbol);
+ },
+ Error_safeToString: function(object) {
+ var buffer, t1, i, t2, codeUnit, charCodes;
+ if (typeof object === "number" || typeof object === "boolean" || null == object)
+ return J.toString$0(object);
+ if (typeof object === "string") {
+ buffer = new P.StringBuffer("");
+ buffer._contents = "\"";
+ for (t1 = object.length, i = 0, t2 = "\""; i < t1; ++i) {
+ codeUnit = C.JSString_methods.codeUnitAt$1(object, i);
+ if (codeUnit <= 31)
+ if (codeUnit === 10) {
+ t2 = buffer._contents + "\\n";
+ buffer._contents = t2;
+ } else if (codeUnit === 13) {
+ t2 = buffer._contents + "\\r";
+ buffer._contents = t2;
+ } else if (codeUnit === 9) {
+ t2 = buffer._contents + "\\t";
+ buffer._contents = t2;
+ } else {
+ t2 = buffer._contents + "\\x";
+ buffer._contents = t2;
+ if (codeUnit < 16)
+ buffer._contents = t2 + "0";
+ else {
+ buffer._contents = t2 + "1";
+ codeUnit -= 16;
+ }
+ t2 = codeUnit < 10 ? 48 + codeUnit : 87 + codeUnit;
+ charCodes = P.List_List$filled(1, t2, J.JSInt);
+ t2 = H.Primitives_stringFromCharCodes(charCodes);
+ t2 = buffer._contents + t2;
+ buffer._contents = t2;
+ }
+ else if (codeUnit === 92) {
+ t2 = buffer._contents + "\\\\";
+ buffer._contents = t2;
+ } else if (codeUnit === 34) {
+ t2 = buffer._contents + "\\\"";
+ buffer._contents = t2;
+ } else {
+ charCodes = P.List_List$filled(1, codeUnit, J.JSInt);
+ t2 = H.Primitives_stringFromCharCodes(charCodes);
+ t2 = buffer._contents + t2;
+ buffer._contents = t2;
+ }
+ }
+ t1 = t2 + "\"";
+ buffer._contents = t1;
+ return t1;
+ }
+ return "Instance of '" + H.Primitives_objectTypeName(object) + "'";
+ },
+ Exception_Exception: function(message) {
+ return new P._ExceptionImplementation(message);
+ },
+ identical: [function(a, b) {
+ return a == null ? b == null : a === b;
+ }, "call$2", "identical$closure", 4, 0, 6],
+ identityHashCode: [function(object) {
+ return H.objectHashCode(object);
+ }, "call$1", "identityHashCode$closure", 2, 0, 7],
+ List_List$filled: function($length, fill, $E) {
+ var result, t1, i;
+ result = J.JSArray_JSArray$fixed($length, $E);
+ if ($length !== 0 && true)
+ for (t1 = result.length, i = 0; i < t1; ++i)
+ result[i] = fill;
+ return result;
+ },
+ List_List$from: function(other, growable, $E) {
+ var list, t1;
+ list = H.setRuntimeTypeInfo([], [$E]);
+ for (t1 = J.get$iterator$ax(other); t1.moveNext$0();)
+ list.push(t1.get$current());
+ if (growable)
+ return list;
+ list.fixed$length = init;
+ return list;
+ },
+ print: function(object) {
+ var line = H.S(object);
+ H.printString(line);
+ },
+ NoSuchMethodError_toString_closure: {
+ "^": "Closure:18;box_0",
+ call$2: function(key, value) {
+ var t1 = this.box_0;
+ if (t1.i_1 > 0)
+ t1.sb_0.write$1(", ");
+ t1.sb_0.write$1(P._symbolToString(key));
+ }
+ },
+ DateTime: {
+ "^": "Object;millisecondsSinceEpoch,isUtc",
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ if (!J.getInterceptor(other).$isDateTime)
+ return false;
+ return this.millisecondsSinceEpoch === other.millisecondsSinceEpoch && this.isUtc === other.isUtc;
+ },
+ get$hashCode: function(_) {
+ return this.millisecondsSinceEpoch;
+ },
+ toString$0: function(_) {
+ var t1, y, m, d, h, min, sec, ms;
+ t1 = this.isUtc;
+ y = P.DateTime__fourDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCFullYear() + 0 : H.Primitives_lazyAsJsDate(this).getFullYear() + 0);
+ m = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCMonth() + 1 : H.Primitives_lazyAsJsDate(this).getMonth() + 1);
+ d = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCDate() + 0 : H.Primitives_lazyAsJsDate(this).getDate() + 0);
+ h = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCHours() + 0 : H.Primitives_lazyAsJsDate(this).getHours() + 0);
+ min = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCMinutes() + 0 : H.Primitives_lazyAsJsDate(this).getMinutes() + 0);
+ sec = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCSeconds() + 0 : H.Primitives_lazyAsJsDate(this).getSeconds() + 0);
+ ms = P.DateTime__threeDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCMilliseconds() + 0 : H.Primitives_lazyAsJsDate(this).getMilliseconds() + 0);
+ if (t1)
+ return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + "Z";
+ else
+ return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms;
+ },
+ DateTime$fromMillisecondsSinceEpoch$2$isUtc: function(millisecondsSinceEpoch, isUtc) {
+ if (Math.abs(millisecondsSinceEpoch) > 8640000000000000)
+ throw H.wrapException(new P.ArgumentError(millisecondsSinceEpoch));
+ },
+ DateTime$_now$0: function() {
+ H.Primitives_lazyAsJsDate(this);
+ },
+ $isDateTime: true,
+ static: {"^": "DateTime_MONDAY,DateTime_TUESDAY,DateTime_WEDNESDAY,DateTime_THURSDAY,DateTime_FRIDAY,DateTime_SATURDAY,DateTime_SUNDAY,DateTime_DAYS_PER_WEEK,DateTime_JANUARY,DateTime_FEBRUARY,DateTime_MARCH,DateTime_APRIL,DateTime_MAY,DateTime_JUNE,DateTime_JULY,DateTime_AUGUST,DateTime_SEPTEMBER,DateTime_OCTOBER,DateTime_NOVEMBER,DateTime_DECEMBER,DateTime_MONTHS_PER_YEAR,DateTime__MAX_MILLISECONDS_SINCE_EPOCH", DateTime_parse: function(formattedString) {
+ var match, t1, t2, years, month, day, hour, minute, second, millisecond, addOneMillisecond, t3, sign, hourDifference, minuteDifference, isUtc, millisecondsSinceEpoch;
+ match = new H.JSSyntaxRegExp(H.JSSyntaxRegExp_makeNative("^([+-]?\\d{4,5})-?(\\d\\d)-?(\\d\\d)(?:[ T](\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(.\\d{1,6})?)?)?( ?[zZ]| ?([-+])(\\d\\d)(?::?(\\d\\d))?)?)?$", false, true, false), null, null).firstMatch$1(formattedString);
+ if (match != null) {
+ t1 = new P.DateTime_parse_parseIntOrZero();
+ t2 = match._match;
+ if (1 >= t2.length)
+ return H.ioore(t2, 1);
+ years = H.Primitives_parseInt(t2[1], null, null);
+ if (2 >= t2.length)
+ return H.ioore(t2, 2);
+ month = H.Primitives_parseInt(t2[2], null, null);
+ if (3 >= t2.length)
+ return H.ioore(t2, 3);
+ day = H.Primitives_parseInt(t2[3], null, null);
+ if (4 >= t2.length)
+ return H.ioore(t2, 4);
+ hour = t1.call$1(t2[4]);
+ if (5 >= t2.length)
+ return H.ioore(t2, 5);
+ minute = t1.call$1(t2[5]);
+ if (6 >= t2.length)
+ return H.ioore(t2, 6);
+ second = t1.call$1(t2[6]);
+ if (7 >= t2.length)
+ return H.ioore(t2, 7);
+ millisecond = J.round$0$n(J.$mul$ns(new P.DateTime_parse_parseDoubleOrZero().call$1(t2[7]), 1000));
+ if (millisecond === 1000) {
+ addOneMillisecond = true;
+ millisecond = 999;
+ } else
+ addOneMillisecond = false;
+ t3 = t2.length;
+ if (8 >= t3)
+ return H.ioore(t2, 8);
+ if (t2[8] != null) {
+ if (9 >= t3)
+ return H.ioore(t2, 9);
+ t3 = t2[9];
+ if (t3 != null) {
+ sign = J.$eq(t3, "-") ? -1 : 1;
+ if (10 >= t2.length)
+ return H.ioore(t2, 10);
+ hourDifference = H.Primitives_parseInt(t2[10], null, null);
+ if (11 >= t2.length)
+ return H.ioore(t2, 11);
+ minuteDifference = t1.call$1(t2[11]);
+ if (typeof hourDifference !== "number")
+ return H.iae(hourDifference);
+ minuteDifference = J.$add$ns(minuteDifference, 60 * hourDifference);
+ if (typeof minuteDifference !== "number")
+ return H.iae(minuteDifference);
+ minute = J.$sub$n(minute, sign * minuteDifference);
+ }
+ isUtc = true;
+ } else
+ isUtc = false;
+ millisecondsSinceEpoch = H.Primitives_valueFromDecomposedDate(years, month, day, hour, minute, second, millisecond, isUtc);
+ return P.DateTime$fromMillisecondsSinceEpoch(addOneMillisecond ? millisecondsSinceEpoch + 1 : millisecondsSinceEpoch, isUtc);
+ } else
+ throw H.wrapException(P.FormatException$(formattedString));
+ }, DateTime$fromMillisecondsSinceEpoch: function(millisecondsSinceEpoch, isUtc) {
+ var t1 = new P.DateTime(millisecondsSinceEpoch, isUtc);
+ t1.DateTime$fromMillisecondsSinceEpoch$2$isUtc(millisecondsSinceEpoch, isUtc);
+ return t1;
+ }, DateTime__fourDigits: function(n) {
+ var absN, sign;
+ absN = Math.abs(n);
+ sign = n < 0 ? "-" : "";
+ if (absN >= 1000)
+ return "" + n;
+ if (absN >= 100)
+ return sign + "0" + H.S(absN);
+ if (absN >= 10)
+ return sign + "00" + H.S(absN);
+ return sign + "000" + H.S(absN);
+ }, DateTime__threeDigits: function(n) {
+ if (n >= 100)
+ return "" + n;
+ if (n >= 10)
+ return "0" + n;
+ return "00" + n;
+ }, DateTime__twoDigits: function(n) {
+ if (n >= 10)
+ return "" + n;
+ return "0" + n;
+ }}
+ },
+ DateTime_parse_parseIntOrZero: {
+ "^": "Closure:19;",
+ call$1: function(matched) {
+ if (matched == null)
+ return 0;
+ return H.Primitives_parseInt(matched, null, null);
+ }
+ },
+ DateTime_parse_parseDoubleOrZero: {
+ "^": "Closure:20;",
+ call$1: function(matched) {
+ if (matched == null)
+ return 0;
+ return H.Primitives_parseDouble(matched, null);
+ }
+ },
+ Duration: {
+ "^": "Object;_duration<",
+ $add: function(_, other) {
+ return P.Duration$(0, 0, this._duration + other.get$_duration(), 0, 0, 0);
+ },
+ $sub: function(_, other) {
+ return P.Duration$(0, 0, C.JSInt_methods.$sub(this._duration, other.get$_duration()), 0, 0, 0);
+ },
+ $mul: function(_, factor) {
+ return P.Duration$(0, 0, C.JSNumber_methods.toInt$0(C.JSInt_methods.roundToDouble$0(this._duration * factor)), 0, 0, 0);
+ },
+ $lt: function(_, other) {
+ return C.JSInt_methods.$lt(this._duration, other.get$_duration());
+ },
+ $le: function(_, other) {
+ return C.JSInt_methods.$le(this._duration, other.get$_duration());
+ },
+ $ge: function(_, other) {
+ return C.JSInt_methods.$ge(this._duration, other.get$_duration());
+ },
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ if (!J.getInterceptor(other).$isDuration)
+ return false;
+ return this._duration === other._duration;
+ },
+ get$hashCode: function(_) {
+ return this._duration & 0x1FFFFFFF;
+ },
+ toString$0: function(_) {
+ var t1, t2, twoDigitMinutes, twoDigitSeconds, sixDigitUs;
+ t1 = new P.Duration_toString_twoDigits();
+ t2 = this._duration;
+ if (t2 < 0)
+ return "-" + H.S(P.Duration$(0, 0, -t2, 0, 0, 0));
+ twoDigitMinutes = t1.call$1(C.JSInt_methods.remainder$1(C.JSInt_methods._tdivFast$1(t2, 60000000), 60));
+ twoDigitSeconds = t1.call$1(C.JSInt_methods.remainder$1(C.JSInt_methods._tdivFast$1(t2, 1000000), 60));
+ sixDigitUs = new P.Duration_toString_sixDigits().call$1(C.JSInt_methods.remainder$1(t2, 1000000));
+ return "" + C.JSInt_methods._tdivFast$1(t2, 3600000000) + ":" + H.S(twoDigitMinutes) + ":" + H.S(twoDigitSeconds) + "." + H.S(sixDigitUs);
+ },
+ $isDuration: true,
+ static: {"^": "Duration_MICROSECONDS_PER_MILLISECOND,Duration_MILLISECONDS_PER_SECOND,Duration_SECONDS_PER_MINUTE,Duration_MINUTES_PER_HOUR,Duration_HOURS_PER_DAY,Duration_MICROSECONDS_PER_SECOND,Duration_MICROSECONDS_PER_MINUTE,Duration_MICROSECONDS_PER_HOUR,Duration_MICROSECONDS_PER_DAY,Duration_MILLISECONDS_PER_MINUTE,Duration_MILLISECONDS_PER_HOUR,Duration_MILLISECONDS_PER_DAY,Duration_SECONDS_PER_HOUR,Duration_SECONDS_PER_DAY,Duration_MINUTES_PER_DAY,Duration_ZERO", Duration$: function(days, hours, microseconds, milliseconds, minutes, seconds) {
+ return new P.Duration(days * 86400000000 + hours * 3600000000 + minutes * 60000000 + seconds * 1000000 + milliseconds * 1000 + microseconds);
+ }}
+ },
+ Duration_toString_sixDigits: {
+ "^": "Closure:21;",
+ call$1: function(n) {
+ if (n >= 100000)
+ return "" + n;
+ if (n >= 10000)
+ return "0" + n;
+ if (n >= 1000)
+ return "00" + n;
+ if (n >= 100)
+ return "000" + n;
+ if (n >= 10)
+ return "0000" + n;
+ return "00000" + n;
+ }
+ },
+ Duration_toString_twoDigits: {
+ "^": "Closure:21;",
+ call$1: function(n) {
+ if (n >= 10)
+ return "" + n;
+ return "0" + n;
+ }
+ },
+ Error: {
+ "^": "Object;",
+ get$stackTrace: function() {
+ return new H._StackTrace(this.$thrownJsError, null);
+ },
+ $isError: true
+ },
+ NullThrownError: {
+ "^": "Error;",
+ toString$0: function(_) {
+ return "Throw of null.";
+ }
+ },
+ ArgumentError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ var t1 = this.message;
+ if (t1 != null)
+ return "Illegal argument(s): " + H.S(t1);
+ return "Illegal argument(s)";
+ },
+ static: {ArgumentError$: function(message) {
+ return new P.ArgumentError(message);
+ }}
+ },
+ RangeError: {
+ "^": "ArgumentError;message",
+ toString$0: function(_) {
+ return "RangeError: " + H.S(this.message);
+ },
+ static: {RangeError$: function(message) {
+ return new P.RangeError(message);
+ }, RangeError$value: function(value) {
+ return new P.RangeError("value " + H.S(value));
+ }, RangeError$range: function(value, start, end) {
+ return new P.RangeError("value " + H.S(value) + " not in range " + start + ".." + H.S(end));
+ }}
+ },
+ UnsupportedError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ return "Unsupported operation: " + this.message;
+ },
+ static: {UnsupportedError$: function(message) {
+ return new P.UnsupportedError(message);
+ }}
+ },
+ UnimplementedError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ var t1 = this.message;
+ return t1 != null ? "UnimplementedError: " + H.S(t1) : "UnimplementedError";
+ },
+ $isError: true,
+ static: {UnimplementedError$: function(message) {
+ return new P.UnimplementedError(message);
+ }}
+ },
+ StateError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ return "Bad state: " + this.message;
+ },
+ static: {StateError$: function(message) {
+ return new P.StateError(message);
+ }}
+ },
+ ConcurrentModificationError: {
+ "^": "Error;modifiedObject",
+ toString$0: function(_) {
+ var t1 = this.modifiedObject;
+ if (t1 == null)
+ return "Concurrent modification during iteration.";
+ return "Concurrent modification during iteration: " + H.S(P.Error_safeToString(t1)) + ".";
+ },
+ static: {ConcurrentModificationError$: function(modifiedObject) {
+ return new P.ConcurrentModificationError(modifiedObject);
+ }}
+ },
+ OutOfMemoryError: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "Out of Memory";
+ },
+ get$stackTrace: function() {
+ return;
+ },
+ $isError: true
+ },
+ StackOverflowError: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "Stack Overflow";
+ },
+ get$stackTrace: function() {
+ return;
+ },
+ $isError: true
+ },
+ CyclicInitializationError: {
+ "^": "Error;variableName",
+ toString$0: function(_) {
+ return "Reading static variable '" + this.variableName + "' during its initialization";
+ },
+ static: {CyclicInitializationError$: function(variableName) {
+ return new P.CyclicInitializationError(variableName);
+ }}
+ },
+ _ExceptionImplementation: {
+ "^": "Object;message",
+ toString$0: function(_) {
+ var t1 = this.message;
+ if (t1 == null)
+ return "Exception";
+ return "Exception: " + H.S(t1);
+ }
+ },
+ FormatException: {
+ "^": "Object;message",
+ toString$0: function(_) {
+ return "FormatException: " + H.S(this.message);
+ },
+ $isFormatException: true,
+ static: {FormatException$: function(message) {
+ return new P.FormatException(message);
+ }}
+ },
+ Expando: {
+ "^": "Object;name",
+ toString$0: function(_) {
+ return "Expando:" + H.S(this.name);
+ },
+ $index: function(_, object) {
+ var values = H.Primitives_getProperty(object, "expando$values");
+ return values == null ? null : H.Primitives_getProperty(values, this._getKey$0());
+ },
+ $indexSet: function(_, object, value) {
+ var values = H.Primitives_getProperty(object, "expando$values");
+ if (values == null) {
+ values = new P.Object();
+ H.Primitives_setProperty(object, "expando$values", values);
+ }
+ H.Primitives_setProperty(values, this._getKey$0(), value);
+ },
+ _getKey$0: function() {
+ var key, t1;
+ key = H.Primitives_getProperty(this, "expando$key");
+ if (key == null) {
+ t1 = $.Expando__keyCount;
+ $.Expando__keyCount = t1 + 1;
+ key = "expando$key$" + t1;
+ H.Primitives_setProperty(this, "expando$key", key);
+ }
+ return key;
+ },
+ static: {"^": "Expando__KEY_PROPERTY_NAME,Expando__EXPANDO_PROPERTY_NAME,Expando__keyCount"}
+ },
+ Iterator: {
+ "^": "Object;"
+ },
+ Null: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "null";
+ }
+ },
+ Object: {
+ "^": ";",
+ $eq: function(_, other) {
+ return this === other;
+ },
+ get$hashCode: function(_) {
+ return H.Primitives_objectHashCode(this);
+ },
+ toString$0: function(_) {
+ return H.Primitives_objectToString(this);
+ }
+ },
+ StackTrace: {
+ "^": "Object;"
+ },
+ StringBuffer: {
+ "^": "Object;_contents<",
+ get$length: function(_) {
+ return this._contents.length;
+ },
+ get$isEmpty: function(_) {
+ return this._contents.length === 0;
+ },
+ write$1: function(obj) {
+ var str = typeof obj === "string" ? obj : H.S(obj);
+ this._contents = this._contents + str;
+ },
+ writeAll$2: function(objects, separator) {
+ var iterator, str;
+ iterator = J.get$iterator$ax(objects);
+ if (!iterator.moveNext$0())
+ return;
+ if (separator.length === 0)
+ do {
+ str = iterator.get$current();
+ str = typeof str === "string" ? str : H.S(str);
+ this._contents = this._contents + str;
+ } while (iterator.moveNext$0());
+ else {
+ this.write$1(iterator.get$current());
+ for (; iterator.moveNext$0();) {
+ this._contents = this._contents + separator;
+ str = iterator.get$current();
+ str = typeof str === "string" ? str : H.S(str);
+ this._contents = this._contents + str;
+ }
+ }
+ },
+ toString$0: function(_) {
+ return this._contents;
+ },
+ StringBuffer$1: function($content) {
+ this._contents = $content;
+ },
+ static: {StringBuffer$: function($content) {
+ var t1 = new P.StringBuffer("");
+ t1.StringBuffer$1($content);
+ return t1;
+ }}
+ },
+ Symbol: {
+ "^": "Object;"
+ }
+}],
+["dart.dom.html", "dart:html", , W, {
+ "^": "",
+ Element_Element$html: function(html, treeSanitizer, validator) {
+ var fragment, t1;
+ fragment = J.createFragment$3$treeSanitizer$validator$x(document.body, html, treeSanitizer, validator);
+ fragment.toString;
+ t1 = new W._ChildNodeListLazy(fragment);
+ t1 = t1.where$1(t1, new W.Element_Element$html_closure());
+ return t1.get$single(t1);
+ },
+ Window__isDartLocation: function(thing) {
+ var exception;
+ try {
+ return !!J.getInterceptor(thing).$isLocation;
+ } catch (exception) {
+ H.unwrapException(exception);
+ return false;
+ }
+
+ },
+ _wrapZone: function(callback) {
+ var t1 = $.Zone__current;
+ if (t1 === C.C__RootZone)
+ return callback;
+ return t1.bindUnaryCallback$2$runGuarded(callback, true);
+ },
+ HtmlElement: {
+ "^": "Element;",
+ "%": "HTMLAppletElement|HTMLBRElement|HTMLCanvasElement|HTMLContentElement|HTMLDListElement|HTMLDataListElement|HTMLDetailsElement|HTMLDialogElement|HTMLDirectoryElement|HTMLDivElement|HTMLFontElement|HTMLFrameElement|HTMLFrameSetElement|HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLImageElement|HTMLLabelElement|HTMLLegendElement|HTMLMarqueeElement|HTMLMenuElement|HTMLModElement|HTMLOListElement|HTMLParagraphElement|HTMLPreElement|HTMLQuoteElement|HTMLScriptElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableHeaderCellElement|HTMLTitleElement|HTMLTrackElement|HTMLUListElement|HTMLUnknownElement;HTMLElement"
+ },
+ AnchorElement: {
+ "^": "HtmlElement;hostname=,href},port=,protocol=",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "HTMLAnchorElement"
+ },
+ AreaElement: {
+ "^": "HtmlElement;hostname=,href},port=,protocol=",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "HTMLAreaElement"
+ },
+ BaseElement: {
+ "^": "HtmlElement;href}",
+ "%": "HTMLBaseElement"
+ },
+ BodyElement: {
+ "^": "HtmlElement;",
+ get$onBlur: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_blur._eventType, false), [null]);
+ },
+ $isBodyElement: true,
+ "%": "HTMLBodyElement"
+ },
+ ButtonElement: {
+ "^": "HtmlElement;disabled},name=,value%",
+ "%": "HTMLButtonElement"
+ },
+ CharacterData: {
+ "^": "Node;length=",
+ "%": "CDATASection|CharacterData|Comment|ProcessingInstruction|Text"
+ },
+ DomException: {
+ "^": "Interceptor;",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "DOMException"
+ },
+ Element: {
+ "^": "Node;",
+ get$attributes: function(receiver) {
+ return new W._ElementAttributeMap(receiver);
+ },
+ toString$0: function(receiver) {
+ return receiver.localName;
+ },
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var t1, t2, base, contextElement, fragment;
+ if (treeSanitizer == null) {
+ t1 = $.Element__defaultValidator;
+ if (t1 == null) {
+ t1 = H.setRuntimeTypeInfo([], [W.NodeValidator]);
+ t2 = new W.NodeValidatorBuilder(t1);
+ t1.push(W._Html5NodeValidator$(null));
+ t1.push(W._TemplatingNodeValidator$());
+ $.Element__defaultValidator = t2;
+ validator = t2;
+ } else
+ validator = t1;
+ t1 = $.Element__defaultSanitizer;
+ if (t1 == null) {
+ t1 = new W._ValidatingTreeSanitizer(validator);
+ $.Element__defaultSanitizer = t1;
+ treeSanitizer = t1;
+ } else {
+ t1.validator = validator;
+ treeSanitizer = t1;
+ }
+ }
+ if ($.Element__parseDocument == null) {
+ t1 = document.implementation.createHTMLDocument("");
+ $.Element__parseDocument = t1;
+ $.Element__parseRange = t1.createRange();
+ base = $.Element__parseDocument.createElement("base", null);
+ J.set$href$x(base, document.baseURI);
+ $.Element__parseDocument.head.appendChild(base);
+ }
+ t1 = $.Element__parseDocument;
+ if (!!this.$isBodyElement)
+ contextElement = t1.body;
+ else {
+ contextElement = t1.createElement(receiver.tagName, null);
+ $.Element__parseDocument.body.appendChild(contextElement);
+ }
+ if ("createContextualFragment" in window.Range.prototype) {
+ $.Element__parseRange.selectNodeContents(contextElement);
+ fragment = $.Element__parseRange.createContextualFragment(html);
+ } else {
+ contextElement.innerHTML = html;
+ fragment = $.Element__parseDocument.createDocumentFragment();
+ for (; t1 = contextElement.firstChild, t1 != null;)
+ fragment.appendChild(t1);
+ }
+ t1 = $.Element__parseDocument.body;
+ if (contextElement == null ? t1 != null : contextElement !== t1)
+ J.remove$0$ax(contextElement);
+ treeSanitizer.sanitizeTree$1(fragment);
+ document.adoptNode(fragment);
+ return fragment;
+ },
+ createFragment$2$treeSanitizer: function($receiver, html, treeSanitizer) {
+ return this.createFragment$3$treeSanitizer$validator($receiver, html, treeSanitizer, null);
+ },
+ set$innerHtml: function(receiver, html) {
+ this.setInnerHtml$1(receiver, html);
+ },
+ setInnerHtml$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ receiver.textContent = null;
+ receiver.appendChild(this.createFragment$3$treeSanitizer$validator(receiver, html, treeSanitizer, validator));
+ },
+ setInnerHtml$1: function($receiver, html) {
+ return this.setInnerHtml$3$treeSanitizer$validator($receiver, html, null, null);
+ },
+ get$onBlur: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_blur._eventType, false), [null]);
+ },
+ get$onChange: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_change._eventType, false), [null]);
+ },
+ get$onClick: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_click._eventType, false), [null]);
+ },
+ get$onInput: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_input._eventType, false), [null]);
+ },
+ $isElement: true,
+ "%": ";Element"
+ },
+ EmbedElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLEmbedElement"
+ },
+ ErrorEvent: {
+ "^": "Event;error=",
+ "%": "ErrorEvent"
+ },
+ Event: {
+ "^": "Interceptor;",
+ preventDefault$0: function(receiver) {
+ return receiver.preventDefault();
+ },
+ "%": "AudioProcessingEvent|AutocompleteErrorEvent|BeforeLoadEvent|BeforeUnloadEvent|CSSFontFaceLoadEvent|CloseEvent|CustomEvent|DeviceMotionEvent|DeviceOrientationEvent|HashChangeEvent|IDBVersionChangeEvent|MIDIConnectionEvent|MIDIMessageEvent|MediaKeyEvent|MediaKeyMessageEvent|MediaKeyNeededEvent|MediaStreamEvent|MediaStreamTrackEvent|MessageEvent|MutationEvent|OfflineAudioCompletionEvent|OverflowEvent|PageTransitionEvent|PopStateEvent|ProgressEvent|RTCDTMFToneChangeEvent|RTCDataChannelEvent|RTCIceCandidateEvent|ResourceProgressEvent|SecurityPolicyViolationEvent|SpeechInputEvent|SpeechRecognitionEvent|SpeechSynthesisEvent|StorageEvent|TrackEvent|TransitionEvent|WebGLContextEvent|WebKitAnimationEvent|WebKitTransitionEvent|XMLHttpRequestProgressEvent;Event"
+ },
+ EventTarget: {
+ "^": "Interceptor;",
+ addEventListener$3: function(receiver, type, listener, useCapture) {
+ return receiver.addEventListener(type, H.convertDartClosureToJS(listener, 1), useCapture);
+ },
+ removeEventListener$3: function(receiver, type, listener, useCapture) {
+ return receiver.removeEventListener(type, H.convertDartClosureToJS(listener, 1), useCapture);
+ },
+ "%": ";EventTarget"
+ },
+ FieldSetElement: {
+ "^": "HtmlElement;disabled},name=",
+ "%": "HTMLFieldSetElement"
+ },
+ FormElement: {
+ "^": "HtmlElement;length=,name=",
+ "%": "HTMLFormElement"
+ },
+ IFrameElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLIFrameElement"
+ },
+ InputElement: {
+ "^": "HtmlElement;disabled},name=,value%",
+ $isElement: true,
+ "%": "HTMLInputElement"
+ },
+ KeygenElement: {
+ "^": "HtmlElement;disabled},name=",
+ "%": "HTMLKeygenElement"
+ },
+ LIElement: {
+ "^": "HtmlElement;value%",
+ "%": "HTMLLIElement"
+ },
+ LinkElement: {
+ "^": "HtmlElement;disabled},href}",
+ "%": "HTMLLinkElement"
+ },
+ Location: {
+ "^": "Interceptor;hostname=,port=,protocol=",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ $isLocation: true,
+ "%": "Location"
+ },
+ MapElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLMapElement"
+ },
+ MediaElement: {
+ "^": "HtmlElement;error=",
+ "%": "HTMLAudioElement|HTMLMediaElement|HTMLVideoElement"
+ },
+ MetaElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLMetaElement"
+ },
+ MeterElement: {
+ "^": "HtmlElement;value%",
+ "%": "HTMLMeterElement"
+ },
+ MidiOutput: {
+ "^": "MidiPort;",
+ send$2: function(receiver, data, timestamp) {
+ return receiver.send(data, timestamp);
+ },
+ send$1: function($receiver, data) {
+ return $receiver.send(data);
+ },
+ "%": "MIDIOutput"
+ },
+ MidiPort: {
+ "^": "EventTarget;",
+ "%": "MIDIInput;MIDIPort"
+ },
+ MouseEvent: {
+ "^": "UIEvent;",
+ "%": "DragEvent|MSPointerEvent|MouseEvent|MouseScrollEvent|MouseWheelEvent|PointerEvent|WheelEvent"
+ },
+ Node: {
+ "^": "EventTarget;",
+ get$nodes: function(receiver) {
+ return new W._ChildNodeListLazy(receiver);
+ },
+ remove$0: function(receiver) {
+ var t1 = receiver.parentNode;
+ if (t1 != null)
+ t1.removeChild(receiver);
+ },
+ toString$0: function(receiver) {
+ var t1 = receiver.nodeValue;
+ return t1 == null ? J.Interceptor.prototype.toString$0.call(this, receiver) : t1;
+ },
+ "%": "Document|DocumentFragment|DocumentType|HTMLDocument|Notation|ShadowRoot|XMLDocument;Node"
+ },
+ NodeList: {
+ "^": "Interceptor_ListMixin_ImmutableListMixin;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ throw H.wrapException(P.RangeError$range(index, 0, t1));
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ throw H.wrapException(P.UnsupportedError$("Cannot assign element of immutable List."));
+ },
+ elementAt$1: function(receiver, index) {
+ if (index < 0 || index >= receiver.length)
+ return H.ioore(receiver, index);
+ return receiver[index];
+ },
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true,
+ $isJavaScriptIndexingBehavior: true,
+ "%": "NodeList|RadioNodeList"
+ },
+ ObjectElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLObjectElement"
+ },
+ OptGroupElement: {
+ "^": "HtmlElement;disabled}",
+ "%": "HTMLOptGroupElement"
+ },
+ OptionElement: {
+ "^": "HtmlElement;disabled},value%",
+ "%": "HTMLOptionElement"
+ },
+ OutputElement: {
+ "^": "HtmlElement;name=,value%",
+ "%": "HTMLOutputElement"
+ },
+ ParamElement: {
+ "^": "HtmlElement;name=,value%",
+ "%": "HTMLParamElement"
+ },
+ ProgressElement: {
+ "^": "HtmlElement;value%",
+ "%": "HTMLProgressElement"
+ },
+ Range: {
+ "^": "Interceptor;",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "Range"
+ },
+ SelectElement: {
+ "^": "HtmlElement;disabled},length=,name=,value%",
+ "%": "HTMLSelectElement"
+ },
+ SpeechRecognitionError: {
+ "^": "Event;error=",
+ "%": "SpeechRecognitionError"
+ },
+ Storage: {
+ "^": "Interceptor;",
+ $index: function(receiver, key) {
+ return receiver.getItem(key);
+ },
+ $indexSet: function(receiver, key, value) {
+ receiver.setItem(key, value);
+ },
+ forEach$1: function(receiver, f) {
+ var i, key;
+ for (i = 0; true; ++i) {
+ key = receiver.key(i);
+ if (key == null)
+ return;
+ f.call$2(key, receiver.getItem(key));
+ }
+ },
+ get$keys: function(receiver) {
+ var keys = [];
+ this.forEach$1(receiver, new W.Storage_keys_closure(keys));
+ return keys;
+ },
+ get$values: function(receiver) {
+ var values = [];
+ this.forEach$1(receiver, new W.Storage_values_closure(values));
+ return values;
+ },
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ get$isEmpty: function(receiver) {
+ return receiver.key(0) == null;
+ },
+ $isMap: true,
+ $asMap: function() {
+ return [J.JSString, J.JSString];
+ },
+ "%": "Storage"
+ },
+ StyleElement: {
+ "^": "HtmlElement;disabled}",
+ "%": "HTMLStyleElement"
+ },
+ TableElement: {
+ "^": "HtmlElement;",
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var table, fragment;
+ if ("createContextualFragment" in window.Range.prototype)
+ return W.Element.prototype.createFragment$3$treeSanitizer$validator.call(this, receiver, html, treeSanitizer, validator);
+ table = W.Element_Element$html("", treeSanitizer, validator);
+ fragment = document.createDocumentFragment();
+ fragment.toString;
+ new W._ChildNodeListLazy(fragment).addAll$1(0, J.get$nodes$x(table));
+ return fragment;
+ },
+ "%": "HTMLTableElement"
+ },
+ TableRowElement: {
+ "^": "HtmlElement;",
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var fragment, t1, section, row;
+ if ("createContextualFragment" in window.Range.prototype)
+ return W.Element.prototype.createFragment$3$treeSanitizer$validator.call(this, receiver, html, treeSanitizer, validator);
+ fragment = document.createDocumentFragment();
+ t1 = J.createFragment$3$treeSanitizer$validator$x(document.createElement("table", null), html, treeSanitizer, validator);
+ t1.toString;
+ t1 = new W._ChildNodeListLazy(t1);
+ section = t1.get$single(t1);
+ section.toString;
+ t1 = new W._ChildNodeListLazy(section);
+ row = t1.get$single(t1);
+ fragment.toString;
+ row.toString;
+ new W._ChildNodeListLazy(fragment).addAll$1(0, new W._ChildNodeListLazy(row));
+ return fragment;
+ },
+ "%": "HTMLTableRowElement"
+ },
+ TableSectionElement: {
+ "^": "HtmlElement;",
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var fragment, t1, section;
+ if ("createContextualFragment" in window.Range.prototype)
+ return W.Element.prototype.createFragment$3$treeSanitizer$validator.call(this, receiver, html, treeSanitizer, validator);
+ fragment = document.createDocumentFragment();
+ t1 = J.createFragment$3$treeSanitizer$validator$x(document.createElement("table", null), html, treeSanitizer, validator);
+ t1.toString;
+ t1 = new W._ChildNodeListLazy(t1);
+ section = t1.get$single(t1);
+ fragment.toString;
+ section.toString;
+ new W._ChildNodeListLazy(fragment).addAll$1(0, new W._ChildNodeListLazy(section));
+ return fragment;
+ },
+ "%": "HTMLTableSectionElement"
+ },
+ TemplateElement: {
+ "^": "HtmlElement;",
+ setInnerHtml$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var fragment;
+ receiver.textContent = null;
+ fragment = this.createFragment$3$treeSanitizer$validator(receiver, html, treeSanitizer, validator);
+ receiver.content.appendChild(fragment);
+ },
+ setInnerHtml$1: function($receiver, html) {
+ return this.setInnerHtml$3$treeSanitizer$validator($receiver, html, null, null);
+ },
+ $isTemplateElement: true,
+ "%": "HTMLTemplateElement"
+ },
+ TextAreaElement: {
+ "^": "HtmlElement;disabled},name=,value%",
+ "%": "HTMLTextAreaElement"
+ },
+ UIEvent: {
+ "^": "Event;",
+ "%": "CompositionEvent|FocusEvent|KeyboardEvent|SVGZoomEvent|TextEvent|TouchEvent;UIEvent"
+ },
+ Window: {
+ "^": "EventTarget;",
+ get$location: function(receiver) {
+ var result = receiver.location;
+ if (W.Window__isDartLocation(result) === true)
+ return result;
+ if (null == receiver._location_wrapper)
+ receiver._location_wrapper = new W._LocationWrapper(result);
+ return receiver._location_wrapper;
+ },
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "DOMWindow|Window"
+ },
+ _Attr: {
+ "^": "Node;name=,value=",
+ "%": "Attr"
+ },
+ _NamedNodeMap: {
+ "^": "Interceptor_ListMixin_ImmutableListMixin0;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ throw H.wrapException(P.RangeError$range(index, 0, t1));
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ throw H.wrapException(P.UnsupportedError$("Cannot assign element of immutable List."));
+ },
+ elementAt$1: function(receiver, index) {
+ if (index < 0 || index >= receiver.length)
+ return H.ioore(receiver, index);
+ return receiver[index];
+ },
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true,
+ $isJavaScriptIndexingBehavior: true,
+ "%": "MozNamedAttrMap|NamedNodeMap"
+ },
+ Element_Element$html_closure: {
+ "^": "Closure:11;",
+ call$1: function(e) {
+ return !!J.getInterceptor(e).$isElement;
+ }
+ },
+ _ChildNodeListLazy: {
+ "^": "ListBase;_this",
+ get$single: function(_) {
+ var t1, l;
+ t1 = this._this;
+ l = t1.childNodes.length;
+ if (l === 0)
+ throw H.wrapException(P.StateError$("No elements"));
+ if (l > 1)
+ throw H.wrapException(P.StateError$("More than one element"));
+ return t1.firstChild;
+ },
+ addAll$1: function(_, iterable) {
+ var t1, t2, len, i;
+ t1 = iterable._this;
+ t2 = this._this;
+ if (t1 !== t2)
+ for (len = t1.childNodes.length, i = 0; i < len; ++i)
+ t2.appendChild(t1.firstChild);
+ return;
+ },
+ $indexSet: function(_, index, value) {
+ var t1, t2;
+ t1 = this._this;
+ t2 = t1.childNodes;
+ if (index >>> 0 !== index || index >= t2.length)
+ return H.ioore(t2, index);
+ t1.replaceChild(value, t2[index]);
+ },
+ get$iterator: function(_) {
+ return C.NodeList_methods.get$iterator(this._this.childNodes);
+ },
+ get$length: function(_) {
+ return this._this.childNodes.length;
+ },
+ $index: function(_, index) {
+ var t1 = this._this.childNodes;
+ if (index >>> 0 !== index || index >= t1.length)
+ return H.ioore(t1, index);
+ return t1[index];
+ },
+ $asListBase: function() {
+ return [W.Node];
+ },
+ $asList: function() {
+ return [W.Node];
+ }
+ },
+ Interceptor_ListMixin: {
+ "^": "Interceptor+ListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ Interceptor_ListMixin_ImmutableListMixin: {
+ "^": "Interceptor_ListMixin+ImmutableListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ Storage_keys_closure: {
+ "^": "Closure:10;keys_0",
+ call$2: function(k, v) {
+ return this.keys_0.push(k);
+ }
+ },
+ Storage_values_closure: {
+ "^": "Closure:10;values_0",
+ call$2: function(k, v) {
+ return this.values_0.push(v);
+ }
+ },
+ Interceptor_ListMixin0: {
+ "^": "Interceptor+ListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ Interceptor_ListMixin_ImmutableListMixin0: {
+ "^": "Interceptor_ListMixin0+ImmutableListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ _AttributeMap: {
+ "^": "Object;",
+ forEach$1: function(_, f) {
+ var t1, key;
+ for (t1 = this.get$keys(this), t1 = new H.ListIterator(t1, t1.length, 0, null); t1.moveNext$0();) {
+ key = t1._current;
+ f.call$2(key, this.$index(0, key));
+ }
+ },
+ get$keys: function(_) {
+ var attributes, keys, len, i, t1;
+ attributes = this._element.attributes;
+ keys = H.setRuntimeTypeInfo([], [J.JSString]);
+ for (len = attributes.length, i = 0; i < len; ++i) {
+ if (i >= attributes.length)
+ return H.ioore(attributes, i);
+ t1 = attributes[i];
+ if (this._matches$1(t1))
+ keys.push(J.get$name$x(t1));
+ }
+ return keys;
+ },
+ get$values: function(_) {
+ var attributes, values, len, i, t1;
+ attributes = this._element.attributes;
+ values = H.setRuntimeTypeInfo([], [J.JSString]);
+ for (len = attributes.length, i = 0; i < len; ++i) {
+ if (i >= attributes.length)
+ return H.ioore(attributes, i);
+ t1 = attributes[i];
+ if (this._matches$1(t1))
+ values.push(J.get$value$x(t1));
+ }
+ return values;
+ },
+ get$isEmpty: function(_) {
+ return this.get$length(this) === 0;
+ },
+ $isMap: true,
+ $asMap: function() {
+ return [J.JSString, J.JSString];
+ }
+ },
+ _ElementAttributeMap: {
+ "^": "_AttributeMap;_element",
+ $index: function(_, key) {
+ return this._element.getAttribute(key);
+ },
+ $indexSet: function(_, key, value) {
+ this._element.setAttribute(key, value);
+ },
+ get$length: function(_) {
+ return this.get$keys(this).length;
+ },
+ _matches$1: function(node) {
+ return node.namespaceURI == null;
+ }
+ },
+ EventStreamProvider: {
+ "^": "Object;_eventType"
+ },
+ _EventStream: {
+ "^": "Stream;",
+ listen$4$cancelOnError$onDone$onError: function(onData, cancelOnError, onDone, onError) {
+ var t1 = new W._EventStreamSubscription(0, this._target, this._eventType, W._wrapZone(onData), this._useCapture);
+ t1.$builtinTypeInfo = this.$builtinTypeInfo;
+ t1._tryResume$0();
+ return t1;
+ }
+ },
+ _ElementEventStreamImpl: {
+ "^": "_EventStream;_target,_eventType,_useCapture"
+ },
+ _EventStreamSubscription: {
+ "^": "StreamSubscription;_pauseCount,_target,_eventType,_onData,_useCapture",
+ cancel$0: function() {
+ if (this._target == null)
+ return;
+ this._unlisten$0();
+ this._target = null;
+ this._onData = null;
+ return;
+ },
+ _tryResume$0: function() {
+ var t1 = this._onData;
+ if (t1 != null && this._pauseCount <= 0)
+ J.addEventListener$3$x(this._target, this._eventType, t1, this._useCapture);
+ },
+ _unlisten$0: function() {
+ var t1 = this._onData;
+ if (t1 != null)
+ J.removeEventListener$3$x(this._target, this._eventType, t1, this._useCapture);
+ }
+ },
+ _Html5NodeValidator: {
+ "^": "Object;uriPolicy<",
+ allowsElement$1: function(element) {
+ return $.get$_Html5NodeValidator__allowedElements().contains$1(0, element.tagName);
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ var tagName, t1, validator;
+ tagName = element.tagName;
+ t1 = $.get$_Html5NodeValidator__attributeValidators();
+ validator = t1.$index(0, H.S(tagName) + "::" + attributeName);
+ if (validator == null)
+ validator = t1.$index(0, "*::" + attributeName);
+ if (validator == null)
+ return false;
+ return validator.call$4(element, attributeName, value, this);
+ },
+ _Html5NodeValidator$1$uriPolicy: function(uriPolicy) {
+ var t1, t2;
+ t1 = $.get$_Html5NodeValidator__attributeValidators();
+ if (t1.get$isEmpty(t1)) {
+ for (t2 = new H.ListIterator(C.List_1GN, 261, 0, null); t2.moveNext$0();)
+ t1.$indexSet(0, t2._current, W._Html5NodeValidator__standardAttributeValidator$closure());
+ for (t2 = new H.ListIterator(C.List_yrN, 12, 0, null); t2.moveNext$0();)
+ t1.$indexSet(0, t2._current, W._Html5NodeValidator__uriAttributeValidator$closure());
+ }
+ },
+ static: {"^": "_Html5NodeValidator__allowedElements,_Html5NodeValidator__standardAttributes,_Html5NodeValidator__uriAttributes,_Html5NodeValidator__attributeValidators", _Html5NodeValidator$: function(uriPolicy) {
+ var e, t1;
+ e = document.createElement("a", null);
+ t1 = new W._SameOriginUriPolicy(e, C.Window_methods.get$location(window));
+ t1 = new W._Html5NodeValidator(t1);
+ t1._Html5NodeValidator$1$uriPolicy(uriPolicy);
+ return t1;
+ }, _Html5NodeValidator__standardAttributeValidator: [function(element, attributeName, value, context) {
+ return true;
+ }, "call$4", "_Html5NodeValidator__standardAttributeValidator$closure", 8, 0, 8], _Html5NodeValidator__uriAttributeValidator: [function(element, attributeName, value, context) {
+ var t1, t2, t3, t4, t5, t6;
+ t1 = context.get$uriPolicy();
+ t2 = t1._hiddenAnchor;
+ t3 = J.getInterceptor$x(t2);
+ t3.set$href(t2, value);
+ t4 = t3.get$hostname(t2);
+ t1 = t1._loc;
+ t5 = J.getInterceptor$x(t1);
+ t6 = t5.get$hostname(t1);
+ if (t4 == null ? t6 == null : t4 === t6) {
+ t4 = t3.get$port(t2);
+ t6 = t5.get$port(t1);
+ if (t4 == null ? t6 == null : t4 === t6) {
+ t4 = t3.get$protocol(t2);
+ t1 = t5.get$protocol(t1);
+ t1 = t4 == null ? t1 == null : t4 === t1;
+ } else
+ t1 = false;
+ } else
+ t1 = false;
+ if (!t1)
+ t1 = t3.get$hostname(t2) === "" && t3.get$port(t2) === "" && t3.get$protocol(t2) === ":";
+ else
+ t1 = true;
+ return t1;
+ }, "call$4", "_Html5NodeValidator__uriAttributeValidator$closure", 8, 0, 8]}
+ },
+ ImmutableListMixin: {
+ "^": "Object;",
+ get$iterator: function(receiver) {
+ return new W.FixedSizeListIterator(receiver, this.get$length(receiver), -1, null);
+ },
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true
+ },
+ NodeValidatorBuilder: {
+ "^": "Object;_validators",
+ allowsElement$1: function(element) {
+ return H.IterableMixinWorkaround_any(this._validators, new W.NodeValidatorBuilder_allowsElement_closure(element));
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ return H.IterableMixinWorkaround_any(this._validators, new W.NodeValidatorBuilder_allowsAttribute_closure(element, attributeName, value));
+ }
+ },
+ NodeValidatorBuilder_allowsElement_closure: {
+ "^": "Closure:11;element_0",
+ call$1: function(v) {
+ return v.allowsElement$1(this.element_0);
+ }
+ },
+ NodeValidatorBuilder_allowsAttribute_closure: {
+ "^": "Closure:11;element_0,attributeName_1,value_2",
+ call$1: function(v) {
+ return v.allowsAttribute$3(this.element_0, this.attributeName_1, this.value_2);
+ }
+ },
+ _SimpleNodeValidator: {
+ "^": "Object;uriPolicy<",
+ allowsElement$1: function(element) {
+ return this.allowedElements.contains$1(0, element.tagName);
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ var tagName, t1;
+ tagName = element.tagName;
+ t1 = this.allowedUriAttributes;
+ if (t1.contains$1(0, H.S(tagName) + "::" + attributeName))
+ return this.uriPolicy.allowsUri$1(value);
+ else if (t1.contains$1(0, "*::" + attributeName))
+ return this.uriPolicy.allowsUri$1(value);
+ else {
+ t1 = this.allowedAttributes;
+ if (t1.contains$1(0, H.S(tagName) + "::" + attributeName))
+ return true;
+ else if (t1.contains$1(0, "*::" + attributeName))
+ return true;
+ else if (t1.contains$1(0, H.S(tagName) + "::*"))
+ return true;
+ else if (t1.contains$1(0, "*::*"))
+ return true;
+ }
+ return false;
+ }
+ },
+ _TemplatingNodeValidator: {
+ "^": "_SimpleNodeValidator;_templateAttrs,allowedElements,allowedAttributes,allowedUriAttributes,uriPolicy",
+ allowsAttribute$3: function(element, attributeName, value) {
+ if (W._SimpleNodeValidator.prototype.allowsAttribute$3.call(this, element, attributeName, value))
+ return true;
+ if (attributeName === "template" && value === "")
+ return true;
+ if (element.getAttribute("template") === "")
+ return this._templateAttrs.contains$1(0, attributeName);
+ return false;
+ },
+ static: {"^": "_TemplatingNodeValidator__TEMPLATE_ATTRS", _TemplatingNodeValidator$: function() {
+ var t1, t2, t3, t4;
+ t1 = H.setRuntimeTypeInfo(new H.MappedListIterable(C.List_wSV, new W._TemplatingNodeValidator_closure()), [null, null]);
+ t2 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t2.addAll$1(0, ["TEMPLATE"]);
+ t3 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t3.addAll$1(0, t1);
+ t1 = t3;
+ t3 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t4 = P.LinkedHashSet_LinkedHashSet(null, null, null, J.JSString);
+ t4.addAll$1(0, C.List_wSV);
+ return new W._TemplatingNodeValidator(t4, t2, t1, t3, null);
+ }}
+ },
+ _TemplatingNodeValidator_closure: {
+ "^": "Closure:11;",
+ call$1: function(attr) {
+ return "TEMPLATE::" + H.S(attr);
+ }
+ },
+ _SvgNodeValidator: {
+ "^": "Object;",
+ allowsElement$1: function(element) {
+ var t1 = J.getInterceptor(element);
+ if (!!t1.$isScriptElement)
+ return false;
+ if (!!t1.$isSvgElement)
+ return true;
+ return false;
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ if (attributeName === "is" || C.JSString_methods.startsWith$1(attributeName, "on"))
+ return false;
+ return this.allowsElement$1(element);
+ }
+ },
+ FixedSizeListIterator: {
+ "^": "Object;_array,_html$_length,_position,_html$_current",
+ moveNext$0: function() {
+ var nextPosition, t1;
+ nextPosition = this._position + 1;
+ t1 = this._html$_length;
+ if (nextPosition < t1) {
+ this._html$_current = J.$index$asx(this._array, nextPosition);
+ this._position = nextPosition;
+ return true;
+ }
+ this._html$_current = null;
+ this._position = t1;
+ return false;
+ },
+ get$current: function() {
+ return this._html$_current;
+ }
+ },
+ _LocationWrapper: {
+ "^": "Object;_ptr",
+ get$hostname: function(_) {
+ return this._ptr.hostname;
+ },
+ get$port: function(_) {
+ return this._ptr.port;
+ },
+ get$protocol: function(_) {
+ return this._ptr.protocol;
+ },
+ toString$0: function(_) {
+ return this._ptr.toString();
+ },
+ $isLocation: true
+ },
+ NodeValidator: {
+ "^": "Object;"
+ },
+ _SameOriginUriPolicy: {
+ "^": "Object;_hiddenAnchor,_loc"
+ },
+ _ValidatingTreeSanitizer: {
+ "^": "Object;validator",
+ sanitizeTree$1: function(node) {
+ new W._ValidatingTreeSanitizer_sanitizeTree_walk(this).call$1(node);
+ },
+ sanitizeNode$1: function(node) {
+ var t1, attrs, t2, isAttr, keys, i, $name, t3;
+ switch (node.nodeType) {
+ case 1:
+ t1 = J.getInterceptor$x(node);
+ attrs = t1.get$attributes(node);
+ if (!this.validator.allowsElement$1(node)) {
+ window;
+ t2 = "Removing disallowed element <" + H.S(node.tagName) + ">";
+ if (typeof console != "undefined")
+ console.warn(t2);
+ t1.remove$0(node);
+ break;
+ }
+ t2 = attrs._element;
+ isAttr = t2.getAttribute("is");
+ if (isAttr != null)
+ if (!this.validator.allowsAttribute$3(node, "is", isAttr)) {
+ window;
+ t2 = "Removing disallowed type extension <" + H.S(node.tagName) + " is=\"" + isAttr + "\">";
+ if (typeof console != "undefined")
+ console.warn(t2);
+ t1.remove$0(node);
+ break;
+ }
+ keys = C.JSArray_methods.toList$0(attrs.get$keys(attrs));
+ for (i = attrs.get$keys(attrs).length - 1; i >= 0; --i) {
+ if (i >= keys.length)
+ return H.ioore(keys, i);
+ $name = keys[i];
+ if (!this.validator.allowsAttribute$3(node, J.toLowerCase$0$s($name), t2.getAttribute($name))) {
+ window;
+ t3 = "Removing disallowed attribute <" + H.S(node.tagName) + " " + $name + "=\"" + H.S(t2.getAttribute($name)) + "\">";
+ if (typeof console != "undefined")
+ console.warn(t3);
+ t2.getAttribute($name);
+ t2.removeAttribute($name);
+ }
+ }
+ if (!!t1.$isTemplateElement)
+ this.sanitizeTree$1(node.content);
+ break;
+ case 8:
+ case 11:
+ case 3:
+ case 4:
+ break;
+ default:
+ J.remove$0$ax(node);
+ }
+ }
+ },
+ _ValidatingTreeSanitizer_sanitizeTree_walk: {
+ "^": "Closure:22;this_0",
+ call$1: function(node) {
+ var child, nextChild;
+ this.this_0.sanitizeNode$1(node);
+ child = node.lastChild;
+ for (; child != null; child = nextChild) {
+ nextChild = child.previousSibling;
+ this.call$1(child);
+ }
+ }
+ }
+}],
+["dart.dom.svg", "dart:svg", , P, {
+ "^": "",
+ ScriptElement: {
+ "^": "SvgElement;",
+ $isScriptElement: true,
+ "%": "SVGScriptElement"
+ },
+ StyleElement0: {
+ "^": "SvgElement;disabled}",
+ "%": "SVGStyleElement"
+ },
+ SvgElement: {
+ "^": "Element;",
+ set$innerHtml: function(receiver, value) {
+ receiver.textContent = null;
+ receiver.appendChild(this.createFragment$3$treeSanitizer$validator(receiver, value, null, null));
+ },
+ createFragment$3$treeSanitizer$validator: function(receiver, svg, treeSanitizer, validator) {
+ var t1, html, fragment, svgFragment, root;
+ t1 = H.setRuntimeTypeInfo([], [W.NodeValidator]);
+ validator = new W.NodeValidatorBuilder(t1);
+ t1.push(W._Html5NodeValidator$(null));
+ t1.push(W._TemplatingNodeValidator$());
+ t1.push(new W._SvgNodeValidator());
+ treeSanitizer = new W._ValidatingTreeSanitizer(validator);
+ html = "" + svg + " ";
+ fragment = J.createFragment$2$treeSanitizer$x(document.body, html, treeSanitizer);
+ svgFragment = document.createDocumentFragment();
+ fragment.toString;
+ t1 = new W._ChildNodeListLazy(fragment);
+ root = t1.get$single(t1);
+ for (; t1 = root.firstChild, t1 != null;)
+ svgFragment.appendChild(t1);
+ return svgFragment;
+ },
+ get$onBlur: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_blur._eventType, false), [null]);
+ },
+ get$onChange: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_change._eventType, false), [null]);
+ },
+ get$onClick: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_click._eventType, false), [null]);
+ },
+ get$onInput: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_input._eventType, false), [null]);
+ },
+ $isSvgElement: true,
+ "%": "SVGAElement|SVGAltGlyphDefElement|SVGAltGlyphElement|SVGAltGlyphItemElement|SVGAnimateElement|SVGAnimateMotionElement|SVGAnimateTransformElement|SVGAnimationElement|SVGCircleElement|SVGClipPathElement|SVGComponentTransferFunctionElement|SVGCursorElement|SVGDefsElement|SVGDescElement|SVGDiscardElement|SVGEllipseElement|SVGFEBlendElement|SVGFEColorMatrixElement|SVGFEComponentTransferElement|SVGFECompositeElement|SVGFEConvolveMatrixElement|SVGFEDiffuseLightingElement|SVGFEDisplacementMapElement|SVGFEDistantLightElement|SVGFEDropShadowElement|SVGFEFloodElement|SVGFEFuncAElement|SVGFEFuncBElement|SVGFEFuncGElement|SVGFEFuncRElement|SVGFEGaussianBlurElement|SVGFEImageElement|SVGFEMergeElement|SVGFEMergeNodeElement|SVGFEMorphologyElement|SVGFEOffsetElement|SVGFEPointLightElement|SVGFESpecularLightingElement|SVGFESpotLightElement|SVGFETileElement|SVGFETurbulenceElement|SVGFilterElement|SVGFontElement|SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement|SVGForeignObjectElement|SVGGElement|SVGGeometryElement|SVGGlyphElement|SVGGlyphRefElement|SVGGradientElement|SVGGraphicsElement|SVGHKernElement|SVGImageElement|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMarkerElement|SVGMaskElement|SVGMetadataElement|SVGMissingGlyphElement|SVGPathElement|SVGPatternElement|SVGPolygonElement|SVGPolylineElement|SVGRadialGradientElement|SVGRectElement|SVGSVGElement|SVGSetElement|SVGStopElement|SVGSwitchElement|SVGSymbolElement|SVGTSpanElement|SVGTextContentElement|SVGTextElement|SVGTextPathElement|SVGTextPositioningElement|SVGTitleElement|SVGUseElement|SVGVKernElement|SVGViewElement;SVGElement"
+ }
+}],
+["dart.isolate", "dart:isolate", , P, {
+ "^": "",
+ Capability: {
+ "^": "Object;",
+ $isCapability: true,
+ static: {Capability_Capability: function() {
+ return new H.CapabilityImpl((Math.random() * 0x100000000 >>> 0) + (Math.random() * 0x100000000 >>> 0) * 4294967296);
+ }}
+ }
+}],
+["dart.typed_data.implementation", "dart:_native_typed_data", , H, {
+ "^": "",
+ NativeTypedData: {
+ "^": "Interceptor;",
+ _invalidIndex$2: function(receiver, index, $length) {
+ var t1 = J.getInterceptor$n(index);
+ if (t1.$lt(index, 0) || t1.$ge(index, $length))
+ throw H.wrapException(P.RangeError$range(index, 0, $length));
+ else
+ throw H.wrapException(P.ArgumentError$("Invalid list index " + H.S(index)));
+ },
+ "%": ";ArrayBufferView;NativeTypedArray|NativeTypedArray_ListMixin|NativeTypedArray_ListMixin_FixedLengthListMixin|NativeTypedArrayOfInt"
+ },
+ NativeUint8List: {
+ "^": "NativeTypedArrayOfInt;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ this._invalidIndex$2(receiver, index, t1);
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ this._invalidIndex$2(receiver, index, t1);
+ receiver[index] = value;
+ },
+ $isList: true,
+ $asList: function() {
+ return [J.JSInt];
+ },
+ $isEfficientLength: true,
+ "%": ";Uint8Array"
+ },
+ NativeTypedArray: {
+ "^": "NativeTypedData;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $isJavaScriptIndexingBehavior: true
+ },
+ NativeTypedArrayOfInt: {
+ "^": "NativeTypedArray_ListMixin_FixedLengthListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [J.JSInt];
+ },
+ $isEfficientLength: true
+ },
+ NativeTypedArray_ListMixin: {
+ "^": "NativeTypedArray+ListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [J.JSInt];
+ },
+ $isEfficientLength: true
+ },
+ NativeTypedArray_ListMixin_FixedLengthListMixin: {
+ "^": "NativeTypedArray_ListMixin+FixedLengthListMixin;"
+ }
+}],
+["dart2js._js_primitives", "dart:_js_primitives", , H, {
+ "^": "",
+ printString: function(string) {
+ if (typeof dartPrint == "function") {
+ dartPrint(string);
+ return;
+ }
+ if (typeof console == "object" && typeof console.log == "function") {
+ console.log(string);
+ return;
+ }
+ if (typeof window == "object")
+ return;
+ if (typeof print == "function") {
+ print(string);
+ return;
+ }
+ throw "Unable to print message: " + String(string);
+ }
+}],
+]);
+Isolate.$finishClasses($$, $, null);
+$$ = null;
+
+// Runtime type support
+J.JSString.$isString = true;
+J.JSString.$isObject = true;
+J.JSInt.$isint = true;
+J.JSInt.$isObject = true;
+W.Node.$isNode = true;
+W.Node.$isObject = true;
+J.JSNumber.$isObject = true;
+P.Duration.$isObject = true;
+P.Object.$isObject = true;
+W.NodeValidator.$isObject = true;
+W.MouseEvent.$isEvent = true;
+W.MouseEvent.$isObject = true;
+W.Event.$isEvent = true;
+W.Event.$isObject = true;
+J.JSBool.$isbool = true;
+J.JSBool.$isObject = true;
+H.RawReceivePortImpl.$isObject = true;
+H._IsolateEvent.$isObject = true;
+H._IsolateContext.$isObject = true;
+P.Symbol.$isSymbol = true;
+P.Symbol.$isObject = true;
+P.StackTrace.$isStackTrace = true;
+P.StackTrace.$isObject = true;
+J.JSDouble.$isdouble = true;
+J.JSDouble.$isObject = true;
+W.Element.$isElement = true;
+W.Element.$isNode = true;
+W.Element.$isObject = true;
+W._Html5NodeValidator.$is_Html5NodeValidator = true;
+W._Html5NodeValidator.$isObject = true;
+P._EventSink.$is_EventSink = true;
+P._EventSink.$isObject = true;
+// getInterceptor methods
+J.getInterceptor = function(receiver) {
+ if (typeof receiver == "number") {
+ if (Math.floor(receiver) == receiver)
+ return J.JSInt.prototype;
+ return J.JSDouble.prototype;
+ }
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return J.JSNull.prototype;
+ if (typeof receiver == "boolean")
+ return J.JSBool.prototype;
+ if (receiver.constructor == Array)
+ return J.JSArray.prototype;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.getInterceptor$asx = function(receiver) {
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return receiver;
+ if (receiver.constructor == Array)
+ return J.JSArray.prototype;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.getInterceptor$ax = function(receiver) {
+ if (receiver == null)
+ return receiver;
+ if (receiver.constructor == Array)
+ return J.JSArray.prototype;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.getInterceptor$n = function(receiver) {
+ if (typeof receiver == "number")
+ return J.JSNumber.prototype;
+ if (receiver == null)
+ return receiver;
+ if (!(receiver instanceof P.Object))
+ return J.UnknownJavaScriptObject.prototype;
+ return receiver;
+};
+J.getInterceptor$ns = function(receiver) {
+ if (typeof receiver == "number")
+ return J.JSNumber.prototype;
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return receiver;
+ if (!(receiver instanceof P.Object))
+ return J.UnknownJavaScriptObject.prototype;
+ return receiver;
+};
+J.getInterceptor$s = function(receiver) {
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return receiver;
+ if (!(receiver instanceof P.Object))
+ return J.UnknownJavaScriptObject.prototype;
+ return receiver;
+};
+J.getInterceptor$x = function(receiver) {
+ if (receiver == null)
+ return receiver;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.$add$ns = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver + a0;
+ return J.getInterceptor$ns(receiver).$add(receiver, a0);
+};
+J.$eq = function(receiver, a0) {
+ if (receiver == null)
+ return a0 == null;
+ if (typeof receiver != "object")
+ return a0 != null && receiver === a0;
+ return J.getInterceptor(receiver).$eq(receiver, a0);
+};
+J.$ge$n = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver >= a0;
+ return J.getInterceptor$n(receiver).$ge(receiver, a0);
+};
+J.$index$asx = function(receiver, a0) {
+ if (receiver.constructor == Array || typeof receiver == "string" || H.isJsIndexable(receiver, receiver[init.dispatchPropertyName]))
+ if (a0 >>> 0 === a0 && a0 < receiver.length)
+ return receiver[a0];
+ return J.getInterceptor$asx(receiver).$index(receiver, a0);
+};
+J.$indexSet$ax = function(receiver, a0, a1) {
+ if ((receiver.constructor == Array || H.isJsIndexable(receiver, receiver[init.dispatchPropertyName])) && !receiver.immutable$list && a0 >>> 0 === a0 && a0 < receiver.length)
+ return receiver[a0] = a1;
+ return J.getInterceptor$ax(receiver).$indexSet(receiver, a0, a1);
+};
+J.$mul$ns = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver * a0;
+ return J.getInterceptor$ns(receiver).$mul(receiver, a0);
+};
+J.$sub$n = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver - a0;
+ return J.getInterceptor$n(receiver).$sub(receiver, a0);
+};
+J.addEventListener$3$x = function(receiver, a0, a1, a2) {
+ return J.getInterceptor$x(receiver).addEventListener$3(receiver, a0, a1, a2);
+};
+J.contains$1$asx = function(receiver, a0) {
+ return J.getInterceptor$asx(receiver).contains$1(receiver, a0);
+};
+J.createFragment$2$treeSanitizer$x = function(receiver, a0, a1) {
+ return J.getInterceptor$x(receiver).createFragment$2$treeSanitizer(receiver, a0, a1);
+};
+J.createFragment$3$treeSanitizer$validator$x = function(receiver, a0, a1, a2) {
+ return J.getInterceptor$x(receiver).createFragment$3$treeSanitizer$validator(receiver, a0, a1, a2);
+};
+J.elementAt$1$ax = function(receiver, a0) {
+ return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0);
+};
+J.forEach$1$ax = function(receiver, a0) {
+ return J.getInterceptor$ax(receiver).forEach$1(receiver, a0);
+};
+J.get$_key$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$_key(receiver);
+};
+J.get$error$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$error(receiver);
+};
+J.get$hashCode$ = function(receiver) {
+ return J.getInterceptor(receiver).get$hashCode(receiver);
+};
+J.get$isEmpty$asx = function(receiver) {
+ return J.getInterceptor$asx(receiver).get$isEmpty(receiver);
+};
+J.get$iterator$ax = function(receiver) {
+ return J.getInterceptor$ax(receiver).get$iterator(receiver);
+};
+J.get$length$asx = function(receiver) {
+ return J.getInterceptor$asx(receiver).get$length(receiver);
+};
+J.get$name$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$name(receiver);
+};
+J.get$nodes$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$nodes(receiver);
+};
+J.get$onBlur$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onBlur(receiver);
+};
+J.get$onChange$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onChange(receiver);
+};
+J.get$onClick$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onClick(receiver);
+};
+J.get$onInput$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onInput(receiver);
+};
+J.get$value$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$value(receiver);
+};
+J.preventDefault$0$x = function(receiver) {
+ return J.getInterceptor$x(receiver).preventDefault$0(receiver);
+};
+J.remove$0$ax = function(receiver) {
+ return J.getInterceptor$ax(receiver).remove$0(receiver);
+};
+J.remove$1$ax = function(receiver, a0) {
+ return J.getInterceptor$ax(receiver).remove$1(receiver, a0);
+};
+J.removeEventListener$3$x = function(receiver, a0, a1, a2) {
+ return J.getInterceptor$x(receiver).removeEventListener$3(receiver, a0, a1, a2);
+};
+J.round$0$n = function(receiver) {
+ return J.getInterceptor$n(receiver).round$0(receiver);
+};
+J.send$1$x = function(receiver, a0) {
+ return J.getInterceptor$x(receiver).send$1(receiver, a0);
+};
+J.set$disabled$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$disabled(receiver, value);
+};
+J.set$href$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$href(receiver, value);
+};
+J.set$innerHtml$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$innerHtml(receiver, value);
+};
+J.set$value$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$value(receiver, value);
+};
+J.toList$0$ax = function(receiver) {
+ return J.getInterceptor$ax(receiver).toList$0(receiver);
+};
+J.toLowerCase$0$s = function(receiver) {
+ return J.getInterceptor$s(receiver).toLowerCase$0(receiver);
+};
+J.toString$0 = function(receiver) {
+ return J.getInterceptor(receiver).toString$0(receiver);
+};
+J.toStringAsFixed$1$n = function(receiver, a0) {
+ return J.getInterceptor$n(receiver).toStringAsFixed$1(receiver, a0);
+};
+J.trim$0$s = function(receiver) {
+ return J.getInterceptor$s(receiver).trim$0(receiver);
+};
+C.C_DynamicRuntimeType = new H.DynamicRuntimeType();
+C.C_OutOfMemoryError = new P.OutOfMemoryError();
+C.C__RootZone = new P._RootZone();
+C.Duration_0 = new P.Duration(0);
+C.EventStreamProvider_blur = new W.EventStreamProvider("blur");
+C.EventStreamProvider_change = new W.EventStreamProvider("change");
+C.EventStreamProvider_click = new W.EventStreamProvider("click");
+C.EventStreamProvider_input = new W.EventStreamProvider("input");
+C.JSArray_methods = J.JSArray.prototype;
+C.JSInt_methods = J.JSInt.prototype;
+C.JSNumber_methods = J.JSNumber.prototype;
+C.JSString_methods = J.JSString.prototype;
+C.JS_CONST_0 = function(hooks) {
+ if (typeof dartExperimentalFixupGetTag != "function") return hooks;
+ hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
+};
+C.JS_CONST_Fs4 = function(hooks) { return hooks; }
+;
+C.JS_CONST_IX5 = function getTagFallback(o) {
+ var constructor = o.constructor;
+ if (typeof constructor == "function") {
+ var name = constructor.name;
+ if (typeof name == "string"
+ && name !== ""
+ && name !== "Object"
+ && name !== "Function.prototype") {
+ return name;
+ }
+ }
+ var s = Object.prototype.toString.call(o);
+ return s.substring(8, s.length - 1);
+};
+C.JS_CONST_QJm = function(getTagFallback) {
+ return function(hooks) {
+ if (typeof navigator != "object") return hooks;
+ var ua = navigator.userAgent;
+ if (ua.indexOf("DumpRenderTree") >= 0) return hooks;
+ if (ua.indexOf("Chrome") >= 0) {
+ function confirm(p) {
+ return typeof window == "object" && window[p] && window[p].name == p;
+ }
+ if (confirm("Window") && confirm("HTMLElement")) return hooks;
+ }
+ hooks.getTag = getTagFallback;
+ };
+};
+C.JS_CONST_U4w = function(hooks) {
+ var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
+ if (userAgent.indexOf("Firefox") == -1) return hooks;
+ var getTag = hooks.getTag;
+ var quickMap = {
+ "BeforeUnloadEvent": "Event",
+ "DataTransfer": "Clipboard",
+ "GeoGeolocation": "Geolocation",
+ "WorkerMessageEvent": "MessageEvent",
+ "XMLDocument": "!Document"};
+ function getTagFirefox(o) {
+ var tag = getTag(o);
+ return quickMap[tag] || tag;
+ }
+ hooks.getTag = getTagFirefox;
+};
+C.JS_CONST_aQP = function() {
+ function typeNameInChrome(o) {
+ var name = o.constructor.name;
+ if (name) return name;
+ var s = Object.prototype.toString.call(o);
+ return s.substring(8, s.length - 1);
+ }
+ function getUnknownTag(object, tag) {
+ if (/^HTML[A-Z].*Element$/.test(tag)) {
+ var name = Object.prototype.toString.call(object);
+ if (name == "[object Object]") return null;
+ return "HTMLElement";
+ }
+ }
+ function getUnknownTagGenericBrowser(object, tag) {
+ if (object instanceof HTMLElement) return "HTMLElement";
+ return getUnknownTag(object, tag);
+ }
+ function prototypeForTag(tag) {
+ if (typeof window == "undefined") return null;
+ if (typeof window[tag] == "undefined") return null;
+ var constructor = window[tag];
+ if (typeof constructor != "function") return null;
+ return constructor.prototype;
+ }
+ function discriminator(tag) { return null; }
+ var isBrowser = typeof navigator == "object";
+ return {
+ getTag: typeNameInChrome,
+ getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
+ prototypeForTag: prototypeForTag,
+ discriminator: discriminator };
+};
+C.JS_CONST_gkc = function(hooks) {
+ var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
+ if (userAgent.indexOf("Trident/") == -1) return hooks;
+ var getTag = hooks.getTag;
+ var quickMap = {
+ "BeforeUnloadEvent": "Event",
+ "DataTransfer": "Clipboard",
+ "HTMLDDElement": "HTMLElement",
+ "HTMLDTElement": "HTMLElement",
+ "HTMLPhraseElement": "HTMLElement",
+ "Position": "Geoposition"
+ };
+ function getTagIE(o) {
+ var tag = getTag(o);
+ var newTag = quickMap[tag];
+ if (newTag) return newTag;
+ if (tag == "Object") {
+ if (window.DataView && (o instanceof window.DataView)) return "DataView";
+ }
+ return tag;
+ }
+ function prototypeForTagIE(tag) {
+ var constructor = window[tag];
+ if (constructor == null) return null;
+ return constructor.prototype;
+ }
+ hooks.getTag = getTagIE;
+ hooks.prototypeForTag = prototypeForTagIE;
+};
+C.JS_CONST_rr7 = function(hooks) {
+ var getTag = hooks.getTag;
+ var prototypeForTag = hooks.prototypeForTag;
+ function getTagFixed(o) {
+ var tag = getTag(o);
+ if (tag == "Document") {
+ if (!!o.xmlVersion) return "!Document";
+ return "!HTMLDocument";
+ }
+ return tag;
+ }
+ function prototypeForTagFixed(tag) {
+ if (tag == "Document") return null;
+ return prototypeForTag(tag);
+ }
+ hooks.getTag = getTagFixed;
+ hooks.prototypeForTag = prototypeForTagFixed;
+};
+C.JsonCodec_null_null = new P.JsonCodec(null, null);
+C.JsonDecoder_null = new P.JsonDecoder(null);
+C.JsonEncoder_null = new P.JsonEncoder(null);
+Isolate.makeConstantList = function(list) {
+ list.immutable$list = init;
+ list.fixed$length = init;
+ return list;
+};
+C.List_1GN = H.setRuntimeTypeInfo(Isolate.makeConstantList(["*::class", "*::dir", "*::draggable", "*::hidden", "*::id", "*::inert", "*::itemprop", "*::itemref", "*::itemscope", "*::lang", "*::spellcheck", "*::title", "*::translate", "A::accesskey", "A::coords", "A::hreflang", "A::name", "A::shape", "A::tabindex", "A::target", "A::type", "AREA::accesskey", "AREA::alt", "AREA::coords", "AREA::nohref", "AREA::shape", "AREA::tabindex", "AREA::target", "AUDIO::controls", "AUDIO::loop", "AUDIO::mediagroup", "AUDIO::muted", "AUDIO::preload", "BDO::dir", "BODY::alink", "BODY::bgcolor", "BODY::link", "BODY::text", "BODY::vlink", "BR::clear", "BUTTON::accesskey", "BUTTON::disabled", "BUTTON::name", "BUTTON::tabindex", "BUTTON::type", "BUTTON::value", "CANVAS::height", "CANVAS::width", "CAPTION::align", "COL::align", "COL::char", "COL::charoff", "COL::span", "COL::valign", "COL::width", "COLGROUP::align", "COLGROUP::char", "COLGROUP::charoff", "COLGROUP::span", "COLGROUP::valign", "COLGROUP::width", "COMMAND::checked", "COMMAND::command", "COMMAND::disabled", "COMMAND::label", "COMMAND::radiogroup", "COMMAND::type", "DATA::value", "DEL::datetime", "DETAILS::open", "DIR::compact", "DIV::align", "DL::compact", "FIELDSET::disabled", "FONT::color", "FONT::face", "FONT::size", "FORM::accept", "FORM::autocomplete", "FORM::enctype", "FORM::method", "FORM::name", "FORM::novalidate", "FORM::target", "FRAME::name", "H1::align", "H2::align", "H3::align", "H4::align", "H5::align", "H6::align", "HR::align", "HR::noshade", "HR::size", "HR::width", "HTML::version", "IFRAME::align", "IFRAME::frameborder", "IFRAME::height", "IFRAME::marginheight", "IFRAME::marginwidth", "IFRAME::width", "IMG::align", "IMG::alt", "IMG::border", "IMG::height", "IMG::hspace", "IMG::ismap", "IMG::name", "IMG::usemap", "IMG::vspace", "IMG::width", "INPUT::accept", "INPUT::accesskey", "INPUT::align", "INPUT::alt", "INPUT::autocomplete", "INPUT::checked", "INPUT::disabled", "INPUT::inputmode", "INPUT::ismap", "INPUT::list", "INPUT::max", "INPUT::maxlength", "INPUT::min", "INPUT::multiple", "INPUT::name", "INPUT::placeholder", "INPUT::readonly", "INPUT::required", "INPUT::size", "INPUT::step", "INPUT::tabindex", "INPUT::type", "INPUT::usemap", "INPUT::value", "INS::datetime", "KEYGEN::disabled", "KEYGEN::keytype", "KEYGEN::name", "LABEL::accesskey", "LABEL::for", "LEGEND::accesskey", "LEGEND::align", "LI::type", "LI::value", "LINK::sizes", "MAP::name", "MENU::compact", "MENU::label", "MENU::type", "METER::high", "METER::low", "METER::max", "METER::min", "METER::value", "OBJECT::typemustmatch", "OL::compact", "OL::reversed", "OL::start", "OL::type", "OPTGROUP::disabled", "OPTGROUP::label", "OPTION::disabled", "OPTION::label", "OPTION::selected", "OPTION::value", "OUTPUT::for", "OUTPUT::name", "P::align", "PRE::width", "PROGRESS::max", "PROGRESS::min", "PROGRESS::value", "SELECT::autocomplete", "SELECT::disabled", "SELECT::multiple", "SELECT::name", "SELECT::required", "SELECT::size", "SELECT::tabindex", "SOURCE::type", "TABLE::align", "TABLE::bgcolor", "TABLE::border", "TABLE::cellpadding", "TABLE::cellspacing", "TABLE::frame", "TABLE::rules", "TABLE::summary", "TABLE::width", "TBODY::align", "TBODY::char", "TBODY::charoff", "TBODY::valign", "TD::abbr", "TD::align", "TD::axis", "TD::bgcolor", "TD::char", "TD::charoff", "TD::colspan", "TD::headers", "TD::height", "TD::nowrap", "TD::rowspan", "TD::scope", "TD::valign", "TD::width", "TEXTAREA::accesskey", "TEXTAREA::autocomplete", "TEXTAREA::cols", "TEXTAREA::disabled", "TEXTAREA::inputmode", "TEXTAREA::name", "TEXTAREA::placeholder", "TEXTAREA::readonly", "TEXTAREA::required", "TEXTAREA::rows", "TEXTAREA::tabindex", "TEXTAREA::wrap", "TFOOT::align", "TFOOT::char", "TFOOT::charoff", "TFOOT::valign", "TH::abbr", "TH::align", "TH::axis", "TH::bgcolor", "TH::char", "TH::charoff", "TH::colspan", "TH::headers", "TH::height", "TH::nowrap", "TH::rowspan", "TH::scope", "TH::valign", "TH::width", "THEAD::align", "THEAD::char", "THEAD::charoff", "THEAD::valign", "TR::align", "TR::bgcolor", "TR::char", "TR::charoff", "TR::valign", "TRACK::default", "TRACK::kind", "TRACK::label", "TRACK::srclang", "UL::compact", "UL::type", "VIDEO::controls", "VIDEO::height", "VIDEO::loop", "VIDEO::mediagroup", "VIDEO::muted", "VIDEO::preload", "VIDEO::width"]), [J.JSString]);
+C.List_wSV = H.setRuntimeTypeInfo(Isolate.makeConstantList(["bind", "if", "ref", "repeat", "syntax"]), [J.JSString]);
+C.List_yrN = H.setRuntimeTypeInfo(Isolate.makeConstantList(["A::href", "AREA::href", "BLOCKQUOTE::cite", "BODY::background", "COMMAND::icon", "DEL::cite", "FORM::action", "IMG::src", "INPUT::src", "INS::cite", "Q::cite", "VIDEO::poster"]), [J.JSString]);
+C.NodeList_methods = W.NodeList.prototype;
+C.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
+C.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
+C.Window_methods = W.Window.prototype;
+$.libraries_to_load = {};
+$.Primitives_mirrorFunctionCacheName = "$cachedFunction";
+$.Primitives_mirrorInvokeCacheName = "$cachedInvocation";
+$.Closure_functionCounter = 0;
+$.BoundClosure_selfFieldNameCache = null;
+$.BoundClosure_receiverFieldNameCache = null;
+$.RuntimeFunctionType_inAssert = false;
+$.getTagFunction = null;
+$.alternateTagFunction = null;
+$.prototypeForTagFunction = null;
+$.dispatchRecordsForInstanceTags = null;
+$.interceptorsForUncacheableTags = null;
+$.initNativeDispatchFlag = null;
+$.owner = null;
+$.balance = null;
+$.error = null;
+$.number = null;
+$.amount = null;
+$.btn_other = null;
+$.btn_deposit = null;
+$.btn_interest = null;
+$.bac = null;
+$.printToZone = null;
+$._nextCallback = null;
+$._lastCallback = null;
+$.Zone__current = C.C__RootZone;
+$.Expando__keyCount = 0;
+$.Element__parseDocument = null;
+$.Element__parseRange = null;
+$.Element__defaultValidator = null;
+$.Element__defaultSanitizer = null;
+$.Device__isOpera = null;
+$.Device__isWebKit = null;
+Isolate.$lazy($, "globalThis", "globalThis", "get$globalThis", function() {
+ return function() { return this; }();
+});
+Isolate.$lazy($, "globalWindow", "globalWindow", "get$globalWindow", function() {
+ return $.get$globalThis().window;
+});
+Isolate.$lazy($, "globalWorker", "globalWorker", "get$globalWorker", function() {
+ return $.get$globalThis().Worker;
+});
+Isolate.$lazy($, "globalPostMessageDefined", "globalPostMessageDefined", "get$globalPostMessageDefined", function() {
+ return $.get$globalThis().postMessage !== void 0;
+});
+Isolate.$lazy($, "thisScript", "IsolateNatives_thisScript", "get$IsolateNatives_thisScript", function() {
+ return H.IsolateNatives_computeThisScript();
+});
+Isolate.$lazy($, "workerIds", "IsolateNatives_workerIds", "get$IsolateNatives_workerIds", function() {
+ return new P.Expando(null);
+});
+Isolate.$lazy($, "noSuchMethodPattern", "TypeErrorDecoder_noSuchMethodPattern", "get$TypeErrorDecoder_noSuchMethodPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({ toString: function() { return "$receiver$"; } }));
+});
+Isolate.$lazy($, "notClosurePattern", "TypeErrorDecoder_notClosurePattern", "get$TypeErrorDecoder_notClosurePattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({ $method$: null, toString: function() { return "$receiver$"; } }));
+});
+Isolate.$lazy($, "nullCallPattern", "TypeErrorDecoder_nullCallPattern", "get$TypeErrorDecoder_nullCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(null));
+});
+Isolate.$lazy($, "nullLiteralCallPattern", "TypeErrorDecoder_nullLiteralCallPattern", "get$TypeErrorDecoder_nullLiteralCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ var $argumentsExpr$ = '$arguments$'
+ try {
+ null.$method$($argumentsExpr$);
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "undefinedCallPattern", "TypeErrorDecoder_undefinedCallPattern", "get$TypeErrorDecoder_undefinedCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(void 0));
+});
+Isolate.$lazy($, "undefinedLiteralCallPattern", "TypeErrorDecoder_undefinedLiteralCallPattern", "get$TypeErrorDecoder_undefinedLiteralCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ var $argumentsExpr$ = '$arguments$'
+ try {
+ (void 0).$method$($argumentsExpr$);
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "nullPropertyPattern", "TypeErrorDecoder_nullPropertyPattern", "get$TypeErrorDecoder_nullPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(null));
+});
+Isolate.$lazy($, "nullLiteralPropertyPattern", "TypeErrorDecoder_nullLiteralPropertyPattern", "get$TypeErrorDecoder_nullLiteralPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ try {
+ null.$method$;
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "undefinedPropertyPattern", "TypeErrorDecoder_undefinedPropertyPattern", "get$TypeErrorDecoder_undefinedPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(void 0));
+});
+Isolate.$lazy($, "undefinedLiteralPropertyPattern", "TypeErrorDecoder_undefinedLiteralPropertyPattern", "get$TypeErrorDecoder_undefinedLiteralPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ try {
+ (void 0).$method$;
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "_toStringList", "IterableMixinWorkaround__toStringList", "get$IterableMixinWorkaround__toStringList", function() {
+ return [];
+});
+Isolate.$lazy($, "_toStringVisiting", "_toStringVisiting", "get$_toStringVisiting", function() {
+ return P.HashSet_HashSet$identity(null);
+});
+Isolate.$lazy($, "_toStringList", "Maps__toStringList", "get$Maps__toStringList", function() {
+ return [];
+});
+Isolate.$lazy($, "_allowedElements", "_Html5NodeValidator__allowedElements", "get$_Html5NodeValidator__allowedElements", function() {
+ var t1 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t1.addAll$1(0, ["A", "ABBR", "ACRONYM", "ADDRESS", "AREA", "ARTICLE", "ASIDE", "AUDIO", "B", "BDI", "BDO", "BIG", "BLOCKQUOTE", "BR", "BUTTON", "CANVAS", "CAPTION", "CENTER", "CITE", "CODE", "COL", "COLGROUP", "COMMAND", "DATA", "DATALIST", "DD", "DEL", "DETAILS", "DFN", "DIR", "DIV", "DL", "DT", "EM", "FIELDSET", "FIGCAPTION", "FIGURE", "FONT", "FOOTER", "FORM", "H1", "H2", "H3", "H4", "H5", "H6", "HEADER", "HGROUP", "HR", "I", "IFRAME", "IMG", "INPUT", "INS", "KBD", "LABEL", "LEGEND", "LI", "MAP", "MARK", "MENU", "METER", "NAV", "NOBR", "OL", "OPTGROUP", "OPTION", "OUTPUT", "P", "PRE", "PROGRESS", "Q", "S", "SAMP", "SECTION", "SELECT", "SMALL", "SOURCE", "SPAN", "STRIKE", "STRONG", "SUB", "SUMMARY", "SUP", "TABLE", "TBODY", "TD", "TEXTAREA", "TFOOT", "TH", "THEAD", "TIME", "TR", "TRACK", "TT", "U", "UL", "VAR", "VIDEO", "WBR"]);
+ return t1;
+});
+Isolate.$lazy($, "_attributeValidators", "_Html5NodeValidator__attributeValidators", "get$_Html5NodeValidator__attributeValidators", function() {
+ return H.fillLiteralMap([], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null));
+});
+// Native classes
+
+init.functionAliases = {};
+;
+init.metadata = [{func: "dynamic__String", args: [J.JSString]},
+{func: "void_", void: true},
+{func: "dynamic__Event", args: [W.Event]},
+{func: "bool__dynamic_dynamic", ret: J.JSBool, args: [null, null]},
+{func: "int__dynamic", ret: J.JSInt, args: [null]},
+{func: "Object__dynamic", ret: P.Object, args: [null]},
+{func: "bool__Object_Object", ret: J.JSBool, args: [P.Object, P.Object]},
+{func: "int__Object", ret: J.JSInt, args: [P.Object]},
+{func: "bool__Element_String_String__Html5NodeValidator", ret: J.JSBool, args: [W.Element, J.JSString, J.JSString, W._Html5NodeValidator]},
+{func: "args0"},
+{func: "args2", args: [null, null]},
+{func: "args1", args: [null]},
+{func: "dynamic__dynamic_String", args: [null, J.JSString]},
+{func: "void__dynamic__StackTrace", void: true, args: [null], opt: [P.StackTrace]},
+,
+{func: "dynamic__dynamic__dynamic", args: [null], opt: [null]},
+{func: "bool_", ret: J.JSBool},
+{func: "dynamic__dynamic_StackTrace", args: [null, P.StackTrace]},
+{func: "dynamic__Symbol_dynamic", args: [P.Symbol, null]},
+{func: "int__String", ret: J.JSInt, args: [J.JSString]},
+{func: "double__String", ret: J.JSDouble, args: [J.JSString]},
+{func: "String__int", ret: J.JSString, args: [J.JSInt]},
+{func: "void__Node", void: true, args: [W.Node]},
+];
+$ = null;
+Isolate = Isolate.$finishIsolateConstructor(Isolate);
+$ = new Isolate();
+function convertToFastObject(properties) {
+ function MyClass() {};
+ MyClass.prototype = properties;
+ new MyClass();
+ return properties;
+}
+A = convertToFastObject(A);
+B = convertToFastObject(B);
+C = convertToFastObject(C);
+D = convertToFastObject(D);
+E = convertToFastObject(E);
+F = convertToFastObject(F);
+G = convertToFastObject(G);
+H = convertToFastObject(H);
+J = convertToFastObject(J);
+K = convertToFastObject(K);
+L = convertToFastObject(L);
+M = convertToFastObject(M);
+N = convertToFastObject(N);
+O = convertToFastObject(O);
+P = convertToFastObject(P);
+Q = convertToFastObject(Q);
+R = convertToFastObject(R);
+S = convertToFastObject(S);
+T = convertToFastObject(T);
+U = convertToFastObject(U);
+V = convertToFastObject(V);
+W = convertToFastObject(W);
+X = convertToFastObject(X);
+Y = convertToFastObject(Y);
+Z = convertToFastObject(Z);
+!function() {
+ function intern(s) {
+ var o = {};
+ o[s] = 1;
+ return Object.keys(convertToFastObject(o))[0];
+ }
+ init.getIsolateTag = function(name) {
+ return intern("___dart_" + name + init.isolateTag);
+ };
+ var tableProperty = "___dart_isolate_tags_";
+ var usedProperties = Object[tableProperty] || (Object[tableProperty] = Object.create(null));
+ var rootProperty = "_ZxYxX";
+ for (var i = 0;; i++) {
+ var property = intern(rootProperty + "_" + i + "_");
+ if (!(property in usedProperties)) {
+ usedProperties[property] = 1;
+ init.isolateTag = property;
+ break;
+ }
+ }
+}();
+init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
+// BEGIN invoke [main].
+;(function (callback) {
+ if (typeof document === "undefined") {
+ callback(null);
+ return;
+ }
+ if (document.currentScript) {
+ callback(document.currentScript);
+ return;
+ }
+
+ var scripts = document.scripts;
+ function onLoad(event) {
+ for (var i = 0; i < scripts.length; ++i) {
+ scripts[i].removeEventListener("load", onLoad, false);
+ }
+ callback(event.target);
+ }
+ for (var i = 0; i < scripts.length; ++i) {
+ scripts[i].addEventListener("load", onLoad, false);
+ }
+})(function(currentScript) {
+ init.currentScript = currentScript;
+
+ if (typeof dartMainRunner === "function") {
+ dartMainRunner((function(a){H.startRootIsolate(M.main$closure(),a)}), []);
+ } else {
+ (function(a){H.startRootIsolate(M.main$closure(),a)})([]);
+ }
+});
+// END invoke [main].
+function init() {
+ Isolate.$isolateProperties = {};
+ function generateAccessor(fieldDescriptor, accessors, cls) {
+ var fieldInformation = fieldDescriptor.split("-");
+ var field = fieldInformation[0];
+ var len = field.length;
+ var code = field.charCodeAt(len - 1);
+ var reflectable;
+ if (fieldInformation.length > 1)
+ reflectable = true;
+ else
+ reflectable = false;
+ code = code >= 60 && code <= 64 ? code - 59 : code >= 123 && code <= 126 ? code - 117 : code >= 37 && code <= 43 ? code - 27 : 0;
+ if (code) {
+ var getterCode = code & 3;
+ var setterCode = code >> 2;
+ var accessorName = field = field.substring(0, len - 1);
+ var divider = field.indexOf(":");
+ if (divider > 0) {
+ accessorName = field.substring(0, divider);
+ field = field.substring(divider + 1);
+ }
+ if (getterCode) {
+ var args = getterCode & 2 ? "receiver" : "";
+ var receiver = getterCode & 1 ? "this" : "receiver";
+ var body = "return " + receiver + "." + field;
+ var property = cls + ".prototype.get$" + accessorName + "=";
+ var fn = "function(" + args + "){" + body + "}";
+ if (reflectable)
+ accessors.push(property + "$reflectable(" + fn + ");\n");
+ else
+ accessors.push(property + fn + ";\n");
+ }
+ if (setterCode) {
+ var args = setterCode & 2 ? "receiver, value" : "value";
+ var receiver = setterCode & 1 ? "this" : "receiver";
+ var body = receiver + "." + field + " = value";
+ var property = cls + ".prototype.set$" + accessorName + "=";
+ var fn = "function(" + args + "){" + body + "}";
+ if (reflectable)
+ accessors.push(property + "$reflectable(" + fn + ");\n");
+ else
+ accessors.push(property + fn + ";\n");
+ }
+ }
+ return field;
+ }
+ Isolate.$isolateProperties.$generateAccessor = generateAccessor;
+ function defineClass(name, cls, fields) {
+ var accessors = [];
+ var str = "function " + cls + "(";
+ var body = "";
+ for (var i = 0; i < fields.length; i++) {
+ if (i != 0)
+ str += ", ";
+ var field = generateAccessor(fields[i], accessors, cls);
+ var parameter = "parameter_" + field;
+ str += parameter;
+ body += "this." + field + " = " + parameter + ";\n";
+ }
+ str += ") {\n" + body + "}\n";
+ str += cls + ".builtin$cls=\"" + name + "\";\n";
+ str += "$desc=$collectedClasses." + cls + ";\n";
+ str += "if($desc instanceof Array) $desc = $desc[1];\n";
+ str += cls + ".prototype = $desc;\n";
+ if (typeof defineClass.name != "string") {
+ str += cls + ".name=\"" + cls + "\";\n";
+ }
+ str += accessors.join("");
+ return str;
+ }
+ var inheritFrom = function() {
+ function tmp() {
+ }
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ return function(constructor, superConstructor) {
+ tmp.prototype = superConstructor.prototype;
+ var object = new tmp();
+ var properties = constructor.prototype;
+ for (var member in properties)
+ if (hasOwnProperty.call(properties, member))
+ object[member] = properties[member];
+ object.constructor = constructor;
+ constructor.prototype = object;
+ return object;
+ };
+ }();
+ Isolate.$finishClasses = function(collectedClasses, isolateProperties, existingIsolateProperties) {
+ var pendingClasses = {};
+ if (!init.allClasses)
+ init.allClasses = {};
+ var allClasses = init.allClasses;
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ if (typeof dart_precompiled == "function") {
+ var constructors = dart_precompiled(collectedClasses);
+ } else {
+ var combinedConstructorFunction = "function $reflectable(fn){fn.$reflectable=1;return fn};\n" + "var $desc;\n";
+ var constructorsList = [];
+ }
+ for (var cls in collectedClasses) {
+ if (hasOwnProperty.call(collectedClasses, cls)) {
+ var desc = collectedClasses[cls];
+ if (desc instanceof Array)
+ desc = desc[1];
+ var classData = desc["^"], supr, name = cls, fields = classData;
+ if (typeof classData == "string") {
+ var split = classData.split("/");
+ if (split.length == 2) {
+ name = split[0];
+ fields = split[1];
+ }
+ }
+ var s = fields.split(";");
+ fields = s[1] == "" ? [] : s[1].split(",");
+ supr = s[0];
+ split = supr.split(":");
+ if (split.length == 2) {
+ supr = split[0];
+ var functionSignature = split[1];
+ if (functionSignature)
+ desc.$signature = function(s) {
+ return function() {
+ return init.metadata[s];
+ };
+ }(functionSignature);
+ }
+ if (supr && supr.indexOf("+") > 0) {
+ s = supr.split("+");
+ supr = s[0];
+ var mixin = collectedClasses[s[1]];
+ if (mixin instanceof Array)
+ mixin = mixin[1];
+ for (var d in mixin) {
+ if (hasOwnProperty.call(mixin, d) && !hasOwnProperty.call(desc, d))
+ desc[d] = mixin[d];
+ }
+ }
+ if (typeof dart_precompiled != "function") {
+ combinedConstructorFunction += defineClass(name, cls, fields);
+ constructorsList.push(cls);
+ }
+ if (supr)
+ pendingClasses[cls] = supr;
+ }
+ }
+ if (typeof dart_precompiled != "function") {
+ combinedConstructorFunction += "return [\n " + constructorsList.join(",\n ") + "\n]";
+ var constructors = new Function("$collectedClasses", combinedConstructorFunction)(collectedClasses);
+ combinedConstructorFunction = null;
+ }
+ for (var i = 0; i < constructors.length; i++) {
+ var constructor = constructors[i];
+ var cls = constructor.name;
+ var desc = collectedClasses[cls];
+ var globalObject = isolateProperties;
+ if (desc instanceof Array) {
+ globalObject = desc[0] || isolateProperties;
+ desc = desc[1];
+ }
+ allClasses[cls] = constructor;
+ globalObject[cls] = constructor;
+ }
+ constructors = null;
+ var finishedClasses = {};
+ init.interceptorsByTag = Object.create(null);
+ init.leafTags = {};
+ function finishClass(cls) {
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ if (hasOwnProperty.call(finishedClasses, cls))
+ return;
+ finishedClasses[cls] = true;
+ var superclass = pendingClasses[cls];
+ if (!superclass || typeof superclass != "string")
+ return;
+ finishClass(superclass);
+ var constructor = allClasses[cls];
+ var superConstructor = allClasses[superclass];
+ if (!superConstructor)
+ superConstructor = existingIsolateProperties[superclass];
+ var prototype = inheritFrom(constructor, superConstructor);
+ if (hasOwnProperty.call(prototype, "%")) {
+ var nativeSpec = prototype["%"].split(";");
+ if (nativeSpec[0]) {
+ var tags = nativeSpec[0].split("|");
+ for (var i = 0; i < tags.length; i++) {
+ init.interceptorsByTag[tags[i]] = constructor;
+ init.leafTags[tags[i]] = true;
+ }
+ }
+ if (nativeSpec[1]) {
+ tags = nativeSpec[1].split("|");
+ if (nativeSpec[2]) {
+ var subclasses = nativeSpec[2].split("|");
+ for (var i = 0; i < subclasses.length; i++) {
+ var subclass = allClasses[subclasses[i]];
+ subclass.$nativeSuperclassTag = tags[0];
+ }
+ }
+ for (i = 0; i < tags.length; i++) {
+ init.interceptorsByTag[tags[i]] = constructor;
+ init.leafTags[tags[i]] = false;
+ }
+ }
+ }
+ }
+ for (var cls in pendingClasses)
+ finishClass(cls);
+ };
+ Isolate.$lazy = function(prototype, staticName, fieldName, getterName, lazyValue) {
+ var sentinelUndefined = {};
+ var sentinelInProgress = {};
+ prototype[fieldName] = sentinelUndefined;
+ prototype[getterName] = function() {
+ var result = $[fieldName];
+ try {
+ if (result === sentinelUndefined) {
+ $[fieldName] = sentinelInProgress;
+ try {
+ result = $[fieldName] = lazyValue();
+ } finally {
+ if (result === sentinelUndefined) {
+ if ($[fieldName] === sentinelInProgress) {
+ $[fieldName] = null;
+ }
+ }
+ }
+ } else {
+ if (result === sentinelInProgress)
+ H.throwCyclicInit(staticName);
+ }
+ return result;
+ } finally {
+ $[getterName] = function() {
+ return this[fieldName];
+ };
+ }
+ };
+ };
+ Isolate.$finishIsolateConstructor = function(oldIsolate) {
+ var isolateProperties = oldIsolate.$isolateProperties;
+ function Isolate() {
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ for (var staticName in isolateProperties)
+ if (hasOwnProperty.call(isolateProperties, staticName))
+ this[staticName] = isolateProperties[staticName];
+ function ForceEfficientMap() {
+ }
+ ForceEfficientMap.prototype = this;
+ new ForceEfficientMap();
+ }
+ Isolate.prototype = oldIsolate.prototype;
+ Isolate.prototype.constructor = Isolate;
+ Isolate.$isolateProperties = isolateProperties;
+ Isolate.$finishClasses = oldIsolate.$finishClasses;
+ Isolate.makeConstantList = oldIsolate.makeConstantList;
+ return Isolate;
+ };
+}
+})()
+
+//# sourceMappingURL=bank_terminal_s5.dart.js.map
+//@ sourceMappingURL=bank_terminal_s5.dart.js.map
diff --git a/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.js.map b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.js.map
new file mode 100644
index 0000000..8ac99bc
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.js.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "file": "bank_terminal_s5.dart.js",
+ "sourceRoot": "",
+ "sources": ["packages/$sdk/lib/_internal/lib/interceptors.dart","packages/$sdk/lib/_internal/lib/js_array.dart","packages/$sdk/lib/internal/iterable.dart","packages/$sdk/lib/_internal/lib/js_number.dart","packages/$sdk/lib/_internal/lib/js_string.dart","packages/$sdk/lib/_internal/lib/js_helper.dart","packages/$sdk/lib/_internal/lib/isolate_helper.dart","packages/$sdk/lib/collection/queue.dart","packages/$sdk/lib/_internal/lib/collection_patch.dart","packages/$sdk/lib/async/timer.dart","packages/$sdk/lib/_internal/lib/native_helper.dart","packages/$sdk/lib/_internal/lib/js_rti.dart","packages/$sdk/lib/_internal/lib/core_patch.dart","packages/$sdk/lib/_internal/lib/regexp_helper.dart","../packages/bank_terminal_s5/model/bank_account.dart","../packages/bank_terminal_s5/model/person.dart","packages/$sdk/lib/core/date_time.dart","bank_terminal_s5.dart","packages/$sdk/lib/html/dart2js/html_dart2js.dart","packages/$sdk/lib/internal/lists.dart","packages/$sdk/lib/internal/symbol.dart","packages/$sdk/lib/_internal/lib/js_names.dart","packages/$sdk/lib/async/async_error.dart","packages/$sdk/lib/async/schedule_microtask.dart","packages/$sdk/lib/_internal/lib/async_patch.dart","packages/$sdk/lib/async/stream_pipe.dart","packages/$sdk/lib/async/zone.dart","packages/$sdk/lib/core/duration.dart","packages/$sdk/lib/async/future_impl.dart","packages/$sdk/lib/async/stream.dart","packages/$sdk/lib/collection/hash_map.dart","packages/$sdk/lib/collection/iterable.dart","packages/$sdk/lib/collection/maps.dart","packages/$sdk/lib/collection/hash_set.dart","packages/$sdk/lib/collection/list.dart","packages/$sdk/lib/_internal/lib/convert_patch.dart","packages/$sdk/lib/convert/json.dart","packages/$sdk/lib/core/string.dart","packages/$sdk/lib/core/errors.dart","packages/$sdk/lib/core/exceptions.dart","packages/$sdk/lib/core/list.dart","packages/$sdk/lib/core/print.dart","packages/$sdk/lib/_internal/lib/internal_patch.dart","packages/$sdk/lib/core/expando.dart","packages/$sdk/lib/core/null.dart","packages/$sdk/lib/core/object.dart","packages/$sdk/lib/core/string_buffer.dart","packages/$sdk/lib/collection/linked_hash_set.dart","packages/$sdk/lib/svg/dart2js/svg_dart2js.dart","packages/$sdk/lib/_internal/lib/isolate_patch.dart","packages/$sdk/lib/typed_data/dart2js/native_typed_data_dart2js.dart","packages/$sdk/lib/_internal/lib/js_primitives.dart"],
+ "names": ["getInterceptor","makeDispatchRecord","getNativeInterceptor","initNativeDispatch","lookupAndCacheInterceptor","bool","int","Primitives","String","IterableMixinWorkaround","E","length","List","Iterator","iterable","factory","num","roundToDouble","double","other","result","_skipLeadingWhitespace","_skipTrailingWhitespace","static","string","_isWhitespace","_callInIsolate","isolate","_globalState","leaveJsAsync","weakPorts","_addRegistration","entry","rootContext","computeThisScriptFromTrace","_deserializeMessage","msg","_add","events","workerIds","_serializeMessage","fillLiteralMap","_log","print","context","mirrorFunctionCacheName","mirrorInvokeCacheName","replyTo","runStartFunction","supportsWorkers","_visited","_Manager","isWorker","fromCommandLine","topEventLoop","isolates","managers","mainManager","pauseCapability","pauseTokens","isPaused","_updateGlobalState","_length","delayedEvents","_head","_table","_tail","_grow","_modificationCount","doneHandlers","terminateCapability","responsePort","dynamic","isolateStatics","code","RawReceivePortImpl","ports","id","_shutdown","port","_current","_IsolateEvent","dequeue","event","next","runIteration","_runHelper","fn","_startIsolate","topLevel","_isolateId","_receivePort","message","addPause","removePause","addDoneListener","removeDoneListener","setErrorsFatal","handlePing","_workerId","_receivePortId","_isClosed","_handler","visitSendPort","visitCapability","x","SendPort","list","Capability","operator","tagged","traverse","isPrimitive","visitPrimitive","_dispatch","visitList","visitMap","visitObject","copy","Map","map","_nextFreeRefId","_serializeList","deserialize","_deserialized","_deserializeHelper","_deserializeList","_deserializeMap","deserializeSendPort","deserializeCapability","deserializeObject","dartList","keys","values","TimerImpl","_handle","_inEventLoop","convertDartClosureToJS","callback","_id","value","match","handleError","source","name","joinArguments","getRuntimeTypeInfo","objectTypeName","array","a","_fromCharCodeApply","stringFromCodePoints","receiver","iae","ioore","wrapException","toStringWrapper","JS","throwExpression","unwrapException","saveStackTrace","nsme","notClosure","nullCall","nullLiteralCall","undefCall","undefLiteralCall","nullProperty","undefProperty","undefLiteralProperty","object","invokeClosure","JS_CALL_IN_ISOLATE","info","functionCounter","forwardCallTo","functions","forwardInterceptedCallTo","cspForwardCall","computeFieldNamed","selfFieldNameCache","BoundClosure","receiverFieldNameCache","cspForwardInterceptedCall","closureFromTearOff","Closure","RuntimeFunctionType","RuntimeType","Object","getRuntimeTypeArguments","substitute","getRuntimeTypeArgument","getTypeArgumentByIndex","type","_contents","runtimeTypeToString","invokeOn","isSubtype","computeSignature","isFunctionSubtype","areSubtypes","names","areAssignable","areAssignableMaps","getTagFunction","alternateTagFunction","makeLeafDispatchRecord","patchInteriorProto","makeDefaultDispatchRecord","initNativeDispatchFlag","initNativeDispatchContinue","dispatchRecordsForInstanceTags","interceptorsForUncacheableTags","initHooks","tags","prototypeForTagFunction","applyHooksTransformer","matchTypeError","_pattern","_arguments","_argumentsExpr","_expr","_method","_receiver","_message","JsNoSuchMethodError","_trace","_exception","closure","_self","_target","RuntimeError","_extractFunctionTypeObjectFrom","toRti","returnType","parameterTypes","listToRti","optionalParameterTypes","namedParameters","extractKeys","Match","_nativeRegExp","_match","_MatchImplementation","set","makeNative","_number","owner","_balance","acc","_pin_code","date_created","date_modified","JSON","BankAccount","json","DateTime","_name","_gender","per","address","_email","date_birth","_date_birth","Person","millisecondsSinceEpoch","document","balance","number","btn_other","amount","btn_deposit","btn_interest","error","_tryResume","_wrapZone","disable_transactions","readData","_getItem","window","bac","clearData","nonNegative","changeBalance","_setItem","e","interest","f","_toStringList","otherList","Lists","dst","src","symbol","action","elementAt","_iterable","_index","_f","_iterator","T","_source","Function","errorHandler","zone","_nextCallback","_lastCallback","_asyncRunCallbackLoop","_createTimer","_runUserCode","onSuccess","userCode","onError","subscription","future","_cancelAndErrorClosure","Zone","_rootCreateTimer","Timer","_duration","_rootRun","_scheduleAsyncCallback","_state","Future","_registerErrorHandler","_addListener","_resultOrListeners","_AsyncError","_zone","_rootScheduleMicrotask","listener","_Future","current","_chainCoreFuture","_chainForeignFuture","_removeListeners","_setValue","_propagateToListeners","_setError","internalFuture","asyncError","_rootHandleUncaughtError","_propagateMultipleListeners","_onValueCallback","_whenCompleteActionCallback","otherZone","handleValueCallback","handleWhenCompleteCallback","target","_rootRunUnary","_errorTestCallback","_onErrorCallback","errorCallback","_rootRunBinary","completeResult","_cancelAndValue","_cancelAndError","run","handleUncaughtError","runUnary","ZoneCallback","registerCallback","ZoneUnaryCallback","registerUnaryCallback","_toStringVisiting","_iterablePartsToStrings","it","parts","ultimateString","penultimateString","m","Iterable","V","_strings","_nums","_rest","_computeHashCode","_findBucketIndex","_newHashTable","_addHashTableEntry","_setTableEntry","_keys","_computeKeys","key","_map","_offset","cell","_newLinkedCell","_removeHashTableEntry","_unlinkCell","_first","_modifications","LinkedHashMapCell","_last","last","previous","Maps","_cell","_computeElements","bucket","_elements","element","objectHashCode","_set","add","LinkedHashSetCell","iterator","_iterableToString","queue","ListQueue","_queue","_position","_end","_convertJsonToDart","revive","walk","_parseJson","cause","JsonUnsupportedObjectError","JsonCyclicError","_reviver","decoder","_JsonStringifier","_toEncodableFunction","encoder","JsonEncoder","JsonDecoder","s","_sink","_seen","stringifyJsonValue","checkCycle","_toEncodable","escape","stringifyValue","_removeSeen","stringifier","_symbol_dev","printString","sb","_symbolToString","isUtc","_fourDigits","lazyAsJsDate","_twoDigits","_threeDigits","re","parseIntOrZero","parseDoubleOrZero","Duration","twoDigits","inMinutes","inSeconds","sixDigits","inMicroseconds","StackTrace","ArgumentError","RangeError","UnsupportedError","UnimplementedError","StateError","modifiedObject","Error","ConcurrentModificationError","variableName","CyclicInitializationError","_getKey","_keyCount","objects","write","StringBuffer","fragment","ElementStream","_eventType","_localName","DocumentFragment","_validators","_defaultValidator","_defaultSanitizer","_parseDocument","_parseRange","_createElement","base","tagName","contextElement","treeSanitizer","text","append","createFragment","parentNode","nodeValue","Node","_key","forEach","table","section","row","content","Location","_isDartLocation","_location_wrapper","Element","_this","_element","attributes","_matches","node","StreamSubscription","_unlisten","_onData","_pauseCount","_useCapture","_allowedElements","_attributeValidators","validator","_Html5NodeValidator","_hiddenAnchor","_loc","v","allowedElements","allowedUriAttributes","uriPolicy","allowedAttributes","_templateAttrs","_TemplatingNodeValidator","attributeName","allowsElement","_array","_ptr","attrs","sanitizeTree","template","sanitizeNode","child","root","svgFragment","_invalidIndex","computeThisScript","extractPattern","provokeCallErrorOn","provokePropertyErrorOn","Set"],
+ "mappings": "A;A,yC;A,sB;A,0E;A,a;A,E;A,8B;A,6E;A,6E;A,2C;A;A,6B;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;;A;A;;A,iB;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A;A,oB,wB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,Q,C,C,C;A,E,E,G,C,C,a;A,E,C;A,C,A;A,kB,sB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,c,C,CAuDAA;AAOE;GACF,A,C;A,E,kB,C,CAUAC;AAiCE;GAEF,A,C;A,E,oB,C,CAWAC;;;;;QAKMC;;;QAKO;;;AAEW;;AACD;;;AAGjB;;aASM,iBAAA;;kBAIQC;;;;AAQd;;AAEA;;AAIJ;GACF,A,C;A,E,W,C,C,C;A,E,E,G,C,C,S,C;A,E,E,G,C,CAqHEC;AAAwB;KAAyB,A,C;A,E,E,Y,C,CAEjDC;AAAiB,YAAGC;KAA+B,A,C;A,E,E,U,C,CAEnDC;AAAkB,YAAGD;KAA+B,A,C;A,E,E,G,C,C,8I;A,E,C,C;A,E,M,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,U,C,CAoBpDC;AAAkB;KAAmC,A,C;A,E,E,Y,C,CAIrDF;AAAiB;KAA2C,A,C;A,E,E,O,C,C,I;A,E,C,C;A,E,M,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,CAe5DD;AAAwB;KAAyB,A,C;A,E,E,U,C,CAGjDG;AAAkB;KAAS,A,C;A,E,E,Y,C,CAE3BF;AAAiB;KAAI,A;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,c,C;A,E,E,Y,C,CA0CrBA;AAAiB;KAAI,A;A,E,C,C;A,E,qB,C,C,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,Q,C,CCnPrBD;;;0BA3CU;AA6CR,kBAAkB,IAAE;YACN,MAAR;;AAEF;;AAEJ,AACA;KACF,A,C;A,E,E,S,C,CA8BA;AACE,YAAOI;KACT,A,C;A,E,E,W,C,CAkDAC;;;AACE,YAAO;KACT,A,C;A,E,E,U,C,CAiGAL;;AACE,kBAAkB,IAAEM;YACN,MAAR;AAAkB;AACxB,AACA;KACF,A,C;A,E,E,W,C,CAEAN;AAAiB,YAAGM;KAAW,A,C;A,E,E,U,C,CAI/BH;AAAkB,YAAGC;KAAwD,A,C;A,E,E,iB,C,CAE7EG;;;AAEI;;;;AAEA;;KAEJ,A,C;A,E,E,Q,C,C,Q,C,S,C,C,C;A,E,E,E,M,C,I,C,iB,C,S,C,C,I,C,C;A,E,E,C,C;A,E,E,Y,C,CAIAC;AAAyB,0CCjCaC;KDiCe,A,C;A,E,E,Y,C,CAErDR;AAAiB,YAAGC;KAA+B,A,C;A,E,E,U,C,CAEnDD;AAAe;KAAoC,A,C;A,E,E,U,C,CAEnD;UAEgB;aAAW,iBAAA;;0BAxQjB;;KA2QV,A,C;A,E,E,M,C,CAEAI;;;UAEY,SAAGC,mBAAgB;aAAW,iBAAA;AACxC;KACF,A,C;A,E,E,S,C,CAEA;;0BAzRU;;;UA4RE,SAAGA,mBAAgB;aAAW,iBAAA;;KAE1C,A,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,I,C;A,E,E,kB,C,C,I,C;A,E,E,M,C,C,C,qB,C,CAvVAI;;8EAGkC;eACxB,iBAAA;;;AAER;OACF,A,C;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,Y,C,CEuBAV;AAAkB;KAAmC,A,C;A,E,E,W,C,CAErDW;AAGE;KACF,A,C;A,E,E,O,C,CASAV;;UACW,2BAAsB;AAC7B;;aA0B8B;AAvB9B;;WAGI,iBAAA;KACR,A,C;A,E,E,O,C,CAKAA;AAAY,YAAGW,cAAAA;KAAuB,A,C;A,E,E,e,C,CAMtCC;UACW;AACP;;AAEA;KAEJ,A,C;A,E,E,iB,C,CAmBAV;;UAG2C;aACjC,iBAAA;;;aAzEsC,AAAR;;;;AA4ET;AAC7B;KACF,A,C;A,E,E,U,C,CAqCAA;;AAEI;;AAEA;KAEJ,A,C;A,E,E,Y,C,CAEAF;AAAiB;KAAoC,A,C;A,E,E,I,C,CAIrDU;;;AAEE;KACF,A,C;A,E,E,I,C,CAEAA;AAEE;KACF,A,C;A,E,E,I,C,CAOAA;;;AAEE;KACF,A,C;A,E,E,W,C,CA0BAA;AACE,kEAEM;KACR,A,C;A,E,E,mB,C,CAiCAA;;UAC8B;;;aAMwB;;;AANpD;KAOF,A,C;A,E,E,G,C,CAkCAX;;aAC2B,iBAAA;AACzB;KACF,A,C;A,E,E,G,C,CAOAA;;;AAEE;KACF,A,C;A,E,E,G,C,CAEAA;;aAC2B,iBAAA;AACzB;KACF,A,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,C,G,C,C,yC,C;A,E,C,C;A,E,K,C,C,C;A,E,E,G,C,C,e,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,I;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,M,C,C,I;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,qB,C;A,E,E,Y,C,CCvSAC;UAEY;aAAW,iBAAA;UACX,SAAGK;aAAc,iBAAA;AAC3B;KACF,A,C;A,E,E,I,C,CAqBAH;;;AAEE;KACF,A,C;A,E,E,Y,C,CAyCAH;;UAEyB,QAAE;aACjB,iBAAA,6BAA+B;iBAKhB,QADHc;UAEL,WAAER;AAAQ;AACvB;KAGJ,A,C;A,E,E,Y,C,C,Q,C,S,C,C,O,C,C,C;A,E,E,E,M,C,I,C,Y,C,S,C,C,O,C,C,C,C,C;A,E,E,C,C;A,E,E,W,C,CAEAH;;mBAEmCG;;0BCmiC3B;UDjiCS;aAAY,iBAAA;;;UACZ;aAAkB,iBAAA;UACpB,WAAEA;aAAc,iBAAA;AAC7B;KACF,A,C;A,E,E,W,C,C,Q,C,S,C,C,U,C,C,C;A,E,E,E,M,C,I,C,W,C,S,C,C,U,C,C,I,C,C;A,E,E,C,C;A,E,E,a,C,CAEAH;AACE;KACF,A,C;A,E,E,M,C,CAsGAA;;;iBAMMY;;AAAoB;UACRA;qBAGDC;;AACoB;;;WAMO;kBAA3BD,wCAEFE;;AAEqC;AAClD;KACF,A,C;A,E,E,I,C,CA0DAd;;UACQ;AAAU;yBACE;AAAkB;UAC1B;;AAMV;aACY;mBAAqB;;;;;;AAIjC,AACA;KACF,A,C;A,E,E,W,C,CAoEAH;AAAiB,YAAGM;KAAW,A,C;A,E,E,U,C,CAW/BH;AAAkB;KAAO,A,C;A,E,E,Y,C,CAQzBF;;AAIE,gBAAoBK,kCAAF;eACE,YAAQ;eACR,YAAQ,QAAuB,AAAA,CAAR;;;AAE3C,aACkB,YAAQ,QAAuB,AAAA,CAAR;;AAEzC,YAAkB,aAAQ,QAAuB,AAAA,CAAR;KAC3C,A,C;A,E,E,U,C,CAIAL;AAAe;KAA+B,A,C;A,E,E,M,C,CAE9CE;;;UAEY,SAAGG,mBAAgB;aAAW,iBAAA;AACxC;KACF,A,C;A,E,E,S,C,C,I,C;A,E,E,M,C,C,C,sB,C,CA/RAY;YAGe;;;;;;;;;;AAUP;;AAEA;;;;;;;;;;;;;;;;;;;;;;AAuBF;;AAEA;;OAEN,A,C,C,+B,C,CAIAA;;AAGE,kBAAeC,eAAF;cApKH;8BAAiB;;cAsKZ,mBACA,mBACT,CAACC;;;;AAIP,AACA;OACF,A,C,C,gC,C,CAIAF;;AAGE,kBArLaZ,eAqLA;mBAC4B;cAtL/B;8BAAiB;;cAuLZ,mBACA,mBACT,CAACc;;;AAIP,AACA;OACF,A,C;A,E,C;A,C,A;A,oB,wB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,c,C,CErLFC;iBACeC;IACbC,AAAAA;AACA;GACF,A,C;A,E,Y,C,CAmBAC;aACED;IAAAA,yBAA6C,AAA7CA;GAEF,A,C;A,E,gB,C,CAiBA;;;;;;;;;;;;;;;;;QAWMA;AAAuB;;SA8KZA;IAAAA,mBAA0B;SAGE;SAGhB;;uEAQQ,2BACI,sCAMT;IAwI5BE;IACAC;IA1UFH;IAMAA;;SAEII;;MACFC;;WACSD;;QACTC;;QAEAA;;IAEFL,AAAAA;GACF,A,C;A,E,gC,C,CAyeEL;;QAEoB;AAChB;;AAEmB,YAagBW;;AAZX;QAEtBN;AAAuB,YAAOM;AAClC;GACF,A,C;A,E,yC,C,CAUAX;;;;;;aAU6B,iBAAA;;;QAaf;AAAS;;QAOT;AAAS;SAEf,iBAAA;GACR,A,C;A,E,oC,C,CAaAA;;UACYY;;YACFC;;QAEJR,oCAAgCQ;uBACVA;4CAEhBR;eAEKQ;kBACGD,sBAAoBC;qBACjBA;sBACCA;kBACJD,sBAAoBC;;aA5ZzBR;QAAAA,mBAA0B;aAGE;aAGhB;;uEAQQ,2BACI,sCAMT;QAwI5BE;QACAC;QCkIwBM,ADrFxBC,AAmNIV;QAUAA;QACAA,AAAAA;;;aAGaQ;cAAqBA;aACrBA;aAAaA;aACbA;aAAmBA;aACnBA;;;;;;mBAgNFR;QAAAA,mBAA0B;QAEzCW;QACAX,AAAAA;2BACuCY,oBDg4BlCC,iECz3BUD,4CAEJA,mFDu3BwB;;;YC/kCtB,AAFOJ;UAGdA,WAAAA,wBAAiBA;QAEnBR,AAAAA;;;QAGAA,AAAAA,sCAA6BW;;QAE7BX,AAAAA;;;QAGAc,sBAAKN;;;YAGDR;eACFA;eACIY,oBD+jCLC,mDAA8B;UChkC7Bb;;;UAGAe,QAAMP;;;aAIFA,iBAAAA;;GAEZ,A,C;A,E,mB,C,CAGAb;;QACMK;WACFA;WACIY,oBDijCDC,iDAA8B;MCljCjCb;;;;;;QAGA;;aAGQ,iBAAA;;;GAGZ,A,C;A,E,4B,C,CAkHAL;;cA9wBmCK;SAoxBJgB;IDjU7BC,uCAAwB;IACxBC,qCAAsB;SCmURF;SAgNqBhB,AAAAA;SA/MrBgB;IAFdG,qEAGcH;;;MAeZA;MCtUsBP,ADrFxBC,AA4ZEV;;MAGAoB;GAEJ,A,C;A,E,iB,C,CAmOFR;;QA35ByBS;;MA+6BKC;AAlB1B,YAAO;;;MA8CeA;AA5CtB,YAAO;;GAEX,A,C;A,E,mB,C,CAGAf;QAp6ByBc;AAs6BrB,YAAO;;AAGP;GAEJ,A,C;A,E,6B,C,CAkME1B;AACE;GACF,A,C;A,E,yB,C,CA6FAA;AACE;GACF,A,C;A,E,wB,C,C,C;A,E,E,G,C,C,yB,C;A,E,E,M,C,CAryCmB;MAAKS;KAAa,A;A,E,C,C;A,E,yB,C,C,C;A,E,E,G,C,C,yB,C;A,E,E,M,C,CAElB;MAAKA;KAAmB,A;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,0K,C;A,E,E,U,C,CA8G3CmB;;;;;MAeEC;;aAFoC,cAIgB;;;MADpDH;MAEAI,6BAAsC;;;;MAhBtCC;MACAC,gBAAW;MACXC,gBAAW;UACPJ;;QACFK;;;;;KAGJ,A;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,2J,C;A,E,E,U,C,CA8EA;UACsB,CAAA,AAAhBC;AAAqC;UACrCC,AAAAA,qCAA2B,CAACC;QAC9BA;MAEFC;KACF,A,C;A,E,E,a,C,CAEA;;UACM,CAACD;AAAU;WACfD;MAAAA;UE4kCkBG;AF1kChB,kBAAMC,yBLoBUpD,WAEG;;kBKtBboD;mBACkBA;eA8J1BzB,AA7JIV;eCiPKoC;eAAcC;eAAAA;eAAH,CAAA,AAAL,SAAsB;UAArCD;;kBAAuBC;UACvBA;qBACaC;YAAOC;UACpBC,wBAAkB,AAAlBA;;ADnPE,QACAR;;MAEFC;KACF,A,C;A,E,E,iB,C,CAEA;eACMQ;;;QACFA;;UAIEA;AAAqC;MACzCA,AAAAA;KACF,A,C;A,E,E,oB,C,CAEA;eACMA;;AAAsB;MAC1BA;KACF,A,C;A,E,E,gB,C,CAEA;UAC0B,CAAA,AAApBC;AAAyC;MAC7C;KACF,A,C;A,E,E,Y,C,CAEA;UACe;QCkNWjC,ADrFxBC,AA5HEV;;QAMA2C;KAEJ,A,C;A,E,E,M,C,CAKAC;;YACY5C;MACVA;UAauB6C;;;iBATZC;;QAET9C;YACQ;cAMa6C;;AAJvB;KACF,A,C;A,E,E,Q,C,CAgCAE;AAAsC,YAAGC,AAAAA;KAAa,A,C;A,E,E,kB,C,CAEtD;eACMA;UAAAA;aACI,iBAAA;MAERA;KACF,A,C;A,E,E,oB,C,CAkBA;UACsC,AAAnB,AEsGDd,AFtGZc,iCEu9BYd,AFv9BGhC,0CAAwB8B;QACzChC,AAAAA,uCAAsBiD;;QAEtBC;KAEJ,A,C;A,E,E,W,C,CAEA;MACElD,AAAAA,sCAA6BiD;eAGzBR;UAAa;AACf,yCJ3HkCvD,qBI2HlC;UACEiE,WJ1HWC;AI2Hb,KAEJ,A;A,E,C,C;A,E,kC,C,C,C;A,E,E,G,C,C,0B,C;A,E,E,M,C,CAnG4C;MACtCT;KACF,A;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,mC,C;A,E,E,S,C,CAiIJU;;WACM3C;WC5Dc0B;iBAASE;AD4DP;MCwFpBE,wBAAkB,AAAlBA;WACWH;;;cAAAA;eAAAA;MACXA;MACAD,WAAoB,CAAA,AAAL,SAAsB;AD1FrC;KACF,A,C;A,E,E,c,C,CAmBA3D;;eACgB6E;;YAjBe,AAAzBtD,wCACGA,AAAAA,2CAAkCA,AAAAA,oCAClCA,6CE+CWkC,AF9CXlC,AAAAA;4BAQC;;YA9OJwB,wBEoRcU,AFnRXP,yCACAD,AAAAA;eACLG;eAAwBjB,oBD2gDrBC,uCAA8B;UC3gDjCgB;;;AAqPA;;MAEF0B;AACA;KACF,A,C;A,E,E,Y,C,CAMA;UACmB;QAMfC;;AAGA,eAAOC;;AAAiB,KAE5B,A,C;A,E,E,K,C,CAKA;;UACM,AAACzD;QACH0D;;;UAGEA;;eADF;;;eAGE1D;eAAqCY,oBDovCpCC,0EAA8B;UCpvC/Bb;;;;KAIN,A;A,E,C,C;A,E,0B,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,M,C,CAzBI;UACM,CAACyD;AAAgB;MG7azB;KH+aE,A;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,2B,C;A,E,E,S,C,CAiCJ;eACM1D;UAAAA;QACFA,AAAAA;AACA;;MAEFA,UAAa4D;KACf,A;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,4C,C,C,C;A,E,E,G,C,C,8E,C;A,E,E,M,C,CA0HiD;MACzCC;KAEF,A;A,E,C,C;A,E,6C,C,C,C;A,E,E,G,C,C,oD,C;A,E,E,M,C,CAwLJ;;UACM;QACFC;;;;aACSA;;UACTA;;eACSA;;YACTA;;YAEAA;;;KAEJ,A;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,S,C;A,E,E,W,C,C,I,C;A,E,E,a,C,C,I;A,E,C,C;A,E,iB,C,C,C;A,E,E,G,C,C,uC,C;A,E,E,M,C,CA8EF;;;WAEwCC;gBAAtB9D,AAAAA;;AACK;WACjB+D;UAAAA;AAAwB;wBAQwB,AAA5B/D,2CACc,AAA/BA,AAAAA;;;cAGCY;;;;;UAEJb;;gBAplBIiE;;YAEJC,mBAASD,kBAAYA;;;YAGrBE,sBAAYF;;;YAGZG,0BAAgBH;;;YAGhBI,6BAAmBJ;;;YAGnBK,yBAAeL,kBAAYA;;;YAG3BM,qBAAWN,kBAAYA;;;YAGvBjD;;AAkkBF;;WAEFf;;MCvawBS,ADrFxBC;KAogBF,A,C;A,E,E,G,C,CAEAjC;;;AAA4B,+DACV,MAAbsF,mBAAgBxE;KAAmB,A,C;A,E,E,Y,C,CAExCb;AAAiB,YAAGqF,AAAAA;KAAgB,A,C;A,E,E,oB,C,C,I,C;A,E,E,W,C,C,I,C;A,E,E,a,C,C,I;A,E,C,C;A,E,8B,C,C,C;A,E,E,G,C,C,0C,C;A,E,E,M,C,CAbS;;WACpCA;UAAD,CAACA;;;qBAEKxD;;QAERwD;;KAEJ,A;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,mD,C;A,E,E,M,C,CAkBF;;sBACwBnD,oBDkyBjBC,uEAA8B;UC7xB/Bb;QAGFA,AAAAA;;;kBAG2BA,AAAAA,oCAAsBuE;YACrC;;;KAIhB,A,C;A,E,E,G,C,CAEA9F;;;AACE,6DACe,MAAV8F,gBAAahF,oBACF,MAAXuE,iBAAcvE,qBACC,MAAfiF,qBAAkBjF;KACzB,A,C;A,E,E,Y,C,CAEAb;;WAEU6F;;;WAAoBT;;;WAAmBU;;cAAAA;AAA/C,YAA6C,EAAA,AAApB,AAAP,WAAqB;KACzC,A,C;A,E,E,kB,C,C,I,C;A,E,E,W,C,C,I,C;A,E,E,a,C,C,I;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,iC,C;A,E,E,U,C,C,Q,C,I,C,C,C;A,E,E,E,M,C,I,C,Q,C,M,C,I,C,C;A,E,E,C,C;A,E,E,uB,C,CAkCA;UACMC;AAAW;MACfC;KACF,A,C;A,E,E,M,C,C,C,G,C,C,gC,C;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,qC,C;A,E,E,e,C,CAmEAC;;AAC8B,4BAaR3E,mCAChBmD,cAAiBA,AAAAA;;AAbK,4BAiBNA,aAAgBA,cAAiBA;;KAfvD,A,C;A,E,E,iB,C,CAEAyB;;AAEI,8BAAsBC;;KAG1B,A;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,e,C,CAiBAF;;AAC8B,uCAaCxB,gBAAmBA;;AAZtB,qCAiBtBA,aAAiCA,kBAAjBA;;KAftB,A,C;A,E,E,iB,C,CAEAyB;;AAEI,oCAAoCC;;KAGxC,A;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,qB,C,CAcAC;;;kBACkBC;kBACAA;sBACIA;UAGN,iBAAG/E;kBACDA,AAAAA;;AACO;sBACHD;;AACO;AACzB;;AAEA;KAEJ,A,C;A,E,E,uB,C,CAEAiF;AACE,kCAAoCD;KACtC,A;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,e,C;A,E,E,M,C,CAOAE;AACE;KACF,A,C;A,E,E,S,C,CAGA;MACEC,AAAAA;;KAEF,A,C;A,E,E,O,C,CAGA;MAEEA;KACF,A,C;A,E,E,S,C,CAGA;;AACE,qBAAyBA,AAAAA,2BAAiB;aACrBA;;gBAAAA;QAAAA;;AACrB,MACAA;KACF,A;A,E,C,C;A,E,2B,C,C,C;A,E,E,G,C,C,S,C;A,E,E,M,C,CAoCAD;AAAuB;KAAO,A,C;A,E,E,S,C,CAC9B;KAAyC,A,C;A,E,E,O,C,CAEzC;KAAe,A,C;A,E,E,S,C,CACf;KAAiB,A;A,E,C,C;A,E,iB,C,C,C;A,E,E,G,C,C,S,C;A,E,E,U,C,CAWjBE;;UACMC;AAAgB,cAAOC;MAC3B/D,AAAAA;;;iBAGWgE;;QAEThE,AAAAA;;AAEF;KACF,A,C;A,E,E,W,C,CAEAgE;;;AAGsB,cAAOD;;;AACZ,cAAOE;;AACR,cAAOC;;AACF,cAAOb;;AACL,cAAOC;AAG5B,YAAOa;KACT,A,C;A,E,E,a,C,CAQAA;;KAGA,A;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,gB,C,CAWAJ;AAAkB;KAAI,A,C;A,E,E,W,C,CAEtBrG;;aACcsC,AAAAA;UACH;AAAS;;YAERyD;;;MAIVzD,AAAAA;AACA,kBAAkB;QAChBoE,UAAUJ,iBAAUP;AACtB,AACA;KACF,A,C;A,E,E,U,C,CAEAY;;;aACarE,AAAAA;;UACF;AAAS;aAGX;;MACPA,AAAAA;MACAsE;AAGA;KACF,A,C;A,E,E,e,C,CAEAjB;AAA0B,+BAAS;KAAwB,A,C;A,E,E,iB,C,CAE3DC;AAA8B,+BAAS;KAAwB,A;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,yB,C;A,E,E,M,C,CARjD;;MACVc,kCAAKJ,qBAAkBA;KACzB,A;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,gB,C,CAaFD;AAAkB;KAAI,A,C;A,E,E,W,C,CAEtBE;;eACejE,AAAAA;UACF;AAAS;WAEXuE;MAAAA,sBAAc;MACvBvE,AAAAA;AAGA,0BAFcwE;KAGhB,A,C;A,E,E,U,C,CAEAN;;eACelE,AAAAA;UACF;AAAS;WAEXuE;MAAAA,sBAAc;MACvBvE,AAAAA;;AAIA,yBAHWwE,sBAAeF,cAAAA,oBACbE,sBAAeF,cAAAA;KAG9B,A,C;A,E,E,gB,C,CAEAE;;;YACYf;;MAGG;AACb,kBAAkB;aACJO,iBAAUP;;;QAAtBvF;;AACF,AACA;KACF,A,C;A,E,E,e,C,CAEAmF;AAA0B,+BAAS;KAAwB,A,C;A,E,E,iB,C,CAE3DC;AAA8B,+BAAS;KAAwB,A;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,S,C;A,E,E,a,C,CAa/DmB;UACMX;AAAgB;MAEpBY,qBAAgB;AAChB,YAAOC;KACT,A,C;A,E,E,oB,C,CAEAA;;;AACsB;;cAEZpB;;eAWCA;AAVK,gBAWDmB,AAAAA;;AAVE,gBAAOE;;AACR,gBAAOC;;AACF,gBAAOC;;AACL,gBAAOC;;AACjB,gBAAOC;;KAEpB,A,C;A,E,E,kB,C,CASAtH;;;WACW6F;iBAEOA;MAChBmB,AAAAA;;YACUO;;cAAAA;;AACV,aAAkB;QAChBA,0BAAcN,0BAAmBM;AACnC,AACA;KACF,A,C;A,E,E,iB,C,CAEAZ;;eACe;;WACJd;MACTmB,AAAAA;aACYnB;eACEA;;YACJ2B;;cAAAA;;;AAEV,aAAkB;QAGhBhH,oBAFUyG,0BAAmBO,qBACjBP,0BAAmBQ;AAEjC,AACA;KACF,A,C;A,E,E,mB,C,CAMAH;;KAGA,A;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,mC,C;A,E,E,W,C,CAQAI;;;sDAE2C1G;;;;QASvC2G;aAQA3G;aACIA;QC97BkBS,ADrFxBC;QAohCEkG;;;YAuDgD;eAz+CpD5G;UAAAA,yBAA6C,AAA7CA;UA67CI2G,6BAEaE;;eAIP,iBAAA;;KAEV,A,C;A,E,E,M,C,C,C,U,C,CAxCAH;;;;OAwCA,A,C;A,E,C,C;A,E,0B,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,M,C,CApCI;MACEC;MACAG;KACF,A;A,E,C,C;A,E,2B,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,M,C,CAiBA;MACEH;MACA1G;MACA6G;KACF,A;A,E,C,C;A,E,c,C,C,C;A,E,E,G,C,C,a,C;A,E,E,Y,C,CAgEJpI;iBAIaqI;;;aACQ,AAAN,kDAAc;aACG,AAAhB,CAAN,AAAA,gBAAc,AAAA;aAEJ,AAAL,CADR,CAAA,OAAQ;aAGQ,AAAR,CADR,CAAA,OAAQ;AAGb,YADK,EAAA,OAAQ;KAEf,A,C;A,E,E,G,C,CAEAtI;;;;;AAC8B;;aAETsI;aAAKxH;AAAtB;;AAEF;KACF,A,C;A,E,E,iB,C,C,I,C;A,E,E,a,C,C,I;A,E,C;A,C,A;A,e,mB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,a,C,CDjgDFd;;QACa;;UAEE;AAAS;;AAEtB;GACF,A,C;A,E,C,C,CAEAG;;;AACuB;;UAET;AAER;;AAGF;;AAEA;;AAEA;UAEQoI;;WACgB,iBAAA;AAC1B;GACF,A,C;A,E,yB,C,CAkcErH;;;;;;AAME;GACF,A,C;A,E,gC,C,C,CAIAA;SACQ,iBAAA;GACR,A,C,C,Q,C,C,0C,C,C,C,C,C,C,C,C,C,C,C;A,E,mB,C,CAEAA;;;;;;QAec;;;;UACY,AAAhBsH;AAEF;;;UAEsB,AAApBA;AAEF;AAEF,YAAOC;;;AAyCQ,YAAOA;AAC1B;GACF,A,C;A,E,sB,C,CAEAvH;;;;;QASM;AAIF,YAAOuH;;;gBAIOC;;AAEZ;AAEF,YAAOD;;AAET;GACF,A,C;A,E,yB,C,CAYAvH;;2BACwCvB;;;;;;QAWxBgJ;cACLA;AAET,mBAnBoBC,gBAmBIC;GAC1B,A,C;A,E,yB,C,CAEA3H;AAEE,6BADc4H;GAEhB,A,C;A,E,6B,C,CAwDA5H;;UAGY6H;AACV,cAEU,gCAFQ;;;;aAMK;aAAY;;;;;AAInC,AACA;GACF,A,C;A,E,+B,C,CAEA7H;;;;AAEE,6CH3boCT,6BG2bpC;UHzbekE;;aG0bQ,iBAAA;UACf;QACJqE;eACW;QACXA,OAAa,SAA0B,AAAP,oCAAX;QACrBA,OAAa,SAAK;;aAEZ,iBAAA;;AAEV,AACA,UAAOC;GACT,A,C;A,E,8B,C,CAEA/H;;AACE,4CH1coCT,4BG0cpC;UHxcekE;;aGycQ,iBAAA;UACf;aAAW,iBAAA;UACX;AAAU,cAAOuE;;AACzB,AACA,UAAOD;GACT,A,C;A,E,kC,C,CA6CA/H;;;;;;;;;;;;;;cAWsB;;wBAUV,6BACA;;;QAGA,oBAAc;;;;;;AAAO;;AAC/B;GACF,A,C;A,E,uB,C,CAaAA;;+BAGOiI;AAEL;GACF,A,C;A,E,sB,C,CA+DAjI;;;AAIE;GACF,A,C;A,E,sB,C,CAEAA;;;;GAKA,A,C;A,E,G,C,CA6LFkI;SACQ,iBAAA;GACR,A,C;A,E,K,C,CASAC;;MACwBF;;MACHC;SACb,iBAAA;GACR,A,C;A,E,a,C,CA6CAE;;;;;;;;;;;AAoBE;GACF,A,C;A,E,e,C,CAGAC;AAGE,UAAOC;GACT,A,C;A,E,e,C,CAQAC;;;;;;;;;;;;GAEA,A,C;A,E,e,C,CAgZAC;;;;AAgBkB;;AAC6B;;AAG3C,YAAOC;aACE;AACT;;;;oBAgByB;WACa,AAAP;;;AAO3B,kBAAOA,WACH;;;;AAGJ,kBAAOA;;;;;;;;;;;;;;cAiCEC;UAA8B;AACzC,cAAOD,WAAe;;gBACJE;YAAoC;;AAMtD,gBAAOF,WAAe;;kBACJG;;oBACAC;;sBACAC;;wBACAC;;0BACAC;;4BACAH;;8BACAI;;gCACAC;6BAA8C;;;;;;;;;;;;;;;;;AAChE,kBAAOT;;;;;AAMT,YAAOA;;;yCKxrDyC;AL8rD9C;AAMF,YAAOA;;;;AAQL;AAOJ;GACF,A,C;A,E,c,C,CAwBA1J;;AAEI,YAAOoK;;AAEP,YAAOnK;GAEX,A,C;A,E,c,C,CAUAkC;;;AAKE,oBAAa;eAC4B;eACE;MACzCrB;;AACF,AACA;GACF,A,C;A,E,a,C,CAEAuJ;;QAOwB;AACpB,YAAOC;aACoB;AAC3B,YAAOA;aACoB;AAC3B,YAAOA;aACoB;AAC3B,YAAOA;aACoB;AAC3B,YAAOA;;WAED,iBAAA;GAGV,A,C;A,E,sB,C,CAMAnC;;;AACuB;;;AAEa;gLCnvDC7G;;ADswDnC;GACF,A,C;A,E,mB,C,CA+CEL;;;;;;mBAmBqBsJ,AAFG;;;;;;;;;;MA0CTC,4BAAe;;;;;;SAUxB;;;mBAKWC;;;;;;;;;;;;;;;;AA8Bf,cAAoBC,yBAAF;aACLA;;UAEM;+BAEMD;;;;AAEzB;AAIA;GACF,A,C;A,E,sB,C,CAEAxJ;;;;AAOI;;AAQA;;AAQA;;AAQA;;AAQA;;AAQA;;AAQA;;GAQJ,A,C;A,E,qB,C,CAIAA;;;AACqB,YAAO0J;;;;;wDAUQ;AAChC,YAAOC,iCAHU;;;;aAgOIC;QAArBC;;;;MApNSN,4BAAe;AALxB;;;;;;WAyNqBK;MAArBC;;;;IAvMON,4BAAe;AALxB;GAOF,A,C;A,E,iC,C,CAEAvJ;;;;;;aAUU,iBAAA;;AAEN;;AAQA;;AAQA;;AAQA;;AAQA;;AAQA;;AAQA;;GAUJ,A,C;A,E,gC,C,CAEAA;;gBACqB8J;;;WAmIQF;MAAzBG;;;;;;;wBAvHgC;AAChC,YAAOC,4CAHU;;;;MAYRT,4BAAe;AALxB;;kEAYQ;;;IAMDA,4BAAe;AALxB;GAOF,A,C;A,E,kB,C,CAMFU;;;AAME,UAAOC;GAOT,A,C;A,E,e,C,CA8gBA;SACQ,iBAAA;GAER,A,C;A,E,iB,C,CA6KAC;AAGE;GAKF,A,C;A,E,qB,C,CA4BAC;AAAoC;GAA6B,A,C;A,E,kB,C,CM71FjEC;QAGa;;AACX;GACF,A,C;A,E,kB,C,CAMA1C;;AACsB;AACpB;GACF,A,C;A,E,uB,C,CAKA2C;AAGE,UAAOC,qDAAyB5C;GAClC,A,C;A,E,sB,C,CAOA6C;qBACkBF;AAChB;GACF,A,C;A,E,sB,C,CAGAG;cACY9C;AACV;GACF,A,C;A,E,mB,C,CAmCA1I;;AAEI;;AAGA,mCAjBQyI;;AAoBR;;AAGE,YAAOgD;;AAMT;GAEJ,A,C;A,E,a,C,CAOAzL;;;AAEqB;aAIG;AACtB,sEAAmC;;;;QCmEjC0L,mBAA6CA;;UD5DhC;;YAGAC;;MCyDbD,mBAA6CA;;ADxD/C,AACA;GACF,A,C;A,E,U,C,CAsBAJ;;;;qBA+YuCM;;;;qBAAAA;;AA/XrC;GACF,A,C;A,E,W,C,CA6FA/L;;;AAE8B;;AAO5B,gBAAkB;UACZ,CAACgM;AACH;AAEJ,AACA;GACF,A,C;A,E,gB,C,CAMAC;AAEE,UAAOF,gCADaP;GAEtB,A,C;A,E,S,C,CAyEAxL;;;AAEyB;;AAEK;;UAiOM;;AA5NE;;;AAEK;;;AAGvC,YAAOkM;;;AAKP;;;;;YAOSJ;;UA2MuB;AAtMD;yCACUA;;;QAOtC,+BAA0C;AAC7C;;;AAGF,UA1JOK,eAAYV;GA2JrB,A,C;A,E,a,C,CASAzL;;;AAE8B;;AAEb;;AAEA;;;;UAQD;AAAW;eAEX;AAAY;AAG1B,gBAAkB;;;UACZ,EA1BCgM,uBAAmBA;AA2BtB;;AAEJ,AACA;GACF,A,C;A,E,iB,C,CAEAhM;;;AACiB;;AACA;;;;AAOf,cAAoBoM,qBAAF;cACLA;;AAET;;;UAIE,EAjDCJ,6BAAmBA;AAiDS;;AACnC,AACA;GACF,A,C;A,E,iB,C,CAEAhM;;QAgIoC;AA9Hc;;UA8Hd;AA1H9B;eA0H8B;;;UArH5B,EAjECgM,yCAAmBA;AAiEqB;;;;;;;;;;QAsB5B;AAEjB;QAE0C,AAAzB,0CACA;AAEjB;;UAII,CAACK;AAAwD;UACzD,CAACA;AAEH;;AAMF,oBAAW;;;YACL,EA5GDL,uBAAmBA;AA8GpB;;AAEJ,AAKA,iCAAY;;;YACN,EAtHDA,uBAAmBA;AAwHpB;;AAEJ,AAIA,qBAAY;;;YACN,EA/HDA,uBAAmBA;AAiIpB;;AAEJ;AAOF,UAAOM;GACT,A,C;A,E,Q,C,CAYAf;AAGE;GACF,A,C;A,E,uB,C,CD3jBApL;;AAOE;GACF,A,C;A,E,uB,C,CAEAF;AAAoC,UAAGC;GAAiC,A,C;A,E,c,C,CAKxE;;GAOA,A,C;A,E,yB,C,CA2EAH;;UAEewM;;QAKF;;AAAS;;;QAEJ;AAAS;;;YAMjBC;UACE;;YAGK;;AAAS;;;YAEJ;AAAS;;;;;AAc3B;;;;eAQSC;;;AAET;;;;AAKA;;;WAIuBA;;AAAvB;;;AAIA,YAAOC;;WAKD,iBAAA;;WAMiBD;;AAAvB;;AAEA,YAAOC;GAEX,A,C;A,E,kB,C,CAYAA;;;aAEe9M;;AAEb;GACF,A,C;A,E,sB,C,CAGA6M;AAGE,UAAO7M;GACT,A,C;A,E,yB,C,CAEA+M;;;AAII,YAPK/M;;AASL,YAAOA;GAEX,A,C;A,E,kB,C,CAiBA;;AACsC;IACpCgN;IACAC;GACF,A,C;A,E,0B,C,CAEA;;IAEEC;IACAC;IAEAC;;;;;AAUE,kBAAkB,IAAEC;cACRA;gBACEC;YACF;mBAEKP;cACF;;;;AAIf;AAKF,gBAAkB,IAAEM;;;;YAIsB;YACP;YACJ;YACI;YACK;;;AAExC,GACF,A,C;A,E,S,C,CAsCA;;;YAoBUE,sCAJAA,wCAFAA,wCADAA,wCADAA,wCADAA,wCAHAA;;;;;;AA0BJ,oBAAkB;;;;;AAKlB;;;;IAQJZ;IACAC;IAEAU;GAEF,A,C;A,E,qB,C,CAEAC;AAEE;GACF,A,C;A,E,c,C,C,C;A,E,E,G,C,C,6I,C;A,E,E,M,C,C,C,G,C,C,0J,C,C,6B,C,CLnCEzM;;;;AAEoB;;;;;;AAclB,uDAR0C,yFAKgB;OAM5D,A,C;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,mE,C;A,E,E,gB,C,CAo6BA0M;;yBAE+BC;;AACV;;WAEfC;UAAW;;WAGXC;UAAe;;WAGfC;UAAM;;WAGNC;UAAQ;;WAGRC;UAAU;;AAId;KACF,A,C;A,E,E,M,C,C,C,G,C,C,iZ,C,C,+B,C,CAsBAxM;;;;;;;;;;;AA4CE;OAMF,A,C,C,mC,C,CAMAA;AAmDE;;;;;;;;OACF,A,C,C,uC,C,CAkCAA;AASE;;;;;;;OACF,A,C;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,wB,C;A,E,E,U,C,CAsCAf;eACMsN;;AAAiB,mCAAoBE;AACzC;KACF,A,C;A,E,E,Q,C,C,I;A,E,C,C;A,E,mB,C,C,C;A,E,E,G,C,C,kC,C;A,E,E,U,C,CAaAxN;;WACMsN;;AAAiB,2CAA4BE;WAC7CD;;AACF,4EAAoDC;AAEtD,iGACOA;KACT,A,C;A,E,E,Q,C,C,I,C;A,E,E,M,C,C,C,oB,C,CAZAC;;;;;;OAGuE,A,C;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,gB,C;A,E,E,U,C,CAiBvEzN;eAAqBwN;AAAH,YAAGA;KAA+C,A;A,E,C,C;A,E,8B,C,C,C;A,E,E,G,C,C,iB,C;A,E,E,M,C,CAepEhE;;;;AAOE;KACF,A;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,0B,C;A,E,E,U,C,CAuIAxJ;;WACM0N;UAAO;AAAS;WAGoBC;;;MAGjCD;AAAP;KACF,A;A,E,C,C;A,E,qB,C,C,C;A,E,E,G,C,C,qB,C;A,E,E,M,C,CAwCqC;AAAG,YAAGE;KAAQ,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,4B,C;A,E,E,M,C,CAEd;AAAG,YAAGA;KAAY,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,mC,C;A,E,E,M,C,CAElB;AAAG,YAAGA;KAAkB,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,0C,C;A,E,E,M,C,CAExB;AAAG,YAAGA;KAAwB,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,sD,C;A,E,E,M,C,CAE9B;AAAG,YAAGA;KAA8B,A;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,S,C;A,E,E,U,C,CAgazE5N;AAAkB;KAAY,A;A,E,C,C;A,E,c,C,C,C;A,E,E,G,C,C,U;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,sE,C;A,E,E,G,C,CA0C9BH;;;;AAC8B;;AACA;AAC5B,YACIgO,gBAAOlN,eACPmN,6BAASnN,6BACT4M,mBAAW5M;KACjB,A,C;A,E,E,Y,C,CAEAb;;WAEMyN;;2BAGiBxN,4BAA0B8N;;2BACA,yBAG1BN,sBAIAxN;WAEKA,4BAA0B+N;;;AAApD,YAAwB,EAAA;KAC1B,A,C;A,E,E,e,C,C,I,C;A,E,E,M,C,C,C,G,C,C,qE,C,C,mB,C,CAGA/M;AAAoC,cAAG6M;OAAa,A,C,C,uB,C,CAKpD7M;AAAwC,cAAG6M;OAAiB,A,C,C,0B,C,CAM5D7M;;;eAEyB4J;UAArBC;;AAEF;OACF,A,C,C,8B,C,CAYA7J;;;;;;AAIE,kBAAoBkL,qBAAF;kBACLA;;AAET;;AAEJ,OACF,A,C;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,e,C;A,E,E,U,C,CA8bAjM;AAAkB,oCAAmBoF;KAAQ,A,C;A,E,E,M,C,C,C,a,C,CAD7C2I;;OAA0B,A,C;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,mB,C,C,C;A,E,E,G,C,C,8E,C;A,E,E,S,C,CA4B1BlO;+BAC2BmO;AACzB,kDAEMjC,wCAAsCkC;KAC9C,A,C;A,E,E,gC,C,CAwCAD;wBACoBxO;AAClB;KAGF,A,C;A,E,E,O,C,CAEAyO;;;WAzDmBC;;;;;qBAgEVA;WAGHC;UAAe,cAAW,AJlgFZhO;sBIogFbiO;WAGDC;UAAuB,cAAW,AJvgFpBlO;qBIygFbiO;WAGDE;UAAgB;;eAEPC;AACX,kBAAoB3G,oBAAF;kBACLA;4BACDyB;;AAEZ;;AAKF;KACF,A,C;A,E,E,U,C,CAWArJ;;WAGMmO;UAAe;AACjB,kBAAoBA,oDAAF;iBACGA;;;;;AAIrB;;;;WAEEE;UAAuB,cAAW,AJ/iFpBlO;iBIkjFT,cAFgB;AAGvB,kBAAoBkO,sCAAF;iBACGA;;;;;AAIrB;;aAESC;YAAgB;mBAGlB,cAFgB;iBAGZC;AACX,oBAAoB3G,wCAAF;oBACLA;;;0BAEDyB;;AAGZ;;;AAKF,YADO,yBAAU6E;KAEnB,A,C;A,E,E,M,C,C,C,G,C,C,8B,C,C,6B,C,CAhDAnN;;;;AAGE,kBAAoBoF,oBAAF;sBACYA,AAAAA;AAC9B,AACA;OACF,A,C;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,c,C;A,E,E,U,C,CA2EAnG;AAAkB;KAAY,A,C;A,E,E,O,C,CAE9BiO;AAAQ;KAAO,A,C;A,E,E,qB,C,C,I;A,E,C,C;A,E,iB,C,C,C;A,E,E,G,C,C,qB,C;A,E,E,M,C,CK7gFE;AAAI;KAAsC,A;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,4B,C;A,E,E,M,C,CAEvD;AAAgB;KAAqD,A;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,M,C,CAErE;AAAa;KAAsC,A;A,E,C,C;A,E,c,C,C,C;A,E,E,G,C,C,gE,C;A,E,E,Y,C,CGrVvDO;;;;UAGsBC;;AAEL;AACf,YAAO;KACT,A,C;A,E,E,M,C,C,C,yB,C,CAhCA1N;;;;;;;AAiBiD;;aAIzC,iBAAA;OAER,A,C;A,E,C,C;A,E,oB,C,C,C;A,E,E,G,C,C,uB,C;A,E,E,M,C,CA0EAf;eAD2B0O;;cAAAA;AACG,YADHA;KACkB,A,C;A,E,E,sB,C,CAV7CC;KAGA,A,C;A,E,E,M,C,C,C,qB,C,CAHAA;;;;OAGA,A,C;A,E,C;A,C,A;A,kB,+C,A,E,C,E,C;A,E,G,C,C,E,C;A,E,W,C,C,C;A,E,E,G,C,C,oE,C;A,E,E,U,C,CC1IAC;;2BACuBxG;AAAe;WDoB5ByG;;;;QCjBiBC;KAC3B,A,C;A,E,E,U,C,CA8CA9O;AAAkB,wCAAuB+O,oCApDpBD,sCAQCE;KA6CK,A,C;A,E,E,Q,C,CAE3BhP;gBACY;MACViP,2BAzDmBH;MA0DnBG,0BAAeF,AAAAA;MACfE,4BAnDoBD;MAoDpBC,6BA/CkBC;MAgDlBD,kCAAuBE,AAAAA;MACvBF,kCAAuBG,aAAAA;AAEvB,YADWC;KAEb,A,C;A,E,E,sB,C,CArCAC;;;MACE,gBAAcC;;2BACmBA;MAAjC;WACeA;UArBL;QAAMP;WAsBAO;;UAjBN,iBAAc;QAAWL;MAkBnC,qBAAqBM,iBAAeD;KACtC,A,C;A,E,E,M,C,C,C,G,C,C,sB,C;A,E,C,C;A,E,M,C,C,C;A,E,E,G,C,C,gE,C;A,E,E,U,C,CCAAvP;AAAkB,8BAtCCyP,wCAUEC;KA4BwB,A,C;A,E,E,Q,C,CAE7C3I;gBAC4B;MAC1B4I,yBA1CiBF;MA2CjBE,4BAAiBC;MACjBD,0BAvCkBE;MAwClBF,2BAnCmBD;MAoCnBC,8BAAmBG,aA/BOC;AAgC1B;KACF,A,C;A,E,E,iB,C,CAnBAC;;;WACcT;UA5BF,cAAW,AAACnH;QAAeqH;MA6BrC,eAAeF;WACFA;UAzBH,cAAW,AAACnH;QAAeyH;WA0BvBN;;UArBJ,mBAAgB;QAAQG;WAsBhBF,iBAAeD;;;UCiTH,AAAvBU;QDjUkBF;KAiB1B,A;A,E,C;A,C,A;A,K,yB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,I,C,C,CElCH;IAOEhB,UCu9lCyCmB;IDt9lCzCC,YCs9lCyCD;IDr9lCzCE,WCq9lCyCF;IDp9lCzCG,cCo9lCyCH;IDn9lCzCI,WCm9lCyCJ;IDl9lCzCK,gBCk9lCyCL;IDj9lCzCM,iBCi9lCyCN;IDh9lCzCO,UCg9lCyCP;aD58lCzCE;IC4p/BEM,uDA/EI,YAAc,eA8EcC,mCA9EW;SD5k/B7CL;IC2p/BEI,uDA/EI,YAAc,eA8EcC,sCA9EW;SD3k/B7CL;IC0p/BEI,uDA/EI,YAAc,eA8EcC,sCA9EW;SD1k/B7CN;ICyp/BEK,uDA/EI,YAAc,eA8EcC,oCA9EW;SDzk/B7CJ;ICwp/BEG,uDA/EI,YAAc,eA8EcC,wCA9EW;SDxk/B7CH;ICup/BEE,uDA/EI,YAAc,eA8EcC,mCA9EW;ID5l/B7CC;GACF,A,C,C,Q,C,C,c,C,C,C,C,C,C,C,C,C,C,C;A,E,Q,C,C,CAsBAC;;+BAE2BT;QCyvvBOU,ADxvvB3BC;MACHN;MACAL;AACA;;IAEFK;SHI6DpB,+BIivvB3ByB,ADnvvBhBC;mDHL8BvB,iBAAeD;;IGM/DyB;IAEAjC,uCFxCmBU,AEwCKuB;IACxBb,qCAA0Ba,sBH7BJhC;IG+BtB4B;GACF,A,C,C,Q,C,C,kB,C,C,C,C,C,C,C,C,C,C,C;A,E,S,C,C,CAEAK;IAGEb;IACArB;IACAoB;IACAC;IACAQ;AAPiB;GAAU,A,C,C,Q,C,C,mB,C,C,C,C,C,C,C,C,C,C,C;A,E,oB,C,CAU7BA;IACEN;IACAC;IACAC;GACF,A,C;A,E,W,C,C,CAEAU;;;;cL4CWnR,yBKzCcuQ;;6BADvB;QAGES;QACAT;;;;;GAEJ,A,C,C,Q,C,C,qB,C,C,C,C,C,C,C,C,C,C,C;A,E,a,C,C,CAEAa;;mBLkCWpR,yBKhC0BuQ;SAElB;;;WHjCP,UA/BYtB;UAEV;QAAMA;;;MA8BhBI;;WAIQ,UApCYJ;UAEV;QAAMA;;;MAmChBI;;IIyuvB4CgC,AD5svB9CL,iDH1EqBjC,gBG0E8BkC;IAEnDb,qCAA0Ba,sBHpEJhC;IGsEtBqC;IACAA;GACF,A,C,C,Q,C,C,uB,C,C,C,C,C,C,C,C,C,C,C;A,E,Q,C,C,CAEAC;;;SH1EwBtC;;SAyCD;;;SAAX,YAAqB;QAvCnB;MAAMA;II4wvB4BoC,ADlsvB9CL,iDHpFqBjC,gBGoF8BkC;IACnDb,qCAA0Ba,sBH7EJhC;IG8EtBqC;IACAA;GACF,A,C,C,Q,C,C,kB,C,C,C,C,C,C,C,C,C,C;A,C;C;A,mB,kB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,+B,C,Cf8oBEtQ;;AACE,2CA/boCT,2BA+bpC;MACEiR,SA9ba/M;AA+bf,GACF,A,C;A,E,2B,C,CAEAzD;;AACE,2CArcoCT,2BAqcpC;UACMiR,SApcS/M;AAocH;AACZ,AACA;GACF,A,C;A,E,wC,C,CA+KAzD;;AAEE,oEAAkB,IAAEyQ;UACJA;AACZ;AAEJ,aAEsB;;MAEpBA;MACA5Q;MACAA;MACAA;;;;;MAGA4Q;;AAEF,UU3qByB9F;GV4qB3B,A,C;A,E,oC,C,CAmFA3K;;QAdY,aAAa,QAAEoF;wBACjB,6BAA+BA;QAE/B,eAAe,MAAEA;wBACjB,+BAAiCA;cAaxB;;AACA;QAEH;;QAYU,AAAT,sBAAWsL;WAClB,iBAAA;IAERC;GACF,A,C;A,E,U,C,CiBhiCA3Q;;QAEe;AACX,eAA8B,AAAR,0BAAkC,AAAR,uCACzC;;;QACL4Q,oCAASC;;AACX;AAEA,gBAAkD,+DAAX;;;QACrCD,oCAASC;;AACX,GAEJ,A,C;A,E,c,C,CCuGA7Q;AAAqC,UAAG8Q;GAAY,A,C;A,E,Y,C,C,C;A,E,E,G,C,C,e,C;A,E,E,Y,C,ClBzFpDxR;AAAyB,sCAkRaC;KAlRe,A,C;A,E,E,S,C,CAErD;;gBACe;AACb,kBAAkB;QAChBwR,cAAOC;YACI,YAAG;eACN,iBAAA;;AAEV,KACF,A,C;A,E,E,W,C,CAEAlS;AAAiB,YAAGM;KAAW,A,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,0C,C;A,E,E,W,C,CAwQ/BD;AAAc,YAAGsE;KAAQ,A,C;A,E,E,U,C,CAEzB3E;;WACemS;;gBAAAA;UACD,AAAR1O;aACI,iBAAA;WAEJ2O;UAAO;QACTzN;AACA;;MAEFA,gBAAWwN;MACXC,cAAM,AAANA;AACA;KACF,A;A,E,C,C;A,E,c,C,C,C;A,E,E,G,C,C,2B,C;A,E,E,Y,C,CAkBA5R;eAAqD2R;sCAAAA,qBAAoBE;;AAAhD;KAAmD,A,C;A,E,E,U,C,CAG5EpS;eAAkBkS;AAAH,YAAGA;KAAgB,A,C;A,E,E,W,C,CAClCnS;eAAoBmS;AAAH,YAAGA;KAAiB,A,C;A,E,E,e,C,C,Q,C,E,C,C,E,C,C,C;A,E,E,E,M,C,C,E,C,C;A,E,E,C,C;A,E,E,M,C,C,C,6B,C,CAbrCzR;;AAEI;AAEF;OACF,A,C;A,E,C,C;A,E,6B,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,c,C,C,C;A,E,E,G,C,C,gC,C;A,E,E,I,C,C,Q,C,I,C,C,C;A,E,E,E,M,C,I,C,E,C,M,C,I,C,C;A,E,E,C,C;A,E,E,U,C,CA8BAV;eACMsS;UAAAA;QACF3N,gBAAW0N,UAAGC;AACd;;MAEF3N;AACA;KACF,A,C;A,E,E,W,C,CAEA4N;AAAc,YAAG5N;KAAQ,A;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,yB,C;A,E,E,I,C,C,Q,C,I,C,C,C;A,E,E,E,M,C,I,C,E,C,M,C,I,C,C;A,E,E,C,C;A,E,E,U,C,CAezB1E;AAAe,YAAGuS,kBAAAA;KAAc,A,C;A,E,E,W,C,CAChCD;AAAuB,YAAGF,WAAGG,iBAAAA;KAAyB,A,C;A,E,E,e,C,C,Q,C,E,C,C,E,C,C,C;A,E,E,E,M,C,C,E,C,C;A,E,E,C,C;A,E,E,e,C,C,Q,C,E,C,C,E,C,C,C;A,E,E,E,M,C,C,E,C,C;A,E,E,C,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,2B,C;A,E,E,Y,C,CAYtDhS;mCAAiD2R,kBAAAA,iBAAoBE;;AAA5C;KAA+C,A;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,uB,C;A,E,E,I,C,C,Q,C,I,C,C,C;A,E,E,E,M,C,I,C,E,C,M,C,I,C,C;A,E,E,C,C;A,E,E,U,C,CASxErS;AACE,oBAAOsS,gBAAAA;YACDD,UAAGC;AACL;AAEJ,AACA;KACF,A,C;A,E,E,W,C,CAEAjS;AAAc,YAAGiS,AAAAA;KAAiB,A;A,E,C,C;A,E,oB,C,C,C;A,E,E,G,C,C,S;A,E,C;A,C,A;A,mB,kB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,W,C,CmB9VpC/R;;;;;;;;;AASE;GACF,A;A,C,A;A,e,c,A,E,C,E,C;A,E,G,C,C,E,C;A,E,qB,C,CCnEAkS;;SACMC;;MACKC;AAAP;;MAEOA;AAAP;;GAEJ,A,C;A,E,qB,C,CCJA;;AAIE,WAAa;MACXhR;cACwBA;MAAhBiR;;AACV,IAEAC;GACF,A,C;A,E,iB,C,C,CAEA;;;MAEIC;;MADF;MCAEC;MDIAH,kBAAgBA;;;;GAGpB,A,C,C,Q,C,C,2B,C,C,C,C,C,C,C,C,C,C,C;A,E,sB,C,CAEA;;;;;MAIoBC;MAAhBD;MCbAG;;;MDgBgBF;MAAhBA;;GAEJ,A,C;A,E,Y,C,CEzCAG;;;MAIIC,iBAAUC;;WADZ;;;MAGEC;;;GAEJ,A,C;A,E,e,C,CAIA;IAIqBC;IAIjBC;GAEJ,A,C;A,E,sB,C,CAGAC;AAAwE;GAEzB,A,C;A,E,e,C,CAI/C;IACqBF;IAIjBC;GAEJ,A,C;A,E,W,C,ChBAE3S;;;MAIW6S;AAAP,YiBi0BAC;;AjB/zBF,UiB+zBEA,4CjB9zBYD;GAChB,A,C;A,E,Y,C,CevCIE;uBGkLgC,4BAAVC;AH/K1B,UAAO,cADU;GAEnB,A,C;A,E,W,C,CE6XExS;;IAIEyD;AACA;GACF,A,C;A,E,wB,C,CAySF;IA+JsBgP;GAlJtB,A,C;A,E,Q,C,CAEAxP;;;AAC6B,YAAOuN;UAEvB6B;;WAEF7B;AAAP;;MApTA6B;;GAwTJ,A,C;A,E,a,C,CAEApP;;;AAC6B,YAAOuN;UAEvB6B;;WAEF7B;AAAP;;MA/TA6B;;GAmUJ,A,C;A,E,c,C,CAEApP;;;AAE6B,YAAOuN;UAEvB6B;;WAEF7B;AAAP;;MA3UA6B;;GA+UJ,A,C;A,E,sB,C,CAiBA;IAIEK,yBAHc,yBACRjB;GAGR,A,C;A,E,gB,C,CAEAc;AAKE,UAAOV,0BAHO,yBACDJ;GAGf,A,C;A,E,W,C,C,C;A,E,E,G,C,C,2B,C;A,E,E,Q,C,C,I;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,yI,C;A,E,E,e,C,CEzrBE3S;AAAqB,YAAU,AAAP6T;KAAgB,A,C;A,E,E,a,C,CACxC7T;AAAmB,YAAG6T;KAAgB,A,C;A,E,E,a,C,CACtC7T;AAAmB,YAAG6T;KAAgB,A,C;A,E,E,c,C,CAEtC9E;;QAGI8E;;QAGAA;KAEJ,A,C;A,E,E,c,C,CA0FAC;;;MArByBP;8EACAQ;MAuBvBC;AACA;KACF,A,C;A,E,E,iB,C,CAqBAzB;AAEE,YAAO0B;KACT,A,C;A,E,E,U,C,CAEAC;AAEE,YAAOD;KACT,A,C;A,E,E,W,C,CAEA;MAEEJ;MACAI;KACF,A,C;A,E,E,W,C,CAEA;MAEEJ;MACAI;KACF,A,C;A,E,E,c,C,CAEA;;UAtJ+B,AAAPJ;aA0JpBM;QAAAA;QFkoBFC;;QE9nBEC,yBAAyBJ;QACzBA;;KAEJ,A,C;A,E,E,kB,C,CAEAK;;gBAIoBL;MAClBA;AAEA,wBAAe;eACEM;QACfA;;AAGF,AACA;KACF,A,C;A,E,E,W,C,CAyCA;;;;;UASMC;;UAEAC;;oBAGkBC;QACpBC;QACAC;;KAEJ,A,C;A,E,E,gB,C,C,CAeA;sBAOsBF;MACpBG;MACAD;KACF,A,C,C,Q,C,K,C,C,C;A,E,E,E,M,C,I,C,gB,C,K,C,C,I,C,C;A,E,E,C,C,C,kB,C,C,Q,C,C,Q,C,C,oB,C,C,C,C,C,C,C,C,E,C,C,E,C,C;A,E,E,U,C,C,I,C;A,E,E,S,C,C,I,C;A,E,E,M,C,C,C,G,C,C,8F,C,C,Q,C,CA1MAN;;OAGiE,A,C,C,2B,C,CAwHjEpT;QA/KI2S;QAqLFnL;OAYF,A,C,C,wB,C,CAIAxH;QArMI2S;YAP2B,AAAPA;UAoNpBe;;UAEAE;OAEJ,A,C,C,mC,C,CAqHA5T;;AAGE;uBAEcmT;UACZA;UACAO;cACiB;;;;;;AAAQ,OAC7B,A,C,C,6B,C,CAUA1T;;;;AACE;;cACM,CAACwH;AAAoB;qBACTA;;;yBAEWA;iBACzBA;iBACIqM;iBAAkBA;YADtBrM;YFgaFsM;AE9ZE;;;AAEqB;cAEI,AAAvBX;YAGFY;AACA;;;wBAMkBvM,8BAAmBA;;;;;iBAvXpBmL;6BAsD4BqB;mBA8Ud,aA1UVC;;;;;;;mBA2UTd;;mBACK3L;cAAAA;cF0XiB0M;mBE1XlB;;;;;2BAEW1M;mBACzBA;mBACIqM;mBAAkBA;cADtBrM;cF8XJsM;AE5XI;;;gBAIE;cF7ERrQ;;;;kBEsK4B,CAxePkP,gCAsD4BqB;wCAmbtBG;;cAGrB5M;gBAE+B,CA9ehBoL,gCA0DIsB;cAqbnBG;gBAGU;cFrKhB/B;;AEuK8B;;;oBAKtB;;;;;;oBAxfqB,AAAPM;kBAOpBA;;;;;kBA8fQW;;gBAGFC;AAEF;;;;yBAIUJ;;YAlYhBR;YACAI;;yBAoYgBI;;iBAEOU;iBAAkBA;YAjYzClB;YACAI;;;;;;AAoYA,OACF,A,C;A,E,C,C;A,E,4B,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,M,C,CA9X4B;MACtBW;KACF,A;A,E,C,C;A,E,mC,C,C,C;A,E,E,G,C,C,qB,C;A,E,E,M,C,CAgCU;;;kBA0DQF;MACpBC;MACAC;KAzDE,A;A,E,C,C;A,E,oC,C,C,C;A,E,E,G,C,C,qB,C;A,E,E,M,C,CAKS;MAEPW;KACF,A,C;A,E,E,M,C,C,Q,C,K,C,C,C;A,E,E,E,M,C,I,C,M,C,K,C,C,I,C,C;A,E,E,C;A,E,C,C;A,E,iD,C,C,C;A,E,E,G,C,C,kD,C;A,E,E,M,C,CA4MEvV;;;;;aApZiB6T,yBAsD4BqB;QAgWlBvC;4CFwXA6C;AEtXvB;;aAHF;;;;AAME;;;KAEJ,A;A,E,C,C;A,E,yC,C,C,C;A,E,E,G,C,C,yC,C;A,E,E,M,C,CAEA;;mBAC2B9M;;aAhaVmL,yBAuDgC4B;;UA4WtC;;;eAE6BV;UAApBpC;wBFyWO6C;;eE1WvB;;;eAImCT;;;;;;AAGjC;;;sBA3aWlB,yBAwDsB6B;kCAuXJ;;;;eAEzBC;;;;iBAEoCZ;iBACAA;YAFfpC;wCF+VjCiD;;iBE1V+Cb;YADdpC;wCFwVJ6C;;;eE9VvB;;;eAUmCT;;;;;;AAGjC;;;;;;;;;KAQN,A;A,E,C,C;A,E,wD,C,C,C;A,E,E,G,C,C,qD,C;A,E,E,M,C,CAEA;;;;;;;aAvciBlB,yBA0DIsB;QAgZAxC;8BFkUPgB;;aEnUZ;;;;eAG4BjL,cAAAA;;;;;;;;sCACDA;;;;;;;;QAOzB2L;;QAEAwB;;KAeJ,A;A,E,C,C;A,E,gE,C,C,C;A,E,E,G,C,C,8B,C;A,E,E,M,C,CAfwB;MAGlBjB;KACF,A;A,E,C,C;A,E,iE,C,C,C;A,E,E,G,C,C,8B,C;A,E,E,M,C,CAAY;;;;yBAKS;;QACjBiB;;MAEFjB;KACF,A,C;A,E,E,M,C,C,Q,C,K,C,C,C;A,E,E,E,M,C,I,C,M,C,K,C,C,I,C,C;A,E,E,C;A,E,C,C;A,E,mB,C,C,C;A,E,E,G,C,C,sB,C;A,E,E,U,C,C,Q,C,C,C,C;A,E,E,E,M,C,I,C,Q,C,M,C,C,C;A,E,E,C;A,E,C,C;A,E,M,C,C,C;A,E,E,G,C,C,S,C;A,E,E,S,C,CCVVd;;;eACmB;;0BAEF,gJAQFT;AAKb;KACF,A,C;A,E,E,U,C,CAsEAS;;;eACwB;;MAEtB,4HAEWT;AAKX;KACF,A,C;A,E,E,W,C,CAWAS;;;eACyB;;0BAER,kIAIJT;AAKX;KACF,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,wC,C;A,E,E,M,C,CAtHM;MACEL,wGAGEM;KAEJ,A,C;A,E,E,U,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,gB,C,Q,C,C,C,C,C;A,E,E,E,E,M,C,C,I,C,C,Y,C,C,I,C,C,C,C,C,C,C;A,E,E,E,C,C,C,I,C,M,C,C,Q,C,C;A,E,E,C;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,8B,C;A,E,E,M,C,CAJI;AAAG,YAAGrB;KAAc,A;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CACpB;KAAK,A;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,M,C,CAKD;MACNoB;KACF,A;A,E,C,C;A,E,qB,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,M,C,CA6EF;;mBAAW;KAAI,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,0B,C;A,E,E,M,C,CAEP;MACNA;KACF,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,2B,C;A,E,E,M,C,CAkBA;MACEyC;KACF,A;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,M,C,CAEQ;MACNzC;KACF,A;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,yC,C;A,E,E,M,C,CJxoBwB;AAAG,YAAGA;KAAuC,A;A,E,C,C;A,E,8B,C,C,C;A,E,E,G,C,C,oC,C;A,E,E,M,C,CAQxE;AAA+B,YAAG0C;KACQ,A;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,4B,C;A,E,E,M,C,CAOf;AAAG,YAAG1C;KAAsB,A;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,S,C;A,E,E,Y,C,CCkhBxDlP;;;aAEW6R;AAAP;;aADF;;;AAGE,cAAOC;;;KAEX,A,C;A,E,E,iB,C,CAEA9R;;;aAEW+R;AAAP;;aADF;;;AAGE,cAAOD;;;KAEX,A,C;A,E,E,yB,C,CAUAE;uBAC4BC;;AAExB;;AAEA;KAEJ,A,C;A,E,E,c,C,C,Q,C,C,C,C,C;A,E,E,E,M,C,I,C,yB,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,8B,C,CAEAC;uBACiCC;;AAE7B;;AAEA;KAEJ,A;A,E,C,C;A,E,8B,C,C,C;A,E,E,G,C,C,+B,C;A,E,E,M,C,CAbW;AAAG,YAAG;KAA0B,A;A,E,C,C;A,E,+B,C,C,C;A,E,E,G,C,C,+B,C;A,E,E,M,C,CAEhC;AAAG,YAAG;KAAmB,A;A,E,C,C;A,E,mC,C,C,C;A,E,E,G,C,C,gC,C;A,E,E,M,C,CAOzB;AAAM,YAAG;KAAoC,A;A,E,C,C;A,E,oC,C,C,C;A,E,E,G,C,C,gC,C;A,E,E,M,C,CAE7C;AAAM,YAAG;KAA6B,A;A,E,C,C;A,E,gC,C,C,C;A,E,E,G,C,C,gC,C;A,E,E,M,C,CA+FxC;MACP1C;KASF,A;A,E,C,C;A,E,iC,C,C,C;A,E,E,G,C,C,gC,C;A,E,E,M,C,CATyB;;;MACrBtR;;;gBAE6CsO;UACnC;QACRtO;;KAGJ,A;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,Y,C;A,E,E,M,C,CA0IFkE;AAAwB;KAAO,A,C;A,E,E,qB,C,CAI/BrC;AAA0D,YACtD6Q;KAA6D,A,C;A,E,E,K,C,CAKjE7Q;AAAiB,YAAGwP;KAA6B,A,C;A,E,E,U,C,CAEjDxP;AAA8B,YAAGqR;KAAuC,A,C;A,E,E,kB,C,CAKxEW;AAAmC;KACW,A,C;A,E,E,uB,C,CAE9CE;AAAgD;KACG,A;A,E,C;A,C,A;A,oB,mB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,c,C,C,CIj2BrDrW;AAA0B,UAAK;GAAI,A,C,C,Q,C,C,wB,C,C,C,C,C,C,C,C,C,C,C;A,E,gB,C,C,CAEnCC;AAAwB,UAAG+I;GAAU,A,C,C,Q,C,C,0B,C,C,C,C,C,C,C,C,C,C,C;A,E,e,C,CtBD7BtI;AAME;GAqBR,A,C;A,E,wB,C,CAu4BMA;AAA2B;GAAqB,A,C;A,E,iB,C,CuBrhBxDP;;QACMoW;AAAsC;IAC1CA;;;MAGEC;;MAEAD;;SAEM;IAAA;IAAA;AAAR,UnB5I2B1K;GmB6I7B,A,C;A,E,uB,C,CAGA;;SAiBgBpL;;;AAGd;YAAc,gBAAwB;;UAChC,CAACgW;AAAe;iBACHA;MACjBC;iBACsB,AAAZ3R;;;AAEZ,QASI,CAAC0R;UACO;AAA4B;;;uBACrBC;;;0BACGA;;oBAEND;;UAEV,CAACA;YACO;UACRC;AACA;;;;;4BAGkBA;mBACY,AAAtBC;;mBAECF;;AAIX,eAAOA;sBAEMA;;cAED;AAQR;oBAAc,gBACD;;;;yBACyB,AAA1BC,AAAAA;;;AAEZ,YACAA;AACA;;;AAEJ;;mBAIqD,AAA3B,AAAtBC,wBAAwBC;;;QAOtB,QAAe,AAAbF;;;;;AAQZ;YAAc,gBAA+B,AAAbA;;;;iBACM,AAA1BA,AAAAA;;;;;;AAKZ,QACY;MACVA;IAEFA;IACAA;GACF,A,C;A,E,2B,C,CvBhEQhW;AAME;GAqBR,A,C;A,E,2B,C,CA20BMA;AAME;GAqBR,A,C;A,E,gB,C,CwB5vCAQ;;;AACE,iDAAkB,IAAEyQ;UACJA;AAAwB;AACxC,aAEa;;MAEXA;MACA5Q;;MAEA8V;MASA9V;;;;;MAGA4Q;;AAGF,UpBwKyB9F;GoBvK3B,A,C;A,E,Q,C,C,C;A,E,E,G,C,C,uD,C;A,E,E,U,C,CxB3CA5L;AAAe,YAAGwD;KAAO,A,C;A,E,E,W,C,CACzBzD;AAAiB,YAAGyD;KAAY,A,C;A,E,E,Q,C,CAGhCqT;AACE;KACF,A,C;A,E,E,U,C,CAEAA;AACE,YAAO;KACT,A,C;A,E,E,M,C,CA2BAC;;qCAqK8B;kBAnKZC;;;;;;;AACd;;eAEWC;;;;;;;AACX;;eAEWC;;AACO;sBA+MTC;gBA7MGC;AACZ,cAAc,2BAA8C;;KAEhE,A,C;A,E,E,S,C,CAEA;;qCAqJ8B;kBAnJZJ;;oBAC4BK;UAArBL;;QACrBM;;eAEWL;;iBACsBI;UAAfJ;;QAClBK;;eAEWJ;;iBACsBG;UAAfH;;eACPC;;;UAGTI;UACA9T,2BAAO,AAAPA;UACA+T;;kBAEYJ;cACF;mBAC6B;;;YAGrC3T,2BAAO,AAAPA;YACA+T;;;;KAIR,A,C;A,E,E,S,C,CAqCA;;aACcC;AACZ,qBAAyB1P,oBAAe;;QAEtCkK,mBAAY;qBACoBuF;eACxB,iBAAA;;AAEV,KACF,A,C;A,E,E,c,C,CAEAjX;;WACMiX;UAAM;AAAS;qBACI/T;;gBAITuT;UACF;;;AAGV,+BAAkB;;;;AAIlB;;aAISC;UACF;;;AAGP,oBAAkB;;;;AAMlB;aAISC;UACF;;;AAGP,oBAAkB;;;AAIhB,uBAAkB;;;;AAIlB;AACF;MAGKM;AAAP;KACF,A,C;A,E,E,oB,C,CAEA;;QAEI/T,2BAAO,AAAPA;QACA+T;;MAEFD;KACF,A,C;A,E,E,kB,C,CAyBAtX;AAIE,YAAkCyX;KACpC,A,C;A,E,E,kB,C,CAwCAzX;;;AACsB;;AAEpB,kBAAkB;YACiB;AAAQ;AAC3C,AACA;KACF,A,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,C,uB,C,CA9BAiB;;;;;OAYA,A,C,C,sB,C,CAoBAA;;QAQEqW;;AAEA;OACF,A,C;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,M,C,CA5QwC;AAAO,YAAG;KAAS,A;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,U,C,CA+U3DtX;AAAe,YAAG0X,AAAAA;KAAY,A,C;A,E,E,W,C,CAC9B3X;AAAiB,YAAG2X,AAAAA;KAAiB,A,C;A,E,E,Y,C,CAErCnX;eACmCmX;AAAjC,0CAAuCA;KACzC,A,C;A,E,E,S,C,CAMA;;WACcA;aAAAA;AACZ,yCAAwD;QACtDjG;qBACgCiG;eACxB,iBAAA;;AAEV,KACF,A,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,gD,C;A,E,E,W,C,CAWAtX;AAAc,YAAGsE;KAAQ,A,C;A,E,E,U,C,CAEzB3E;;aACawX;eACEI;WACmBD;mBAAAA;aACxB,iBAAA;eACU;QAChBhT;AACA;;QAEAA;QAIAiT;AACA;;KAEJ,A;A,E,C,C;A,E,c,C,C,C;A,E,E,G,C,C,6E,C;A,E,E,U,C,CAgEA3X;AAAe,YAAGwD;KAAO,A,C;A,E,E,W,C,CACzBzD;AAAiB,YAAGyD;KAAY,A,C;A,E,E,Q,C,CAGhCqT;AACE;KACF,A,C;A,E,E,U,C,CAEAA;AACE,YAAO;KACT,A,C;A,E,E,a,C,CAEA9W;;;eAOeiX;;AACO;AAElB,cAAY;;eAEDC;;AACO;AAElB,cAAqC,AAA9BE,8BA8MED;;KA5Mb,A,C;A,E,E,M,C,CAYAJ;;qCAiK8B;kBA/JZC;;AACO;;AAErB,qCAA+Ba;;eAEpBZ;;AACO;;AAElB,qCAA+BY;;eAEpBX;;AACO;sBAmLTC;gBAjLGC;YACF;AAAK;AAEf,cAAOS;;KAEX,A,C;A,E,E,S,C,CAEA;;qCA2I8B;kBAzIZb;;oBAC4BK;UAArBL;;QACrBM;;eAEWL;;iBACsBI;UAAfJ;;QAClBK;;eAEWJ;;iBACsBG;UAAfH;;eACPC;;;wBAGgBW;;kBAGbV;cACF;YAERS;;wBAEyBC;;;KAKjC,A,C;A,E,E,Q,C,CASAf;;qCAsG8B;AApG1B,cAAOgB,8BAAsBf;;AAE7B,cAAOe,8BAAsBd;;eAElBC;;AACO;sBA8HTC;gBA5HGC;YACF;AAAK;;QAIfY;AAGA,cAAOH;;KAEX,A,C;A,E,E,S,C,CAUA;;aAC2BI;sBACLC;AACpB,aAAY;QACVjG,cAAO4F,qBAAWA;YACA,kBAAGK;eACb,iBAAA;eAEDL;;AACT,KACF,A,C;A,E,E,oB,C,CAEA;;;qBAG+BC;;QAE3BD;KAEJ,A,C;A,E,E,uB,C,CAEAd;;;AACqB;;;AAED;MAClBiB;;AAEA,YAAOH;KACT,A,C;A,E,E,gB,C,CAUAM;;;UAEMF;QACOG;QAATH;;eAEyBG;QACzBP;QACQQ;QAARD;;MAEF3U,2BAAO,AAAPA;MAbAyU,sBAAsC,AAAL,AAAfA;AAelB;KACF,A,C;A,E,E,a,C,CAGA;;iBAC+BL;aACJA;;QAGvBI;;QAEAK;;QAIAF;;QAEArT;MAEFtB,2BAAO,AAAPA;MAlCAyU,sBAAsC,AAAL,AAAfA;KAoCpB,A,C;A,E,E,kB,C,CAaAjY;AAIE,YAAkCyX;KACpC,A,C;A,E,E,kB,C,CAoBAzX;;;AACsB;;AAEpB,kBAAkB;YAEF,MAAV4X;AAAkB;AACxB,AACA;KACF,A,C;A,E,E,U,C,CAeA1X;AAAkB,YAAGoY;KAAsB,A,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,C,4B,C,CAb3CrX;;;;AAUE;OACF,A,C;A,E,C,C;A,E,6B,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,M,C,CAzPwC;AAAO,YAAG;KAAS,A;A,E,C,C;A,E,iB,C,C,C;A,E,E,G,C,C,wC;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,U,C,CAyU3DjB;AAAe,YAAG0X,AAAAA;KAAY,A,C;A,E,E,W,C,CAC9B3X;AAAiB,YAAG2X,AAAAA;KAAiB,A,C;A,E,E,Y,C,CAErCnX;;WACyCmX;8CAAMA;MA2B7Ca,WAAQb;AA3BR;KACF,A,C;A,E,E,S,C,CAMA;;WAC2BA;aAAAA;sBACLA;AACpB,aAAY;QACVjG,SAAEmG;YACgB,kBAAGF;eACb,iBAAA;eAEDE;;AACT,KACF,A,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,uD,C;A,E,E,W,C,CAaAxX;AAAc,YAAGsE;KAAQ,A,C;A,E,E,U,C,CAEzB3E;eACwB2X;UAAH,AAAfO,wBAAkBP;aACd,iBAAA;;aACGa;;UACT7T;AACA;;UAEAA,4BAAW6T;UACXA,aAAQA;AACR;;;KAEJ,A;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,e,C;A,E,E,Y,C,CA+DAhY;AACE,yCAAoCiY;KACtC,A,C;A,E,E,U,C,CAEAxY;AAAe,YAAGwD;KAAO,A,C;A,E,E,W,C,CACzBzD;AAAiB,YAAGyD;KAAY,A,C;A,E,E,U,C,CAGhCzD;;wCAkLsC;kBAhLpBgX;AACd,yCAuMW;;eArMAC;AACX,sCAoMW;;eAlMAC;;AACO;AAElB,cAAwC,AAAjCE,8BA4MED;;KA1Mb,A,C;A,E,E,Q,C,CAEA9W;;0CAmKsC;;;;;AAjKlC,cAAO;aAEE6W;;AACO;oBAmMPC;cAjMCC;UACF;AAAK;AACf,YAAOsB;KACT,A,C;A,E,E,K,C,CAGA1Y;;aAUekX;;;;;QACOA;;;aACPC;;;;;YAMC,AADEC;AACI;;;MAGlB3T,2BAAO,AAAPA;MACAkV;AACA;KAEJ,A,C;A,E,E,Q,C,CAQA3Y;;aAMekX;;AACO;oBAmJTC;cAjJGC;UACF;AAAK;MAGf3T,2BAAO,AAAPA;MACAkV;;AAIA;KAEJ,A,C;A,E,E,kB,C,CA2BApY;;WACMoY;UAAU;AAAS;qBACAlV;;gBAITuT;UACF;;;AAGV,+BAAkB;;;;AAIlB;;aAISC;UACF;;;AAGP,oBAAkB;;;;AAMlB;aAISC;UACF;;;AAGP,oBAAkB;;;AAIhB,uBAAkB;;;;AAGlB;AACF;MAGKyB;AAAP;KACF,A,C;A,E,E,kB,C,CAiCA1Y;AAKE,YAAkC2Y;KACpC,A,C;A,E,E,kB,C,CAwBA3Y;;;AACsB;;AAEpB,kBAAkB;YACiB;AAAY;AAC/C,AACA;KACF,A,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,6D,C;A,E,E,kB,C,CAmBAA;AAIE,YIhrCyC4Y;KJirC3C,A,C;A,E,E,kB,C,CAEA5Y;;;AACsB;;AAEpB,kBAAkB;;;AACsC;;AACxD,AACA;KACF,A;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,oD,C;A,E,E,W,C,CAyEAI;AAAc,YAAGsE;KAAQ,A,C;A,E,E,U,C,CAEzB3E;;iBACiB2Y;eACFf;WACuBkB;uBAAAA;aAC5B,iBAAA;eACU;QAChBnU;AACA;;QAEAA;QAIAiT;AACA;;KAEJ,A;A,E,C,C;A,E,c,C,C,C;A,E,E,G,C,C,mF,C;A,E,E,Y,C,CAuEApX;iDACyC0X;MAyXvCM,WAAQM;AAzXR;KACF,A,C;A,E,E,U,C,CAEA7Y;AAAe,YAAGwD;KAAO,A,C;A,E,E,W,C,CACzBzD;AAAiB,YAAGyD;KAAY,A,C;A,E,E,U,C,CAGhCzD;;wCA+MsC;kBA7MpBgX;;AACO;AAErB,cAAY;;eAEDC;;AACO;AAElB,cAAY;;eAEDC;;AACO;AAElB,cAAwC,AAAjCE,8BAiOED;;KA/Nb,A,C;A,E,E,Q,C,CAEA9W;;0CA4LsC;;;;;AA1LlC,cAAO;;eAEI6W;;AACO;sBAwNTC;gBAtNGC;YACF;AAAK;AACf,cAAOsB,AAAAA;;KAEX,A,C;A,E,E,S,C,CAEA;;aAC2BT;sBACLC;AACpB,aAAY;QACVjG,cAAO4F;YACW,kBAAGK;eACb,iBAAA;eAEDL;;AACT,KACF,A,C;A,E,E,K,C,CAaA7X;;yCAwJsC;kBAtJpBgX;;;;;UACOA;;;AACrB,cAAOM;;eAEIL;;;;;UACOA;;;AAClB,cAAOK;;eAEIJ;;;;;UACOA;;;eACPC;;;wBAGgBW;;cAIf,AADEV;AACI;sBACSU;;AAG3B;;KAEJ,A,C;A,E,E,Q,C,CAEA;;AACE,gBAAA,4BAAA;QACEiB,cN5pCapU;AM6pCf,KACF,A,C;A,E,E,Q,C,CAEA3E;;wCAuHsC;AArHlC,cAAO+X,8BAAsBf;;AAE7B,cAAOe,8BAAsBd;;eAElBC;;AACO;sBAiJTC;gBA/IGC;YACF;AAAK;QAIfY;AACA;;KAEJ,A,C;A,E,E,oB,C,CA2CAhY;UAEW;AAAS;uBACa8X;AAC/B;KACF,A,C;A,E,E,uB,C,CAEA9X;;;AACqB;;;AAED;MAClBgY;;AAEA;KACF,A,C;A,E,E,gB,C,CAUAgB;;;UAEMf;QACOG;QAATH;;eAEyBG;QACzBP;QACQQ;QAARD;;MAEF3U,2BAAO,AAAPA;MAbAyU,sBAAsC,AAAL,AAAfA;AAelB;KACF,A,C;A,E,E,a,C,CAGA;;iBAC+BL;aACJA;;QAGvBI;;QAEAK;;QAIAF;;QAEArT;MAEFtB,2BAAO,AAAPA;MAlCAyU,sBAAsC,AAAL,AAAfA;KAoCpB,A,C;A,E,E,kB,C,CAcAjY;AAKE,YAAkC2Y;KACpC,A,C;A,E,E,kB,C,CAoBA3Y;;;AACsB;;AAEpB,kBAAkB;YAEE,MAAd4X;AAA0B;AAChC,AACA;KACF,A,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,iB,C,C,C;A,E,E,G,C,C,gD;A,E,C,C;A,E,qB,C,C,C;A,E,E,G,C,C,uD,C;A,E,E,W,C,CAyHAxX;AAAc,YAAGsE;KAAQ,A,C;A,E,E,U,C,CAEzB3E;eACwB8Y;UAAH,AAAfZ,wBAAkBY;aACd,iBAAA;;aACGN;;UACT7T;AACA;;UAEAA,4BAAW6T;UACXA,aAAQA;AACR;;;KAEJ,A;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,e,C;A,E,E,U,C,CyBjsDArY;AAAkB,YAAGC;KAAwD,A,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,S,C;A,E,E,S,C,CF8J7E;;AACE,gBAAA,yBAAA;QAAwBsR,SAAxB;AAAkC,KACpC,A,C;A,E,E,iB,C,CAqDAnR;AAAwC,YACpC;KAA0C,A,C;A,E,E,Q,C,C,Q,C,S,C,C,C;A,E,E,E,M,C,I,C,iB,C,S,C,C,I,C,C;A,E,E,C,C;A,E,E,U,C,CAI9CN;;WAGgBgZ;AACd,sBAAOxC;;AAEP,AACA;KACF,A,C;A,E,E,W,C,CAEAzW;AAAiB,YAAG,EAACiZ,AAAAA;KAAmB,A,C;A,E,E,U,C,CAwCxC5Y;;WACgB4Y;UACV,CAACxC;aAAqB,iBAAA;eACfA;UACPA;aAAqB,iBAAA;AACzB;KACF,A,C;A,E,E,W,C,CAwCApW;;UAC6B;aAAW,iBAAA;AAEtC,gBAAA,4CAAA;kBAAA;;AACsB;;;AAEtB,WACM,iBAAA;KACR,A,C;A,E,E,U,C,CAkBAF;AAAkB,YAAG+Y;KAAuB,A;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,I,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,S,C;A,E,E,Y,C,CGnW5C1Y;AAAyB,0ChCoQaC;KgCpQe,A,C;A,E,E,W,C,CAErDJ;AAAuB,YAAG;KAAW,A,C;A,E,E,S,C,CAErC;;gBACe;AACb,kBAAkB;QAChB4R,cAAO;YACI,YAAG;eACN,iBAAA;;AAEV,KACF,A,C;A,E,E,W,C,CAEAjS;AAAiB,YAAGM;KAAW,A,C;A,E,E,O,C,CA0G/BwW;AAAwC;KAAmC,A,C;A,E,E,U,C,CAgV3E3W;;UACMoW;AACF;eAGW;;QAEXA;QACAxV;QACAA;QACAA;;QAECwV;;AAGH,YtBpPyB1K;KsBqP3B,A,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,I,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,2B,C;A,E,E,M,C,CF5ac;;UACL;QACD9K;;;MAGFA;MACAA;MACAA;KACF,A;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,oD,C;A,E,E,Y,C,CzB0SJP;AAAyB,4CAiTZ2Y,YACcA,yBACTA;KAnTyC,A,C;A,E,E,S,C,CAE3D;;0BAC0BpV;AACxB,eAAaJ,YAAS,MAAGE,gBAAmB,CAAA,AAAL,QAAsB,AAAdD,AAAAA;aACtCA;;gBAAAA;QAAPqO,cAAOrO;YAqMqB,sBAAGG;4BACzB;;AApMR,KACF,A,C;A,E,E,W,C,CAEA/D;AAAiB,YAAG2D,gBAASE;KAAK,A,C;A,E,E,U,C,CAElC5D;AAAe,YAAmB,EAAA,AAAT,AAAN4D,aAAQF,aAAwB,AAAdC,AAAAA;KAAkB,A,C;A,E,E,U,C,CAmIvDzD;AAAkB,YAAGC;KAAwD,A,C;A,E,E,M,C,CAiE7E;;WACEwD;WAAOC;;;cAAPD;MAAAA;WACoB,CAAA,AAAL,SAAsB;MAArCC;UACIF;QAAgBG;MACpBC,0BAAkB,AAAlBA;KACF,A,C;A,E,E,O,C,CA2CA;;iBAC+C,AAAdH,AAAAA;;;WACnBA;WAAgBD;cAAF,AAAdC;MNtXZxD;WMwXiCuD;WAAOC;MNxXxCxD,wDMwX+B;MAC/BuD;MACAE,aAAQD,AAAAA;MACRA;KACF,A,C;A,E,E,W,C,CArSAwV;;;MAOExV;KACF,A,C;A,E,E,kB,C,C,I,C;A,E,E,M,C,C,C,G,C,C,6B,C;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,kF,C;A,E,E,W,C,CA0UAvD;AAAc,YAAGsE;KAAQ,A,C;A,E,E,U,C,CAEzB3E;;WACEqZ;UA9G8B,AA8GJtV,4BA9GOA;0BACzB;WA8GJuV;iBAAaC;QACf5U;AACA;;WAES0U;;;cAAAA;MAAX1U,4BAAW0U;MACXC,6BAA4B,CAAA,AAAL,SAA6B;AACpD;KACF,A;A,E,C;A,C,A;A,iB,gB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,kB,C,C4BhqBFE;;AA+CE,UAAOC,qBAAaC;GACtB,A,C;A,E,U,C,CApEMC;;;;;;;;;WAIJ;;WAKQ,iBAAA;;;AAGR,UAAOH;GACT,A,C;A,E,mB,C,C,CCsSAjO;AAAmC,UAAGlB;GAAe,A,C,C,Q,C,C,6B,C,C,C,C,C,C,C,C,C,C,C;A,E,0B,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CD7RpB;AAAa;KAAG9B,A;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,qB,C;A,E,E,M,C,CAE/CmR;;;AAGI;;;AASA,wCAAkB,IAAEpT;oBAOQmT,aAAUC;AACtC,AACA;;;Y9B6rDGtX,qBAA8B;A8BvrDnC,sCAAkB,IAAE2F;cACLA;QACbZ,sBAAWsS,eAAYC;;AACzB;;QAQEvS,8BAAmBsS,uBAAoBC;AAEzC;KACF,A;A,E,C,C;A,E,K,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,0B,C,C,C;A,E,E,G,C,C,+B,C;A,E,E,U,C,CClEAvZ;UACY,AAANyZ;AACF;;AAEA;KAEJ,A,C;A,E,E,M,C,C,C,2B,C,CARAC;;OAAkE,A,C;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,oD,C;A,E,E,U,C,CAqBlE1Z;AAAkB;KAAmC,A,C;A,E,E,M,C,C,C,gB,C,CADrD2Z;;OAA6C,A,C;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,gB,C,CA+E7C3V;AAEuB,YAkKUwV,sBAAkBI,AAlKrBC;KAE9B,A,C;A,E,E,Q,C,C,Q,C,M,C,C,C;A,E,E,E,M,C,I,C,gB,C,M,C,C,I,C,C;A,E,E,C,C;A,E,E,oB,C,CAaA7Z;AAE2B,YAgEvB8Z,qCAA8BC,AAhEAC;KAElC,A,C;A,E,E,Q,C,C,Q,C,K,C,C,C;A,E,E,E,M,C,I,C,oB,C,K,C,C,I,C,C;A,E,E,C,C;A,E,E,W,C,CAEAC;AAC4B;KAE5B,A,C;A,E,E,W,C,CAEAC;AACwB;KAExB,A;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,gC;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,oB;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,iC,C;A,E,E,c,C,C,Q,C,I,C,C,C;A,E,E,E,M,C,I,C,Y,C,M,C,I,C,C;A,E,E,C,C;A,E,E,Q,C,CAiOA;;;gBAEqBC;;cAAAA;WAoCfC;;;AAnCJ,aAAkB;mBACDD;YACF;;YACA;cACL;iBAAsBA;YxBzHhCzO,eAA6CA;;mBwB0H9B;sBCvQO;ezBgGf3L;UA6CP2L,eAA6CA;;;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;;;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;;;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;;;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;;;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;;;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;0ByB7IvB;mBzBgGf3L;cA6CP2L,eAA6CA;mBwBgJM,AAAN;mBAhCf,UAAU,UAAS;0BC7P3B;mBzBgGf3L;cA6CP2L,eAA6CA;mBwBiJD;mBAjCd,UAAU,UAAS;0BC7P3B;mBzBgGf3L;cA6CP2L,eAA6CA;;;;cwBqJnC;iBAAsByO;YxBrJhCzO,eAA6CA;;mBwBsJ9B;sBCnSO;ezBgGf3L;UA6CP2L,eAA6CA;sByB7IvB;ezBgGf3L;UA6CP2L,eAA6CA;;;AwB0J7C;;QxB1JAA,eAA6CA;iBwB6J3B;aACJyO;QxB9JdzO,eAA6CA;;KwBgK/C,A,C;A,E,E,Y,C,CAEA;;AACE,gBAAoB2O,iBAAAA,kBAAF;aACMA;;eACd,iBAAA;;AAEV,MACAA;KACF,A,C;A,E,E,gB,C,CAEA;;UAIM,CAACC;QACHC;;uBAEmBC;cACb,CAACF;iBACG;iBAAA;;eAuEZD;;kBAAAA;UAAAA;;eA1EE;;eAOQ,iBAAA;;;;KAGZ,A,C;A,E,E,oB,C,CAQAxa;;;YAEQ,CAACqK;AAAiB;QACtBkQ,AAAAA,mBA1FKnU;AA2FL;;QAEAmU,AAAAA;AACA;;QAEAA,AAAAA;AACC;;QAEDA,AAAAA;AACA;;aAEAA;QAAAA;QACAK;QACAL;AACA;;;;UAEAG;eAEAH;UAAAA;cACa,AAATvR;YACF6R,sBAAe7R;AACf,wBAAkB,IAAEA;cxB5NxB6C,eAA6CA;cwB8NvCgP,sBAAe7R;;AACjB;UAEFuR;UACAO;AACA;;UAEAJ;eAEAH;UAAAA;AAEA,oBAAA,kBAAmB1D,wCAAnB;kBAAA;YxBzOFhL,eAA6CA;YwB4OzC+O;YxB5OJ/O,eAA6CA;YwB8OzCgP,sBAAehE;;AACjB,UACA0D;UACAO;AACA;;AAEA;;KAEJ,A,C;A,E,E,a,C,CAEA;eAGEN;;cAAAA;MAAAA;KACF,A,C;A,E,E,M,C,C,C,G,C,C,gW,C,C,0B,C,CA7JAtZ;;;iBAEwB;QAOtB6Z;AALA,cxBxFyBlP;OwByF3B,A,C;A,E,C;A,C,A;A,c,a,A,E,C,E,C;A,E,G,C,C,E,C;A,E,e,C,CxB7VF1L;AAAsC,UAAG6a;GAAkC,A,C;A,E,kB,C,C0B8DzE9Z;;;AAEI,YAAOmJ;;;M1B+KPwB;A0BlKA,gBAAoB1K,iCAAF;mBACDA;YACF;;iB1B0K4B0K;YAA7CA;;iBAA6CA;YAA7CA;;iBAA6CA;YAA7CA;;iBAA6CA;YAA7CA;gB0BhKqB;c1BgKrBA;;cAAAA;;;iB0BzJsC,gBAAkB,gBACM;wBDWxC;iBzBgGf3L;iBA6CsC2L;YAA7CA;;;eAA6CA;UAA7CA;;eAA6CA;UAA7CA;;sByB7IsB;ezBgGf3L;eA6CsC2L;UAA7CA;;;A0B/IE;M1B+IFA;A0B7IE;;AAEF,6BjCoiBc/C;GiCniBhB,A,C;A,E,mB,C,CCzGApI;AAAiC;GAAwC,A,C;A,E,S,C,C,C3BgOrEV;AACJ;GACF,A,C,C,Q,C,C,mB,C,C,C,C,C,C,C,C,C,C,C;A,E,gB,C,C,CA7NMC;AAAoC,UAAG4Y;GAAsB,A,C,C,Q,C,C,0B,C,C,C,C,C,C,C,C,C,C,C;A,E,gB,C,CAgL3DnY;;aACU;QACH;AACT,gBAAoBK,sBAAF;QAChBA;AACF,AAEF;GACF,A,C;A,E,c,C,C4BrHAL;;;AAEE,cAAA,0BAAA;MACE4F,UADF;AAEA;AACc;;AACd;GACF,A,C;A,E,K,C,CC5FF;;ICOE2U;GDAF,A,C;A,E,kC,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,M,C,C7BoR8B;;UAChB;QACJC;MAEFA,gBAASC;KAIX,A;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,qC,C;A,E,E,G,C,CI6BJnb;;;UACM;AAAsB;AAC1B,YAAQoQ,iCAA0BtP,gCAC1Bsa,eAASta;KACnB,A,C;A,E,E,Y,C,CA4DAb;AAAiB,YAAGmQ;KAAsB,A,C;A,E,E,U,C,CA+D1CjQ;;WX+ZUgJ;UW9ZGkS,4BX+ZgCC,uDACHA;UW/Z7BC,2BXoa2BD,oDACHA;UWpaxBC,2BXya4BD,mDACHA;UWzazBC,2BX8a6BD,oDACHA;YW9axBC,2BXmb6BD,sDACHA;YWnb1BC,2BXwb6BD,sDACHA;WWxb3BE,6BX6bmCF,2DACHA;;AW5b1C;;AAEA;KAEJ,A,C;A,E,E,2C,C,CAjKA3L;UAImC;;KAInC,A,C;A,E,E,e,C,CJ7KMA;MAGJzP;KACF,A,C;A,E,E,W,C,C,I,C;A,E,E,M,C,C,C,G,C,C,kZ,C,C,c,C,CI4EAgB;;gBAwBgBua,qBHpNNzM;YGqNE;;eH1FeH;;kBAAAA;kBDvDlB3O,sBCuDkB2O;;kBAAAA;kBDvDlB3O,sBCuDkB2O;;kBAAAA;gBDvDlB3O,sBCuDkB2O;;kBAAAA;iBGwGZ6M,UHxGY7M;;kBAAAA;mBGyGV6M,UHzGU7M;;kBAAAA;mBG0GV6M,UH1GU7M;;kBAAAA;wBG4GL,YAA6B,UAA5B8M,gDH5GI9M;;;;;;;;kBAAAA;cGkHV,AHlHUA;;oBAAAA;iBAAAA;gBGoHR;qBAEU;;sBHtHFA;+BDvDlB3O,sBCuDkB2O;;sBAAAA;iCGwHI6M,UHxHJ7M;;sBDvDlB3O;iCIgLgB,4BAAM;;sBAAN;uBACV,iBAAQ;;;;;mCJhIdA;AIyIL,gBAAO,2DADsC;;eAIvC,iBAAA;OAEV,A,C,C,mC,C,CAcAyP;;;;OAQA,A,C,C,oB,C,CA+GAzO;;;eAEkB;YACP;AAAS;YACT;AAAQ;YACR;AAAO;AAChB;OACF,A,C,C,qB,C,CAEAA;YACQ;AAAQ;YACR;AAAO;AACb;OACF,A,C,C,mB,C,CAEAA;YACQ;AAAO;AACb;OACF,A,C;A,E,C,C;A,E,6B,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CApMIjB;;AACuB;AACrB,YJpJGC;KIqJL,A;A,E,C,C;A,E,gC,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CAEAW;;AACuB;AACrB,YJ7IGX;KI8IL,A;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,I,C,CW1JJ0b;AACE,YAAO,mBAAqC,AAAVlI,iBAAY5S;KAChD,A,C;A,E,E,I,C,CAMA8a;AACE,YAAO,mBAAqC,qBAAVlI,gBAAY5S;KAChD,A,C;A,E,E,I,C,CASA8a;AACE,YAAO,mBxBzCMhb,2BAAAA,gCwByCgC,AAAV8S;KACrC,A,C;A,E,E,G,C,CAmBA1T;AAAgC,YAAkB,qBAAf,gBAAiBc;KAAe,A,C;A,E,E,G,C,CAYnEd;AAAiC,YAAkB,qBAAf,gBAAkBc;KAAe,A,C;A,E,E,G,C,CAMrEd;AAAiC,YAAkB,qBAAf,gBAAkBc;KAAe,A,C;A,E,E,G,C,CA2CrEd;;;;AAC0B;AACxB,YAAO0T,oBAAa5S;KACtB,A,C;A,E,E,Y,C,CAEAb;AAAiB,YAAGyT;KAAkB,A,C;A,E,E,U,C,CAYtCvT;;;WAtB0BuT;UAoCL;AAGjB,yBADI,kBAA2B;wBAGRmI,UAAUC,4BA5DN;wBA6DJD,UAAUE,4BAtDN;mBAwDzBC,2CAAUC;AACd,kBAvE2B;KAwE7B,A,C;A,E,E,W,C,C,I,C;A,E,E,M,C,C,C,G,C,C,4c,C,C,S,C,CA/JA;8BAU8D,AADV,AADA,AADJ,AADF,AAAvB,qBACC,qBACE,qBACA,oBACK;OACD,A,C;A,E,C,C;A,E,2B,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CA6H5B9b;UACQ;AAAW;UACX;AAAU;UACV;AAAS;UACT;AAAQ;UACR;AAAO;AACb;KACF,A;A,E,C,C;A,E,2B,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CACAA;UACQ;AAAO;AACb;KACF,A;A,E,C,C;A,E,K,C,C,C;A,E,E,G,C,C,S,C;A,E,E,c,C,Cf7GI+b;AAA0B;KAAqC,A,C;A,E,E,Q,C,C,I;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,Q,C;A,E,E,U,C,C0BgCrE/b;AAAkB;KAAmB,A;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,e,C;A,E,E,U,C,CAYrCA;eACMoF;UAAQ;AACV;AAEF;KACF,A,C;A,E,E,M,C,C,C,c,C,CAPA4W;;OAA6B,A,C;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,uB,C;A,E,E,U,C,CAgC7Bhc;AAAkB,kCAAiBoF;KAAQ,A,C;A,E,E,M,C,C,C,W,C,CAb3C6W;;OAAwC,A,C,C,gB,C,CAGxCA;;OAAmD,A,C,C,gB,C,CAOnDA;;OACqD,A,C;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,e,C;A,E,E,U,C,CAqFrDjc;AAAkB,yCAA4BoF;KAAQ,A,C;A,E,E,M,C,C,C,iB,C,CADtD8W;;OAA8B,A,C;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,e,C;A,E,E,U,C,CAkB9Blc;eAAsB;AAAJ,YAAiB;KAEU,A,C;A,E,E,Q,C,C,I,C;A,E,E,M,C,C,C,mB,C,CAH7Cmc;;OAAyC,A,C;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,e,C;A,E,E,U,C,CAgBzCnc;AAAkB,6BAAgBoF;KAAQ,A,C;A,E,E,M,C,C,C,W,C,CAD1CgX;;OAAwB,A,C;A,E,C,C;A,E,2B,C,C,C;A,E,E,G,C,C,sB,C;A,E,E,U,C,CAkBxBpc;eACMqc;;AACF;AAEF,gEACUC;KACZ,A,C;A,E,E,M,C,C,C,4B,C,CARAC;;OAAkD,A,C;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,S,C;A,E,E,U,C,CAclDvc;AAAkB;KAAkB,A,C;A,E,E,c,C,CAEpC+b;AAA0B;KAAO,A,C;A,E,E,Q,C,C,I;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,S,C;A,E,E,U,C,CAMjC/b;AAAkB;KAAmB,A,C;A,E,E,c,C,CAErC+b;AAA0B;KAAO,A,C;A,E,E,Q,C,C,I;A,E,C,C;A,E,yB,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,U,C,CAajC/b;AAAkB,2CAEewc;KAAwC,A,C;A,E,E,M,C,C,C,0B,C,CAHzEC;;OAA8C,A,C;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,gB,C;A,E,E,U,C,CC5U9Czc;eACMoF;;AAAiB;AACrB;KACF,A;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,gB,C;A,E,E,U,C,CAmBApF;AAAkB,uCAAsBoF;KAAQ,A,C;A,E,E,kB,C,C,I,C;A,E,E,M,C,C,C,gB,C,CAFhD;;OAA0C,A,C;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,a,C;A,E,E,U,C,CItB1CpF;AAAkB,8BAAawI;KAAK,A,C;A,E,E,M,C,C/ByC9B4J;mBACSrS;AACb,qCAAiCA,iCAA+B2c;KAClE,A,C;A,E,E,S,C,CAEM;mBACS3c;;;QAGXA;;MAEFA,iCAA+B2c;KACjC,A,C;A,E,E,S,C,CAEA1c;;YACeD;;;QAEY4c,sBAAS;;QAChC5c;;AAEF;KACF,A,C;A,E,E,M,C,C,C,G,C,C,6E,C;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,I,C,C,C;A,E,E,G,C,C,S,C;A,E,E,U,C,CgCvEAC;AAAkB;KAAS,A;A,E,C,C;A,E,M,C,C,C;A,E,E,G,C,C,G,C;A,E,E,G,C,CCuC3BH;AAAwB;KAAyB,A,C;A,E,E,Y,C,CjC7B3CC;AAAiB,YAAGC;KAA+B,A,C;A,E,E,U,C,CAGnDC;AAAkB,YAAGD;KAA+B,A;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,U,C,CAmOpDD;AAAe,YAAG4L,AAAAA;KAAgB,A,C;A,E,E,W,C,CkC1OxC7L;AAAiB,YlC0OO6L,AAAAA;KkC1OO,A,C;A,E,E,O,C,ClC4OzB;;MAEJA,iBAA6CA;KAC/C,A,C;A,E,E,U,C,CkCjOA;;iBACsBkR;UAChB,CAAC9D;AAAqB;U1CkVR3Y;A0ChVhB;gBACQ2Y;;UlC2NVpN,iBAA6CA;iBkC1NlCoN;AAAoB;QAE7B+D,aAAM/D;AACN,eAAOA;UlCuNTpN,iBAA6CA;gBkCrNnCoN;;UlCqNVpN,iBAA6CA;;AkCpN3C;KAEJ,A,C;A,E,E,U,C,ClC6NM1L;AAAkB,YAAG0L;KAAS,A,C;A,E,E,c,C,CAvB9BoR;MAEFpR;KAIJ,A,C;A,E,E,M,C,C,C,a,C,CANMoR;;;;OAMN,A,C;A,E,C,C;A,E,M,C,C,C;A,E,E,G,C,C,S;A,E,C;A,C,A;A,kB,a,A,E,C,E,C;A,E,G,C,C,E,C;A,E,oB,C,CMy0RAvc;;eAEiB2P,6CAAAA;IAGR6M;;SAAAA;AAAP,UAAOA;GACT,A,C;A,E,sB,C,CAsujBAhc;;;AAII;;MADF;AAGE;;;GAEJ,A,C;A,E,S,C,CA2nQF4P;;;AAEiC;AAE/B,UAAOyC;GACT,A,C;A,E,W,C,C,C;A,E,E,G,C,C,U,C;A,E,E,G,C,C,muB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,6C,C;A,E,E,U,C,CA3rlCEpT;;KAAwB,A,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,6C,C;A,E,E,U,C,CA6UxBA;;KAAwB,A,C;A,E,E,G,C,C,iB;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,C,iB;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,c,C;A,E,E,U,C,CAmVxBgd;AAAgC,0EAin9BQC;KAjn9BqB,A,C;A,E,E,c,C,C,I,C;A,E,E,G,C,C,iB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,oC,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,c,C;A,E,E,G,C,C,+D;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,c,C;A,E,E,U,C,CA65N7Djd;;KAAwB,A,C;A,E,E,G,C,C,c;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,O,C;A,E,E,c,C,CAy9CxB+G;AAAmC;KAAiC,A,C;A,E,E,U,C,CA+PpE/G;AAAkB,YApBMkd;KAoBM,A,C;A,E,E,wC,C,CAmY9BC;;;;;;;UAw6vBEC,QA/GI;UA+GJA,QAVI;UAz5vBEC;;;;;;;UAKFC;;;UAEAA;;;;;aASepN,AAAAA;QAAjBqN;QACAC,wBAAcD;eAx2ETE;QA42ELC,mBAAYxN;QACZqN,AA26HoB/Z;;;;yBAv6HH+Z;;yBAj3EZE,iBAm3EyCE;QAC9CJ,AAAAA;;;QAIAC;mBACWA;;QAEXI;mBAEWL;AACX,oBAAOK,2BAA0B;UAC/Bb;AACF;WAEoBQ;UAAH;QACjBK;MAGFC;MAEA3N;AAEA;KACF,A,C;A,E,E,8B,C,C,Q,C,S,C,C,I,C,C,a,C,C,C;A,E,E,E,M,C,I,C,wC,C,S,C,C,I,C,C,a,C,C,I,C,C;A,E,E,C,C;A,E,E,a,C,CAQA;MACE;KACF,A,C;A,E,E,sC,C,CAuBA;MAEE4N;MACAC,qBAAOC;KAET,A,C;A,E,E,c,C,C,Q,C,S,C,C,I,C,C,C;A,E,E,E,M,C,I,C,sC,C,S,C,C,I,C,C,I,C,C,I,C,C;A,E,E,C,C;A,E,E,U,C,CA0jCAhB;AAAgC,0EAg+oBQC;KAh+oBqB,A,C;A,E,E,Y,C,CAK7DD;AAAkC,0EA29oBMC;KA39oByB,A,C;A,E,E,W,C,CAKjED;AAAsC,0EAs9oBEC;KAt9oB4B,A,C;A,E,E,W,C,CAoKpED;AAAiC,0EAkzoBOC;KAlzoBuB,A,C;A,E,E,U,C,C,I,C;A,E,E,G,C,C,U;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,c,C;A,E,E,G,C,C,Y;A,E,C,C;A,E,K,C,C,C;A,E,E,G,C,C,c,C;A,E,E,gB,C,CAmoB/D;;KAA4B,A,C;A,E,E,G,C,C,yvB;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,c,C;A,E,E,kB,C,CA6N5B;;KAAoF,A,C;A,E,E,qB,C,CAQpF;;KAAuF,A,C;A,E,E,G,C,C,c;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,G,C,C,qB;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,2B,C;A,E,E,G,C,C,iB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,oC,C;A,E,E,U,C,C,I,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,S,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,G,C,C,e;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,G,C,C,iB;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,uC,C;A,E,E,U,C,CAy4IvFjd;;KAAwB,A,C;A,E,E,W,C,C,I,C;A,E,E,G,C,C,U;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,C,gB;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,G,C,C,oD;A,E,C,C;A,E,W,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,C,iB;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,W,C;A,E,E,M,C,CA80DxB;;KAAiD,A,C;A,E,E,M,C,C,Q,C,S,C,C,I,C,C,C;A,E,E,E,M,C,S,C,I,C,I,C,C;A,E,E,C,C;A,E,E,G,C,C,Y;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,c,C;A,E,E,G,C,C,oB;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,U,C;A,E,E,G,C,C,8F;A,E,C,C;A,E,I,C,C,C;A,E,E,G,C,C,c,C;A,E,E,S,C,CA4+BjDI;AACE;KACF,A,C;A,E,E,Q,C,CAgBA;eAGM;UAAgB;QAElB6d;KAEJ,A,C;A,E,E,U,C,CA4CAje;eAAqBke;AAAH;KAAmD,A,C;A,E,E,G,C,C,0F;A,E,C,C;A,E,Q,C,C,C;A,E,E,G,C,C,2C,C;A,E,E,U,C,CA8brEpe;AAAe;KAA8B,A,C;A,E,E,M,C,CAE7Cqe;eAEoBhe;;aACV,iBAAA;AACR;KACF,A,C;A,E,E,S,C,CACA;WACQ,iBAAA;KACR,A,C;A,E,E,W,C,CAiCAge;;;AAA0B,YAAG;KAAW,A,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,kB,C,C,I,C;A,E,E,6B,C,C,I,C;A,E,E,G,C,C,wB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,uB,C;A,E,E,G,C,C,qB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,8B,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,0B,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,0B,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,G,C,C,qB;A,E,C,C;A,E,K,C,C,C;A,E,E,G,C,C,c,C;A,E,E,U,C,CAolDxCne;;KAAwB,A,C;A,E,E,G,C,C,O;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,4C,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,c,C;A,E,E,G,C,C,wB;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,c,C;A,E,E,M,C,CAg5ExBA;AAA+B,YAAG8Q;KAAa,A,C;A,E,E,S,C,CAE/C;MAA8CM;KAAsB,A,C;A,E,E,S,C,CAepE;;AACE;cACcgN;;AACK;QAEjB7M,cAtB8BT;;AAuBhC,KACF,A,C;A,E,E,Q,C,CAEA6F;;MAEE0H;AACA;KACF,A,C;A,E,E,U,C,CAEA1H;;MAEE0H;AACA;KACF,A,C;A,E,E,U,C,CAEAve;AAAe,YAAGwD;KAAO,A,C;A,E,E,W,C,CAEzBzD;AAAiB,YAAGue;KAAe,A,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,Q,C,C,C,C,Q,C,C;A,E,E,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,uB,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,c,C;A,E,E,wC,C,CAqZnCjB;;;AAGI;cAKU;iBArohBgBjN;MAwohB5B6M;MAAAA,+CAAsBuB;AAEtB;KACF,A,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,c,C;A,E,E,wC,C,CA4FAnB;;;AAGI;iBA1uhB0BjN;WA+uhBd,6CArwhBPuN;MAqwhBO;;gBAAA;MAEJc;;YAAAA;MACVxB;MAAsByB;MAAtBzB;AACA;KACF,A,C;A,E,E,G,C,C,qB;A,E,C,C;A,E,mB,C,C,C;A,E,E,G,C,C,c,C;A,E,E,wC,C,CAwDAI;;;AAGI;iBA/yhB0BjN;WAozhBd,6CA10hBPuN;MA00hBO;;gBAAA;MAEdV;MAAsBwB;MAAtBxB;AACA;KACF,A,C;A,E,E,G,C,C,yB;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,c,C;A,E,E,sC,C,CAkEA;;MAEEe;iBACeE;MAGfS,AAAAA;KACF,A,C;A,E,E,c,C,C,Q,C,S,C,C,I,C,C,C;A,E,E,E,M,C,I,C,sC,C,S,C,C,I,C,C,I,C,C,I,C,C;A,E,E,C,C;A,E,E,kB,C,C,I,C;A,E,E,G,C,C,qB;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,oC,C;A,E,E,G,C,C,qB;A,E,C,C;A,E,O,C,C,C;A,E,E,G,C,C,Q,C;A,E,E,G,C,C,qF;A,E,C,C;A,E,M,C,C,C;A,E,E,G,C,C,c,C;A,E,E,Y,C,CAkzEAC;;UAIMC;AAAyB;kBACjBC;QACVA;AAEF,YAAOA;KACT,A,C;A,E,E,U,C,CAovCA5e;;KAAwB,A,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,K,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,G,C,C,M;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,4C,C;A,E,E,U,C,CA88DxBF;AAAe;KAA8B,A,C;A,E,E,M,C,CAE7Cqe;eAEoBhe;;aACV,iBAAA;AACR;KACF,A,C;A,E,E,S,C,CACA;WACQ,iBAAA;KACR,A,C;A,E,E,W,C,CAiCAge;;;AAA0B,YAAG;KAAW,A,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,kB,C,C,I,C;A,E,E,6B,C,C,I,C;A,E,E,G,C,C,8B;A,E,C,C;A,E,4B,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CAz7pBV;AAAI;KAAQU,A;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,gB,C;A,E,E,U,C,CAwiU1CV;;WAgIkBW;UAAAA,AAAAA;;aA9HE,iBAAA;UACZ;aAAW,iBAAA;AACjB;KACF,A,C;A,E,E,Q,C,CAMA;;WAGmBrN;WAAiBqN;UAA5B;AAEF,mBAgHYA,AAAAA,6BAhH8B;UACxCA,eAAarN;AACf,AAEF;KAKJ,A,C;A,E,E,S,C,CAwEA;;WACEqN;WAqC4BA;;cAAAA;MArC5BA,uBAqC4BA;KApC9B,A,C;A,E,E,Y,C,CAEAze;AAA4B,YAAGye,iCAAAA,AAAAA;KAAyB,A,C;A,E,E,U,C,CA2BxDhf;AAAe,YAAGgf,AAAAA,AAAAA;KAAuB,A,C;A,E,E,M,C,CAOzCX;eAA8BW,AAAAA;;cAAAA;AAAH,YAAGA;KAAuB,A,C;A,E,E,W,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C;A,E,C,C;A,E,qB,C,C,C;A,E,E,G,C,C,wB,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,wC,C,C,C;A,E,E,G,C,C,2C,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,oB,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,M,C,CA6jJ3C;AAAO,YAAGlX;KAAU,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,qB,C;A,E,E,M,C,CAMpB;AAAO,YAAGC;KAAY,A;A,E,C,C;A,E,sB,C,C,C;A,E,E,G,C,C,wB,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,yC,C,C,C;A,E,E,G,C,C,4C,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,I,C,C;A,E,E,C,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,S,C;A,E,E,S,C,CA4uNhC;;AACE,gBAAgBD,iDhB3v8BoBtH,qBgB2v8BpC;chBzv8BekE;QgB2v8Bb+M,cADY;;AAEd,KACF,A,C;A,E,E,Q,C,CAEAoF;;mBAEmBoI,AAAAA;;AAEjB,iBAAsBC,0BAAqB;;gBAF1BD;aAGFC;YAATC;UACFrX,UAASoX;;AAEb,AACA;KACF,A,C;A,E,E,U,C,CAEArI;;mBAEmBoI,AAAAA;;AAEjB,iBAAsBC,0BAAqB;;gBAF1BD;aAGFC;YAATC;UACFpX,YAAWmX;;AAEf,AACA;KACF,A,C;A,E,E,W,C,CAKAnf;AACE,YAAOM;KACT,A,C;A,E,E,M,C,C,I,C;A,E,E,M,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,Q,C,C,C,C,Q,C,C;A,E,E,C;A,E,C,C;A,E,oB,C,C,C;A,E,E,G,C,C,wB,C;A,E,E,M,C,CAwBAH;AACE,YAAO+e,AAAAA;KACT,A,C;A,E,E,S,C,CAEA;MACEA,AAAAA;KACF,A,C;A,E,E,U,C,CAWAjf;AACE,YAAO8H,AAAAA;KACT,A,C;A,E,E,U,C,CAEA/H;AAAyB,YAAGqf;KAA0B,A;A,E,C,C;A,E,mB,C,C,C;A,E,E,G,C,C,mB;A,E,C,C;A,E,Y,C,C,C;A,E,E,G,C,C,S,C;A,E,E,qC,C,CAm+BtDC;iDAMM,cAAc,iBA8EcxO,qBA9EW;;MA+E3CD;AAhFA;KAEF,A;A,E,C,C;A,E,uB,C,C,C;A,E,E,G,C,C,6C;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,uE,C;A,E,E,Q,C,CAiFAiD;UAUsB7F;AATL;MAEfsR;MAEAtR;MACAuR;AACA;KACF,A,C;A,E,E,Y,C,CAuCA;eACMA;UAAQ,cAAW,AATJC;QAUjBxR,uBAAAA,cAAyBmP,qBAAqBsC;KAElD,A,C;A,E,E,W,C,CAEA;eACMF;UAAQ;QACVvR,0BAAAA,cAA4BmP,qBAAqBsC;KAErD,A;A,E,C,C;A,E,mB,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,e,C,CA+jBA1f;AACE,YAAO2f,4DAA0B/G;KACnC,A,C;A,E,E,iB,C,CAEA5Y;;gBACgB4Y;;kBACEgH;;oBAEFA;;AAGZ;AAEF,YAAOC;KACT,A,C;A,E,E,+B,C,CA5BAC;;;UAGMF;AACF,gEAAA;UACEA,gBhBn//BWjb;AgBo//Bb,AAEA,+DAAA;UACEib,gBhBv//BWjb;AgBw//Bb;KAEJ,A,C;A,E,E,M,C,C,C,G,C,C,0J,C,C,oB,C,CAZAmb;;YA1txBSlC;2CAsh3Ba1M;;;;OAhzFtB,A,C,C,+C,C,C,CAkBAhQ;AAEE;OACF,A,C,C,Q,C,C,yD,C,C,C,C,C,C,C,C,C,C,C,C,0C,C,C,CAEAA;;aAESqB;aA0xFPwd;;QAAAA;aAEQA;aAA0BC;;aAAAA;;eAC9BD;eAAsBC;;iBACtBD;iBAA0BC;;;;;;;eACzBD,8BACDA,0BACAA;;;AAjyFJ;OACF,A,C,C,Q,C,C,oD,C,C,C,C,C,C,C,C,C,C,C;A,E,C,C;A,E,kB,C,C,C;A,E,E,G,C,C,S,C;A,E,E,Y,C,CASAvf;AAIE,mDAo7DcuI;KAn7DhB,A,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,I,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,oB,C,C,C;A,E,E,G,C,C,oB,C;A,E,E,e,C,CA++CA/I;AACE,YjBjijC6BI,+BiBiijCtBmd;KACT,A,C;A,E,E,iB,C,CAEAvd;AACE,YjBrijC6BI,+BiBqijCtBmd;KAET,A;A,E,C,C;A,E,0C,C,C,C;A,E,E,G,C,C,sB,C;A,E,E,M,C,CANyB;AAAI,YAAG0C;KAAuB,A;A,E,C,C;A,E,4C,C,C,C;A,E,E,G,C,C,8C,C;A,E,E,M,C,CAKjD;AAAI,YAAGA;KAA+C,A;A,E,C,C;A,E,oB,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,e,C,CAkG5DjgB;AACE,YAAOkgB,AAAAA,oCAAyBtH;KAClC,A,C;A,E,E,iB,C,CAEA5Y;;gBACgB4Y;WACVuH;UAAAA;AACF,cAAOC,AAAAA;eACED;AACT,cAAOC,AAAAA;;aACEC;YAAAA;AACT;iBACSA;AACT;iBACSA;AACT;iBACSA;AACT;;AAEF;KACF,A;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,sG,C;A,E,E,iB,C,CA2DArgB;;AAEI;;AAIA;UAz5GKkf;AA65GL,cAAOoB,AAAAA;AAET;KACF,A,C;A,E,E,M,C,C,C,G,C,C,0C,C,C,yB,C,CAtBAC;;;a6Bh7jCS;QAAA;aAAA;QAAA;;a7Bw2jCoC;a6Bx2jCpC;QAAA;;O7Bu7jCT,A,C;A,E,C,C;A,E,gC,C,C,C;A,E,E,G,C,C,a,C;A,E,E,M,C,CAF+C;AAAO;KAAmB,A;A,E,C,C;A,E,iB,C,C,C;A,E,E,G,C,C,S,C;A,E,E,e,C,CAsBzEvgB;;;AAEI;;AAGA;AAEF;KACF,A,C;A,E,E,iB,C,CAEAA;oCAC+BwgB;AAC3B;AAEF,YAAOC;KACT,A;A,E,C,C;A,E,qB,C,C,C;A,E,E,G,C,C,sD,C;A,E,E,U,C,CA8OAzgB;;qBAC+B,AAAVsZ;WACA7V;UAAF;QACfkB,sBAAW+b,aAAAA;QACXpH;AACA;;MAEF3U;MACA2U;AACA;KACF,A,C;A,E,E,W,C,CAEA/G;AAAc,YAAG5N;KAAQ,A;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,a,C;A,E,E,Y,C,CAilBzBxE;AAAoB,YAAQwgB;KAAiB,A,C;A,E,E,Q,C,CA0B7CxgB;AAAgB,YAAQwgB;KAAa,A,C;A,E,E,Y,C,CAMrCxgB;AAAoB,YAAQwgB;KAAiB,A,C;A,E,E,U,C,CAiB7CxgB;AAAkB,YAAgCwgB;KAAK,A,C;A,E,E,W,C,C,I;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,S;A,E,C,C;A,E,oB,C,C,C;A,E,E,G,C,C,2B;A,E,C,C;A,E,wB,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,c,C,CAgPvD;MAYEjH;KACF,A,C;A,E,E,c,C,CAEA;;cACU2F;;;kBAGQzG;cACR,CAACiH,AAAAA;;uDAEiCjH;;;YACpCA;;;eAvjJCsG;mBAAAA;cA4jJQ;gBACL,CAACW,AAAAA;;gEAEKjH;;;cACRA;;;iBAOOgI,2BAAAA;AACX,mBAA0B,AAvjJvB7Y,AAAAA,kCAujJ8B;;oBADtB6Y;oBAEE7Y;gBACP,CAAC8X,AAAAA,uCAAmClX,0BA1kJvCuW;;2DA6kJStG,0CA7kJTsG;;;cAQQA;cACfA;;;AAukJI;YAIE2B,oBAAaC;;;;;;;;UASfzB;;KAEN,A;A,E,C,C;A,E,0C,C,C,C;A,E,E,G,C,C,mB,C;A,E,E,M,C,CA9DE;;MACE0B;cAEY1B;AACZ,aAAa;oBAEK2B;QAChBtH;;AAEF,KACF,A;A,E,C;A,C,A;A,iB,Y,A,E,C,E,C;A,E,G,C,C,E,C;A,E,a,C,C,C;A,E,E,G,C,C,a,C;A,E,E,gB,C,C,I,C;A,E,E,G,C,C,kB;A,E,C,C;A,E,a,C,C,C;A,E,E,G,C,C,sB,C;A,E,E,G,C,C,iB;A,E,C,C;A,E,U,C,C,C;A,E,E,G,C,C,U,C;A,E,E,a,C,C8B957BF;M9BgwJEuE;MACAC,qBAAOC;K8B/vJT,A,C;A,E,E,wC,C,CAEAb;;;;M9Bwk5BEC,QA/GI;MA+GJA,QAVI;MAUJA;;;iB8B3j5BelN,mCAAAA;oB9Bu1EaA;M8Bl1EjB6M;;aAAAA;AACX,kBAAO+D,iBAAgB;QACrBC;AACF,AACA;KACF,A,C;A,E,E,U,C,CAuVA/D;AAAgC,0E9B26zBQC;K8B36zBqB,A,C;A,E,E,Y,C,CAe7DD;AAAkC,0E9B45zBMC;K8B55zByB,A,C;A,E,E,W,C,CAKjED;AAAsC,0E9Bu5zBEC;K8Bv5zB4B,A,C;A,E,E,W,C,CA2EpED;AAAiC,0E9B40zBOC;K8B50zBuB,A,C;A,E,E,a,C,C,I,C;A,E,E,G,C,C,ioD;A,E,C;A,C,A;A,iB,gB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,U,C,C,C;A,E,E,G,C,C,S,C;A,E,E,a,C,C,I,C;A,E,E,M,C,C,C,qB,C,CCxoLzD1c;AAAqB,oC5CwjGb,sCAAS;O4CxjGoB,A,C;A,E,C;A,C,A;A,mC,2B,A,E,C,E,C;A,E,G,C,C,E,C;A,E,e,C,C,C;A,E,E,G,C,C,c,C;A,E,E,e,C,CCQ3C;;UACY,oBAAa;aACf,iBAAA;;aAEA,iBAAA;KAEV,A,C;A,E,E,G,C,C,oI;A,E,C,C;A,E,e,C,C,C;A,E,E,G,C,C,wB,C;A,E,E,U,C,CAk2BAT;AAAe;KAAmC,A,C;A,E,E,M,C,CAElDA;eACqBK;mCAj2BO;QACxB6gB;AAi2BF;KACF,A,C;A,E,E,S,C,CAEA;eACqB7gB;mCAt2BO;QACxB6gB;;KAu2BJ,A,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,K,C,C;A,E,E,C,C;A,E,E,kB,C,C,I,C;A,E,E,G,C,C,a;A,E,C,C;A,E,gB,C,C,C;A,E,E,G,C,C,kB,C;A,E,E,U,C,CAzdAlhB;AAAe;KAAmC,A,C;A,E,E,6B,C,C,I;A,E,C,C;A,E,qB,C,C,C;A,E,E,G,C,C,kD,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,K,C,C;A,E,E,C,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,0B,C,C,C;A,E,E,G,C,C,6B,C;A,E,E,O,C,C,I,C;A,E,E,O,C,C,Q,C,C,C,C;A,E,E,E,M,C,C,C,C,K,C,C;A,E,E,C,C;A,E,E,kB,C,C,I;A,E,C,C;A,E,+C,C,C,C;A,E,E,G,C,C,kD;A,E,C;A,C,A;A,2B,uB,A,E,C,E,C;A,E,G,C,C,E,C;A,E,W,C,CC7cpD;;;AAII;;;;AAOA;;;AAKA;;;AAMA;;;GAOJ,A;A,C,A;A;A;A;;A,uB;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A,yB;A,C,C,c,C,C,C,Q,C,Q,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C,C,C;A,E,E,E,C,C,I,C,K,C,Q,C,C,E,C,Q,C;A,E,E,E,M,C,C,C,K,C,S,C;A,E,E,M,C,C,C,Q,C,S,C;A,E,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,C,C,Q,C,S,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,C,C,M,C,S,C;A,E,E,C,C,M,C,Q,C,E,C,S,C;A,E,E,M,C,C,C,M,C,S,C;A,E,E,C,C,Q,C,W,C,E,C,K,C;A,E,E,M,C,C,C,O,C,S,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,Q,C;A,E,E,C,C,Q,C,U,C,C,C,M,C;A,E,E,M,C,Q,C;A,E,M,C,C,C,oB,C,Q,C,C;A,C;A,C,C,kB,C,C,C,Q,C,Q,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,C,C,Q,C,S,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,Q,C;A,E,E,C,C,Q,C,W,C,E,C,K,C;A,E,E,M,C,C,C,O,C,S,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,Q,C;A,E,E,C,C,Q,C,U,C,C,C,M,C;A,E,E,M,C,Q,C;A,E,M,C,C,C,oB,C,Q,C,C;A,C;A,C,C,iB,C,C,C,Q,C,Q,C,C,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,Q,C;A,E,E,C,C,Q,C,W,C,E,C,K,C;A,E,E,M,C,C,C,O,C,S,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,Q,C;A,E,E,C,C,Q,C,U,C,C,C,M,C;A,E,E,M,C,Q,C;A,E,M,C,C,C,oB,C,Q,C,C;A,C;A,C,C,gB,C,C,C,Q,C,Q,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,C,C,Q,C,S,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,Q,C;A,E,E,C,C,C,C,Q,C,U,C,C,C,M,C,C;A,E,E,M,C,C,C,uB,C,S,C;A,E,M,C,Q,C;A,C;A,C,C,iB,C,C,C,Q,C,Q,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,C,C,Q,C,S,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,C,C,Q,C,S,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,Q,C;A,E,E,C,C,C,C,Q,C,U,C,C,C,M,C,C;A,E,E,M,C,C,C,uB,C,S,C;A,E,M,C,Q,C;A,C;A,C,C,gB,C,C,C,Q,C,Q,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,C,C,Q,C,S,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,Q,C;A,E,E,C,C,C,C,Q,C,U,C,C,C,M,C,C;A,E,E,M,C,C,C,uB,C,S,C;A,E,M,C,Q,C;A,C;A,C,C,gB,C,C,C,Q,C,Q,C,C,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,Q,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,Q,C;A,E,E,C,C,Q,C,U,C,C,C,M,C;A,E,E,M,C,Q,C;A,E,M,C,C,C,oB,C,Q,C,C;A,C;A,C,C,O,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C,E,C,M,C,E,C,E,C,Q,C;A,E,E,M,C,Q,C,C,C,E,C;A,E,M,C,C,C,iB,C,Q,C,C,I,C,Q,C,C,E,C,C;A,C;A,C,C,G,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,E,C,C,Q,C,E,C,I,C;A,E,E,M,C,E,C,E,C,I,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C;A,E,E,M,C,E,C,E,C,I,C,E,C,Q,C,G,C,E,C;A,E,M,C,C,C,c,C,Q,C,C,G,C,Q,C,C,E,C,C;A,C;A,C,C,K,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C,E,C,M,C,E,C,E,C,Q,C;A,E,E,M,C,Q,C,E,C,E,C;A,E,M,C,C,C,gB,C,Q,C,C,G,C,Q,C,C,E,C,C;A,C;A,C,C,U,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,E,C,C,Q,C,W,C,E,C,K,C,E,C,M,C,Q,C,E,C,Q,C,E,C,e,C,Q,C,C,Q,C,yB,C,C,C;A,E,E,E,C,C,E,C,G,C,C,C,G,C,E,C,E,C,E,C,C,C,Q,C,M,C;A,E,E,E,M,C,Q,C,E,C,C;A,E,M,C,C,C,kB,C,Q,C,C,M,C,Q,C,C,E,C,C;A,C;A,C,C,Y,C,C,C,Q,C,Q,C,C,E,C,C,E,C,C,C;A,E,E,C,C,C,Q,C,W,C,E,C,K,C,E,C,e,C,Q,C,C,Q,C,yB,C,C,C,C,E,C,C,Q,C,c,C,E,C,E,C,G,C,C,C,G,C,E,C,E,C,E,C,C,C,Q,C,M,C;A,E,E,M,C,Q,C,E,C,C,C,C,E,C;A,E,M,C,C,C,iB,C,Q,C,C,S,C,Q,C,C,E,C,C,E,C,C;A,C;A,C,C,O,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C,E,C,M,C,E,C,E,C,Q,C;A,E,E,M,C,Q,C,C,C,E,C;A,E,M,C,C,C,iB,C,Q,C,C,I,C,Q,C,C,E,C,C;A,C;A,C,C,M,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,E,C,C,M,C,Q,C,E,C,Q,C,E,C,M,C,E,C,E,C,Q,C;A,E,E,M,C,Q,C,C,C,E,C;A,E,M,C,C,C,gB,C,Q,C,C,I,C,Q,C,C,E,C,C;A,C;A,C,C,oB,C,C,C,Q,C,Q,C,C,E,C,C,E,C,C,E,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,kB,C,Q,C,C,E,C,C,E,C,C,E,C,C;A,C;A,C,C,c,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,M,C,C,C,kB,C,Q,C,C,U,C,Q,C,C,E,C,C;A,C;A,C,C,gC,C,C,C,Q,C,Q,C,C,E,C,C,E,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,8B,C,Q,C,C,E,C,C,E,C,C;A,C;A,C,C,0C,C,C,C,Q,C,Q,C,C,E,C,C,E,C,C,E,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,wC,C,Q,C,C,E,C,C,E,C,C,E,C,C;A,C;A,C,C,c,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,M,C,C,C,iB,C,Q,C,C,W,C,Q,C,C,E,C,C;A,C;A,C,C,Y,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,M,C,C,C,iB,C,Q,C,C,S,C,Q,C,C,E,C,C;A,C;A,C,C,U,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,Q,C,Q,C,C;A,C;A,C,C,W,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,S,C,Q,C,C;A,C;A,C,C,a,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,c,C,Q,C,C,Y,C,Q,C,C;A,C;A,C,C,e,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,kB,C,Q,C,C,W,C,Q,C,C;A,C;A,C,C,e,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,iB,C,Q,C,C,Y,C,Q,C,C;A,C;A,C,C,c,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,kB,C,Q,C,C,U,C,Q,C,C;A,C;A,C,C,U,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,Q,C,Q,C,C;A,C;A,C,C,W,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,S,C,Q,C,C;A,C;A,C,C,Y,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,U,C,Q,C,C;A,C;A,C,C,c,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,Y,C,Q,C,C;A,C;A,C,C,a,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,W,C,Q,C,C;A,C;A,C,C,a,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,W,C,Q,C,C;A,C;A,C,C,W,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,S,C,Q,C,C;A,C;A,C,C,kB,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,gB,C,Q,C,C;A,C;A,C,C,W,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,iB,C,Q,C,C,Q,C,Q,C,C;A,C;A,C,C,W,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,M,C,C,C,iB,C,Q,C,C,Q,C,Q,C,C,E,C,C;A,C;A,C,C,uB,C,C,C,Q,C,Q,C,C,E,C,C,E,C,C,E,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,qB,C,Q,C,C,E,C,C,E,C,C,E,C,C;A,C;A,C,C,S,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,O,C,Q,C,C;A,C;A,C,C,Q,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,M,C,Q,C,C,E,C,C;A,C;A,C,C,c,C,C,C,Q,C,Q,C,C,K,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,Y,C,Q,C,C,K,C,C;A,C;A,C,C,U,C,C,C,Q,C,Q,C,C,K,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,Q,C,Q,C,C,K,C,C;A,C;A,C,C,e,C,C,C,Q,C,Q,C,C,K,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,a,C,Q,C,C,K,C,C;A,C;A,C,C,W,C,C,C,Q,C,Q,C,C,K,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,S,C,Q,C,C,K,C,C;A,C;A,C,C,W,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,iB,C,Q,C,C,Q,C,Q,C,C;A,C;A,C,C,e,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,a,C,Q,C,C;A,C;A,C,C,U,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,c,C,Q,C,C,U,C,Q,C,C;A,C;A,C,C,mB,C,C,C,Q,C,Q,C,C,E,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,iB,C,Q,C,C,E,C,C;A,C;A,C,C,Q,C,C,C,Q,C,Q,C,C,C;A,E,M,C,C,C,gB,C,Q,C,C,M,C,Q,C,C;A,C;A,C,C,oB,C,C,C,I,oB,C,C;A,C,C,kB,C,C,C,I,kB,C,C;A,C,C,W,C,C,C,I,W,C,C;A,C,C,U,C,C,C,I,U,C,C,C;A,C,C,wB,C,C,C,I,qB,C,M,C;A,C,C,0B,C,C,C,I,qB,C,Q,C;A,C,C,yB,C,C,C,I,qB,C,O,C;A,C,C,yB,C,C,C,I,qB,C,O,C;A,C,C,e,C,C,C,S,C,S;A,C,C,a,C,C,C,O,C,S;A,C,C,gB,C,C,C,U,C,S;A,C,C,gB,C,C,C,U,C,S;A,C,C,U,C,C,C;;;C;A,C,C,Y,C,C,C;A;A,C,C,Y,C,C,C;;;;;;;;;;;;;C;A,C,C,Y,C,C,C;;;;;;;;;;;;;C;A,C,C,Y,C,C,C;;;;;;;;;;;;;;;C;A,C,C,Y,C,C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;C;A,C,C,Y,C,C,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;C;A,C,C,Y,C,C,C;;;;;;;;;;;;;;;;;C;A,C,C,mB,C,C,C,I,W,C,I,C,C,I,C;A,C,C,gB,C,C,C,I,a,C,I,C;A,C,C,gB,C,C,C,I,a,C,I,C;A,O;;;;;A,C,C,Q,C,C,C,C,C,kB,C,O,C,gB,C,C,U,C,C,Q,C,C,c,C,C,W,C,C,O,C,C,U,C,C,a,C,C,Y,C,C,c,C,C,S,C,C,e,C,C,U,C,C,c,C,C,c,C,C,W,C,C,a,C,C,S,C,C,U,C,C,a,C,C,W,C,C,S,C,C,iB,C,C,W,C,C,c,C,C,c,C,C,a,C,C,gB,C,C,c,C,C,iB,C,C,a,C,C,mB,C,C,c,C,C,gB,C,C,U,C,C,a,C,C,e,C,C,Y,C,C,Y,C,C,a,C,C,W,C,C,mB,C,C,kB,C,C,c,C,C,kB,C,C,c,C,C,e,C,C,gB,C,C,e,C,C,gB,C,C,Y,C,C,W,C,C,c,C,C,W,C,C,a,C,C,Y,C,C,iB,C,C,gB,C,C,mB,C,C,gB,C,C,kB,C,C,iB,C,C,kB,C,C,kB,C,C,mB,C,C,gB,C,C,qB,C,C,e,C,C,a,C,C,e,C,C,e,C,C,c,C,C,Y,C,C,a,C,C,oB,C,C,a,C,C,Y,C,C,Y,C,C,c,C,C,oB,C,C,e,C,C,c,C,C,Y,C,C,kB,C,C,c,C,C,a,C,C,W,C,C,W,C,C,W,C,C,W,C,C,W,C,C,W,C,C,W,C,C,a,C,C,U,C,C,W,C,C,e,C,C,e,C,C,qB,C,C,gB,C,C,sB,C,C,qB,C,C,e,C,C,Y,C,C,U,C,C,a,C,C,a,C,C,a,C,C,Y,C,C,W,C,C,a,C,C,a,C,C,Y,C,C,e,C,C,kB,C,C,c,C,C,Y,C,C,qB,C,C,gB,C,C,iB,C,C,kB,C,C,c,C,C,a,C,C,Y,C,C,kB,C,C,Y,C,C,iB,C,C,a,C,C,oB,C,C,iB,C,C,iB,C,C,a,C,C,a,C,C,iB,C,C,a,C,C,e,C,C,c,C,C,e,C,C,kB,C,C,iB,C,C,c,C,C,kB,C,C,Y,C,C,mB,C,C,e,C,C,U,C,C,W,C,C,a,C,C,W,C,C,e,C,C,a,C,C,Y,C,C,a,C,C,Y,C,C,Y,C,C,Y,C,C,c,C,C,uB,C,C,a,C,C,c,C,C,W,C,C,U,C,C,oB,C,C,iB,C,C,kB,C,C,e,C,C,kB,C,C,e,C,C,a,C,C,c,C,C,U,C,C,Y,C,C,e,C,C,e,C,C,iB,C,C,sB,C,C,kB,C,C,kB,C,C,c,C,C,kB,C,C,c,C,C,kB,C,C,c,C,C,c,C,C,gB,C,C,e,C,C,oB,C,C,oB,C,C,c,C,C,c,C,C,gB,C,C,c,C,C,c,C,C,a,C,C,gB,C,C,e,C,C,U,C,C,W,C,C,U,C,C,a,C,C,U,C,C,a,C,C,a,C,C,a,C,C,Y,C,C,Y,C,C,a,C,C,W,C,C,Y,C,C,W,C,C,qB,C,C,wB,C,C,gB,C,C,oB,C,C,qB,C,C,gB,C,C,uB,C,C,oB,C,C,oB,C,C,gB,C,C,oB,C,C,gB,C,C,c,C,C,a,C,C,gB,C,C,e,C,C,U,C,C,W,C,C,U,C,C,a,C,C,U,C,C,a,C,C,a,C,C,a,C,C,Y,C,C,Y,C,C,a,C,C,W,C,C,Y,C,C,W,C,C,c,C,C,a,C,C,gB,C,C,e,C,C,W,C,C,a,C,C,U,C,C,a,C,C,Y,C,C,gB,C,C,a,C,C,c,C,C,gB,C,C,a,C,C,U,C,C,iB,C,C,e,C,C,a,C,C,mB,C,C,c,C,C,gB,C,C,c,C,C,C,C,Y,C;A,C,C,Q,C,C,C,C,C,kB,C,O,C,gB,C,C,M,C,C,I,C,C,K,C,C,Q,C,C,Q,C,C,C,C,Y,C;A,C,C,Q,C,C,C,C,C,kB,C,O,C,gB,C,C,S,C,C,Y,C,C,kB,C,C,kB,C,C,e,C,C,W,C,C,c,C,C,U,C,C,Y,C,C,W,C,C,S,C,C,e,C,C,C,C,Y,C;A,C,C,gB,C,C,C,U,C,S;A,C,C,6B,C,C,C,uB,C,S;A,C,C,+B,C,C,C,yB,C,S;A,C,C,c,C,C,C,Q,C,S;A,uB;A,C,C,kC,C,C,C,iB;A,C,C,gC,C,C,C,mB;A,C,C,uB,C,C,C,C;A,C,C,+B,C,C,C,I;A,C,C,mC,C,C,C,I;A,C,C,4B,C,C,C,K;A,C,C,c,C,C,C,I;A,C,C,oB,C,C,C,I;A,C,C,uB,C,C,C,I;A,C,C,8B,C,C,C,I;A,C,C,8B,C,C,C,I;A,C,C,sB,C,C,C,I;A,C,C,K,C,C,C,I;A,C,C,O,C,C,C,I;A,C,C,K,C,C,C,I;A,C,C,M,C,C,C,I;A,C,C,M,C,C,C,I;A,C,C,S,C,C,C,I;A,C,C,W,C,C,C,I;A,C,C,Y,C,C,C,I;A,C,C,G,C,C,C,I;A,C,C,W,C,C,C,I;A,C,C,a,C,C,C,I;A,C,C,a,C,C,C,I;A,C,C,a,C,C,C,C,C,W;A,C,C,iB,C,C,C,C;A,C,C,sB,C,C,C,I;A,C,C,mB,C,C,C,I;A,C,C,yB,C,C,C,I;A,C,C,yB,C,C,C,I;A,C,C,e,C,C,C,I;A,C,C,gB,C,C,C,I;A,O,C,K,C,C,C,C,Y,C,C,Y,C,C,gB,C,C,Q,C,C,C7CqgBA;;CAA+C,A,C;A,O,C,K,C,C,C,C,c,C,C,c,C,C,kB,C,C,Q,C,C,CAC/C;;CAAiD,A,C;A,O,C,K,C,C,C,C,c,C,C,c,C,C,kB,C,C,Q,C,C,CACjD;;CAAiD,A,C;A,O,C,K,C,C,C,C,0B,C,C,0B,C,C,8B,C,C,Q,C,C,CACjDD;;CACoD,A,C;A,O,C,K,C,C,C,C,Y,C,C,2B,C,C,+B,C,C,Q,C,C,CAUlDkB;QAA2BkgB;CAAmB,A,C;A,O,C,K,C,C,C,C,W,C,C,0B,C,C,8B,C,C,Q,C,C,CAG9ClgB;;CAAwD,A,C;A,O,C,K,C,C,C,C,qB,C,C,sC,C,C,0C,C,C,Q,C,C,CDirBxDA;QACImgB,mCAAeC;CAA4C,A,C;A,O,C,K,C,C,C,C,mB,C,C,oC,C,C,wC,C,C,Q,C,C,CAI/DpgB;QACImgB,mCAAeC;CAA0D,A,C;A,O,C,K,C,C,C,C,iB,C,C,kC,C,C,sC,C,C,Q,C,C,CAI7EpgB;QACImgB,mCAAeC;CAAmC,A,C;A,O,C,K,C,C,C,C,wB,C,C,yC,C,C,6C,C,C,Q,C,C,CAItDpgB;QACImgB;;;;;;;;CAAwC,A,C;A,O,C,K,C,C,C,C,sB,C,C,uC,C,C,2C,C,C,Q,C,C,CAI5CngB;QACImgB,mCAAeC;CAAqC,A,C;A,O,C,K,C,C,C,C,6B,C,C,8C,C,C,kD,C,C,Q,C,C,CAIxDpgB;QACImgB;;;;;;;;CAA6C,A,C;A,O,C,K,C,C,C,C,qB,C,C,sC,C,C,0C,C,C,Q,C,C,CAIjDngB;QACImgB,mCAAeE;CAAuC,A,C;A,O,C,K,C,C,C,C,4B,C,C,6C,C,C,iD,C,C,Q,C,C,CAI1DrgB;QACImgB;;;;;;;CAA4C,A,C;A,O,C,K,C,C,C,C,0B,C,C,2C,C,C,+C,C,C,Q,C,C,CAIhDngB;QACImgB,mCAAeE;CAAyC,A,C;A,O,C,K,C,C,C,C,iC,C,C,kD,C,C,sD,C,C,Q,C,C,CAI5DrgB;QACImgB;;;;;;;CAAiD,A,C;A,O,C,K,C,C,C,C,e,C,C,uC,C,C,2C,C,C,Q,C,C,CH9jBrDngB;;CAAsC,A,C;A,O,C,K,C,C,C,C,mB,C,C,mB,C,C,uB,C,C,Q,C,C,CgCjuBxCsgB;QAAwB;CAAsB,A,C;A,O,C,K,C,C,C,C,e,C,C,oB,C,C,wB,C,C,Q,C,C,CFwD5CtgB;;CAAsC,A,C;A,O,C,K,C,C,C,C,kB,C,C,sC,C,C,0C,C,C,Q,C,C,Cd81/BtCA;W6Bz1/BS;EAAA;;C7B87/BP,A,C;A,O,C,K,C,C,C,C,sB,C,C,0C,C,C,8C,C,C,Q,C,C,CA2RFA;Qb1h9BOkB,sBAA8B;Ca0h9BuB,A,C;A,iB;A;A,I,C,e,C,C,C,C,C,C;A;iB,6C;A,2B;A,yC;A,kE;A,kD;A,sD;A,wE;A,qD;A,0I;A,e;A,mC;A,6B;A,2D;A,kF;A;A,8D;A,8B;A,iE;A,yD;A,uD;A,6D;A,uD;A,gD;A;A;A;A;A;;;;A;;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A;A,C,Q,C,C,C,C;A,E,Q,C,M,C,C,C,C,C;A,E,E,I,C,C,C,C,C,C,C;A,E,E,C,C,C,C,C,C,C,C,C;A,E,E,M,C,M,C,I,C,mB,C,C,C,C,C,C,C,C;A,E,C;A,E,I,C,a,C,C,C,Q,C,I,C,C,C;A,E,E,M,C,M,C,U,C,C,C,I,C,C,C,I,C,U,C,C;A,E,C,C;A,E,I,a,C,C,C,uB,C;A,E,I,c,C,C,C,M,C,a,C,C,E,C,C,M,C,a,C,C,C,C,M,C,M,C,I,C,C,C;A,E,I,Y,C,C,C,Q,C;A,E,G,C,C,I,C,C,C,C,C,C,C,C,C,E,C,C,C;A,E,E,I,Q,C,C,C,M,C,Y,C,C,C,G,C,C,C,C,C,C,C,G,C,C;A,E,E,E,C,C,C,C,Q,C,E,C,c,C,C,C,C;A,E,E,E,c,C,Q,C,C,C,C,C,C;A,E,E,E,I,C,U,C,C,C,Q,C;A,E,E,E,K,C;A,E,E,C;A,E,C;A,C,C,C;A,I,C,oB,C,C,C,I,C,a,C,iB,C;A,uB;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A,qB;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A"
+}
diff --git a/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.precompiled.js b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.precompiled.js
new file mode 100644
index 0000000..18e3a05
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.dart.precompiled.js
@@ -0,0 +1,12868 @@
+// Generated by dart2js, the Dart to JavaScript compiler.
+// The code supports the following hooks:
+// dartPrint(message):
+// if this function is defined it is called instead of the Dart [print]
+// method.
+//
+// dartMainRunner(main, args):
+// if this function is defined, the Dart [main] method will not be invoked
+// directly. Instead, a closure that will invoke [main], and its arguments
+// [args] is passed to [dartMainRunner].
+(function($) {
+function dart(){ this.x = 0 }var A = new dart;
+delete A.x;
+var B = new dart;
+delete B.x;
+var C = new dart;
+delete C.x;
+var D = new dart;
+delete D.x;
+var E = new dart;
+delete E.x;
+var F = new dart;
+delete F.x;
+var G = new dart;
+delete G.x;
+var H = new dart;
+delete H.x;
+var J = new dart;
+delete J.x;
+var K = new dart;
+delete K.x;
+var L = new dart;
+delete L.x;
+var M = new dart;
+delete M.x;
+var N = new dart;
+delete N.x;
+var O = new dart;
+delete O.x;
+var P = new dart;
+delete P.x;
+var Q = new dart;
+delete Q.x;
+var R = new dart;
+delete R.x;
+var S = new dart;
+delete S.x;
+var T = new dart;
+delete T.x;
+var U = new dart;
+delete U.x;
+var V = new dart;
+delete V.x;
+var W = new dart;
+delete W.x;
+var X = new dart;
+delete X.x;
+var Y = new dart;
+delete Y.x;
+var Z = new dart;
+delete Z.x;
+function Isolate() {}
+init();
+
+$ = Isolate.$isolateProperties;
+var $$ = {};
+
+// Native classes
+(function (reflectionData) {
+ "use strict";
+ function map(x){x={x:x};delete x.x;return x}
+ function processStatics(descriptor) {
+ for (var property in descriptor) {
+ if (!hasOwnProperty.call(descriptor, property)) continue;
+ if (property === "^") continue;
+ var element = descriptor[property];
+ var firstChar = property.substring(0, 1);
+ var previousProperty;
+ if (firstChar === "+") {
+ mangledGlobalNames[previousProperty] = property.substring(1);
+ var flag = descriptor[property];
+ if (flag > 0) descriptor[previousProperty].$reflectable = flag;
+ if (element && element.length) init.typeInformation[previousProperty] = element;
+ } else if (firstChar === "@") {
+ property = property.substring(1);
+ $[property]["@"] = element;
+ } else if (firstChar === "*") {
+ globalObject[previousProperty].$defaultValues = element;
+ var optionalMethods = descriptor.$methodsWithOptionalArguments;
+ if (!optionalMethods) {
+ descriptor.$methodsWithOptionalArguments = optionalMethods = {}
+ }
+ optionalMethods[property] = previousProperty;
+ } else if (typeof element === "function") {
+ globalObject[previousProperty = property] = element;
+ functions.push(property);
+ init.globalFunctions[property] = element;
+ } else if (element.constructor === Array) {
+ addStubs(globalObject, element, property, true, descriptor, functions);
+ } else {
+ previousProperty = property;
+ var newDesc = {};
+ var previousProp;
+ for (var prop in element) {
+ if (!hasOwnProperty.call(element, prop)) continue;
+ firstChar = prop.substring(0, 1);
+ if (prop === "static") {
+ processStatics(init.statics[property] = element[prop]);
+ } else if (firstChar === "+") {
+ mangledNames[previousProp] = prop.substring(1);
+ var flag = element[prop];
+ if (flag > 0) element[previousProp].$reflectable = flag;
+ } else if (firstChar === "@" && prop !== "@") {
+ newDesc[prop.substring(1)]["@"] = element[prop];
+ } else if (firstChar === "*") {
+ newDesc[previousProp].$defaultValues = element[prop];
+ var optionalMethods = newDesc.$methodsWithOptionalArguments;
+ if (!optionalMethods) {
+ newDesc.$methodsWithOptionalArguments = optionalMethods={}
+ }
+ optionalMethods[prop] = previousProp;
+ } else {
+ var elem = element[prop];
+ if (prop !== "^" && elem != null && elem.constructor === Array && prop !== "<>") {
+ addStubs(newDesc, elem, prop, false, element, []);
+ } else {
+ newDesc[previousProp = prop] = elem;
+ }
+ }
+ }
+ $$[property] = [globalObject, newDesc];
+ classes.push(property);
+ }
+ }
+ }
+ function addStubs(descriptor, array, name, isStatic, originalDescriptor, functions) {
+ var f, funcs = [originalDescriptor[name] = descriptor[name] = f = array[0]];
+ f.$stubName = name;
+ functions.push(name);
+ for (var index = 0; index < array.length; index += 2) {
+ f = array[index + 1];
+ if (typeof f != "function") break;
+ f.$stubName = array[index + 2];
+ funcs.push(f);
+ if (f.$stubName) {
+ originalDescriptor[f.$stubName] = descriptor[f.$stubName] = f;
+ functions.push(f.$stubName);
+ }
+ }
+ for (var i = 0; i < funcs.length; index++, i++) {
+ funcs[i].$callName = array[index + 1];
+ }
+ var getterStubName = array[++index];
+ array = array.slice(++index);
+ var requiredParameterInfo = array[0];
+ var requiredParameterCount = requiredParameterInfo >> 1;
+ var isAccessor = (requiredParameterInfo & 1) === 1;
+ var isSetter = requiredParameterInfo === 3;
+ var isGetter = requiredParameterInfo === 1;
+ var optionalParameterInfo = array[1];
+ var optionalParameterCount = optionalParameterInfo >> 1;
+ var optionalParametersAreNamed = (optionalParameterInfo & 1) === 1;
+ var isIntercepted = requiredParameterCount + optionalParameterCount != funcs[0].length;
+ var functionTypeIndex = array[2];
+ var unmangledNameIndex = 2 * optionalParameterCount + requiredParameterCount + 3;
+ var isReflectable = array.length > unmangledNameIndex;
+
+ if (getterStubName) {
+ f = tearOff(funcs, array, isStatic, name, isIntercepted);
+ f.getterStub = true;
+ if (isStatic) init.globalFunctions[name] = f;
+ originalDescriptor[getterStubName] = descriptor[getterStubName] = f;
+ funcs.push(f);
+ if (getterStubName) functions.push(getterStubName);
+ f.$stubName = getterStubName;
+ f.$callName = null;
+ if (isIntercepted) init.interceptedNames[getterStubName] = true;
+ }
+ if (isReflectable) {
+ for (var i = 0; i < funcs.length; i++) {
+ funcs[i].$reflectable = 1;
+ funcs[i].$reflectionInfo = array;
+ }
+ var mangledNames = isStatic ? init.mangledGlobalNames : init.mangledNames;
+ var unmangledName = array[unmangledNameIndex];
+ var reflectionName = unmangledName;
+ if (getterStubName) mangledNames[getterStubName] = reflectionName;
+ if (isSetter) {
+ reflectionName += "=";
+ } else if (!isGetter) {
+ reflectionName += ":" + requiredParameterCount + ":" + optionalParameterCount;
+ }
+ mangledNames[name] = reflectionName;
+ funcs[0].$reflectionName = reflectionName;
+ funcs[0].$metadataIndex = unmangledNameIndex + 1;
+ if (optionalParameterCount) descriptor[unmangledName + "*"] = funcs[0];
+ }
+ }
+ function tearOffGetterNoCsp(funcs, reflectionInfo, name, isIntercepted) {
+ return isIntercepted
+ ? new Function("funcs", "reflectionInfo", "name", "H", "c",
+ "return function tearOff_" + name + (functionCounter++)+ "(x) {" +
+ "if (c === null) c = H.closureFromTearOff(" +
+ "this, funcs, reflectionInfo, false, [x], name);" +
+ "return new c(this, funcs[0], x, name);" +
+ "}")(funcs, reflectionInfo, name, H, null)
+ : new Function("funcs", "reflectionInfo", "name", "H", "c",
+ "return function tearOff_" + name + (functionCounter++)+ "() {" +
+ "if (c === null) c = H.closureFromTearOff(" +
+ "this, funcs, reflectionInfo, false, [], name);" +
+ "return new c(this, funcs[0], null, name);" +
+ "}")(funcs, reflectionInfo, name, H, null)
+ }
+ function tearOffGetterCsp(funcs, reflectionInfo, name, isIntercepted) {
+ var cache = null;
+ return isIntercepted
+ ? function(x) {
+ if (cache === null) cache = H.closureFromTearOff(this, funcs, reflectionInfo, false, [x], name);
+ return new cache(this, funcs[0], x, name)
+ }
+ : function() {
+ if (cache === null) cache = H.closureFromTearOff(this, funcs, reflectionInfo, false, [], name);
+ return new cache(this, funcs[0], null, name)
+ }
+ }
+ function tearOff(funcs, reflectionInfo, isStatic, name, isIntercepted) {
+ var cache;
+ return isStatic
+ ? function() {
+ if (cache === void 0) cache = H.closureFromTearOff(this, funcs, reflectionInfo, true, [], name).prototype;
+ return cache;
+ }
+ : tearOffGetter(funcs, reflectionInfo, name, isIntercepted);
+ }
+ var functionCounter = 0;
+ var tearOffGetter = (typeof dart_precompiled == "function")
+ ? tearOffGetterCsp : tearOffGetterNoCsp;
+ if (!init.libraries) init.libraries = [];
+ if (!init.mangledNames) init.mangledNames = map();
+ if (!init.mangledGlobalNames) init.mangledGlobalNames = map();
+ if (!init.statics) init.statics = map();
+ if (!init.typeInformation) init.typeInformation = map();
+ if (!init.globalFunctions) init.globalFunctions = map();
+ if (!init.interceptedNames) init.interceptedNames = map();
+ var libraries = init.libraries;
+ var mangledNames = init.mangledNames;
+ var mangledGlobalNames = init.mangledGlobalNames;
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ var length = reflectionData.length;
+ for (var i = 0; i < length; i++) {
+ var data = reflectionData[i];
+ var name = data[0];
+ var uri = data[1];
+ var metadata = data[2];
+ var globalObject = data[3];
+ var descriptor = data[4];
+ var isRoot = !!data[5];
+ var fields = descriptor && descriptor["^"];
+ var classes = [];
+ var functions = [];
+ processStatics(descriptor);
+ libraries.push([name, uri, classes, functions, metadata, fields, isRoot,
+ globalObject]);
+ }
+})
+([
+["_foreign_helper", "dart:_foreign_helper", , H, {
+ "^": "",
+ JS_CONST: {
+ "^": "Object;code"
+ }
+}],
+["_interceptors", "dart:_interceptors", , J, {
+ "^": "",
+ getInterceptor: function(object) {
+ return void 0;
+ },
+ makeDispatchRecord: function(interceptor, proto, extension, indexability) {
+ return {i: interceptor, p: proto, e: extension, x: indexability};
+ },
+ getNativeInterceptor: function(object) {
+ var record, proto, objectProto, interceptor;
+ record = object[init.dispatchPropertyName];
+ if (record == null)
+ if ($.initNativeDispatchFlag == null) {
+ H.initNativeDispatch();
+ record = object[init.dispatchPropertyName];
+ }
+ if (record != null) {
+ proto = record.p;
+ if (false === proto)
+ return record.i;
+ if (true === proto)
+ return object;
+ objectProto = Object.getPrototypeOf(object);
+ if (proto === objectProto)
+ return record.i;
+ if (record.e === objectProto)
+ throw H.wrapException(P.UnimplementedError$("Return interceptor for " + H.S(proto(object, record))));
+ }
+ interceptor = H.lookupAndCacheInterceptor(object);
+ if (interceptor == null) {
+ proto = Object.getPrototypeOf(object);
+ if (proto == null || proto === Object.prototype)
+ return C.PlainJavaScriptObject_methods;
+ else
+ return C.UnknownJavaScriptObject_methods;
+ }
+ return interceptor;
+ },
+ Interceptor: {
+ "^": "Object;",
+ $eq: function(receiver, other) {
+ return receiver === other;
+ },
+ get$hashCode: function(receiver) {
+ return H.Primitives_objectHashCode(receiver);
+ },
+ toString$0: function(receiver) {
+ return H.Primitives_objectToString(receiver);
+ },
+ "%": "DOMError|DOMImplementation|FileError|MediaError|MediaKeyError|Navigator|NavigatorUserMediaError|PositionError|SQLError|SVGAnimatedNumberList"
+ },
+ JSBool: {
+ "^": "bool/Interceptor;",
+ toString$0: function(receiver) {
+ return String(receiver);
+ },
+ get$hashCode: function(receiver) {
+ return receiver ? 519018 : 218159;
+ },
+ $isbool: true
+ },
+ JSNull: {
+ "^": "Null/Interceptor;",
+ $eq: function(receiver, other) {
+ return null == other;
+ },
+ toString$0: function(receiver) {
+ return "null";
+ },
+ get$hashCode: function(receiver) {
+ return 0;
+ }
+ },
+ JavaScriptObject: {
+ "^": "Interceptor;",
+ get$hashCode: function(_) {
+ return 0;
+ }
+ },
+ PlainJavaScriptObject: {
+ "^": "JavaScriptObject;"
+ },
+ UnknownJavaScriptObject: {
+ "^": "JavaScriptObject;"
+ },
+ JSArray: {
+ "^": "List/Interceptor;",
+ remove$1: function(receiver, element) {
+ var i;
+ if (!!receiver.fixed$length)
+ H.throwExpression(P.UnsupportedError$("remove"));
+ for (i = 0; i < receiver.length; ++i)
+ if (J.$eq(receiver[i], element)) {
+ receiver.splice(i, 1);
+ return true;
+ }
+ return false;
+ },
+ forEach$1: function(receiver, f) {
+ return H.IterableMixinWorkaround_forEach(receiver, f);
+ },
+ elementAt$1: function(receiver, index) {
+ if (index < 0 || index >= receiver.length)
+ return H.ioore(receiver, index);
+ return receiver[index];
+ },
+ contains$1: function(receiver, other) {
+ var i;
+ for (i = 0; i < receiver.length; ++i)
+ if (J.$eq(receiver[i], other))
+ return true;
+ return false;
+ },
+ get$isEmpty: function(receiver) {
+ return receiver.length === 0;
+ },
+ toString$0: function(receiver) {
+ return H.IterableMixinWorkaround_toStringIterable(receiver, "[", "]");
+ },
+ toList$1$growable: function(receiver, growable) {
+ var t1;
+ if (growable)
+ return H.setRuntimeTypeInfo(receiver.slice(), [H.getTypeArgumentByIndex(receiver, 0)]);
+ else {
+ t1 = H.setRuntimeTypeInfo(receiver.slice(), [H.getTypeArgumentByIndex(receiver, 0)]);
+ t1.fixed$length = init;
+ return t1;
+ }
+ },
+ toList$0: function($receiver) {
+ return this.toList$1$growable($receiver, true);
+ },
+ get$iterator: function(receiver) {
+ return new H.ListIterator(receiver, receiver.length, 0, null);
+ },
+ get$hashCode: function(receiver) {
+ return H.Primitives_objectHashCode(receiver);
+ },
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ set$length: function(receiver, newLength) {
+ if (newLength < 0)
+ throw H.wrapException(P.RangeError$value(newLength));
+ if (!!receiver.fixed$length)
+ H.throwExpression(P.UnsupportedError$("set length"));
+ receiver.length = newLength;
+ },
+ $index: function(receiver, index) {
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ throw H.wrapException(new P.ArgumentError(index));
+ if (index >= receiver.length || index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ if (!!receiver.immutable$list)
+ H.throwExpression(P.UnsupportedError$("indexed set"));
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ throw H.wrapException(new P.ArgumentError(index));
+ if (index >= receiver.length || index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ receiver[index] = value;
+ },
+ $isList: true,
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true,
+ static: {JSArray_JSArray$fixed: function($length, $E) {
+ var t1;
+ if (typeof $length !== "number" || Math.floor($length) !== $length || $length < 0)
+ throw H.wrapException(P.ArgumentError$("Length must be a non-negative integer: " + H.S($length)));
+ t1 = H.setRuntimeTypeInfo(new Array($length), [$E]);
+ t1.fixed$length = init;
+ return t1;
+ }}
+ },
+ JSNumber: {
+ "^": "num/Interceptor;",
+ get$isFinite: function(receiver) {
+ return isFinite(receiver);
+ },
+ remainder$1: function(receiver, b) {
+ return receiver % b;
+ },
+ toInt$0: function(receiver) {
+ var t1;
+ if (receiver >= -2147483648 && receiver <= 2147483647)
+ return receiver | 0;
+ if (isFinite(receiver)) {
+ t1 = receiver < 0 ? Math.ceil(receiver) : Math.floor(receiver);
+ return t1 + 0;
+ }
+ throw H.wrapException(P.UnsupportedError$('' + receiver));
+ },
+ round$0: function(receiver) {
+ return this.toInt$0(this.roundToDouble$0(receiver));
+ },
+ roundToDouble$0: function(receiver) {
+ if (receiver < 0)
+ return -Math.round(-receiver);
+ else
+ return Math.round(receiver);
+ },
+ toStringAsFixed$1: function(receiver, fractionDigits) {
+ var result, t1;
+ if (fractionDigits > 20)
+ throw H.wrapException(P.RangeError$(fractionDigits));
+ result = receiver.toFixed(fractionDigits);
+ if (receiver === 0)
+ t1 = 1 / receiver < 0;
+ else
+ t1 = false;
+ if (t1)
+ return "-" + result;
+ return result;
+ },
+ toString$0: function(receiver) {
+ if (receiver === 0 && 1 / receiver < 0)
+ return "-0.0";
+ else
+ return "" + receiver;
+ },
+ get$hashCode: function(receiver) {
+ return receiver & 0x1FFFFFFF;
+ },
+ $add: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver + other;
+ },
+ $sub: function(receiver, other) {
+ return receiver - other;
+ },
+ $mul: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver * other;
+ },
+ _tdivFast$1: function(receiver, other) {
+ return (receiver | 0) === receiver ? receiver / other | 0 : this.toInt$0(receiver / other);
+ },
+ _shrOtherPositive$1: function(receiver, other) {
+ var t1;
+ if (receiver > 0)
+ t1 = other > 31 ? 0 : receiver >>> other;
+ else {
+ t1 = other > 31 ? 31 : other;
+ t1 = receiver >> t1 >>> 0;
+ }
+ return t1;
+ },
+ $lt: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(P.ArgumentError$(other));
+ return receiver < other;
+ },
+ $le: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver <= other;
+ },
+ $ge: function(receiver, other) {
+ if (typeof other !== "number")
+ throw H.wrapException(P.ArgumentError$(other));
+ return receiver >= other;
+ },
+ $isnum: true,
+ static: {"^": "JSNumber__MIN_INT32,JSNumber__MAX_INT32"}
+ },
+ JSInt: {
+ "^": "int/JSNumber;",
+ $isnum: true,
+ $isint: true
+ },
+ JSDouble: {
+ "^": "double/JSNumber;",
+ $isnum: true
+ },
+ JSString: {
+ "^": "String/Interceptor;",
+ codeUnitAt$1: function(receiver, index) {
+ if (index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ if (index >= receiver.length)
+ throw H.wrapException(P.RangeError$value(index));
+ return receiver.charCodeAt(index);
+ },
+ $add: function(receiver, other) {
+ if (typeof other !== "string")
+ throw H.wrapException(new P.ArgumentError(other));
+ return receiver + other;
+ },
+ startsWith$2: function(receiver, pattern, index) {
+ var endIndex;
+ if (index > receiver.length)
+ throw H.wrapException(P.RangeError$range(index, 0, receiver.length));
+ endIndex = index + pattern.length;
+ if (endIndex > receiver.length)
+ return false;
+ return pattern === receiver.substring(index, endIndex);
+ },
+ startsWith$1: function($receiver, pattern) {
+ return this.startsWith$2($receiver, pattern, 0);
+ },
+ substring$2: function(receiver, startIndex, endIndex) {
+ if (endIndex == null)
+ endIndex = receiver.length;
+ if (typeof endIndex !== "number" || Math.floor(endIndex) !== endIndex)
+ H.throwExpression(P.ArgumentError$(endIndex));
+ if (startIndex < 0)
+ throw H.wrapException(P.RangeError$value(startIndex));
+ if (typeof endIndex !== "number")
+ return H.iae(endIndex);
+ if (startIndex > endIndex)
+ throw H.wrapException(P.RangeError$value(startIndex));
+ if (endIndex > receiver.length)
+ throw H.wrapException(P.RangeError$value(endIndex));
+ return receiver.substring(startIndex, endIndex);
+ },
+ substring$1: function($receiver, startIndex) {
+ return this.substring$2($receiver, startIndex, null);
+ },
+ toLowerCase$0: function(receiver) {
+ return receiver.toLowerCase();
+ },
+ trim$0: function(receiver) {
+ var result, endIndex, startIndex, t1, endIndex0;
+ result = receiver.trim();
+ endIndex = result.length;
+ if (endIndex === 0)
+ return result;
+ if (this.codeUnitAt$1(result, 0) === 133) {
+ startIndex = J.JSString__skipLeadingWhitespace(result, 1);
+ if (startIndex === endIndex)
+ return "";
+ } else
+ startIndex = 0;
+ t1 = endIndex - 1;
+ endIndex0 = this.codeUnitAt$1(result, t1) === 133 ? J.JSString__skipTrailingWhitespace(result, t1) : endIndex;
+ if (startIndex === 0 && endIndex0 === endIndex)
+ return result;
+ return result.substring(startIndex, endIndex0);
+ },
+ $mul: function(receiver, times) {
+ var s, result;
+ if (0 >= times)
+ return "";
+ if (times === 1 || receiver.length === 0)
+ return receiver;
+ if (times !== times >>> 0)
+ throw H.wrapException(C.C_OutOfMemoryError);
+ for (s = receiver, result = ""; true;) {
+ if ((times & 1) === 1)
+ result = s + result;
+ times = times >>> 1;
+ if (times === 0)
+ break;
+ s += s;
+ }
+ return result;
+ },
+ get$isEmpty: function(receiver) {
+ return receiver.length === 0;
+ },
+ toString$0: function(receiver) {
+ return receiver;
+ },
+ get$hashCode: function(receiver) {
+ var t1, hash, i;
+ for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {
+ hash = 536870911 & hash + receiver.charCodeAt(i);
+ hash = 536870911 & hash + ((524287 & hash) << 10 >>> 0);
+ hash ^= hash >> 6;
+ }
+ hash = 536870911 & hash + ((67108863 & hash) << 3 >>> 0);
+ hash ^= hash >> 11;
+ return 536870911 & hash + ((16383 & hash) << 15 >>> 0);
+ },
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ throw H.wrapException(new P.ArgumentError(index));
+ if (index >= receiver.length || index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ return receiver[index];
+ },
+ $isString: true,
+ static: {JSString__isWhitespace: function(codeUnit) {
+ if (codeUnit < 256)
+ switch (codeUnit) {
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 32:
+ case 133:
+ case 160:
+ return true;
+ default:
+ return false;
+ }
+ switch (codeUnit) {
+ case 5760:
+ case 6158:
+ case 8192:
+ case 8193:
+ case 8194:
+ case 8195:
+ case 8196:
+ case 8197:
+ case 8198:
+ case 8199:
+ case 8200:
+ case 8201:
+ case 8202:
+ case 8232:
+ case 8233:
+ case 8239:
+ case 8287:
+ case 12288:
+ case 65279:
+ return true;
+ default:
+ return false;
+ }
+ }, JSString__skipLeadingWhitespace: function(string, index) {
+ var t1, codeUnit;
+ for (t1 = string.length; index < t1;) {
+ if (index >= t1)
+ H.throwExpression(P.RangeError$value(index));
+ codeUnit = string.charCodeAt(index);
+ if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
+ break;
+ ++index;
+ }
+ return index;
+ }, JSString__skipTrailingWhitespace: function(string, index) {
+ var t1, index0, codeUnit;
+ for (t1 = string.length; index > 0; index = index0) {
+ index0 = index - 1;
+ if (index0 >= t1)
+ H.throwExpression(P.RangeError$value(index0));
+ codeUnit = string.charCodeAt(index0);
+ if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
+ break;
+ }
+ return index;
+ }}
+ }
+}],
+["_isolate_helper", "dart:_isolate_helper", , H, {
+ "^": "",
+ _callInIsolate: function(isolate, $function) {
+ var result = isolate.eval$1($function);
+ init.globalState.topEventLoop.run$0();
+ return result;
+ },
+ leaveJsAsync: function() {
+ var t1 = init.globalState.topEventLoop;
+ t1._activeJsAsyncCount = t1._activeJsAsyncCount - 1;
+ },
+ startRootIsolate: function(entry, args) {
+ var t1, t2, t3, t4, t5, rootContext;
+ t1 = {};
+ t1.args_0 = args;
+ args = args;
+ t1.args_0 = args;
+ if (args == null) {
+ args = [];
+ t1.args_0 = args;
+ t2 = args;
+ } else
+ t2 = args;
+ if (!J.getInterceptor(t2).$isList)
+ throw H.wrapException(new P.ArgumentError("Arguments to main must be a List: " + H.S(t2)));
+ t2 = new H._Manager(0, 0, 1, null, null, null, null, null, null, null, null, null, entry);
+ t2._Manager$1(entry);
+ init.globalState = t2;
+ if (init.globalState.isWorker === true)
+ return;
+ t2 = init.globalState;
+ t3 = t2.nextIsolateId;
+ t2.nextIsolateId = t3 + 1;
+ t2 = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, H.RawReceivePortImpl);
+ t4 = P.LinkedHashSet_LinkedHashSet(null, null, null, J.JSInt);
+ t5 = new H.RawReceivePortImpl(0, null, false);
+ rootContext = new H._IsolateContext(t3, t2, t4, new Isolate(), t5, P.Capability_Capability(), P.Capability_Capability(), false, [], P.LinkedHashSet_LinkedHashSet(null, null, null, null), null, false);
+ t4.add$1(0, 0);
+ rootContext._addRegistration$2(0, t5);
+ init.globalState.rootContext = rootContext;
+ init.globalState.currentContext = rootContext;
+ t2 = H.getDynamicRuntimeType();
+ t3 = H.buildFunctionType(t2, [t2])._isTest$1(entry);
+ if (t3)
+ rootContext.eval$1(new H.startRootIsolate_closure(t1, entry));
+ else {
+ t2 = H.buildFunctionType(t2, [t2, t2])._isTest$1(entry);
+ if (t2)
+ rootContext.eval$1(new H.startRootIsolate_closure0(t1, entry));
+ else
+ rootContext.eval$1(entry);
+ }
+ init.globalState.topEventLoop.run$0();
+ },
+ IsolateNatives_computeThisScript: function() {
+ var currentScript = init.currentScript;
+ if (currentScript != null)
+ return String(currentScript.src);
+ if (typeof version == "function" && typeof os == "object" && "system" in os)
+ return H.IsolateNatives_computeThisScriptFromTrace();
+ if (typeof version == "function" && typeof system == "function")
+ return thisFilename();
+ if (init.globalState.isWorker === true)
+ return H.IsolateNatives_computeThisScriptFromTrace();
+ return;
+ },
+ IsolateNatives_computeThisScriptFromTrace: function() {
+ var stack, matches;
+ stack = new Error().stack;
+ if (stack == null) {
+ stack = (function() {try { throw new Error() } catch(e) { return e.stack }})();
+ if (stack == null)
+ throw H.wrapException(P.UnsupportedError$("No stack trace"));
+ }
+ matches = stack.match(new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "m"));
+ if (matches != null)
+ return matches[1];
+ matches = stack.match(new RegExp("^[^@]*@(.*):[0-9]*$", "m"));
+ if (matches != null)
+ return matches[1];
+ throw H.wrapException(P.UnsupportedError$("Cannot extract URI from \"" + H.S(stack) + "\""));
+ },
+ IsolateNatives__processWorkerMessage: function(sender, e) {
+ var msg, t1, functionName, entryPoint, args, message, isSpawnUri, startPaused, replyTo, t2, t3, t4, context, uri, t5, t6, worker, t7, workerId;
+ msg = H._deserializeMessage(e.data);
+ t1 = J.getInterceptor$asx(msg);
+ switch (t1.$index(msg, "command")) {
+ case "start":
+ init.globalState.currentManagerId = t1.$index(msg, "id");
+ functionName = t1.$index(msg, "functionName");
+ entryPoint = functionName == null ? init.globalState.entry : init.globalFunctions[functionName]();
+ args = t1.$index(msg, "args");
+ message = H._deserializeMessage(t1.$index(msg, "msg"));
+ isSpawnUri = t1.$index(msg, "isSpawnUri");
+ startPaused = t1.$index(msg, "startPaused");
+ replyTo = H._deserializeMessage(t1.$index(msg, "replyTo"));
+ t1 = init.globalState;
+ t2 = t1.nextIsolateId;
+ t1.nextIsolateId = t2 + 1;
+ t1 = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, H.RawReceivePortImpl);
+ t3 = P.LinkedHashSet_LinkedHashSet(null, null, null, J.JSInt);
+ t4 = new H.RawReceivePortImpl(0, null, false);
+ context = new H._IsolateContext(t2, t1, t3, new Isolate(), t4, P.Capability_Capability(), P.Capability_Capability(), false, [], P.LinkedHashSet_LinkedHashSet(null, null, null, null), null, false);
+ t3.add$1(0, 0);
+ context._addRegistration$2(0, t4);
+ init.globalState.topEventLoop.events._add$1(new H._IsolateEvent(context, new H.IsolateNatives__processWorkerMessage_closure(entryPoint, args, message, isSpawnUri, startPaused, replyTo), "worker-start"));
+ init.globalState.currentContext = context;
+ init.globalState.topEventLoop.run$0();
+ break;
+ case "spawn-worker":
+ t2 = t1.$index(msg, "functionName");
+ uri = t1.$index(msg, "uri");
+ t3 = t1.$index(msg, "args");
+ t4 = t1.$index(msg, "msg");
+ t5 = t1.$index(msg, "isSpawnUri");
+ t6 = t1.$index(msg, "startPaused");
+ t1 = t1.$index(msg, "replyPort");
+ if (uri == null)
+ uri = $.get$IsolateNatives_thisScript();
+ worker = new Worker(uri);
+ worker.onmessage = function(e) { H.IsolateNatives__processWorkerMessage(worker, e); };
+ t7 = init.globalState;
+ workerId = t7.nextManagerId;
+ t7.nextManagerId = workerId + 1;
+ $.get$IsolateNatives_workerIds().$indexSet(0, worker, workerId);
+ init.globalState.managers.$indexSet(0, workerId, worker);
+ worker.postMessage(H._serializeMessage(H.fillLiteralMap(["command", "start", "id", workerId, "replyTo", H._serializeMessage(t1), "args", t3, "msg", H._serializeMessage(t4), "isSpawnUri", t5, "startPaused", t6, "functionName", t2], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null))));
+ break;
+ case "message":
+ if (t1.$index(msg, "port") != null)
+ J.send$1$x(t1.$index(msg, "port"), t1.$index(msg, "msg"));
+ init.globalState.topEventLoop.run$0();
+ break;
+ case "close":
+ init.globalState.managers.remove$1(0, $.get$IsolateNatives_workerIds().$index(0, sender));
+ sender.terminate();
+ init.globalState.topEventLoop.run$0();
+ break;
+ case "log":
+ H.IsolateNatives__log(t1.$index(msg, "msg"));
+ break;
+ case "print":
+ if (init.globalState.isWorker === true) {
+ t1 = init.globalState.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "print", "msg", msg], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ } else
+ P.print(t1.$index(msg, "msg"));
+ break;
+ case "error":
+ throw H.wrapException(t1.$index(msg, "msg"));
+ }
+ },
+ IsolateNatives__log: function(msg) {
+ var trace, t1, t2, exception;
+ if (init.globalState.isWorker === true) {
+ t1 = init.globalState.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "log", "msg", msg], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ } else
+ try {
+ $.get$globalThis().console.log(msg);
+ } catch (exception) {
+ H.unwrapException(exception);
+ trace = new H._StackTrace(exception, null);
+ throw H.wrapException(P.Exception_Exception(trace));
+ }
+
+ },
+ IsolateNatives__startIsolate: function(topLevel, args, message, isSpawnUri, startPaused, replyTo) {
+ var context, t1, t2, t3;
+ context = init.globalState.currentContext;
+ t1 = context.id;
+ $.Primitives_mirrorFunctionCacheName = $.Primitives_mirrorFunctionCacheName + ("_" + t1);
+ $.Primitives_mirrorInvokeCacheName = $.Primitives_mirrorInvokeCacheName + ("_" + t1);
+ t1 = context.controlPort;
+ t2 = init.globalState.currentContext.id;
+ t3 = context.pauseCapability;
+ J.send$1$x(replyTo, ["spawned", new H._NativeJsSendPort(t1, t2), t3, context.terminateCapability]);
+ t2 = new H.IsolateNatives__startIsolate_runStartFunction(topLevel, args, message, isSpawnUri);
+ if (startPaused === true) {
+ context.addPause$2(t3, t3);
+ init.globalState.topEventLoop.events._add$1(new H._IsolateEvent(context, t2, "start isolate"));
+ } else
+ t2.call$0();
+ },
+ _serializeMessage: function(message) {
+ var t1;
+ if (init.globalState.supportsWorkers === true) {
+ t1 = new H._JsSerializer(0, new H._MessageTraverserVisitedMap());
+ t1._visited = new H._JsVisitedMap(null);
+ return t1.traverse$1(message);
+ } else {
+ t1 = new H._JsCopier(new H._MessageTraverserVisitedMap());
+ t1._visited = new H._JsVisitedMap(null);
+ return t1.traverse$1(message);
+ }
+ },
+ _deserializeMessage: function(message) {
+ if (init.globalState.supportsWorkers === true)
+ return new H._JsDeserializer(null).deserialize$1(message);
+ else
+ return message;
+ },
+ _MessageTraverser_isPrimitive: function(x) {
+ return x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean";
+ },
+ _Deserializer_isPrimitive: function(x) {
+ return x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean";
+ },
+ startRootIsolate_closure: {
+ "^": "Closure:9;box_0,entry_1",
+ call$0: function() {
+ this.entry_1.call$1(this.box_0.args_0);
+ }
+ },
+ startRootIsolate_closure0: {
+ "^": "Closure:9;box_0,entry_2",
+ call$0: function() {
+ this.entry_2.call$2(this.box_0.args_0, null);
+ }
+ },
+ _Manager: {
+ "^": "Object;nextIsolateId,currentManagerId,nextManagerId,currentContext,rootContext,topEventLoop,fromCommandLine,isWorker,supportsWorkers,isolates,mainManager,managers,entry",
+ _Manager$1: function(entry) {
+ var t1, t2, t3, $function;
+ t1 = $.get$globalWindow() == null;
+ t2 = $.get$globalWorker();
+ t3 = t1 && $.get$globalPostMessageDefined() === true;
+ this.isWorker = t3;
+ if (!t3)
+ t2 = t2 != null && $.get$IsolateNatives_thisScript() != null;
+ else
+ t2 = true;
+ this.supportsWorkers = t2;
+ this.fromCommandLine = t1 && !t3;
+ t2 = H._IsolateEvent;
+ t3 = H.setRuntimeTypeInfo(new P.ListQueue(null, 0, 0, 0), [t2]);
+ t3.ListQueue$1(null, t2);
+ this.topEventLoop = new H._EventLoop(t3, 0);
+ this.isolates = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, H._IsolateContext);
+ this.managers = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSInt, null);
+ if (this.isWorker === true) {
+ t1 = new H._MainManagerStub();
+ this.mainManager = t1;
+ $function = function (e) { H.IsolateNatives__processWorkerMessage(t1, e); };
+ $.get$globalThis().onmessage = $function;
+ $.get$globalThis().dartPrint = function (object) {};
+ }
+ }
+ },
+ _IsolateContext: {
+ "^": "Object;id,ports,weakPorts,isolateStatics<,controlPort<,pauseCapability,terminateCapability,isPaused,delayedEvents,pauseTokens,doneHandlers,errorsAreFatal",
+ addPause$2: function(authentification, resume) {
+ if (!this.pauseCapability.$eq(0, authentification))
+ return;
+ if (this.pauseTokens.add$1(0, resume) && !this.isPaused)
+ this.isPaused = true;
+ this._updateGlobalState$0();
+ },
+ removePause$1: function(resume) {
+ var t1, t2, $event, t3, t4, t5;
+ if (!this.isPaused)
+ return;
+ t1 = this.pauseTokens;
+ t1.remove$1(0, resume);
+ if (t1._collection$_length === 0) {
+ for (t1 = this.delayedEvents; t2 = t1.length, t2 !== 0;) {
+ if (0 >= t2)
+ return H.ioore(t1, 0);
+ $event = t1.pop();
+ t2 = init.globalState.topEventLoop.events;
+ t3 = t2._head;
+ t4 = t2._table;
+ t5 = t4.length;
+ t3 = (t3 - 1 & t5 - 1) >>> 0;
+ t2._head = t3;
+ if (t3 < 0 || t3 >= t5)
+ return H.ioore(t4, t3);
+ t4[t3] = $event;
+ if (t3 === t2._tail)
+ t2._grow$0();
+ t2._modificationCount = t2._modificationCount + 1;
+ }
+ this.isPaused = false;
+ }
+ this._updateGlobalState$0();
+ },
+ addDoneListener$1: function(responsePort) {
+ var t1 = this.doneHandlers;
+ if (t1 == null) {
+ t1 = [];
+ this.doneHandlers = t1;
+ }
+ if (J.contains$1$asx(t1, responsePort))
+ return;
+ this.doneHandlers.push(responsePort);
+ },
+ removeDoneListener$1: function(responsePort) {
+ var t1 = this.doneHandlers;
+ if (t1 == null)
+ return;
+ J.remove$1$ax(t1, responsePort);
+ },
+ setErrorsFatal$2: function(authentification, errorsAreFatal) {
+ if (!this.terminateCapability.$eq(0, authentification))
+ return;
+ this.errorsAreFatal = errorsAreFatal;
+ },
+ handlePing$2: function(responsePort, pingType) {
+ if (J.$eq(pingType, 2))
+ init.globalState.topEventLoop.events._add$1(new H._IsolateEvent(this, new H._IsolateContext_handlePing_closure(responsePort), "ping"));
+ else
+ J.send$1$x(responsePort, null);
+ },
+ eval$1: function(code) {
+ var old, result;
+ old = init.globalState.currentContext;
+ init.globalState.currentContext = this;
+ $ = this.isolateStatics;
+ result = null;
+ try {
+ result = code.call$0();
+ } finally {
+ init.globalState.currentContext = old;
+ if (old != null)
+ $ = old.get$isolateStatics();
+ }
+ return result;
+ },
+ lookup$1: function(portId) {
+ return this.ports.$index(0, portId);
+ },
+ _addRegistration$2: function(portId, port) {
+ var t1 = this.ports;
+ if (t1.containsKey$1(0, portId))
+ throw H.wrapException(P.Exception_Exception("Registry: ports must be registered only once."));
+ t1.$indexSet(0, portId, port);
+ },
+ _updateGlobalState$0: function() {
+ if (this.ports._collection$_length - this.weakPorts._collection$_length > 0 || this.isPaused)
+ init.globalState.isolates.$indexSet(0, this.id, this);
+ else
+ this._shutdown$0();
+ },
+ _shutdown$0: function() {
+ init.globalState.isolates.remove$1(0, this.id);
+ var t1 = this.doneHandlers;
+ if (t1 != null)
+ for (t1 = new H.ListIterator(t1, t1.length, 0, null); t1.moveNext$0();)
+ J.send$1$x(t1._current, null);
+ }
+ },
+ _IsolateContext_handlePing_closure: {
+ "^": "Closure:9;responsePort_0",
+ call$0: function() {
+ J.send$1$x(this.responsePort_0, null);
+ }
+ },
+ _EventLoop: {
+ "^": "Object;events,_activeJsAsyncCount",
+ dequeue$0: function() {
+ var t1, t2, t3, t4, result;
+ t1 = this.events;
+ t2 = t1._head;
+ if (t2 === t1._tail)
+ return;
+ t1._modificationCount = t1._modificationCount + 1;
+ t3 = t1._table;
+ t4 = t3.length;
+ if (t2 >= t4)
+ return H.ioore(t3, t2);
+ result = t3[t2];
+ t3[t2] = null;
+ t1._head = (t2 + 1 & t4 - 1) >>> 0;
+ return result;
+ },
+ runIteration$0: function() {
+ var $event, t1, t2;
+ $event = this.dequeue$0();
+ if ($event == null) {
+ if (init.globalState.rootContext != null && init.globalState.isolates.containsKey$1(0, init.globalState.rootContext.id) && init.globalState.fromCommandLine === true && init.globalState.rootContext.ports._collection$_length === 0)
+ H.throwExpression(P.Exception_Exception("Program exited with open ReceivePorts."));
+ t1 = init.globalState;
+ if (t1.isWorker === true && t1.isolates._collection$_length === 0 && t1.topEventLoop._activeJsAsyncCount === 0) {
+ t1 = t1.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "close"], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ }
+ return false;
+ }
+ $event.process$0();
+ return true;
+ },
+ _runHelper$0: function() {
+ if ($.get$globalWindow() != null)
+ new H._EventLoop__runHelper_next(this).call$0();
+ else
+ for (; this.runIteration$0();)
+ ;
+ },
+ run$0: function() {
+ var e, trace, exception, t1, t2;
+ if (init.globalState.isWorker !== true)
+ this._runHelper$0();
+ else
+ try {
+ this._runHelper$0();
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ trace = new H._StackTrace(exception, null);
+ t1 = init.globalState.mainManager;
+ t2 = H._serializeMessage(H.fillLiteralMap(["command", "error", "msg", H.S(e) + "\n" + H.S(trace)], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ t1.toString;
+ self.postMessage(t2);
+ }
+
+ }
+ },
+ _EventLoop__runHelper_next: {
+ "^": "Closure:1;this_0",
+ call$0: function() {
+ if (!this.this_0.runIteration$0())
+ return;
+ P.Timer_Timer(C.Duration_0, this);
+ }
+ },
+ _IsolateEvent: {
+ "^": "Object;isolate,fn,message",
+ process$0: function() {
+ var t1 = this.isolate;
+ if (t1.isPaused) {
+ t1.delayedEvents.push(this);
+ return;
+ }
+ t1.eval$1(this.fn);
+ }
+ },
+ _MainManagerStub: {
+ "^": "Object;"
+ },
+ IsolateNatives__processWorkerMessage_closure: {
+ "^": "Closure:9;entryPoint_0,args_1,message_2,isSpawnUri_3,startPaused_4,replyTo_5",
+ call$0: function() {
+ H.IsolateNatives__startIsolate(this.entryPoint_0, this.args_1, this.message_2, this.isSpawnUri_3, this.startPaused_4, this.replyTo_5);
+ }
+ },
+ IsolateNatives__startIsolate_runStartFunction: {
+ "^": "Closure:1;topLevel_0,args_1,message_2,isSpawnUri_3",
+ call$0: function() {
+ var t1, t2, t3;
+ if (this.isSpawnUri_3 !== true)
+ this.topLevel_0.call$1(this.message_2);
+ else {
+ t1 = this.topLevel_0;
+ t2 = H.getDynamicRuntimeType();
+ t3 = H.buildFunctionType(t2, [t2, t2])._isTest$1(t1);
+ if (t3)
+ t1.call$2(this.args_1, this.message_2);
+ else {
+ t2 = H.buildFunctionType(t2, [t2])._isTest$1(t1);
+ if (t2)
+ t1.call$1(this.args_1);
+ else
+ t1.call$0();
+ }
+ }
+ }
+ },
+ _BaseSendPort: {
+ "^": "Object;",
+ $isSendPort: true,
+ $isCapability: true
+ },
+ _NativeJsSendPort: {
+ "^": "_BaseSendPort;_receivePort,_isolateId",
+ send$1: function(_, message) {
+ var t1, t2, isolate, t3, shouldSerialize, msg;
+ t1 = {};
+ t2 = this._isolateId;
+ isolate = init.globalState.isolates.$index(0, t2);
+ if (isolate == null)
+ return;
+ t3 = this._receivePort;
+ if (t3.get$_isClosed())
+ return;
+ shouldSerialize = init.globalState.currentContext != null && init.globalState.currentContext.id !== t2;
+ t1.msg_0 = message;
+ if (shouldSerialize) {
+ msg = H._serializeMessage(message);
+ t1.msg_0 = msg;
+ t2 = msg;
+ } else
+ t2 = message;
+ if (isolate.get$controlPort() === t3) {
+ t1 = J.getInterceptor$asx(t2);
+ switch (t1.$index(t2, 0)) {
+ case "pause":
+ isolate.addPause$2(t1.$index(t2, 1), t1.$index(t2, 2));
+ break;
+ case "resume":
+ isolate.removePause$1(t1.$index(t2, 1));
+ break;
+ case "add-ondone":
+ isolate.addDoneListener$1(t1.$index(t2, 1));
+ break;
+ case "remove-ondone":
+ isolate.removeDoneListener$1(t1.$index(t2, 1));
+ break;
+ case "set-errors-fatal":
+ isolate.setErrorsFatal$2(t1.$index(t2, 1), t1.$index(t2, 2));
+ break;
+ case "ping":
+ isolate.handlePing$2(t1.$index(t2, 1), t1.$index(t2, 2));
+ break;
+ default:
+ P.print("UNKNOWN MESSAGE: " + H.S(t2));
+ }
+ return;
+ }
+ t2 = init.globalState.topEventLoop;
+ t3 = "receive " + H.S(message);
+ t2.events._add$1(new H._IsolateEvent(isolate, new H._NativeJsSendPort_send_closure(t1, this, shouldSerialize), t3));
+ },
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ return !!J.getInterceptor(other).$is_NativeJsSendPort && J.$eq(this._receivePort, other._receivePort);
+ },
+ get$hashCode: function(_) {
+ return this._receivePort.get$_id();
+ },
+ $is_NativeJsSendPort: true,
+ $isSendPort: true,
+ $isCapability: true
+ },
+ _NativeJsSendPort_send_closure: {
+ "^": "Closure:9;box_0,this_1,shouldSerialize_2",
+ call$0: function() {
+ var t1, t2;
+ t1 = this.this_1._receivePort;
+ if (!t1.get$_isClosed()) {
+ if (this.shouldSerialize_2) {
+ t2 = this.box_0;
+ t2.msg_0 = H._deserializeMessage(t2.msg_0);
+ }
+ t1.__isolate_helper$_add$1(this.box_0.msg_0);
+ }
+ }
+ },
+ _WorkerSendPort: {
+ "^": "_BaseSendPort;_workerId,_receivePortId,_isolateId",
+ send$1: function(_, message) {
+ var workerMessage, manager;
+ workerMessage = H._serializeMessage(H.fillLiteralMap(["command", "message", "port", this, "msg", message], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null)));
+ if (init.globalState.isWorker === true) {
+ init.globalState.mainManager.toString;
+ self.postMessage(workerMessage);
+ } else {
+ manager = init.globalState.managers.$index(0, this._workerId);
+ if (manager != null)
+ manager.postMessage(workerMessage);
+ }
+ },
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ return !!J.getInterceptor(other).$is_WorkerSendPort && J.$eq(this._workerId, other._workerId) && J.$eq(this._isolateId, other._isolateId) && J.$eq(this._receivePortId, other._receivePortId);
+ },
+ get$hashCode: function(_) {
+ var t1, t2, t3;
+ t1 = this._workerId;
+ if (typeof t1 !== "number")
+ return t1.$shl();
+ t2 = this._isolateId;
+ if (typeof t2 !== "number")
+ return t2.$shl();
+ t3 = this._receivePortId;
+ if (typeof t3 !== "number")
+ return H.iae(t3);
+ return (t1 << 16 ^ t2 << 8 ^ t3) >>> 0;
+ },
+ $is_WorkerSendPort: true,
+ $isSendPort: true,
+ $isCapability: true
+ },
+ RawReceivePortImpl: {
+ "^": "Object;_id<,_handler,_isClosed<",
+ _handler$1: function(arg0) {
+ return this._handler.call$1(arg0);
+ },
+ __isolate_helper$_add$1: function(dataEvent) {
+ if (this._isClosed)
+ return;
+ this._handler$1(dataEvent);
+ },
+ static: {"^": "RawReceivePortImpl__nextFreeId"}
+ },
+ _JsSerializer: {
+ "^": "_Serializer;_nextFreeRefId,_visited",
+ visitSendPort$1: function(x) {
+ if (!!x.$is_NativeJsSendPort)
+ return ["sendport", init.globalState.currentManagerId, x._isolateId, x._receivePort.get$_id()];
+ if (!!x.$is_WorkerSendPort)
+ return ["sendport", x._workerId, x._isolateId, x._receivePortId];
+ throw H.wrapException("Illegal underlying port " + H.S(x));
+ },
+ visitCapability$1: function(x) {
+ if (!!x.$isCapabilityImpl)
+ return ["capability", x._id];
+ throw H.wrapException("Capability not serializable: " + H.S(x));
+ }
+ },
+ _JsCopier: {
+ "^": "_Copier;_visited",
+ visitSendPort$1: function(x) {
+ if (!!x.$is_NativeJsSendPort)
+ return new H._NativeJsSendPort(x._receivePort, x._isolateId);
+ if (!!x.$is_WorkerSendPort)
+ return new H._WorkerSendPort(x._workerId, x._receivePortId, x._isolateId);
+ throw H.wrapException("Illegal underlying port " + H.S(x));
+ },
+ visitCapability$1: function(x) {
+ if (!!x.$isCapabilityImpl)
+ return new H.CapabilityImpl(x._id);
+ throw H.wrapException("Capability not serializable: " + H.S(x));
+ }
+ },
+ _JsDeserializer: {
+ "^": "_Deserializer;_deserialized",
+ deserializeSendPort$1: function(list) {
+ var t1, managerId, isolateId, receivePortId, isolate, receivePort;
+ t1 = J.getInterceptor$asx(list);
+ managerId = t1.$index(list, 1);
+ isolateId = t1.$index(list, 2);
+ receivePortId = t1.$index(list, 3);
+ if (J.$eq(managerId, init.globalState.currentManagerId)) {
+ isolate = init.globalState.isolates.$index(0, isolateId);
+ if (isolate == null)
+ return;
+ receivePort = isolate.lookup$1(receivePortId);
+ if (receivePort == null)
+ return;
+ return new H._NativeJsSendPort(receivePort, isolateId);
+ } else
+ return new H._WorkerSendPort(managerId, receivePortId, isolateId);
+ },
+ deserializeCapability$1: function(list) {
+ return new H.CapabilityImpl(J.$index$asx(list, 1));
+ }
+ },
+ _JsVisitedMap: {
+ "^": "Object;tagged",
+ $index: function(_, object) {
+ return object.__MessageTraverser__attached_info__;
+ },
+ $indexSet: function(_, object, info) {
+ this.tagged.push(object);
+ object.__MessageTraverser__attached_info__ = info;
+ },
+ reset$0: function(_) {
+ this.tagged = [];
+ },
+ cleanup$0: function() {
+ var $length, i, t1;
+ for ($length = this.tagged.length, i = 0; i < $length; ++i) {
+ t1 = this.tagged;
+ if (i >= t1.length)
+ return H.ioore(t1, i);
+ t1[i].__MessageTraverser__attached_info__ = null;
+ }
+ this.tagged = null;
+ }
+ },
+ _MessageTraverserVisitedMap: {
+ "^": "Object;",
+ $index: function(_, object) {
+ return;
+ },
+ $indexSet: function(_, object, info) {
+ },
+ reset$0: function(_) {
+ },
+ cleanup$0: function() {
+ }
+ },
+ _MessageTraverser: {
+ "^": "Object;",
+ traverse$1: function(x) {
+ var result;
+ if (H._MessageTraverser_isPrimitive(x))
+ return this.visitPrimitive$1(x);
+ this._visited.reset$0(0);
+ result = null;
+ try {
+ result = this._dispatch$1(x);
+ } finally {
+ this._visited.cleanup$0();
+ }
+ return result;
+ },
+ _dispatch$1: function(x) {
+ var t1;
+ if (x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean")
+ return this.visitPrimitive$1(x);
+ t1 = J.getInterceptor(x);
+ if (!!t1.$isList)
+ return this.visitList$1(x);
+ if (!!t1.$isMap)
+ return this.visitMap$1(x);
+ if (!!t1.$isSendPort)
+ return this.visitSendPort$1(x);
+ if (!!t1.$isCapability)
+ return this.visitCapability$1(x);
+ return this.visitObject$1(x);
+ },
+ visitObject$1: function(x) {
+ throw H.wrapException("Message serialization: Illegal value " + H.S(x) + " passed");
+ }
+ },
+ _Copier: {
+ "^": "_MessageTraverser;",
+ visitPrimitive$1: function(x) {
+ return x;
+ },
+ visitList$1: function(list) {
+ var copy, t1, len, i;
+ copy = this._visited.$index(0, list);
+ if (copy != null)
+ return copy;
+ t1 = J.getInterceptor$asx(list);
+ len = t1.get$length(list);
+ copy = Array(len);
+ copy.fixed$length = init;
+ this._visited.$indexSet(0, list, copy);
+ for (i = 0; i < len; ++i)
+ copy[i] = this._dispatch$1(t1.$index(list, i));
+ return copy;
+ },
+ visitMap$1: function(map) {
+ var t1, copy;
+ t1 = {};
+ copy = this._visited.$index(0, map);
+ t1.copy_0 = copy;
+ if (copy != null)
+ return copy;
+ copy = P.LinkedHashMap_LinkedHashMap(null, null, null, null, null);
+ t1.copy_0 = copy;
+ this._visited.$indexSet(0, map, copy);
+ J.forEach$1$ax(map, new H._Copier_visitMap_closure(t1, this));
+ return t1.copy_0;
+ },
+ visitSendPort$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ },
+ visitCapability$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ }
+ },
+ _Copier_visitMap_closure: {
+ "^": "Closure:10;box_0,this_1",
+ call$2: function(key, val) {
+ var t1 = this.this_1;
+ J.$indexSet$ax(this.box_0.copy_0, t1._dispatch$1(key), t1._dispatch$1(val));
+ }
+ },
+ _Serializer: {
+ "^": "_MessageTraverser;",
+ visitPrimitive$1: function(x) {
+ return x;
+ },
+ visitList$1: function(list) {
+ var copyId, id;
+ copyId = this._visited.$index(0, list);
+ if (copyId != null)
+ return ["ref", copyId];
+ id = this._nextFreeRefId;
+ this._nextFreeRefId = id + 1;
+ this._visited.$indexSet(0, list, id);
+ return ["list", id, this._serializeList$1(list)];
+ },
+ visitMap$1: function(map) {
+ var copyId, id, t1;
+ copyId = this._visited.$index(0, map);
+ if (copyId != null)
+ return ["ref", copyId];
+ id = this._nextFreeRefId;
+ this._nextFreeRefId = id + 1;
+ this._visited.$indexSet(0, map, id);
+ t1 = J.getInterceptor$x(map);
+ return ["map", id, this._serializeList$1(J.toList$0$ax(t1.get$keys(map))), this._serializeList$1(J.toList$0$ax(t1.get$values(map)))];
+ },
+ _serializeList$1: function(list) {
+ var t1, len, result, i, t2;
+ t1 = J.getInterceptor$asx(list);
+ len = t1.get$length(list);
+ result = [];
+ C.JSArray_methods.set$length(result, len);
+ for (i = 0; i < len; ++i) {
+ t2 = this._dispatch$1(t1.$index(list, i));
+ if (i >= result.length)
+ return H.ioore(result, i);
+ result[i] = t2;
+ }
+ return result;
+ },
+ visitSendPort$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ },
+ visitCapability$1: function(x) {
+ return H.throwExpression(P.UnimplementedError$(null));
+ }
+ },
+ _Deserializer: {
+ "^": "Object;",
+ deserialize$1: function(x) {
+ if (H._Deserializer_isPrimitive(x))
+ return x;
+ this._deserialized = P.HashMap_HashMap(null, null, null, null, null);
+ return this._deserializeHelper$1(x);
+ },
+ _deserializeHelper$1: function(x) {
+ var t1, id;
+ if (x == null || typeof x === "string" || typeof x === "number" || typeof x === "boolean")
+ return x;
+ t1 = J.getInterceptor$asx(x);
+ switch (t1.$index(x, 0)) {
+ case "ref":
+ id = t1.$index(x, 1);
+ return this._deserialized.$index(0, id);
+ case "list":
+ return this._deserializeList$1(x);
+ case "map":
+ return this._deserializeMap$1(x);
+ case "sendport":
+ return this.deserializeSendPort$1(x);
+ case "capability":
+ return this.deserializeCapability$1(x);
+ default:
+ return this.deserializeObject$1(x);
+ }
+ },
+ _deserializeList$1: function(x) {
+ var t1, id, dartList, len, i;
+ t1 = J.getInterceptor$asx(x);
+ id = t1.$index(x, 1);
+ dartList = t1.$index(x, 2);
+ this._deserialized.$indexSet(0, id, dartList);
+ t1 = J.getInterceptor$asx(dartList);
+ len = t1.get$length(dartList);
+ if (typeof len !== "number")
+ return H.iae(len);
+ i = 0;
+ for (; i < len; ++i)
+ t1.$indexSet(dartList, i, this._deserializeHelper$1(t1.$index(dartList, i)));
+ return dartList;
+ },
+ _deserializeMap$1: function(x) {
+ var result, t1, id, keys, values, len, t2, i;
+ result = P.LinkedHashMap_LinkedHashMap(null, null, null, null, null);
+ t1 = J.getInterceptor$asx(x);
+ id = t1.$index(x, 1);
+ this._deserialized.$indexSet(0, id, result);
+ keys = t1.$index(x, 2);
+ values = t1.$index(x, 3);
+ t1 = J.getInterceptor$asx(keys);
+ len = t1.get$length(keys);
+ if (typeof len !== "number")
+ return H.iae(len);
+ t2 = J.getInterceptor$asx(values);
+ i = 0;
+ for (; i < len; ++i)
+ result.$indexSet(0, this._deserializeHelper$1(t1.$index(keys, i)), this._deserializeHelper$1(t2.$index(values, i)));
+ return result;
+ },
+ deserializeObject$1: function(x) {
+ throw H.wrapException("Unexpected serialized object");
+ }
+ },
+ TimerImpl: {
+ "^": "Object;_once,_inEventLoop,_handle",
+ TimerImpl$2: function(milliseconds, callback) {
+ var t1, t2;
+ if (milliseconds === 0)
+ t1 = $.get$globalThis().setTimeout == null || init.globalState.isWorker === true;
+ else
+ t1 = false;
+ if (t1) {
+ this._handle = 1;
+ t1 = init.globalState.topEventLoop;
+ t2 = init.globalState.currentContext;
+ t1.events._add$1(new H._IsolateEvent(t2, new H.TimerImpl_internalCallback(this, callback), "timer"));
+ this._inEventLoop = true;
+ } else {
+ t1 = $.get$globalThis();
+ if (t1.setTimeout != null) {
+ t2 = init.globalState.topEventLoop;
+ t2._activeJsAsyncCount = t2._activeJsAsyncCount + 1;
+ this._handle = t1.setTimeout(H.convertDartClosureToJS(new H.TimerImpl_internalCallback0(this, callback), 0), milliseconds);
+ } else
+ throw H.wrapException(P.UnsupportedError$("Timer greater than 0."));
+ }
+ },
+ static: {TimerImpl$: function(milliseconds, callback) {
+ var t1 = new H.TimerImpl(true, false, null);
+ t1.TimerImpl$2(milliseconds, callback);
+ return t1;
+ }}
+ },
+ TimerImpl_internalCallback: {
+ "^": "Closure:1;this_0,callback_1",
+ call$0: function() {
+ this.this_0._handle = null;
+ this.callback_1.call$0();
+ }
+ },
+ TimerImpl_internalCallback0: {
+ "^": "Closure:1;this_2,callback_3",
+ call$0: function() {
+ this.this_2._handle = null;
+ H.leaveJsAsync();
+ this.callback_3.call$0();
+ }
+ },
+ CapabilityImpl: {
+ "^": "Object;_id<",
+ get$hashCode: function(_) {
+ var hash = this._id;
+ if (typeof hash !== "number")
+ return hash.$shr();
+ hash = C.JSNumber_methods._shrOtherPositive$1(hash, 0) ^ C.JSNumber_methods._tdivFast$1(hash, 4294967296);
+ hash = (~hash >>> 0) + (hash << 15 >>> 0) & 4294967295;
+ hash = ((hash ^ hash >>> 12) >>> 0) * 5 & 4294967295;
+ hash = ((hash ^ hash >>> 4) >>> 0) * 2057 & 4294967295;
+ return (hash ^ hash >>> 16) >>> 0;
+ },
+ $eq: function(_, other) {
+ var t1, t2;
+ if (other == null)
+ return false;
+ if (other === this)
+ return true;
+ if (!!J.getInterceptor(other).$isCapabilityImpl) {
+ t1 = this._id;
+ t2 = other._id;
+ return t1 == null ? t2 == null : t1 === t2;
+ }
+ return false;
+ },
+ $isCapabilityImpl: true,
+ $isCapability: true
+ }
+}],
+["_js_helper", "dart:_js_helper", , H, {
+ "^": "",
+ isJsIndexable: function(object, record) {
+ var result;
+ if (record != null) {
+ result = record.x;
+ if (result != null)
+ return result;
+ }
+ return !!J.getInterceptor(object).$isJavaScriptIndexingBehavior;
+ },
+ S: function(value) {
+ var res;
+ if (typeof value === "string")
+ return value;
+ if (typeof value === "number") {
+ if (value !== 0)
+ return "" + value;
+ } else if (true === value)
+ return "true";
+ else if (false === value)
+ return "false";
+ else if (value == null)
+ return "null";
+ res = J.toString$0(value);
+ if (typeof res !== "string")
+ throw H.wrapException(P.ArgumentError$(value));
+ return res;
+ },
+ Primitives_objectHashCode: function(object) {
+ var hash = object.$identityHash;
+ if (hash == null) {
+ hash = Math.random() * 0x3fffffff | 0;
+ object.$identityHash = hash;
+ }
+ return hash;
+ },
+ Primitives__throwFormatException: [function(string) {
+ throw H.wrapException(P.FormatException$(string));
+ }, "call$1", "Primitives__throwFormatException$closure", 2, 0, 0],
+ Primitives_parseInt: function(source, radix, handleError) {
+ var match, t1;
+ handleError = H.Primitives__throwFormatException$closure();
+ if (typeof source !== "string")
+ H.throwExpression(new P.ArgumentError(source));
+ match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
+ if (match != null) {
+ t1 = match.length;
+ if (2 >= t1)
+ return H.ioore(match, 2);
+ if (match[2] != null)
+ return parseInt(source, 16);
+ if (3 >= t1)
+ return H.ioore(match, 3);
+ if (match[3] != null)
+ return parseInt(source, 10);
+ return handleError.call$1(source);
+ }
+ if (match == null)
+ return handleError.call$1(source);
+ return parseInt(source, 10);
+ },
+ Primitives_parseDouble: function(source, handleError) {
+ var result, trimmed;
+ if (typeof source !== "string")
+ H.throwExpression(new P.ArgumentError(source));
+ handleError = H.Primitives__throwFormatException$closure();
+ if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(source))
+ return handleError.call$1(source);
+ result = parseFloat(source);
+ if (isNaN(result)) {
+ trimmed = J.trim$0$s(source);
+ if (trimmed === "NaN" || trimmed === "+NaN" || trimmed === "-NaN")
+ return result;
+ return handleError.call$1(source);
+ }
+ return result;
+ },
+ Primitives_objectTypeName: function(object) {
+ var $name, decompiled;
+ $name = C.JS_CONST_IX5(J.getInterceptor(object));
+ if ($name === "Object") {
+ decompiled = String(object.constructor).match(/^\s*function\s*(\S*)\s*\(/)[1];
+ if (typeof decompiled === "string")
+ $name = decompiled;
+ }
+ if (J.getInterceptor$s($name).codeUnitAt$1($name, 0) === 36)
+ $name = C.JSString_methods.substring$1($name, 1);
+ return $name + H.joinArguments(H.getRuntimeTypeInfo(object), 0, null);
+ },
+ Primitives_objectToString: function(object) {
+ return "Instance of '" + H.Primitives_objectTypeName(object) + "'";
+ },
+ Primitives__fromCharCodeApply: function(array) {
+ var end, t1, result, i, subarray, t2;
+ end = array.length;
+ for (t1 = end <= 500, result = "", i = 0; i < end; i += 500) {
+ if (t1)
+ subarray = array;
+ else {
+ t2 = i + 500;
+ t2 = t2 < end ? t2 : end;
+ subarray = array.slice(i, t2);
+ }
+ result += String.fromCharCode.apply(null, subarray);
+ }
+ return result;
+ },
+ Primitives_stringFromCodePoints: function(codePoints) {
+ var a, t1, i;
+ a = [];
+ a.$builtinTypeInfo = [J.JSInt];
+ for (t1 = new H.ListIterator(codePoints, codePoints.length, 0, null); t1.moveNext$0();) {
+ i = t1._current;
+ if (typeof i !== "number" || Math.floor(i) !== i)
+ throw H.wrapException(P.ArgumentError$(i));
+ if (i <= 65535)
+ a.push(i);
+ else if (i <= 1114111) {
+ a.push(55296 + (C.JSInt_methods._shrOtherPositive$1(i - 65536, 10) & 1023));
+ a.push(56320 + (i & 1023));
+ } else
+ throw H.wrapException(P.ArgumentError$(i));
+ }
+ return H.Primitives__fromCharCodeApply(a);
+ },
+ Primitives_stringFromCharCodes: function(charCodes) {
+ var t1, i;
+ for (t1 = new H.ListIterator(charCodes, charCodes.length, 0, null); t1.moveNext$0();) {
+ i = t1._current;
+ if (typeof i !== "number" || Math.floor(i) !== i)
+ throw H.wrapException(P.ArgumentError$(i));
+ if (i < 0)
+ throw H.wrapException(P.ArgumentError$(i));
+ if (i > 65535)
+ return H.Primitives_stringFromCodePoints(charCodes);
+ }
+ return H.Primitives__fromCharCodeApply(charCodes);
+ },
+ Primitives_valueFromDecomposedDate: function(years, month, day, hours, minutes, seconds, milliseconds, isUtc) {
+ var jsMonth, value, t1, date;
+ if (typeof years !== "number" || Math.floor(years) !== years)
+ H.throwExpression(new P.ArgumentError(years));
+ if (typeof month !== "number" || Math.floor(month) !== month)
+ H.throwExpression(new P.ArgumentError(month));
+ if (typeof day !== "number" || Math.floor(day) !== day)
+ H.throwExpression(new P.ArgumentError(day));
+ if (typeof hours !== "number" || Math.floor(hours) !== hours)
+ H.throwExpression(new P.ArgumentError(hours));
+ if (typeof minutes !== "number" || Math.floor(minutes) !== minutes)
+ H.throwExpression(new P.ArgumentError(minutes));
+ if (typeof seconds !== "number" || Math.floor(seconds) !== seconds)
+ H.throwExpression(new P.ArgumentError(seconds));
+ jsMonth = J.$sub$n(month, 1);
+ value = isUtc ? Date.UTC(years, jsMonth, day, hours, minutes, seconds, milliseconds) : new Date(years, jsMonth, day, hours, minutes, seconds, milliseconds).valueOf();
+ if (isNaN(value) || value < -8640000000000000 || value > 8640000000000000)
+ throw H.wrapException(new P.ArgumentError(null));
+ t1 = J.getInterceptor$n(years);
+ if (t1.$le(years, 0) || t1.$lt(years, 100)) {
+ date = new Date(value);
+ if (isUtc)
+ date.setUTCFullYear(years);
+ else
+ date.setFullYear(years);
+ return date.valueOf();
+ }
+ return value;
+ },
+ Primitives_lazyAsJsDate: function(receiver) {
+ if (receiver.date === void 0)
+ receiver.date = new Date(receiver.millisecondsSinceEpoch);
+ return receiver.date;
+ },
+ Primitives_getProperty: function(object, key) {
+ if (object == null || typeof object === "boolean" || typeof object === "number" || typeof object === "string")
+ throw H.wrapException(new P.ArgumentError(object));
+ return object[key];
+ },
+ Primitives_setProperty: function(object, key, value) {
+ if (object == null || typeof object === "boolean" || typeof object === "number" || typeof object === "string")
+ throw H.wrapException(new P.ArgumentError(object));
+ object[key] = value;
+ },
+ iae: function(argument) {
+ throw H.wrapException(P.ArgumentError$(argument));
+ },
+ ioore: function(receiver, index) {
+ if (receiver == null)
+ J.get$length$asx(receiver);
+ if (typeof index !== "number" || Math.floor(index) !== index)
+ H.iae(index);
+ throw H.wrapException(P.RangeError$value(index));
+ },
+ wrapException: function(ex) {
+ var wrapper;
+ if (ex == null)
+ ex = new P.NullThrownError();
+ wrapper = new Error();
+ wrapper.dartException = ex;
+ if ("defineProperty" in Object) {
+ Object.defineProperty(wrapper, "message", { get: H.toStringWrapper });
+ wrapper.name = "";
+ } else
+ wrapper.toString = H.toStringWrapper;
+ return wrapper;
+ },
+ toStringWrapper: function() {
+ return J.toString$0(this.dartException);
+ },
+ throwExpression: function(ex) {
+ var wrapper;
+ if (ex == null)
+ ex = new P.NullThrownError();
+ wrapper = new Error();
+ wrapper.dartException = ex;
+ if ("defineProperty" in Object) {
+ Object.defineProperty(wrapper, "message", { get: H.toStringWrapper });
+ wrapper.name = "";
+ } else
+ wrapper.toString = H.toStringWrapper;
+ throw wrapper;
+ },
+ unwrapException: function(ex) {
+ var t1, message, number, ieErrorCode, t2, t3, t4, nullLiteralCall, t5, t6, t7, t8, t9, match;
+ t1 = new H.unwrapException_saveStackTrace(ex);
+ if (ex == null)
+ return;
+ if (typeof ex !== "object")
+ return ex;
+ if ("dartException" in ex)
+ return t1.call$1(ex.dartException);
+ else if (!("message" in ex))
+ return ex;
+ message = ex.message;
+ if ("number" in ex && typeof ex.number == "number") {
+ number = ex.number;
+ ieErrorCode = number & 65535;
+ if ((C.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)
+ switch (ieErrorCode) {
+ case 438:
+ return t1.call$1(H.JsNoSuchMethodError$(H.S(message) + " (Error " + ieErrorCode + ")", null));
+ case 445:
+ case 5007:
+ t2 = H.S(message) + " (Error " + ieErrorCode + ")";
+ return t1.call$1(new H.NullError(t2, null));
+ }
+ }
+ if (ex instanceof TypeError) {
+ t2 = $.get$TypeErrorDecoder_noSuchMethodPattern();
+ t3 = $.get$TypeErrorDecoder_notClosurePattern();
+ t4 = $.get$TypeErrorDecoder_nullCallPattern();
+ nullLiteralCall = $.get$TypeErrorDecoder_nullLiteralCallPattern();
+ t5 = $.get$TypeErrorDecoder_undefinedCallPattern();
+ t6 = $.get$TypeErrorDecoder_undefinedLiteralCallPattern();
+ t7 = $.get$TypeErrorDecoder_nullPropertyPattern();
+ $.get$TypeErrorDecoder_nullLiteralPropertyPattern();
+ t8 = $.get$TypeErrorDecoder_undefinedPropertyPattern();
+ t9 = $.get$TypeErrorDecoder_undefinedLiteralPropertyPattern();
+ match = t2.matchTypeError$1(message);
+ if (match != null)
+ return t1.call$1(H.JsNoSuchMethodError$(message, match));
+ else {
+ match = t3.matchTypeError$1(message);
+ if (match != null) {
+ match.method = "call";
+ return t1.call$1(H.JsNoSuchMethodError$(message, match));
+ } else {
+ match = t4.matchTypeError$1(message);
+ if (match == null) {
+ match = nullLiteralCall.matchTypeError$1(message);
+ if (match == null) {
+ match = t5.matchTypeError$1(message);
+ if (match == null) {
+ match = t6.matchTypeError$1(message);
+ if (match == null) {
+ match = t7.matchTypeError$1(message);
+ if (match == null) {
+ match = nullLiteralCall.matchTypeError$1(message);
+ if (match == null) {
+ match = t8.matchTypeError$1(message);
+ if (match == null) {
+ match = t9.matchTypeError$1(message);
+ t2 = match != null;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ } else
+ t2 = true;
+ if (t2) {
+ t2 = match == null ? null : match.method;
+ return t1.call$1(new H.NullError(message, t2));
+ }
+ }
+ }
+ t2 = typeof message === "string" ? message : "";
+ return t1.call$1(new H.UnknownJsTypeError(t2));
+ }
+ if (ex instanceof RangeError) {
+ if (typeof message === "string" && message.indexOf("call stack") !== -1)
+ return new P.StackOverflowError();
+ return t1.call$1(new P.ArgumentError(null));
+ }
+ if (typeof InternalError == "function" && ex instanceof InternalError)
+ if (typeof message === "string" && message === "too much recursion")
+ return new P.StackOverflowError();
+ return ex;
+ },
+ objectHashCode: function(object) {
+ if (object == null || typeof object != 'object')
+ return J.get$hashCode$(object);
+ else
+ return H.Primitives_objectHashCode(object);
+ },
+ fillLiteralMap: function(keyValuePairs, result) {
+ var $length, index, index0, index1;
+ $length = keyValuePairs.length;
+ for (index = 0; index < $length; index = index1) {
+ index0 = index + 1;
+ index1 = index0 + 1;
+ result.$indexSet(0, keyValuePairs[index], keyValuePairs[index0]);
+ }
+ return result;
+ },
+ invokeClosure: function(closure, isolate, numberOfArguments, arg1, arg2, arg3, arg4) {
+ var t1 = J.getInterceptor(numberOfArguments);
+ if (t1.$eq(numberOfArguments, 0))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure(closure));
+ else if (t1.$eq(numberOfArguments, 1))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure0(closure, arg1));
+ else if (t1.$eq(numberOfArguments, 2))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure1(closure, arg1, arg2));
+ else if (t1.$eq(numberOfArguments, 3))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure2(closure, arg1, arg2, arg3));
+ else if (t1.$eq(numberOfArguments, 4))
+ return H._callInIsolate(isolate, new H.invokeClosure_closure3(closure, arg1, arg2, arg3, arg4));
+ else
+ throw H.wrapException(P.Exception_Exception("Unsupported number of arguments for wrapped closure"));
+ },
+ convertDartClosureToJS: function(closure, arity) {
+ var $function;
+ if (closure == null)
+ return;
+ $function = closure.$identity;
+ if (!!$function)
+ return $function;
+ $function = (function(closure, arity, context, invoke) { return function(a1, a2, a3, a4) { return invoke(closure, context, arity, a1, a2, a3, a4); };})(closure,arity,init.globalState.currentContext,H.invokeClosure);
+ closure.$identity = $function;
+ return $function;
+ },
+ Closure_fromTearOff: function(receiver, functions, reflectionInfo, isStatic, jsArguments, propertyName) {
+ var $function, callName, functionType, $prototype, $constructor, t1, isIntercepted, trampoline, signatureFunction, getReceiver, i, stub, stubCallName, t2;
+ $function = functions[0];
+ $function.$stubName;
+ callName = $function.$callName;
+ $function.$reflectionInfo = reflectionInfo;
+ functionType = H.ReflectionInfo_ReflectionInfo($function).functionType;
+ $prototype = isStatic ? Object.create(new H.TearOffClosure().constructor.prototype) : Object.create(new H.BoundClosure(null, null, null, null).constructor.prototype);
+ $prototype.$initialize = $prototype.constructor;
+ if (isStatic)
+ $constructor = function(){this.$initialize()};
+ else if (typeof dart_precompiled == "function") {
+ t1 = function(a,b,c,d) {this.$initialize(a,b,c,d)};
+ $constructor = t1;
+ } else {
+ t1 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t1, 1);
+ t1 = new Function("a", "b", "c", "d", "this.$initialize(a,b,c,d);" + t1);
+ $constructor = t1;
+ }
+ $prototype.constructor = $constructor;
+ $constructor.prototype = $prototype;
+ t1 = !isStatic;
+ if (t1) {
+ isIntercepted = jsArguments.length == 1 && true;
+ trampoline = H.Closure_forwardCallTo(receiver, $function, isIntercepted);
+ trampoline.$reflectionInfo = reflectionInfo;
+ } else {
+ $prototype.$name = propertyName;
+ trampoline = $function;
+ isIntercepted = false;
+ }
+ if (typeof functionType == "number")
+ signatureFunction = (function(s){return function(){return init.metadata[s]}})(functionType);
+ else if (t1 && typeof functionType == "function") {
+ getReceiver = isIntercepted ? H.BoundClosure_receiverOf : H.BoundClosure_selfOf;
+ signatureFunction = function(f,r){return function(){return f.apply({$receiver:r(this)},arguments)}}(functionType,getReceiver);
+ } else
+ throw H.wrapException("Error in reflectionInfo.");
+ $prototype.$signature = signatureFunction;
+ $prototype[callName] = trampoline;
+ for (t1 = functions.length, i = 1; i < t1; ++i) {
+ stub = functions[i];
+ stubCallName = stub.$callName;
+ if (stubCallName != null) {
+ t2 = isStatic ? stub : H.Closure_forwardCallTo(receiver, stub, isIntercepted);
+ $prototype[stubCallName] = t2;
+ }
+ }
+ $prototype["call*"] = trampoline;
+ return $constructor;
+ },
+ Closure_cspForwardCall: function(arity, isSuperCall, stubName, $function) {
+ var getSelf = H.BoundClosure_selfOf;
+ switch (isSuperCall ? -1 : arity) {
+ case 0:
+ return function(n,S){return function(){return S(this)[n]()}}(stubName,getSelf);
+ case 1:
+ return function(n,S){return function(a){return S(this)[n](a)}}(stubName,getSelf);
+ case 2:
+ return function(n,S){return function(a,b){return S(this)[n](a,b)}}(stubName,getSelf);
+ case 3:
+ return function(n,S){return function(a,b,c){return S(this)[n](a,b,c)}}(stubName,getSelf);
+ case 4:
+ return function(n,S){return function(a,b,c,d){return S(this)[n](a,b,c,d)}}(stubName,getSelf);
+ case 5:
+ return function(n,S){return function(a,b,c,d,e){return S(this)[n](a,b,c,d,e)}}(stubName,getSelf);
+ default:
+ return function(f,s){return function(){return f.apply(s(this),arguments)}}($function,getSelf);
+ }
+ },
+ Closure_forwardCallTo: function(receiver, $function, isIntercepted) {
+ var stubName, arity, lookedUpFunction, t1, t2, $arguments;
+ if (isIntercepted)
+ return H.Closure_forwardInterceptedCallTo(receiver, $function);
+ stubName = $function.$stubName;
+ arity = $function.length;
+ lookedUpFunction = receiver[stubName];
+ t1 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
+ if (typeof dart_precompiled == "function" || !t1 || arity >= 27)
+ return H.Closure_cspForwardCall(arity, !t1, stubName, $function);
+ if (arity === 0) {
+ t1 = $.BoundClosure_selfFieldNameCache;
+ if (t1 == null) {
+ t1 = H.BoundClosure_computeFieldNamed("self");
+ $.BoundClosure_selfFieldNameCache = t1;
+ }
+ t1 = "return function(){return this." + H.S(t1) + "." + H.S(stubName) + "();";
+ t2 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t2, 1);
+ return new Function(t1 + H.S(t2) + "}")();
+ }
+ $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity).join(",");
+ t1 = "return function(" + $arguments + "){return this.";
+ t2 = $.BoundClosure_selfFieldNameCache;
+ if (t2 == null) {
+ t2 = H.BoundClosure_computeFieldNamed("self");
+ $.BoundClosure_selfFieldNameCache = t2;
+ }
+ t2 = t1 + H.S(t2) + "." + H.S(stubName) + "(" + $arguments + ");";
+ t1 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t1, 1);
+ return new Function(t2 + H.S(t1) + "}")();
+ },
+ Closure_cspForwardInterceptedCall: function(arity, isSuperCall, $name, $function) {
+ var getSelf, getReceiver;
+ getSelf = H.BoundClosure_selfOf;
+ getReceiver = H.BoundClosure_receiverOf;
+ switch (isSuperCall ? -1 : arity) {
+ case 0:
+ throw H.wrapException(H.RuntimeError$("Intercepted function with no arguments."));
+ case 1:
+ return function(n,s,r){return function(){return s(this)[n](r(this))}}($name,getSelf,getReceiver);
+ case 2:
+ return function(n,s,r){return function(a){return s(this)[n](r(this),a)}}($name,getSelf,getReceiver);
+ case 3:
+ return function(n,s,r){return function(a,b){return s(this)[n](r(this),a,b)}}($name,getSelf,getReceiver);
+ case 4:
+ return function(n,s,r){return function(a,b,c){return s(this)[n](r(this),a,b,c)}}($name,getSelf,getReceiver);
+ case 5:
+ return function(n,s,r){return function(a,b,c,d){return s(this)[n](r(this),a,b,c,d)}}($name,getSelf,getReceiver);
+ case 6:
+ return function(n,s,r){return function(a,b,c,d,e){return s(this)[n](r(this),a,b,c,d,e)}}($name,getSelf,getReceiver);
+ default:
+ return function(f,s,r,a){return function(){a=[r(this)];Array.prototype.push.apply(a,arguments);return f.apply(s(this),a)}}($function,getSelf,getReceiver);
+ }
+ },
+ Closure_forwardInterceptedCallTo: function(receiver, $function) {
+ var selfField, t1, stubName, arity, isCsp, lookedUpFunction, t2, $arguments;
+ selfField = H.BoundClosure_selfFieldName();
+ t1 = $.BoundClosure_receiverFieldNameCache;
+ if (t1 == null) {
+ t1 = H.BoundClosure_computeFieldNamed("receiver");
+ $.BoundClosure_receiverFieldNameCache = t1;
+ }
+ stubName = $function.$stubName;
+ arity = $function.length;
+ isCsp = typeof dart_precompiled == "function";
+ lookedUpFunction = receiver[stubName];
+ t2 = $function == null ? lookedUpFunction == null : $function === lookedUpFunction;
+ if (isCsp || !t2 || arity >= 28)
+ return H.Closure_cspForwardInterceptedCall(arity, !t2, stubName, $function);
+ if (arity === 1) {
+ t1 = "return function(){return this." + H.S(selfField) + "." + H.S(stubName) + "(this." + H.S(t1) + ");";
+ t2 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t2, 1);
+ return new Function(t1 + H.S(t2) + "}")();
+ }
+ $arguments = "abcdefghijklmnopqrstuvwxyz".split("").splice(0, arity - 1).join(",");
+ t1 = "return function(" + $arguments + "){return this." + H.S(selfField) + "." + H.S(stubName) + "(this." + H.S(t1) + ", " + $arguments + ");";
+ t2 = $.Closure_functionCounter;
+ $.Closure_functionCounter = J.$add$ns(t2, 1);
+ return new Function(t1 + H.S(t2) + "}")();
+ },
+ closureFromTearOff: function(receiver, functions, reflectionInfo, isStatic, jsArguments, $name) {
+ functions.fixed$length = init;
+ reflectionInfo.fixed$length = init;
+ return H.Closure_fromTearOff(receiver, functions, reflectionInfo, !!isStatic, jsArguments, $name);
+ },
+ throwCyclicInit: function(staticName) {
+ throw H.wrapException(P.CyclicInitializationError$("Cyclic initialization for static " + H.S(staticName)));
+ },
+ buildFunctionType: function(returnType, parameterTypes, optionalParameterTypes) {
+ return new H.RuntimeFunctionType(returnType, parameterTypes, optionalParameterTypes, null);
+ },
+ getDynamicRuntimeType: function() {
+ return C.C_DynamicRuntimeType;
+ },
+ setRuntimeTypeInfo: function(target, typeInfo) {
+ if (target != null)
+ target.$builtinTypeInfo = typeInfo;
+ return target;
+ },
+ getRuntimeTypeInfo: function(target) {
+ if (target == null)
+ return;
+ return target.$builtinTypeInfo;
+ },
+ getRuntimeTypeArguments: function(target, substitutionName) {
+ return H.substitute(target["$as" + H.S(substitutionName)], H.getRuntimeTypeInfo(target));
+ },
+ getRuntimeTypeArgument: function(target, substitutionName, index) {
+ var $arguments = H.getRuntimeTypeArguments(target, substitutionName);
+ return $arguments == null ? null : $arguments[index];
+ },
+ getTypeArgumentByIndex: function(target, index) {
+ var rti = H.getRuntimeTypeInfo(target);
+ return rti == null ? null : rti[index];
+ },
+ runtimeTypeToString: function(type, onTypeVariable) {
+ if (type == null)
+ return "dynamic";
+ else if (typeof type === "object" && type !== null && type.constructor === Array)
+ return type[0].builtin$cls + H.joinArguments(type, 1, onTypeVariable);
+ else if (typeof type == "function")
+ return type.builtin$cls;
+ else if (typeof type === "number" && Math.floor(type) === type)
+ return C.JSInt_methods.toString$0(type);
+ else
+ return;
+ },
+ joinArguments: function(types, startIndex, onTypeVariable) {
+ var buffer, index, firstArgument, allDynamic, argument, str;
+ if (types == null)
+ return "";
+ buffer = P.StringBuffer$("");
+ for (index = startIndex, firstArgument = true, allDynamic = true; index < types.length; ++index) {
+ if (firstArgument)
+ firstArgument = false;
+ else
+ buffer._contents = buffer._contents + ", ";
+ argument = types[index];
+ if (argument != null)
+ allDynamic = false;
+ str = H.runtimeTypeToString(argument, onTypeVariable);
+ str = typeof str === "string" ? str : H.S(str);
+ buffer._contents = buffer._contents + str;
+ }
+ return allDynamic ? "" : "<" + H.S(buffer) + ">";
+ },
+ substitute: function(substitution, $arguments) {
+ if (typeof substitution === "object" && substitution !== null && substitution.constructor === Array)
+ $arguments = substitution;
+ else if (typeof substitution == "function") {
+ substitution = H.invokeOn(substitution, null, $arguments);
+ if (typeof substitution === "object" && substitution !== null && substitution.constructor === Array)
+ $arguments = substitution;
+ else if (typeof substitution == "function")
+ $arguments = H.invokeOn(substitution, null, $arguments);
+ }
+ return $arguments;
+ },
+ areSubtypes: function(s, t) {
+ var len, i;
+ if (s == null || t == null)
+ return true;
+ len = s.length;
+ for (i = 0; i < len; ++i)
+ if (!H.isSubtype(s[i], t[i]))
+ return false;
+ return true;
+ },
+ computeSignature: function(signature, context, contextName) {
+ return H.invokeOn(signature, context, H.getRuntimeTypeArguments(context, contextName));
+ },
+ isSubtype: function(s, t) {
+ var targetSignatureFunction, t1, typeOfS, t2, typeOfT, $name, substitution;
+ if (s === t)
+ return true;
+ if (s == null || t == null)
+ return true;
+ if ("func" in t) {
+ if (!("func" in s)) {
+ if ("$is_" + H.S(t.func) in s)
+ return true;
+ targetSignatureFunction = s.$signature;
+ if (targetSignatureFunction == null)
+ return false;
+ s = targetSignatureFunction.apply(s, null);
+ }
+ return H.isFunctionSubtype(s, t);
+ }
+ if (t.builtin$cls === "Function" && "func" in s)
+ return true;
+ t1 = typeof s === "object" && s !== null && s.constructor === Array;
+ typeOfS = t1 ? s[0] : s;
+ t2 = typeof t === "object" && t !== null && t.constructor === Array;
+ typeOfT = t2 ? t[0] : t;
+ $name = H.runtimeTypeToString(typeOfT, null);
+ if (typeOfT !== typeOfS) {
+ if (!("$is" + H.S($name) in typeOfS))
+ return false;
+ substitution = typeOfS["$as" + H.S(H.runtimeTypeToString(typeOfT, null))];
+ } else
+ substitution = null;
+ if (!t1 && substitution == null || !t2)
+ return true;
+ t1 = t1 ? s.slice(1) : null;
+ t2 = t2 ? t.slice(1) : null;
+ return H.areSubtypes(H.substitute(substitution, t1), t2);
+ },
+ areAssignable: function(s, t, allowShorter) {
+ var sLength, tLength, i, t1, t2;
+ if (t == null && s == null)
+ return true;
+ if (t == null)
+ return allowShorter;
+ if (s == null)
+ return false;
+ sLength = s.length;
+ tLength = t.length;
+ if (allowShorter) {
+ if (sLength < tLength)
+ return false;
+ } else if (sLength !== tLength)
+ return false;
+ for (i = 0; i < tLength; ++i) {
+ t1 = s[i];
+ t2 = t[i];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ return true;
+ },
+ areAssignableMaps: function(s, t) {
+ var t1, names, i, $name, tType, sType;
+ if (t == null)
+ return true;
+ if (s == null)
+ return false;
+ t1 = Object.getOwnPropertyNames(t);
+ t1.fixed$length = init;
+ names = t1;
+ for (t1 = names.length, i = 0; i < t1; ++i) {
+ $name = names[i];
+ if (!Object.hasOwnProperty.call(s, $name))
+ return false;
+ tType = t[$name];
+ sType = s[$name];
+ if (!(H.isSubtype(tType, sType) || H.isSubtype(sType, tType)))
+ return false;
+ }
+ return true;
+ },
+ isFunctionSubtype: function(s, t) {
+ var sReturnType, tReturnType, sParameterTypes, tParameterTypes, sOptionalParameterTypes, tOptionalParameterTypes, sParametersLen, tParametersLen, sOptionalParametersLen, tOptionalParametersLen, pos, t1, t2, tPos, sPos;
+ if (!("func" in s))
+ return false;
+ if ("void" in s) {
+ if (!("void" in t) && "ret" in t)
+ return false;
+ } else if (!("void" in t)) {
+ sReturnType = s.ret;
+ tReturnType = t.ret;
+ if (!(H.isSubtype(sReturnType, tReturnType) || H.isSubtype(tReturnType, sReturnType)))
+ return false;
+ }
+ sParameterTypes = s.args;
+ tParameterTypes = t.args;
+ sOptionalParameterTypes = s.opt;
+ tOptionalParameterTypes = t.opt;
+ sParametersLen = sParameterTypes != null ? sParameterTypes.length : 0;
+ tParametersLen = tParameterTypes != null ? tParameterTypes.length : 0;
+ sOptionalParametersLen = sOptionalParameterTypes != null ? sOptionalParameterTypes.length : 0;
+ tOptionalParametersLen = tOptionalParameterTypes != null ? tOptionalParameterTypes.length : 0;
+ if (sParametersLen > tParametersLen)
+ return false;
+ if (sParametersLen + sOptionalParametersLen < tParametersLen + tOptionalParametersLen)
+ return false;
+ if (sParametersLen === tParametersLen) {
+ if (!H.areAssignable(sParameterTypes, tParameterTypes, false))
+ return false;
+ if (!H.areAssignable(sOptionalParameterTypes, tOptionalParameterTypes, true))
+ return false;
+ } else {
+ for (pos = 0; pos < sParametersLen; ++pos) {
+ t1 = sParameterTypes[pos];
+ t2 = tParameterTypes[pos];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ for (tPos = pos, sPos = 0; tPos < tParametersLen; ++sPos, ++tPos) {
+ t1 = sOptionalParameterTypes[sPos];
+ t2 = tParameterTypes[tPos];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ for (tPos = 0; tPos < tOptionalParametersLen; ++sPos, ++tPos) {
+ t1 = sOptionalParameterTypes[sPos];
+ t2 = tOptionalParameterTypes[tPos];
+ if (!(H.isSubtype(t1, t2) || H.isSubtype(t2, t1)))
+ return false;
+ }
+ }
+ return H.areAssignableMaps(s.named, t.named);
+ },
+ invokeOn: function($function, receiver, $arguments) {
+ return $function.apply(receiver, $arguments);
+ },
+ toStringForNativeObject: function(obj) {
+ var t1 = $.getTagFunction;
+ return "Instance of " + (t1 == null ? "" : t1.call$1(obj));
+ },
+ hashCodeForNativeObject: function(object) {
+ return H.Primitives_objectHashCode(object);
+ },
+ defineProperty: function(obj, property, value) {
+ Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
+ },
+ lookupAndCacheInterceptor: function(obj) {
+ var tag, record, interceptor, interceptorClass, mark, t1;
+ tag = $.getTagFunction.call$1(obj);
+ record = $.dispatchRecordsForInstanceTags[tag];
+ if (record != null) {
+ Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return record.i;
+ }
+ interceptor = $.interceptorsForUncacheableTags[tag];
+ if (interceptor != null)
+ return interceptor;
+ interceptorClass = init.interceptorsByTag[tag];
+ if (interceptorClass == null) {
+ tag = $.alternateTagFunction.call$2(obj, tag);
+ if (tag != null) {
+ record = $.dispatchRecordsForInstanceTags[tag];
+ if (record != null) {
+ Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return record.i;
+ }
+ interceptor = $.interceptorsForUncacheableTags[tag];
+ if (interceptor != null)
+ return interceptor;
+ interceptorClass = init.interceptorsByTag[tag];
+ }
+ }
+ if (interceptorClass == null)
+ return;
+ interceptor = interceptorClass.prototype;
+ mark = tag[0];
+ if (mark === "!") {
+ record = H.makeLeafDispatchRecord(interceptor);
+ $.dispatchRecordsForInstanceTags[tag] = record;
+ Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return record.i;
+ }
+ if (mark === "~") {
+ $.interceptorsForUncacheableTags[tag] = interceptor;
+ return interceptor;
+ }
+ if (mark === "-") {
+ t1 = H.makeLeafDispatchRecord(interceptor);
+ Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
+ return t1.i;
+ }
+ if (mark === "+")
+ return H.patchInteriorProto(obj, interceptor);
+ if (mark === "*")
+ throw H.wrapException(P.UnimplementedError$(tag));
+ if (init.leafTags[tag] === true) {
+ t1 = H.makeLeafDispatchRecord(interceptor);
+ Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
+ return t1.i;
+ } else
+ return H.patchInteriorProto(obj, interceptor);
+ },
+ patchInteriorProto: function(obj, interceptor) {
+ var proto, record;
+ proto = Object.getPrototypeOf(obj);
+ record = J.makeDispatchRecord(interceptor, proto, null, null);
+ Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ return interceptor;
+ },
+ makeLeafDispatchRecord: function(interceptor) {
+ return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
+ },
+ makeDefaultDispatchRecord: function(tag, interceptorClass, proto) {
+ var interceptor = interceptorClass.prototype;
+ if (init.leafTags[tag] === true)
+ return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
+ else
+ return J.makeDispatchRecord(interceptor, proto, null, null);
+ },
+ initNativeDispatch: function() {
+ if (true === $.initNativeDispatchFlag)
+ return;
+ $.initNativeDispatchFlag = true;
+ H.initNativeDispatchContinue();
+ },
+ initNativeDispatchContinue: function() {
+ var map, tags, i, tag, proto, record, interceptorClass;
+ $.dispatchRecordsForInstanceTags = Object.create(null);
+ $.interceptorsForUncacheableTags = Object.create(null);
+ H.initHooks();
+ map = init.interceptorsByTag;
+ tags = Object.getOwnPropertyNames(map);
+ if (typeof window != "undefined") {
+ window;
+ for (i = 0; i < tags.length; ++i) {
+ tag = tags[i];
+ proto = $.prototypeForTagFunction.call$1(tag);
+ if (proto != null) {
+ record = H.makeDefaultDispatchRecord(tag, map[tag], proto);
+ if (record != null)
+ Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
+ }
+ }
+ }
+ for (i = 0; i < tags.length; ++i) {
+ tag = tags[i];
+ if (/^[A-Za-z_]/.test(tag)) {
+ interceptorClass = map[tag];
+ map["!" + tag] = interceptorClass;
+ map["~" + tag] = interceptorClass;
+ map["-" + tag] = interceptorClass;
+ map["+" + tag] = interceptorClass;
+ map["*" + tag] = interceptorClass;
+ }
+ }
+ },
+ initHooks: function() {
+ var hooks, transformers, i, transformer, getTag, getUnknownTag, prototypeForTag;
+ hooks = C.JS_CONST_aQP();
+ hooks = H.applyHooksTransformer(C.JS_CONST_0, H.applyHooksTransformer(C.JS_CONST_rr7, H.applyHooksTransformer(C.JS_CONST_Fs4, H.applyHooksTransformer(C.JS_CONST_Fs4, H.applyHooksTransformer(C.JS_CONST_gkc, H.applyHooksTransformer(C.JS_CONST_U4w, H.applyHooksTransformer(C.JS_CONST_QJm(C.JS_CONST_IX5), hooks)))))));
+ if (typeof dartNativeDispatchHooksTransformer != "undefined") {
+ transformers = dartNativeDispatchHooksTransformer;
+ if (typeof transformers == "function")
+ transformers = [transformers];
+ if (transformers.constructor == Array)
+ for (i = 0; i < transformers.length; ++i) {
+ transformer = transformers[i];
+ if (typeof transformer == "function")
+ hooks = transformer(hooks) || hooks;
+ }
+ }
+ getTag = hooks.getTag;
+ getUnknownTag = hooks.getUnknownTag;
+ prototypeForTag = hooks.prototypeForTag;
+ $.getTagFunction = new H.initHooks_closure(getTag);
+ $.alternateTagFunction = new H.initHooks_closure0(getUnknownTag);
+ $.prototypeForTagFunction = new H.initHooks_closure1(prototypeForTag);
+ },
+ applyHooksTransformer: function(transformer, hooks) {
+ return transformer(hooks) || hooks;
+ },
+ ReflectionInfo: {
+ "^": "Object;jsFunction,data,isAccessor,requiredParameterCount,optionalParameterCount,areOptionalParametersNamed,functionType,cachedSortedIndices",
+ static: {"^": "ReflectionInfo_REQUIRED_PARAMETERS_INFO,ReflectionInfo_OPTIONAL_PARAMETERS_INFO,ReflectionInfo_FUNCTION_TYPE_INDEX,ReflectionInfo_FIRST_DEFAULT_ARGUMENT", ReflectionInfo_ReflectionInfo: function(jsFunction) {
+ var data, requiredParametersInfo, requiredParameterCount, optionalParametersInfo;
+ data = jsFunction.$reflectionInfo;
+ if (data == null)
+ return;
+ data.fixed$length = init;
+ data = data;
+ requiredParametersInfo = data[0];
+ requiredParameterCount = requiredParametersInfo >> 1;
+ optionalParametersInfo = data[1];
+ return new H.ReflectionInfo(jsFunction, data, (requiredParametersInfo & 1) === 1, requiredParameterCount, optionalParametersInfo >> 1, (optionalParametersInfo & 1) === 1, data[2], null);
+ }}
+ },
+ TypeErrorDecoder: {
+ "^": "Object;_pattern,_arguments,_argumentsExpr,_expr,_method,_receiver",
+ matchTypeError$1: function(message) {
+ var match, result, t1;
+ match = new RegExp(this._pattern).exec(message);
+ if (match == null)
+ return;
+ result = {};
+ t1 = this._arguments;
+ if (t1 !== -1)
+ result.arguments = match[t1 + 1];
+ t1 = this._argumentsExpr;
+ if (t1 !== -1)
+ result.argumentsExpr = match[t1 + 1];
+ t1 = this._expr;
+ if (t1 !== -1)
+ result.expr = match[t1 + 1];
+ t1 = this._method;
+ if (t1 !== -1)
+ result.method = match[t1 + 1];
+ t1 = this._receiver;
+ if (t1 !== -1)
+ result.receiver = match[t1 + 1];
+ return result;
+ },
+ static: {"^": "TypeErrorDecoder_noSuchMethodPattern,TypeErrorDecoder_notClosurePattern,TypeErrorDecoder_nullCallPattern,TypeErrorDecoder_nullLiteralCallPattern,TypeErrorDecoder_undefinedCallPattern,TypeErrorDecoder_undefinedLiteralCallPattern,TypeErrorDecoder_nullPropertyPattern,TypeErrorDecoder_nullLiteralPropertyPattern,TypeErrorDecoder_undefinedPropertyPattern,TypeErrorDecoder_undefinedLiteralPropertyPattern", TypeErrorDecoder_extractPattern: function(message) {
+ var match, $arguments, argumentsExpr, expr, method, receiver;
+ message = message.replace(String({}), '$receiver$').replace(new RegExp("[[\\]{}()*+?.\\\\^$|]", 'g'), '\\$&');
+ match = message.match(/\\\$[a-zA-Z]+\\\$/g);
+ if (match == null)
+ match = [];
+ $arguments = match.indexOf("\\$arguments\\$");
+ argumentsExpr = match.indexOf("\\$argumentsExpr\\$");
+ expr = match.indexOf("\\$expr\\$");
+ method = match.indexOf("\\$method\\$");
+ receiver = match.indexOf("\\$receiver\\$");
+ return new H.TypeErrorDecoder(message.replace('\\$arguments\\$', '((?:x|[^x])*)').replace('\\$argumentsExpr\\$', '((?:x|[^x])*)').replace('\\$expr\\$', '((?:x|[^x])*)').replace('\\$method\\$', '((?:x|[^x])*)').replace('\\$receiver\\$', '((?:x|[^x])*)'), $arguments, argumentsExpr, expr, method, receiver);
+ }, TypeErrorDecoder_provokeCallErrorOn: function(expression) {
+ return function($expr$) {
+ var $argumentsExpr$ = '$arguments$'
+ try {
+ $expr$.$method$($argumentsExpr$);
+ } catch (e) {
+ return e.message;
+ }
+}(expression);
+ }, TypeErrorDecoder_provokePropertyErrorOn: function(expression) {
+ return function($expr$) {
+ try {
+ $expr$.$method$;
+ } catch (e) {
+ return e.message;
+ }
+}(expression);
+ }}
+ },
+ NullError: {
+ "^": "Error;_message,_method",
+ toString$0: function(_) {
+ var t1 = this._method;
+ if (t1 == null)
+ return "NullError: " + H.S(this._message);
+ return "NullError: Cannot call \"" + H.S(t1) + "\" on null";
+ },
+ $isError: true
+ },
+ JsNoSuchMethodError: {
+ "^": "Error;_message,_method,_receiver",
+ toString$0: function(_) {
+ var t1, t2;
+ t1 = this._method;
+ if (t1 == null)
+ return "NoSuchMethodError: " + H.S(this._message);
+ t2 = this._receiver;
+ if (t2 == null)
+ return "NoSuchMethodError: Cannot call \"" + H.S(t1) + "\" (" + H.S(this._message) + ")";
+ return "NoSuchMethodError: Cannot call \"" + H.S(t1) + "\" on \"" + H.S(t2) + "\" (" + H.S(this._message) + ")";
+ },
+ $isError: true,
+ static: {JsNoSuchMethodError$: function(_message, match) {
+ var t1, t2;
+ t1 = match == null;
+ t2 = t1 ? null : match.method;
+ t1 = t1 ? null : match.receiver;
+ return new H.JsNoSuchMethodError(_message, t2, t1);
+ }}
+ },
+ UnknownJsTypeError: {
+ "^": "Error;_message",
+ toString$0: function(_) {
+ var t1 = this._message;
+ return C.JSString_methods.get$isEmpty(t1) ? "Error" : "Error: " + t1;
+ }
+ },
+ unwrapException_saveStackTrace: {
+ "^": "Closure:11;ex_0",
+ call$1: function(error) {
+ if (!!J.getInterceptor(error).$isError)
+ if (error.$thrownJsError == null)
+ error.$thrownJsError = this.ex_0;
+ return error;
+ }
+ },
+ _StackTrace: {
+ "^": "Object;_exception,_trace",
+ toString$0: function(_) {
+ var t1, trace;
+ t1 = this._trace;
+ if (t1 != null)
+ return t1;
+ t1 = this._exception;
+ trace = typeof t1 === "object" ? t1.stack : null;
+ t1 = trace == null ? "" : trace;
+ this._trace = t1;
+ return t1;
+ }
+ },
+ invokeClosure_closure: {
+ "^": "Closure:9;closure_0",
+ call$0: function() {
+ return this.closure_0.call$0();
+ }
+ },
+ invokeClosure_closure0: {
+ "^": "Closure:9;closure_1,arg1_2",
+ call$0: function() {
+ return this.closure_1.call$1(this.arg1_2);
+ }
+ },
+ invokeClosure_closure1: {
+ "^": "Closure:9;closure_3,arg1_4,arg2_5",
+ call$0: function() {
+ return this.closure_3.call$2(this.arg1_4, this.arg2_5);
+ }
+ },
+ invokeClosure_closure2: {
+ "^": "Closure:9;closure_6,arg1_7,arg2_8,arg3_9",
+ call$0: function() {
+ return this.closure_6.call$3(this.arg1_7, this.arg2_8, this.arg3_9);
+ }
+ },
+ invokeClosure_closure3: {
+ "^": "Closure:9;closure_10,arg1_11,arg2_12,arg3_13,arg4_14",
+ call$0: function() {
+ return this.closure_10.call$4(this.arg1_11, this.arg2_12, this.arg3_13, this.arg4_14);
+ }
+ },
+ Closure: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "Closure";
+ }
+ },
+ TearOffClosure: {
+ "^": "Closure;"
+ },
+ BoundClosure: {
+ "^": "TearOffClosure;_self,__js_helper$_target,_receiver,__js_helper$_name",
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ if (this === other)
+ return true;
+ if (!J.getInterceptor(other).$isBoundClosure)
+ return false;
+ return this._self === other._self && this.__js_helper$_target === other.__js_helper$_target && this._receiver === other._receiver;
+ },
+ get$hashCode: function(_) {
+ var t1, receiverHashCode;
+ t1 = this._receiver;
+ if (t1 == null)
+ receiverHashCode = H.Primitives_objectHashCode(this._self);
+ else
+ receiverHashCode = typeof t1 !== "object" ? J.get$hashCode$(t1) : H.Primitives_objectHashCode(t1);
+ t1 = H.Primitives_objectHashCode(this.__js_helper$_target);
+ if (typeof receiverHashCode !== "number")
+ return receiverHashCode.$xor();
+ return (receiverHashCode ^ t1) >>> 0;
+ },
+ $isBoundClosure: true,
+ static: {"^": "BoundClosure_selfFieldNameCache,BoundClosure_receiverFieldNameCache", BoundClosure_selfOf: function(closure) {
+ return closure._self;
+ }, BoundClosure_receiverOf: function(closure) {
+ return closure._receiver;
+ }, BoundClosure_selfFieldName: function() {
+ var t1 = $.BoundClosure_selfFieldNameCache;
+ if (t1 == null) {
+ t1 = H.BoundClosure_computeFieldNamed("self");
+ $.BoundClosure_selfFieldNameCache = t1;
+ }
+ return t1;
+ }, BoundClosure_computeFieldNamed: function(fieldName) {
+ var template, t1, names, i, $name;
+ template = new H.BoundClosure("self", "target", "receiver", "name");
+ t1 = Object.getOwnPropertyNames(template);
+ t1.fixed$length = init;
+ names = t1;
+ for (t1 = names.length, i = 0; i < t1; ++i) {
+ $name = names[i];
+ if (template[$name] === fieldName)
+ return $name;
+ }
+ }}
+ },
+ RuntimeError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ return "RuntimeError: " + H.S(this.message);
+ },
+ static: {RuntimeError$: function(message) {
+ return new H.RuntimeError(message);
+ }}
+ },
+ RuntimeType: {
+ "^": "Object;"
+ },
+ RuntimeFunctionType: {
+ "^": "RuntimeType;returnType,parameterTypes,optionalParameterTypes,namedParameters",
+ _isTest$1: function(expression) {
+ var functionTypeObject = this._extractFunctionTypeObjectFrom$1(expression);
+ return functionTypeObject == null ? false : H.isFunctionSubtype(functionTypeObject, this.toRti$0());
+ },
+ _extractFunctionTypeObjectFrom$1: function(o) {
+ var interceptor = J.getInterceptor(o);
+ return "$signature" in interceptor ? interceptor.$signature() : null;
+ },
+ toRti$0: function() {
+ var result, t1, t2, namedRti, keys, i, $name;
+ result = { "func": "dynafunc" };
+ t1 = this.returnType;
+ t2 = J.getInterceptor(t1);
+ if (!!t2.$isVoidRuntimeType)
+ result.void = true;
+ else if (!t2.$isDynamicRuntimeType)
+ result.ret = t1.toRti$0();
+ t1 = this.parameterTypes;
+ if (t1 != null && t1.length !== 0)
+ result.args = H.RuntimeFunctionType_listToRti(t1);
+ t1 = this.optionalParameterTypes;
+ if (t1 != null && t1.length !== 0)
+ result.opt = H.RuntimeFunctionType_listToRti(t1);
+ t1 = this.namedParameters;
+ if (t1 != null) {
+ namedRti = {};
+ keys = H.extractKeys(t1);
+ for (t2 = keys.length, i = 0; i < t2; ++i) {
+ $name = keys[i];
+ namedRti[$name] = t1[$name].toRti$0();
+ }
+ result.named = namedRti;
+ }
+ return result;
+ },
+ toString$0: function(_) {
+ var t1, t2, result, needsComma, i, type, keys, $name;
+ t1 = this.parameterTypes;
+ if (t1 != null)
+ for (t2 = t1.length, result = "(", needsComma = false, i = 0; i < t2; ++i, needsComma = true) {
+ type = t1[i];
+ if (needsComma)
+ result += ", ";
+ result += H.S(type);
+ }
+ else {
+ result = "(";
+ needsComma = false;
+ }
+ t1 = this.optionalParameterTypes;
+ if (t1 != null && t1.length !== 0) {
+ result = (needsComma ? result + ", " : result) + "[";
+ for (t2 = t1.length, needsComma = false, i = 0; i < t2; ++i, needsComma = true) {
+ type = t1[i];
+ if (needsComma)
+ result += ", ";
+ result += H.S(type);
+ }
+ result += "]";
+ } else {
+ t1 = this.namedParameters;
+ if (t1 != null) {
+ result = (needsComma ? result + ", " : result) + "{";
+ keys = H.extractKeys(t1);
+ for (t2 = keys.length, needsComma = false, i = 0; i < t2; ++i, needsComma = true) {
+ $name = keys[i];
+ if (needsComma)
+ result += ", ";
+ result += H.S(t1[$name].toRti$0()) + " " + $name;
+ }
+ result += "}";
+ }
+ }
+ return result + (") -> " + H.S(this.returnType));
+ },
+ static: {"^": "RuntimeFunctionType_inAssert", RuntimeFunctionType_listToRti: function(list) {
+ var result, t1, i;
+ list = list;
+ result = [];
+ for (t1 = list.length, i = 0; i < t1; ++i)
+ result.push(list[i].toRti$0());
+ return result;
+ }}
+ },
+ DynamicRuntimeType: {
+ "^": "RuntimeType;",
+ toString$0: function(_) {
+ return "dynamic";
+ },
+ toRti$0: function() {
+ return;
+ },
+ $isDynamicRuntimeType: true
+ },
+ initHooks_closure: {
+ "^": "Closure:11;getTag_0",
+ call$1: function(o) {
+ return this.getTag_0(o);
+ }
+ },
+ initHooks_closure0: {
+ "^": "Closure:12;getUnknownTag_1",
+ call$2: function(o, tag) {
+ return this.getUnknownTag_1(o, tag);
+ }
+ },
+ initHooks_closure1: {
+ "^": "Closure:0;prototypeForTag_2",
+ call$1: function(tag) {
+ return this.prototypeForTag_2(tag);
+ }
+ },
+ JSSyntaxRegExp: {
+ "^": "Object;_nativeRegExp,_nativeGlobalRegExp,_nativeAnchoredRegExp",
+ firstMatch$1: function(str) {
+ var m;
+ if (typeof str !== "string")
+ H.throwExpression(new P.ArgumentError(str));
+ m = this._nativeRegExp.exec(str);
+ if (m == null)
+ return;
+ return H._MatchImplementation$(this, m);
+ },
+ static: {JSSyntaxRegExp_makeNative: function(pattern, multiLine, caseSensitive, global) {
+ var m, i, g, regexp, errorMessage;
+ m = multiLine ? "m" : "";
+ i = caseSensitive ? "" : "i";
+ g = global ? "g" : "";
+ regexp = (function() {try {return new RegExp(pattern, m + i + g);} catch (e) {return e;}})();
+ if (regexp instanceof RegExp)
+ return regexp;
+ errorMessage = String(regexp);
+ throw H.wrapException(P.FormatException$("Illegal RegExp pattern: " + pattern + ", " + errorMessage));
+ }}
+ },
+ _MatchImplementation: {
+ "^": "Object;pattern,_match",
+ $index: function(_, index) {
+ var t1 = this._match;
+ if (index >>> 0 !== index || index >= t1.length)
+ return H.ioore(t1, index);
+ return t1[index];
+ },
+ _MatchImplementation$2: function(pattern, _match) {
+ },
+ static: {_MatchImplementation$: function(pattern, _match) {
+ var t1 = new H._MatchImplementation(pattern, _match);
+ t1._MatchImplementation$2(pattern, _match);
+ return t1;
+ }}
+ }
+}],
+["bank_terminal", "package:bank_terminal_s5/bank_terminal.dart", , D, {
+ "^": "",
+ BankAccount: {
+ "^": "Object;_number,owner,_balance,_pin_code,date_created,date_modified",
+ set$number: function(value) {
+ var t1;
+ if (value == null || J.get$isEmpty$asx(value) === true)
+ return;
+ t1 = H.JSSyntaxRegExp_makeNative("[0-9]{3}-[0-9]{7}-[0-9]{2}", false, true, false);
+ if (typeof value !== "string")
+ H.throwExpression(new P.ArgumentError(value));
+ if (t1.test(value))
+ this._number = value;
+ },
+ toString$0: function(_) {
+ return "Bank account from " + H.S(this.owner) + " with number " + H.S(this._number) + " and balance " + H.S(this._balance);
+ },
+ toJson$0: function() {
+ var acc = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSString, P.Object);
+ acc.$indexSet(0, "number", this._number);
+ acc.$indexSet(0, "owner", this.owner.toJson$0());
+ acc.$indexSet(0, "balance", this._balance);
+ acc.$indexSet(0, "pin_code", this._pin_code);
+ acc.$indexSet(0, "creation_date", this.date_created.toString$0(0));
+ acc.$indexSet(0, "modified_date", J.toString$0(this.date_modified));
+ return C.JsonCodec_null_null.encode$1(acc);
+ },
+ BankAccount$fromJson$1: function(json) {
+ var t1, t2, t3;
+ t1 = J.getInterceptor$asx(json);
+ this.set$number(t1.$index(json, "number"));
+ t2 = new D.Person(null, null, null, null, null);
+ t2.Person$fromJson$1(t1.$index(json, "owner"));
+ this.owner = t2;
+ t2 = t1.$index(json, "balance");
+ if (J.$ge$n(t2, 0))
+ this._balance = t2;
+ t2 = t1.$index(json, "pin_code");
+ t3 = J.getInterceptor$n(t2);
+ if (t3.$ge(t2, 1) && t3.$le(t2, 999999))
+ this._pin_code = t2;
+ this.date_modified = P.DateTime_parse(t1.$index(json, "modified_date"));
+ },
+ static: {"^": "BankAccount_INTEREST"}
+ },
+ Person: {
+ "^": "Object;_bank_terminal$_name,address,_email,_gender,_date_birth",
+ toString$0: function(_) {
+ return "Person: " + H.S(this._bank_terminal$_name) + ", " + H.S(this._gender);
+ },
+ toJson$0: function() {
+ var per = P.LinkedHashMap_LinkedHashMap(null, null, null, J.JSString, P.Object);
+ per.$indexSet(0, "name", this._bank_terminal$_name);
+ per.$indexSet(0, "address", this.address);
+ per.$indexSet(0, "email", this._email);
+ per.$indexSet(0, "gender", this._gender);
+ per.$indexSet(0, "birthdate", J.toString$0(this._date_birth));
+ return per;
+ },
+ Person$fromJson$1: function(json) {
+ var t1, t2, t3;
+ t1 = J.getInterceptor$asx(json);
+ t2 = t1.$index(json, "name");
+ if (t2 != null && J.get$isEmpty$asx(t2) !== true)
+ this._bank_terminal$_name = t2;
+ this.address = t1.$index(json, "address");
+ t2 = t1.$index(json, "email");
+ if (t2 != null && J.get$isEmpty$asx(t2) !== true)
+ this._email = t2;
+ t2 = t1.$index(json, "gender");
+ t3 = J.getInterceptor(t2);
+ if (t3.$eq(t2, "M") || t3.$eq(t2, "F"))
+ this._gender = t2;
+ t1 = P.DateTime_parse(t1.$index(json, "birthdate"));
+ t2 = Date.now();
+ new P.DateTime(t2, false).DateTime$_now$0();
+ if (t1.millisecondsSinceEpoch < t2)
+ this._date_birth = t1;
+ }
+ }
+}],
+["", "bank_terminal_s5.dart", , M, {
+ "^": "",
+ main: [function() {
+ $.owner = document.querySelector("#owner");
+ $.balance = document.querySelector("#balance");
+ $.number = document.querySelector("#number");
+ $.btn_other = document.querySelector("#btn_other");
+ $.amount = document.querySelector("#amount");
+ $.btn_deposit = document.querySelector("#btn_deposit");
+ $.btn_interest = document.querySelector("#btn_interest");
+ $.error = document.querySelector("#error");
+ var t1 = J.get$onInput$x($.number);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.readData$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onChange$x($.amount);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.nonNegative$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onBlur$x($.amount);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.nonNegative$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onClick$x($.btn_other);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.clearData$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onClick$x($.btn_deposit);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.changeBalance$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ t1 = J.get$onClick$x($.btn_interest);
+ H.setRuntimeTypeInfo(new W._EventStreamSubscription(0, t1._target, t1._eventType, W._wrapZone(M.interest$closure()), t1._useCapture), [H.getTypeArgumentByIndex(t1, 0)])._tryResume$0();
+ M.disable_transactions(true);
+ }, "call$0", "main$closure", 0, 0, 1],
+ readData: [function(e) {
+ var key, t1, t2;
+ key = "Bankaccount:" + H.S(J.get$value$x($.number));
+ if (window.localStorage.getItem(key) == null) {
+ J.set$innerHtml$x($.error, "Unknown bank account!");
+ $.number.focus();
+ return;
+ }
+ J.set$innerHtml$x($.error, "");
+ t1 = C.JsonCodec_null_null.decode$1(window.localStorage.getItem(key));
+ t2 = new D.BankAccount(null, null, null, null, P.DateTime_parse(J.$index$asx(t1, "creation_date")), null);
+ t2.BankAccount$fromJson$1(t1);
+ $.bac = t2;
+ J.set$innerHtml$x($.owner, "" + H.S(t2.owner._bank_terminal$_name) + " ");
+ J.set$innerHtml$x($.balance, "" + J.toStringAsFixed$1$n($.bac._balance, 2) + " ");
+ M.disable_transactions(false);
+ }, "call$1", "readData$closure", 2, 0, 2],
+ clearData: [function(e) {
+ J.set$value$x($.number, "");
+ J.set$innerHtml$x($.owner, "----------");
+ J.set$innerHtml$x($.balance, "0.0");
+ $.number.focus();
+ M.disable_transactions(true);
+ return;
+ }, "call$1", "clearData$closure", 2, 0, 2],
+ disable_transactions: function(off) {
+ J.set$disabled$x($.amount, off);
+ J.set$disabled$x($.btn_deposit, off);
+ J.set$disabled$x($.btn_interest, off);
+ },
+ nonNegative: [function(e) {
+ var input, exception;
+ input = null;
+ try {
+ input = H.Primitives_parseDouble(J.get$value$x($.amount), null);
+ } catch (exception) {
+ if (!!J.getInterceptor(H.unwrapException(exception)).$isFormatException) {
+ window.alert("This is not a valid amount!");
+ $.amount.focus();
+ } else
+ throw exception;
+ }
+
+ }, "call$1", "nonNegative$closure", 2, 0, 2],
+ changeBalance: [function(e) {
+ var money_amount, t1, t2;
+ money_amount = H.Primitives_parseDouble(J.get$value$x($.amount), null);
+ t1 = J.$ge$n(money_amount, 0);
+ t2 = $.bac;
+ if (t1) {
+ t1 = J.$add$ns(t2._balance, money_amount);
+ if (J.$ge$n(t1, 0))
+ t2._balance = t1;
+ t1 = new P.DateTime(Date.now(), false);
+ t1.DateTime$_now$0();
+ t2.date_modified = t1;
+ } else {
+ t1 = J.$add$ns(t2._balance, money_amount);
+ if (J.$ge$n(t1, 0))
+ t2._balance = t1;
+ t1 = new P.DateTime(Date.now(), false);
+ t1.DateTime$_now$0();
+ t2.date_modified = t1;
+ }
+ window.localStorage.setItem("Bankaccount:" + H.S($.bac._number), $.bac.toJson$0());
+ J.set$innerHtml$x($.balance, "" + J.toStringAsFixed$1$n($.bac._balance, 2) + " ");
+ J.preventDefault$0$x(e);
+ e.stopPropagation();
+ }, "call$1", "changeBalance$closure", 2, 0, 2],
+ interest: [function(e) {
+ var t1, t2, t3, t4;
+ t1 = $.bac;
+ t2 = t1._balance;
+ t3 = J.getInterceptor$ns(t2);
+ t4 = t3.$mul(t2, 5);
+ if (typeof t4 !== "number")
+ return t4.$div();
+ t4 = t3.$add(t2, t4 / 100);
+ if (J.$ge$n(t4, 0))
+ t1._balance = t4;
+ window.localStorage.setItem("Bankaccount:" + H.S($.bac._number), $.bac.toJson$0());
+ J.set$innerHtml$x($.balance, "" + J.toStringAsFixed$1$n($.bac._balance, 2) + " ");
+ J.preventDefault$0$x(e);
+ e.stopPropagation();
+ }, "call$1", "interest$closure", 2, 0, 2]
+},
+1],
+["dart._internal", "dart:_internal", , H, {
+ "^": "",
+ IterableMixinWorkaround_forEach: function(iterable, f) {
+ var t1;
+ for (t1 = new H.ListIterator(iterable, iterable.length, 0, null); t1.moveNext$0();)
+ f.call$1(t1._current);
+ },
+ IterableMixinWorkaround_any: function(iterable, f) {
+ var t1;
+ for (t1 = new H.ListIterator(iterable, iterable.length, 0, null); t1.moveNext$0();)
+ if (f.call$1(t1._current) === true)
+ return true;
+ return false;
+ },
+ IterableMixinWorkaround_toStringIterable: function(iterable, leftDelimiter, rightDelimiter) {
+ var result, i, t1;
+ for (i = 0; t1 = $.get$IterableMixinWorkaround__toStringList(), i < t1.length; ++i)
+ if (t1[i] === iterable)
+ return H.S(leftDelimiter) + "..." + H.S(rightDelimiter);
+ result = P.StringBuffer$("");
+ try {
+ $.get$IterableMixinWorkaround__toStringList().push(iterable);
+ result.write$1(leftDelimiter);
+ result.writeAll$2(iterable, ", ");
+ result.write$1(rightDelimiter);
+ } finally {
+ t1 = $.get$IterableMixinWorkaround__toStringList();
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ }
+ return result.get$_contents();
+ },
+ IterableMixinWorkaround_setRangeList: function(list, start, end, from, skipCount) {
+ var $length;
+ if (start < 0 || start > list.length)
+ H.throwExpression(P.RangeError$range(start, 0, list.length));
+ if (end < start || end > list.length)
+ H.throwExpression(P.RangeError$range(end, start, list.length));
+ $length = end - start;
+ if ($length === 0)
+ return;
+ if (skipCount < 0)
+ throw H.wrapException(new P.ArgumentError(skipCount));
+ if (skipCount + $length > from.length)
+ throw H.wrapException(P.StateError$("Not enough elements"));
+ H.Lists_copy(from, skipCount, list, start, $length);
+ },
+ Lists_copy: function(src, srcStart, dst, dstStart, count) {
+ var i, j, t1, t2;
+ if (srcStart < dstStart)
+ for (i = srcStart + count - 1, j = dstStart + count - 1, t1 = src.length; i >= srcStart; --i, --j) {
+ if (i < 0 || i >= t1)
+ return H.ioore(src, i);
+ C.JSArray_methods.$indexSet(dst, j, src[i]);
+ }
+ else
+ for (t1 = srcStart + count, t2 = src.length, j = dstStart, i = srcStart; i < t1; ++i, ++j) {
+ if (i < 0 || i >= t2)
+ return H.ioore(src, i);
+ C.JSArray_methods.$indexSet(dst, j, src[i]);
+ }
+ },
+ Symbol_getName: function(symbol) {
+ return symbol.get$_name();
+ },
+ ListIterable: {
+ "^": "IterableBase;",
+ get$iterator: function(_) {
+ return new H.ListIterator(this, this.get$length(this), 0, null);
+ },
+ forEach$1: function(_, action) {
+ var $length, i;
+ $length = this.get$length(this);
+ for (i = 0; i < $length; ++i) {
+ action.call$1(this.elementAt$1(0, i));
+ if ($length !== this.get$length(this))
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ }
+ },
+ get$isEmpty: function(_) {
+ return this.get$length(this) === 0;
+ },
+ $isEfficientLength: true
+ },
+ ListIterator: {
+ "^": "Object;_iterable,_length,_index,_current",
+ get$current: function() {
+ return this._current;
+ },
+ moveNext$0: function() {
+ var t1, t2, $length, t3;
+ t1 = this._iterable;
+ t2 = J.getInterceptor$asx(t1);
+ $length = t2.get$length(t1);
+ if (this._length !== $length)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ t3 = this._index;
+ if (t3 >= $length) {
+ this._current = null;
+ return false;
+ }
+ this._current = t2.elementAt$1(t1, t3);
+ this._index = this._index + 1;
+ return true;
+ }
+ },
+ MappedIterable: {
+ "^": "IterableBase;_iterable,_f",
+ get$iterator: function(_) {
+ var t1 = this._iterable;
+ t1 = new H.MappedIterator(null, t1.get$iterator(t1), this._f);
+ t1.$builtinTypeInfo = this.$builtinTypeInfo;
+ return t1;
+ },
+ get$length: function(_) {
+ var t1 = this._iterable;
+ return t1.get$length(t1);
+ },
+ get$isEmpty: function(_) {
+ var t1 = this._iterable;
+ return t1.get$isEmpty(t1);
+ },
+ $asIterableBase: function($S, $T) {
+ return [$T];
+ },
+ static: {MappedIterable_MappedIterable: function(iterable, $function, $S, $T) {
+ if (!!iterable.$isEfficientLength)
+ return H.setRuntimeTypeInfo(new H.EfficientLengthMappedIterable(iterable, $function), [$S, $T]);
+ return H.setRuntimeTypeInfo(new H.MappedIterable(iterable, $function), [$S, $T]);
+ }}
+ },
+ EfficientLengthMappedIterable: {
+ "^": "MappedIterable;_iterable,_f",
+ $isEfficientLength: true
+ },
+ MappedIterator: {
+ "^": "Iterator;_current,_iterator,_f",
+ _f$1: function(arg0) {
+ return this._f.call$1(arg0);
+ },
+ moveNext$0: function() {
+ var t1 = this._iterator;
+ if (t1.moveNext$0()) {
+ this._current = this._f$1(t1.get$current());
+ return true;
+ }
+ this._current = null;
+ return false;
+ },
+ get$current: function() {
+ return this._current;
+ }
+ },
+ MappedListIterable: {
+ "^": "ListIterable;_source,_f",
+ _f$1: function(arg0) {
+ return this._f.call$1(arg0);
+ },
+ get$length: function(_) {
+ return J.get$length$asx(this._source);
+ },
+ elementAt$1: function(_, index) {
+ return this._f$1(J.elementAt$1$ax(this._source, index));
+ },
+ $asListIterable: function($S, $T) {
+ return [$T];
+ },
+ $asIterableBase: function($S, $T) {
+ return [$T];
+ },
+ $isEfficientLength: true
+ },
+ WhereIterable: {
+ "^": "IterableBase;_iterable,_f",
+ get$iterator: function(_) {
+ var t1 = new H.WhereIterator(J.get$iterator$ax(this._iterable), this._f);
+ t1.$builtinTypeInfo = this.$builtinTypeInfo;
+ return t1;
+ }
+ },
+ WhereIterator: {
+ "^": "Iterator;_iterator,_f",
+ _f$1: function(arg0) {
+ return this._f.call$1(arg0);
+ },
+ moveNext$0: function() {
+ for (var t1 = this._iterator; t1.moveNext$0();)
+ if (this._f$1(t1.get$current()) === true)
+ return true;
+ return false;
+ },
+ get$current: function() {
+ return this._iterator.get$current();
+ }
+ },
+ FixedLengthListMixin: {
+ "^": "Object;"
+ }
+}],
+["dart._js_names", "dart:_js_names", , H, {
+ "^": "",
+ extractKeys: function(victim) {
+ var t1 = H.setRuntimeTypeInfo((function(victim, hasOwnProperty) {
+ var result = [];
+ for (var key in victim) {
+ if (hasOwnProperty.call(victim, key)) result.push(key);
+ }
+ return result;
+})(victim, Object.prototype.hasOwnProperty), [null]);
+ t1.fixed$length = init;
+ return t1;
+ }
+}],
+["dart.async", "dart:async", , P, {
+ "^": "",
+ _registerErrorHandler: function(errorHandler, zone) {
+ var t1 = H.getDynamicRuntimeType();
+ t1 = H.buildFunctionType(t1, [t1, t1])._isTest$1(errorHandler);
+ if (t1) {
+ zone.toString;
+ return errorHandler;
+ } else {
+ zone.toString;
+ return errorHandler;
+ }
+ },
+ _asyncRunCallbackLoop: function() {
+ var entry = $._nextCallback;
+ for (; entry != null;) {
+ entry.callback$0();
+ entry = entry.next;
+ $._nextCallback = entry;
+ }
+ $._lastCallback = null;
+ },
+ _asyncRunCallback: [function() {
+ var exception;
+ try {
+ P._asyncRunCallbackLoop();
+ } catch (exception) {
+ H.unwrapException(exception);
+ P._createTimer(C.Duration_0, P._asyncRunCallback$closure());
+ $._nextCallback = $._nextCallback.next;
+ throw exception;
+ }
+
+ }, "call$0", "_asyncRunCallback$closure", 0, 0, 1],
+ _scheduleAsyncCallback: function(callback) {
+ var t1, t2;
+ t1 = $._lastCallback;
+ if (t1 == null) {
+ t1 = new P._AsyncCallbackEntry(callback, null);
+ $._lastCallback = t1;
+ $._nextCallback = t1;
+ P._createTimer(C.Duration_0, P._asyncRunCallback$closure());
+ } else {
+ t2 = new P._AsyncCallbackEntry(callback, null);
+ t1.next = t2;
+ $._lastCallback = t2;
+ }
+ },
+ _runUserCode: function(userCode, onSuccess, onError) {
+ var e, s, exception, t1;
+ try {
+ onSuccess.call$1(userCode.call$0());
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ onError.call$2(e, s);
+ }
+
+ },
+ _cancelAndError: function(subscription, future, error, stackTrace) {
+ subscription.cancel$0();
+ future._completeError$2(error, stackTrace);
+ },
+ _cancelAndErrorClosure: function(subscription, future) {
+ return new P._cancelAndErrorClosure_closure(subscription, future);
+ },
+ _cancelAndValue: function(subscription, future, value) {
+ subscription.cancel$0();
+ future._complete$1(value);
+ },
+ Timer_Timer: function(duration, callback) {
+ var t1 = $.Zone__current;
+ if (t1 === C.C__RootZone) {
+ t1.toString;
+ return P._rootCreateTimer(t1, null, t1, duration, callback);
+ }
+ return P._rootCreateTimer(t1, null, t1, duration, t1.bindCallback$2$runGuarded(callback, true));
+ },
+ _createTimer: function(duration, callback) {
+ var milliseconds = C.JSInt_methods._tdivFast$1(duration._duration, 1000);
+ return H.TimerImpl$(milliseconds < 0 ? 0 : milliseconds, callback);
+ },
+ Zone__enter: function(zone) {
+ var previous = $.Zone__current;
+ $.Zone__current = zone;
+ return previous;
+ },
+ _rootHandleUncaughtError: function($self, $parent, zone, error, stackTrace) {
+ P._rootRun($self, null, $self, new P._rootHandleUncaughtError_closure(error, stackTrace));
+ },
+ _rootRun: function($self, $parent, zone, f) {
+ var old, t1;
+ if ($.Zone__current === zone)
+ return f.call$0();
+ old = P.Zone__enter(zone);
+ try {
+ t1 = f.call$0();
+ return t1;
+ } finally {
+ $.Zone__current = old;
+ }
+ },
+ _rootRunUnary: function($self, $parent, zone, f, arg) {
+ var old, t1;
+ if ($.Zone__current === zone)
+ return f.call$1(arg);
+ old = P.Zone__enter(zone);
+ try {
+ t1 = f.call$1(arg);
+ return t1;
+ } finally {
+ $.Zone__current = old;
+ }
+ },
+ _rootRunBinary: function($self, $parent, zone, f, arg1, arg2) {
+ var old, t1;
+ if ($.Zone__current === zone)
+ return f.call$2(arg1, arg2);
+ old = P.Zone__enter(zone);
+ try {
+ t1 = f.call$2(arg1, arg2);
+ return t1;
+ } finally {
+ $.Zone__current = old;
+ }
+ },
+ _rootScheduleMicrotask: function($self, $parent, zone, f) {
+ P._scheduleAsyncCallback(C.C__RootZone !== zone ? zone.bindCallback$1(f) : f);
+ },
+ _rootCreateTimer: function($self, $parent, zone, duration, callback) {
+ return P._createTimer(duration, C.C__RootZone !== zone ? zone.bindCallback$1(callback) : callback);
+ },
+ _AsyncError: {
+ "^": "Object;error>,stackTrace<",
+ $isError: true
+ },
+ _Future: {
+ "^": "Object;_state,_zone<,_resultOrListeners,_nextListener<,_onValueCallback,_errorTestCallback,_onErrorCallback,_whenCompleteActionCallback",
+ get$_isComplete: function() {
+ return this._state >= 4;
+ },
+ get$_hasValue: function() {
+ return this._state === 4;
+ },
+ get$_hasError: function() {
+ return this._state === 8;
+ },
+ set$_isChained: function(value) {
+ if (value)
+ this._state = 2;
+ else
+ this._state = 0;
+ },
+ then$2$onError: function(f, onError) {
+ var t1, result;
+ t1 = $.Zone__current;
+ t1.toString;
+ result = H.setRuntimeTypeInfo(new P._Future(0, t1, null, null, f, null, P._registerErrorHandler(onError, t1), null), [null]);
+ this._addListener$1(result);
+ return result;
+ },
+ get$_async$_value: function() {
+ return this._resultOrListeners;
+ },
+ get$_error: function() {
+ return this._resultOrListeners;
+ },
+ _setValue$1: function(value) {
+ this._state = 4;
+ this._resultOrListeners = value;
+ },
+ _setError$2: function(error, stackTrace) {
+ this._state = 8;
+ this._resultOrListeners = new P._AsyncError(error, stackTrace);
+ },
+ _addListener$1: function(listener) {
+ var t1;
+ if (this._state >= 4) {
+ t1 = this._zone;
+ t1.toString;
+ P._rootScheduleMicrotask(t1, null, t1, new P._Future__addListener_closure(this, listener));
+ } else {
+ listener._nextListener = this._resultOrListeners;
+ this._resultOrListeners = listener;
+ }
+ },
+ _removeListeners$0: function() {
+ var current, prev, next;
+ current = this._resultOrListeners;
+ this._resultOrListeners = null;
+ for (prev = null; current != null; prev = current, current = next) {
+ next = current.get$_nextListener();
+ current._nextListener = prev;
+ }
+ return prev;
+ },
+ _complete$1: function(value) {
+ var t1, listeners;
+ t1 = J.getInterceptor(value);
+ if (!!t1.$isFuture)
+ if (!!t1.$is_Future)
+ P._Future__chainCoreFuture(value, this);
+ else
+ P._Future__chainForeignFuture(value, this);
+ else {
+ listeners = this._removeListeners$0();
+ this._setValue$1(value);
+ P._Future__propagateToListeners(this, listeners);
+ }
+ },
+ _completeError$2: [function(error, stackTrace) {
+ var listeners = this._removeListeners$0();
+ this._setError$2(error, stackTrace);
+ P._Future__propagateToListeners(this, listeners);
+ }, function(error) {
+ return this._completeError$2(error, null);
+ }, "_completeError$1", "call$2", "call$1", "get$_completeError", 2, 2, 13, 14],
+ $is_Future: true,
+ $isFuture: true,
+ static: {"^": "_Future__INCOMPLETE,_Future__PENDING_COMPLETE,_Future__CHAINED,_Future__VALUE,_Future__ERROR", _Future$: function($T) {
+ return H.setRuntimeTypeInfo(new P._Future(0, $.Zone__current, null, null, null, null, null, null), [$T]);
+ }, _Future__chainForeignFuture: function(source, target) {
+ target._state = 2;
+ source.then$2$onError(new P._Future__chainForeignFuture_closure(target), new P._Future__chainForeignFuture_closure0(target));
+ }, _Future__chainCoreFuture: function(source, target) {
+ target._state = 2;
+ if (source._state >= 4)
+ P._Future__propagateToListeners(source, target);
+ else
+ source._addListener$1(target);
+ }, _Future__propagateMultipleListeners: function(source, listeners) {
+ var listeners0;
+ do {
+ listeners0 = listeners.get$_nextListener();
+ listeners._nextListener = null;
+ P._Future__propagateToListeners(source, listeners);
+ if (listeners0 != null) {
+ listeners = listeners0;
+ continue;
+ } else
+ break;
+ } while (true);
+ }, _Future__propagateToListeners: function(source, listeners) {
+ var t1, t2, t3, hasError, asyncError, t4, sourceValue, t5, zone, oldZone, chainSource, listeners0;
+ t1 = {};
+ t1.source_4 = source;
+ for (t2 = source; true;) {
+ t3 = {};
+ if (!t2.get$_isComplete())
+ return;
+ hasError = t1.source_4.get$_hasError();
+ if (hasError && listeners == null) {
+ t2 = t1.source_4;
+ asyncError = t2.get$_error();
+ t2 = t2._zone;
+ t3 = J.get$error$x(asyncError);
+ t4 = asyncError.get$stackTrace();
+ t2.toString;
+ P._rootHandleUncaughtError(t2, null, t2, t3, t4);
+ return;
+ }
+ if (listeners == null)
+ return;
+ if (listeners._nextListener != null) {
+ P._Future__propagateMultipleListeners(t1.source_4, listeners);
+ return;
+ }
+ t3.listenerHasValue_1 = true;
+ sourceValue = t1.source_4.get$_hasValue() ? t1.source_4.get$_async$_value() : null;
+ t3.listenerValueOrError_2 = sourceValue;
+ t3.isPropagationAborted_3 = false;
+ t2 = !hasError;
+ if (t2) {
+ t4 = listeners._state === 2;
+ if ((t4 ? null : listeners._onValueCallback) == null) {
+ t5 = (t4 ? null : listeners._whenCompleteActionCallback) != null;
+ t4 = t5;
+ } else
+ t4 = true;
+ } else
+ t4 = true;
+ if (t4) {
+ zone = listeners._zone;
+ if (hasError) {
+ t4 = t1.source_4.get$_zone();
+ t4.toString;
+ zone.toString;
+ t4 = zone == null ? t4 != null : zone !== t4;
+ } else
+ t4 = false;
+ if (t4) {
+ t2 = t1.source_4;
+ asyncError = t2.get$_error();
+ t2 = t2._zone;
+ t3 = J.get$error$x(asyncError);
+ t4 = asyncError.get$stackTrace();
+ t2.toString;
+ P._rootHandleUncaughtError(t2, null, t2, t3, t4);
+ return;
+ }
+ oldZone = $.Zone__current;
+ if (oldZone == null ? zone != null : oldZone !== zone)
+ $.Zone__current = zone;
+ else
+ oldZone = null;
+ if (t2) {
+ if ((listeners._state === 2 ? null : listeners._onValueCallback) != null)
+ t3.listenerHasValue_1 = new P._Future__propagateToListeners_handleValueCallback(t3, listeners, sourceValue, zone).call$0();
+ } else
+ new P._Future__propagateToListeners_handleError(t1, t3, listeners, zone).call$0();
+ if ((listeners._state === 2 ? null : listeners._whenCompleteActionCallback) != null)
+ new P._Future__propagateToListeners_handleWhenCompleteCallback(t1, t3, hasError, listeners, zone).call$0();
+ if (oldZone != null)
+ $.Zone__current = oldZone;
+ if (t3.isPropagationAborted_3)
+ return;
+ if (t3.listenerHasValue_1 === true) {
+ t2 = t3.listenerValueOrError_2;
+ t2 = (sourceValue == null ? t2 != null : sourceValue !== t2) && !!J.getInterceptor(t2).$isFuture;
+ } else
+ t2 = false;
+ if (t2) {
+ chainSource = t3.listenerValueOrError_2;
+ if (!!J.getInterceptor(chainSource).$is_Future)
+ if (chainSource._state >= 4) {
+ listeners._state = 2;
+ t1.source_4 = chainSource;
+ t2 = chainSource;
+ continue;
+ } else
+ P._Future__chainCoreFuture(chainSource, listeners);
+ else
+ P._Future__chainForeignFuture(chainSource, listeners);
+ return;
+ }
+ }
+ if (t3.listenerHasValue_1 === true) {
+ listeners0 = listeners._removeListeners$0();
+ t2 = t3.listenerValueOrError_2;
+ listeners._state = 4;
+ listeners._resultOrListeners = t2;
+ } else {
+ listeners0 = listeners._removeListeners$0();
+ asyncError = t3.listenerValueOrError_2;
+ t2 = J.get$error$x(asyncError);
+ t3 = asyncError.get$stackTrace();
+ listeners._state = 8;
+ listeners._resultOrListeners = new P._AsyncError(t2, t3);
+ }
+ t1.source_4 = listeners;
+ t2 = listeners;
+ listeners = listeners0;
+ }
+ }}
+ },
+ _Future__addListener_closure: {
+ "^": "Closure:9;this_0,listener_1",
+ call$0: function() {
+ P._Future__propagateToListeners(this.this_0, this.listener_1);
+ }
+ },
+ _Future__chainForeignFuture_closure: {
+ "^": "Closure:11;target_0",
+ call$1: function(value) {
+ var t1, listeners;
+ t1 = this.target_0;
+ listeners = t1._removeListeners$0();
+ t1._setValue$1(value);
+ P._Future__propagateToListeners(t1, listeners);
+ }
+ },
+ _Future__chainForeignFuture_closure0: {
+ "^": "Closure:15;target_1",
+ call$2: function(error, stackTrace) {
+ this.target_1._completeError$2(error, stackTrace);
+ },
+ call$1: function(error) {
+ return this.call$2(error, null);
+ }
+ },
+ _Future__propagateToListeners_handleValueCallback: {
+ "^": "Closure:16;box_1,listener_3,sourceValue_4,zone_5",
+ call$0: function() {
+ var e, s, t1, t2, exception;
+ try {
+ t1 = this.zone_5;
+ t2 = this.listener_3;
+ t2 = t2._state === 2 ? null : t2._onValueCallback;
+ t1.toString;
+ this.box_1.listenerValueOrError_2 = P._rootRunUnary(t1, null, t1, t2, this.sourceValue_4);
+ return true;
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ this.box_1.listenerValueOrError_2 = new P._AsyncError(e, s);
+ return false;
+ }
+
+ }
+ },
+ _Future__propagateToListeners_handleError: {
+ "^": "Closure:1;box_2,box_1,listener_6,zone_7",
+ call$0: function() {
+ var asyncError, test, matchesTest, e, s, errorCallback, e0, s0, t1, t2, t3, exception, listenerValueOrError, t4;
+ asyncError = this.box_2.source_4.get$_error();
+ t1 = this.listener_6;
+ test = t1._state === 2 ? null : t1._errorTestCallback;
+ matchesTest = true;
+ if (test != null)
+ try {
+ t2 = this.zone_7;
+ t3 = J.get$error$x(asyncError);
+ t2.toString;
+ matchesTest = P._rootRunUnary(t2, null, t2, test, t3);
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ t1 = J.get$error$x(asyncError);
+ t2 = e;
+ listenerValueOrError = (t1 == null ? t2 == null : t1 === t2) ? asyncError : new P._AsyncError(e, s);
+ t1 = this.box_1;
+ t1.listenerValueOrError_2 = listenerValueOrError;
+ t1.listenerHasValue_1 = false;
+ return;
+ }
+
+ errorCallback = t1._state === 2 ? null : t1._onErrorCallback;
+ if (matchesTest === true && errorCallback != null) {
+ try {
+ t1 = errorCallback;
+ t2 = H.getDynamicRuntimeType();
+ t2 = H.buildFunctionType(t2, [t2, t2])._isTest$1(t1);
+ t3 = this.zone_7;
+ t4 = this.box_1;
+ if (t2) {
+ t1 = J.get$error$x(asyncError);
+ t2 = asyncError.get$stackTrace();
+ t3.toString;
+ t4.listenerValueOrError_2 = P._rootRunBinary(t3, null, t3, errorCallback, t1, t2);
+ } else {
+ t1 = J.get$error$x(asyncError);
+ t3.toString;
+ t4.listenerValueOrError_2 = P._rootRunUnary(t3, null, t3, errorCallback, t1);
+ }
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e0 = t1;
+ s0 = new H._StackTrace(exception, null);
+ t1 = J.get$error$x(asyncError);
+ t2 = e0;
+ listenerValueOrError = (t1 == null ? t2 == null : t1 === t2) ? asyncError : new P._AsyncError(e0, s0);
+ t1 = this.box_1;
+ t1.listenerValueOrError_2 = listenerValueOrError;
+ t1.listenerHasValue_1 = false;
+ return;
+ }
+
+ this.box_1.listenerHasValue_1 = true;
+ } else {
+ t1 = this.box_1;
+ t1.listenerValueOrError_2 = asyncError;
+ t1.listenerHasValue_1 = false;
+ }
+ }
+ },
+ _Future__propagateToListeners_handleWhenCompleteCallback: {
+ "^": "Closure:1;box_2,box_1,hasError_8,listener_9,zone_10",
+ call$0: function() {
+ var t1, e, s, t2, t3, exception;
+ t1 = {};
+ t1.completeResult_0 = null;
+ try {
+ t2 = this.zone_10;
+ t3 = this.listener_9;
+ t3 = t3._state === 2 ? null : t3._whenCompleteActionCallback;
+ t2.toString;
+ t1.completeResult_0 = P._rootRun(t2, null, t2, t3);
+ } catch (exception) {
+ t2 = H.unwrapException(exception);
+ e = t2;
+ s = new H._StackTrace(exception, null);
+ if (this.hasError_8) {
+ t2 = J.get$error$x(this.box_2.source_4.get$_error());
+ t3 = e;
+ t3 = t2 == null ? t3 == null : t2 === t3;
+ t2 = t3;
+ } else
+ t2 = false;
+ t3 = this.box_1;
+ if (t2)
+ t3.listenerValueOrError_2 = this.box_2.source_4.get$_error();
+ else
+ t3.listenerValueOrError_2 = new P._AsyncError(e, s);
+ t3.listenerHasValue_1 = false;
+ }
+
+ if (!!J.getInterceptor(t1.completeResult_0).$isFuture) {
+ t2 = this.listener_9;
+ t2.set$_isChained(true);
+ this.box_1.isPropagationAborted_3 = true;
+ t1.completeResult_0.then$2$onError(new P._Future__propagateToListeners_handleWhenCompleteCallback_closure(this.box_2, t2), new P._Future__propagateToListeners_handleWhenCompleteCallback_closure0(t1, t2));
+ }
+ }
+ },
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure: {
+ "^": "Closure:11;box_2,listener_11",
+ call$1: function(ignored) {
+ P._Future__propagateToListeners(this.box_2.source_4, this.listener_11);
+ }
+ },
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure0: {
+ "^": "Closure:15;box_0,listener_12",
+ call$2: function(error, stackTrace) {
+ var t1, completeResult;
+ t1 = this.box_0;
+ if (!J.getInterceptor(t1.completeResult_0).$is_Future) {
+ completeResult = P._Future$(null);
+ t1.completeResult_0 = completeResult;
+ completeResult._setError$2(error, stackTrace);
+ }
+ P._Future__propagateToListeners(t1.completeResult_0, this.listener_12);
+ },
+ call$1: function(error) {
+ return this.call$2(error, null);
+ }
+ },
+ _AsyncCallbackEntry: {
+ "^": "Object;callback,next",
+ callback$0: function() {
+ return this.callback.call$0();
+ }
+ },
+ Stream: {
+ "^": "Object;",
+ forEach$1: function(_, action) {
+ var t1, future;
+ t1 = {};
+ future = P._Future$(null);
+ t1.subscription_0 = null;
+ t1.subscription_0 = this.listen$4$cancelOnError$onDone$onError(new P.Stream_forEach_closure(t1, this, action, future), true, new P.Stream_forEach_closure0(future), future.get$_completeError());
+ return future;
+ },
+ get$length: function(_) {
+ var t1, future;
+ t1 = {};
+ future = P._Future$(J.JSInt);
+ t1.count_0 = 0;
+ this.listen$4$cancelOnError$onDone$onError(new P.Stream_length_closure(t1), true, new P.Stream_length_closure0(t1, future), future.get$_completeError());
+ return future;
+ },
+ get$isEmpty: function(_) {
+ var t1, future;
+ t1 = {};
+ future = P._Future$(J.JSBool);
+ t1.subscription_0 = null;
+ t1.subscription_0 = this.listen$4$cancelOnError$onDone$onError(new P.Stream_isEmpty_closure(t1, future), true, new P.Stream_isEmpty_closure0(future), future.get$_completeError());
+ return future;
+ }
+ },
+ Stream_forEach_closure: {
+ "^": "Closure;box_0,this_1,action_2,future_3",
+ call$1: function(element) {
+ P._runUserCode(new P.Stream_forEach__closure(this.action_2, element), new P.Stream_forEach__closure0(), P._cancelAndErrorClosure(this.box_0.subscription_0, this.future_3));
+ },
+ $signature: function() {
+ return H.computeSignature(function(T) {
+ return {func: "dynamic__T", args: [T]};
+ }, this.this_1, "Stream");
+ }
+ },
+ Stream_forEach__closure: {
+ "^": "Closure:9;action_4,element_5",
+ call$0: function() {
+ return this.action_4.call$1(this.element_5);
+ }
+ },
+ Stream_forEach__closure0: {
+ "^": "Closure:11;",
+ call$1: function(_) {
+ }
+ },
+ Stream_forEach_closure0: {
+ "^": "Closure:9;future_6",
+ call$0: function() {
+ this.future_6._complete$1(null);
+ }
+ },
+ Stream_length_closure: {
+ "^": "Closure:11;box_0",
+ call$1: function(_) {
+ var t1 = this.box_0;
+ t1.count_0 = t1.count_0 + 1;
+ }
+ },
+ Stream_length_closure0: {
+ "^": "Closure:9;box_0,future_1",
+ call$0: function() {
+ this.future_1._complete$1(this.box_0.count_0);
+ }
+ },
+ Stream_isEmpty_closure: {
+ "^": "Closure:11;box_0,future_1",
+ call$1: function(_) {
+ P._cancelAndValue(this.box_0.subscription_0, this.future_1, false);
+ }
+ },
+ Stream_isEmpty_closure0: {
+ "^": "Closure:9;future_2",
+ call$0: function() {
+ this.future_2._complete$1(true);
+ }
+ },
+ StreamSubscription: {
+ "^": "Object;"
+ },
+ _EventSink: {
+ "^": "Object;"
+ },
+ _cancelAndError_closure: {
+ "^": "Closure:9;future_0,error_1,stackTrace_2",
+ call$0: function() {
+ return this.future_0._completeError$2(this.error_1, this.stackTrace_2);
+ }
+ },
+ _cancelAndErrorClosure_closure: {
+ "^": "Closure:17;subscription_0,future_1",
+ call$2: function(error, stackTrace) {
+ return P._cancelAndError(this.subscription_0, this.future_1, error, stackTrace);
+ }
+ },
+ _cancelAndValue_closure: {
+ "^": "Closure:9;future_0,value_1",
+ call$0: function() {
+ return this.future_0._complete$1(this.value_1);
+ }
+ },
+ _BaseZone: {
+ "^": "Object;",
+ runGuarded$1: function(f) {
+ var e, s, t1, exception;
+ try {
+ t1 = this.run$1(f);
+ return t1;
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ return this.handleUncaughtError$2(e, s);
+ }
+
+ },
+ runUnaryGuarded$2: function(f, arg) {
+ var e, s, t1, exception;
+ try {
+ t1 = this.runUnary$2(f, arg);
+ return t1;
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ s = new H._StackTrace(exception, null);
+ return this.handleUncaughtError$2(e, s);
+ }
+
+ },
+ bindCallback$2$runGuarded: function(f, runGuarded) {
+ var registered = this.registerCallback$1(f);
+ if (runGuarded)
+ return new P._BaseZone_bindCallback_closure(this, registered);
+ else
+ return new P._BaseZone_bindCallback_closure0(this, registered);
+ },
+ bindCallback$1: function(f) {
+ return this.bindCallback$2$runGuarded(f, true);
+ },
+ bindUnaryCallback$2$runGuarded: function(f, runGuarded) {
+ var registered = this.registerUnaryCallback$1(f);
+ if (runGuarded)
+ return new P._BaseZone_bindUnaryCallback_closure(this, registered);
+ else
+ return new P._BaseZone_bindUnaryCallback_closure0(this, registered);
+ }
+ },
+ _BaseZone_bindCallback_closure: {
+ "^": "Closure:9;this_0,registered_1",
+ call$0: function() {
+ return this.this_0.runGuarded$1(this.registered_1);
+ }
+ },
+ _BaseZone_bindCallback_closure0: {
+ "^": "Closure:9;this_2,registered_3",
+ call$0: function() {
+ return this.this_2.run$1(this.registered_3);
+ }
+ },
+ _BaseZone_bindUnaryCallback_closure: {
+ "^": "Closure:11;this_0,registered_1",
+ call$1: function(arg) {
+ return this.this_0.runUnaryGuarded$2(this.registered_1, arg);
+ }
+ },
+ _BaseZone_bindUnaryCallback_closure0: {
+ "^": "Closure:11;this_2,registered_3",
+ call$1: function(arg) {
+ return this.this_2.runUnary$2(this.registered_3, arg);
+ }
+ },
+ _rootHandleUncaughtError_closure: {
+ "^": "Closure:9;error_0,stackTrace_1",
+ call$0: function() {
+ P._scheduleAsyncCallback(new P._rootHandleUncaughtError__closure(this.error_0, this.stackTrace_1));
+ }
+ },
+ _rootHandleUncaughtError__closure: {
+ "^": "Closure:9;error_2,stackTrace_3",
+ call$0: function() {
+ var t1, trace;
+ t1 = this.error_2;
+ P.print("Uncaught Error: " + H.S(t1));
+ trace = this.stackTrace_3;
+ if (trace == null && !!J.getInterceptor(t1).$isError)
+ trace = t1.get$stackTrace();
+ if (trace != null)
+ P.print("Stack Trace: \n" + H.S(trace) + "\n");
+ throw H.wrapException(t1);
+ }
+ },
+ _RootZone: {
+ "^": "_BaseZone;",
+ $index: function(_, key) {
+ return;
+ },
+ handleUncaughtError$2: function(error, stackTrace) {
+ return P._rootHandleUncaughtError(this, null, this, error, stackTrace);
+ },
+ run$1: function(f) {
+ return P._rootRun(this, null, this, f);
+ },
+ runUnary$2: function(f, arg) {
+ return P._rootRunUnary(this, null, this, f, arg);
+ },
+ registerCallback$1: function(f) {
+ return f;
+ },
+ registerUnaryCallback$1: function(f) {
+ return f;
+ }
+ }
+}],
+["dart.collection", "dart:collection", , P, {
+ "^": "",
+ _defaultEquals: [function(a, b) {
+ return J.$eq(a, b);
+ }, "call$2", "_defaultEquals$closure", 4, 0, 3],
+ _defaultHashCode: [function(a) {
+ return J.get$hashCode$(a);
+ }, "call$1", "_defaultHashCode$closure", 2, 0, 4],
+ HashMap_HashMap: function(equals, hashCode, isValidKey, $K, $V) {
+ return H.setRuntimeTypeInfo(new P._HashMap(0, null, null, null, null), [$K, $V]);
+ },
+ HashSet_HashSet$identity: function($E) {
+ return H.setRuntimeTypeInfo(new P._IdentityHashSet(0, null, null, null, null), [$E]);
+ },
+ _iterableToString: function(iterable) {
+ var parts, t1;
+ if ($.get$_toStringVisiting().contains$1(0, iterable))
+ return "(...)";
+ $.get$_toStringVisiting().add$1(0, iterable);
+ parts = [];
+ try {
+ P._iterablePartsToStrings(iterable, parts);
+ } finally {
+ $.get$_toStringVisiting().remove$1(0, iterable);
+ }
+ t1 = P.StringBuffer$("(");
+ t1.writeAll$2(parts, ", ");
+ t1.write$1(")");
+ return t1._contents;
+ },
+ _iterablePartsToStrings: function(iterable, parts) {
+ var it, $length, count, next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision;
+ it = iterable.get$iterator(iterable);
+ $length = 0;
+ count = 0;
+ while (true) {
+ if (!($length < 80 || count < 3))
+ break;
+ if (!it.moveNext$0())
+ return;
+ next = H.S(it.get$current());
+ parts.push(next);
+ $length += next.length + 2;
+ ++count;
+ }
+ if (!it.moveNext$0()) {
+ if (count <= 5)
+ return;
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ ultimateString = parts.pop();
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ penultimateString = parts.pop();
+ } else {
+ penultimate = it.get$current();
+ ++count;
+ if (!it.moveNext$0()) {
+ if (count <= 4) {
+ parts.push(H.S(penultimate));
+ return;
+ }
+ ultimateString = H.S(penultimate);
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ penultimateString = parts.pop();
+ $length += ultimateString.length + 2;
+ } else {
+ ultimate = it.get$current();
+ ++count;
+ for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
+ ultimate0 = it.get$current();
+ ++count;
+ if (count > 100) {
+ while (true) {
+ if (!($length > 75 && count > 3))
+ break;
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ $length -= parts.pop().length + 2;
+ --count;
+ }
+ parts.push("...");
+ return;
+ }
+ }
+ penultimateString = H.S(penultimate);
+ ultimateString = H.S(ultimate);
+ $length += ultimateString.length + penultimateString.length + 4;
+ }
+ }
+ if (count > parts.length + 2) {
+ $length += 5;
+ elision = "...";
+ } else
+ elision = null;
+ while (true) {
+ if (!($length > 80 && parts.length > 3))
+ break;
+ if (0 >= parts.length)
+ return H.ioore(parts, 0);
+ $length -= parts.pop().length + 2;
+ if (elision == null) {
+ $length += 5;
+ elision = "...";
+ }
+ }
+ if (elision != null)
+ parts.push(elision);
+ parts.push(penultimateString);
+ parts.push(ultimateString);
+ },
+ LinkedHashMap_LinkedHashMap: function(equals, hashCode, isValidKey, $K, $V) {
+ return H.setRuntimeTypeInfo(new P._LinkedHashMap(0, null, null, null, null, null, 0), [$K, $V]);
+ },
+ LinkedHashSet_LinkedHashSet: function(equals, hashCode, isValidKey, $E) {
+ return H.setRuntimeTypeInfo(new P._LinkedHashSet(0, null, null, null, null, null, 0), [$E]);
+ },
+ Maps_mapToString: function(m) {
+ var t1, result, i, t2;
+ t1 = {};
+ for (i = 0; t2 = $.get$Maps__toStringList(), i < t2.length; ++i)
+ if (t2[i] === m)
+ return "{...}";
+ result = P.StringBuffer$("");
+ try {
+ $.get$Maps__toStringList().push(m);
+ result.write$1("{");
+ t1.first_0 = true;
+ J.forEach$1$ax(m, new P.Maps_mapToString_closure(t1, result));
+ result.write$1("}");
+ } finally {
+ t1 = $.get$Maps__toStringList();
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ }
+ return result.get$_contents();
+ },
+ _HashMap: {
+ "^": "Object;_collection$_length,_strings,_nums,_rest,_keys",
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ get$keys: function(_) {
+ return H.setRuntimeTypeInfo(new P.HashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]);
+ },
+ get$values: function(_) {
+ return H.MappedIterable_MappedIterable(H.setRuntimeTypeInfo(new P.HashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]), new P._HashMap_values_closure(this), H.getTypeArgumentByIndex(this, 0), H.getTypeArgumentByIndex(this, 1));
+ },
+ $index: function(_, key) {
+ var strings, t1, entry, nums, rest, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null)
+ t1 = null;
+ else {
+ entry = strings[key];
+ t1 = entry === strings ? null : entry;
+ }
+ return t1;
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null)
+ t1 = null;
+ else {
+ entry = nums[key];
+ t1 = entry === nums ? null : entry;
+ }
+ return t1;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(key)];
+ index = this._findBucketIndex$2(bucket, key);
+ return index < 0 ? null : bucket[index + 1];
+ }
+ },
+ $indexSet: function(_, key, value) {
+ var strings, nums, rest, hash, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null) {
+ strings = P._HashMap__newHashTable();
+ this._strings = strings;
+ }
+ this._addHashTableEntry$3(strings, key, value);
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null) {
+ nums = P._HashMap__newHashTable();
+ this._nums = nums;
+ }
+ this._addHashTableEntry$3(nums, key, value);
+ } else {
+ rest = this._rest;
+ if (rest == null) {
+ rest = P._HashMap__newHashTable();
+ this._rest = rest;
+ }
+ hash = this._computeHashCode$1(key);
+ bucket = rest[hash];
+ if (bucket == null) {
+ P._HashMap__setTableEntry(rest, hash, [key, value]);
+ this._collection$_length = this._collection$_length + 1;
+ this._keys = null;
+ } else {
+ index = this._findBucketIndex$2(bucket, key);
+ if (index >= 0)
+ bucket[index + 1] = value;
+ else {
+ bucket.push(key, value);
+ this._collection$_length = this._collection$_length + 1;
+ this._keys = null;
+ }
+ }
+ }
+ },
+ forEach$1: function(_, action) {
+ var keys, $length, i, key;
+ keys = this._computeKeys$0();
+ for ($length = keys.length, i = 0; i < $length; ++i) {
+ key = keys[i];
+ action.call$2(key, this.$index(0, key));
+ if (keys !== this._keys)
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ }
+ },
+ _computeKeys$0: function() {
+ var t1, result, strings, names, entries, index, i, nums, rest, bucket, $length, i0;
+ t1 = this._keys;
+ if (t1 != null)
+ return t1;
+ result = Array(this._collection$_length);
+ result.fixed$length = init;
+ strings = this._strings;
+ if (strings != null) {
+ names = Object.getOwnPropertyNames(strings);
+ entries = names.length;
+ for (index = 0, i = 0; i < entries; ++i) {
+ result[index] = names[i];
+ ++index;
+ }
+ } else
+ index = 0;
+ nums = this._nums;
+ if (nums != null) {
+ names = Object.getOwnPropertyNames(nums);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ result[index] = +names[i];
+ ++index;
+ }
+ }
+ rest = this._rest;
+ if (rest != null) {
+ names = Object.getOwnPropertyNames(rest);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ bucket = rest[names[i]];
+ $length = bucket.length;
+ for (i0 = 0; i0 < $length; i0 += 2) {
+ result[index] = bucket[i0];
+ ++index;
+ }
+ }
+ }
+ this._keys = result;
+ return result;
+ },
+ _addHashTableEntry$3: function(table, key, value) {
+ if (table[key] == null) {
+ this._collection$_length = this._collection$_length + 1;
+ this._keys = null;
+ }
+ P._HashMap__setTableEntry(table, key, value);
+ },
+ _computeHashCode$1: function(key) {
+ return J.get$hashCode$(key) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, key) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; i += 2)
+ if (J.$eq(bucket[i], key))
+ return i;
+ return -1;
+ },
+ $isMap: true,
+ $asMap: null,
+ static: {_HashMap__setTableEntry: function(table, key, value) {
+ if (value == null)
+ table[key] = table;
+ else
+ table[key] = value;
+ }, _HashMap__newHashTable: function() {
+ var table = Object.create(null);
+ P._HashMap__setTableEntry(table, "", table);
+ delete table[""];
+ return table;
+ }}
+ },
+ _HashMap_values_closure: {
+ "^": "Closure:11;this_0",
+ call$1: function(each) {
+ return this.this_0.$index(0, each);
+ }
+ },
+ HashMapKeyIterable: {
+ "^": "IterableBase;_map",
+ get$length: function(_) {
+ return this._map._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._map._collection$_length === 0;
+ },
+ get$iterator: function(_) {
+ var t1 = this._map;
+ return new P.HashMapKeyIterator(t1, t1._computeKeys$0(), 0, null);
+ },
+ forEach$1: function(_, f) {
+ var t1, keys, $length, i;
+ t1 = this._map;
+ keys = t1._computeKeys$0();
+ for ($length = keys.length, i = 0; i < $length; ++i) {
+ f.call$1(keys[i]);
+ if (keys !== t1._keys)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ }
+ },
+ $isEfficientLength: true
+ },
+ HashMapKeyIterator: {
+ "^": "Object;_map,_keys,_offset,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var keys, offset, t1;
+ keys = this._keys;
+ offset = this._offset;
+ t1 = this._map;
+ if (keys !== t1._keys)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else if (offset >= keys.length) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = keys[offset];
+ this._offset = offset + 1;
+ return true;
+ }
+ }
+ },
+ _LinkedHashMap: {
+ "^": "Object;_collection$_length,_strings,_nums,_rest,_first,_last,_modifications",
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ get$keys: function(_) {
+ return H.setRuntimeTypeInfo(new P.LinkedHashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]);
+ },
+ get$values: function(_) {
+ return H.MappedIterable_MappedIterable(H.setRuntimeTypeInfo(new P.LinkedHashMapKeyIterable(this), [H.getTypeArgumentByIndex(this, 0)]), new P._LinkedHashMap_values_closure(this), H.getTypeArgumentByIndex(this, 0), H.getTypeArgumentByIndex(this, 1));
+ },
+ containsKey$1: function(_, key) {
+ var nums, rest;
+ if ((key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null)
+ return false;
+ return nums[key] != null;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ return this._findBucketIndex$2(rest[this._computeHashCode$1(key)], key) >= 0;
+ }
+ },
+ $index: function(_, key) {
+ var strings, cell, nums, rest, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null)
+ return;
+ cell = strings[key];
+ return cell == null ? null : cell.get$_value();
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null)
+ return;
+ cell = nums[key];
+ return cell == null ? null : cell.get$_value();
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(key)];
+ index = this._findBucketIndex$2(bucket, key);
+ if (index < 0)
+ return;
+ return bucket[index].get$_value();
+ }
+ },
+ $indexSet: function(_, key, value) {
+ var strings, nums, rest, hash, bucket, index;
+ if (typeof key === "string" && key !== "__proto__") {
+ strings = this._strings;
+ if (strings == null) {
+ strings = P._LinkedHashMap__newHashTable();
+ this._strings = strings;
+ }
+ this._addHashTableEntry$3(strings, key, value);
+ } else if (typeof key === "number" && (key & 0x3ffffff) === key) {
+ nums = this._nums;
+ if (nums == null) {
+ nums = P._LinkedHashMap__newHashTable();
+ this._nums = nums;
+ }
+ this._addHashTableEntry$3(nums, key, value);
+ } else {
+ rest = this._rest;
+ if (rest == null) {
+ rest = P._LinkedHashMap__newHashTable();
+ this._rest = rest;
+ }
+ hash = this._computeHashCode$1(key);
+ bucket = rest[hash];
+ if (bucket == null)
+ rest[hash] = [this._newLinkedCell$2(key, value)];
+ else {
+ index = this._findBucketIndex$2(bucket, key);
+ if (index >= 0)
+ bucket[index].set$_value(value);
+ else
+ bucket.push(this._newLinkedCell$2(key, value));
+ }
+ }
+ },
+ remove$1: function(_, key) {
+ var rest, bucket, index, cell;
+ if (typeof key === "string" && key !== "__proto__")
+ return this._removeHashTableEntry$2(this._strings, key);
+ else if (typeof key === "number" && (key & 0x3ffffff) === key)
+ return this._removeHashTableEntry$2(this._nums, key);
+ else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(key)];
+ index = this._findBucketIndex$2(bucket, key);
+ if (index < 0)
+ return;
+ cell = bucket.splice(index, 1)[0];
+ this._unlinkCell$1(cell);
+ return cell.get$_value();
+ }
+ },
+ forEach$1: function(_, action) {
+ var cell, modifications;
+ cell = this._first;
+ modifications = this._modifications;
+ for (; cell != null;) {
+ action.call$2(cell.get$_key(cell), cell._value);
+ if (modifications !== this._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ cell = cell._next;
+ }
+ },
+ _addHashTableEntry$3: function(table, key, value) {
+ var cell = table[key];
+ if (cell == null)
+ table[key] = this._newLinkedCell$2(key, value);
+ else
+ cell.set$_value(value);
+ },
+ _removeHashTableEntry$2: function(table, key) {
+ var cell;
+ if (table == null)
+ return;
+ cell = table[key];
+ if (cell == null)
+ return;
+ this._unlinkCell$1(cell);
+ delete table[key];
+ return cell.get$_value();
+ },
+ _newLinkedCell$2: function(key, value) {
+ var cell, last;
+ cell = new P.LinkedHashMapCell(key, value, null, null);
+ if (this._first == null) {
+ this._last = cell;
+ this._first = cell;
+ } else {
+ last = this._last;
+ cell._previous = last;
+ last.set$_next(cell);
+ this._last = cell;
+ }
+ this._collection$_length = this._collection$_length + 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ return cell;
+ },
+ _unlinkCell$1: function(cell) {
+ var previous, next;
+ previous = cell.get$_previous();
+ next = cell.get$_next();
+ if (previous == null)
+ this._first = next;
+ else
+ previous.set$_next(next);
+ if (next == null)
+ this._last = previous;
+ else
+ next.set$_previous(previous);
+ this._collection$_length = this._collection$_length - 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ },
+ _computeHashCode$1: function(key) {
+ return J.get$hashCode$(key) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, key) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i)
+ if (J.$eq(J.get$_key$x(bucket[i]), key))
+ return i;
+ return -1;
+ },
+ toString$0: function(_) {
+ return P.Maps_mapToString(this);
+ },
+ $isMap: true,
+ $asMap: null,
+ static: {_LinkedHashMap__newHashTable: function() {
+ var table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ return table;
+ }}
+ },
+ _LinkedHashMap_values_closure: {
+ "^": "Closure:11;this_0",
+ call$1: function(each) {
+ return this.this_0.$index(0, each);
+ }
+ },
+ LinkedHashMapCell: {
+ "^": "Object;_key>,_value@,_next@,_previous@"
+ },
+ LinkedHashMapKeyIterable: {
+ "^": "IterableBase;_map",
+ get$length: function(_) {
+ return this._map._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._map._collection$_length === 0;
+ },
+ get$iterator: function(_) {
+ var t1, t2;
+ t1 = this._map;
+ t2 = new P.LinkedHashMapKeyIterator(t1, t1._modifications, null, null);
+ t2._cell = t1._first;
+ return t2;
+ },
+ forEach$1: function(_, f) {
+ var t1, cell, modifications;
+ t1 = this._map;
+ cell = t1._first;
+ modifications = t1._modifications;
+ for (; cell != null;) {
+ f.call$1(cell.get$_key(cell));
+ if (modifications !== t1._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ cell = cell._next;
+ }
+ },
+ $isEfficientLength: true
+ },
+ LinkedHashMapKeyIterator: {
+ "^": "Object;_map,_modifications,_cell,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var t1 = this._map;
+ if (this._modifications !== t1._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else {
+ t1 = this._cell;
+ if (t1 == null) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = t1.get$_key(t1);
+ this._cell = t1._next;
+ return true;
+ }
+ }
+ }
+ },
+ _HashSet: {
+ "^": "_HashSetBase;",
+ get$iterator: function(_) {
+ return new P.HashSetIterator(this, this._computeElements$0(), 0, null);
+ },
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ contains$1: function(_, object) {
+ var strings, nums, rest;
+ if (typeof object === "string" && object !== "__proto__") {
+ strings = this._strings;
+ return strings == null ? false : strings[object] != null;
+ } else if (typeof object === "number" && (object & 0x3ffffff) === object) {
+ nums = this._nums;
+ return nums == null ? false : nums[object] != null;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ return this._findBucketIndex$2(rest[this._computeHashCode$1(object)], object) >= 0;
+ }
+ },
+ lookup$1: function(object) {
+ var t1, rest, bucket, index;
+ if (!(typeof object === "string" && object !== "__proto__"))
+ t1 = typeof object === "number" && (object & 0x3ffffff) === object;
+ else
+ t1 = true;
+ if (t1)
+ return this.contains$1(0, object) ? object : null;
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return;
+ return J.$index$asx(bucket, index);
+ },
+ add$1: function(_, element) {
+ var rest, table, hash, bucket;
+ rest = this._rest;
+ if (rest == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._rest = table;
+ rest = table;
+ }
+ hash = this._computeHashCode$1(element);
+ bucket = rest[hash];
+ if (bucket == null)
+ rest[hash] = [element];
+ else {
+ if (this._findBucketIndex$2(bucket, element) >= 0)
+ return false;
+ bucket.push(element);
+ }
+ this._collection$_length = this._collection$_length + 1;
+ this._elements = null;
+ return true;
+ },
+ remove$1: function(_, object) {
+ var rest, bucket, index;
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return false;
+ this._collection$_length = this._collection$_length - 1;
+ this._elements = null;
+ bucket.splice(index, 1);
+ return true;
+ },
+ _computeElements$0: function() {
+ var t1, result, strings, names, entries, index, i, nums, rest, bucket, $length, i0;
+ t1 = this._elements;
+ if (t1 != null)
+ return t1;
+ result = Array(this._collection$_length);
+ result.fixed$length = init;
+ strings = this._strings;
+ if (strings != null) {
+ names = Object.getOwnPropertyNames(strings);
+ entries = names.length;
+ for (index = 0, i = 0; i < entries; ++i) {
+ result[index] = names[i];
+ ++index;
+ }
+ } else
+ index = 0;
+ nums = this._nums;
+ if (nums != null) {
+ names = Object.getOwnPropertyNames(nums);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ result[index] = +names[i];
+ ++index;
+ }
+ }
+ rest = this._rest;
+ if (rest != null) {
+ names = Object.getOwnPropertyNames(rest);
+ entries = names.length;
+ for (i = 0; i < entries; ++i) {
+ bucket = rest[names[i]];
+ $length = bucket.length;
+ for (i0 = 0; i0 < $length; ++i0) {
+ result[index] = bucket[i0];
+ ++index;
+ }
+ }
+ }
+ this._elements = result;
+ return result;
+ },
+ _computeHashCode$1: function(element) {
+ return J.get$hashCode$(element) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, element) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i)
+ if (J.$eq(bucket[i], element))
+ return i;
+ return -1;
+ },
+ $isEfficientLength: true
+ },
+ _IdentityHashSet: {
+ "^": "_HashSet;_collection$_length,_strings,_nums,_rest,_elements",
+ _computeHashCode$1: function(key) {
+ return H.objectHashCode(key) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, element) {
+ var $length, i, t1;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i) {
+ t1 = bucket[i];
+ if (t1 == null ? element == null : t1 === element)
+ return i;
+ }
+ return -1;
+ }
+ },
+ HashSetIterator: {
+ "^": "Object;_set,_elements,_offset,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var elements, offset, t1;
+ elements = this._elements;
+ offset = this._offset;
+ t1 = this._set;
+ if (elements !== t1._elements)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else if (offset >= elements.length) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = elements[offset];
+ this._offset = offset + 1;
+ return true;
+ }
+ }
+ },
+ _LinkedHashSet: {
+ "^": "_HashSetBase;_collection$_length,_strings,_nums,_rest,_first,_last,_modifications",
+ get$iterator: function(_) {
+ var t1 = new P.LinkedHashSetIterator(this, this._modifications, null, null);
+ t1._cell = this._first;
+ return t1;
+ },
+ get$length: function(_) {
+ return this._collection$_length;
+ },
+ get$isEmpty: function(_) {
+ return this._collection$_length === 0;
+ },
+ contains$1: function(_, object) {
+ var strings, nums, rest;
+ if (typeof object === "string" && object !== "__proto__") {
+ strings = this._strings;
+ if (strings == null)
+ return false;
+ return strings[object] != null;
+ } else if (typeof object === "number" && (object & 0x3ffffff) === object) {
+ nums = this._nums;
+ if (nums == null)
+ return false;
+ return nums[object] != null;
+ } else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ return this._findBucketIndex$2(rest[this._computeHashCode$1(object)], object) >= 0;
+ }
+ },
+ lookup$1: function(object) {
+ var t1, rest, bucket, index;
+ if (!(typeof object === "string" && object !== "__proto__"))
+ t1 = typeof object === "number" && (object & 0x3ffffff) === object;
+ else
+ t1 = true;
+ if (t1)
+ return this.contains$1(0, object) ? object : null;
+ else {
+ rest = this._rest;
+ if (rest == null)
+ return;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return;
+ return J.$index$asx(bucket, index).get$_collection$_element();
+ }
+ },
+ forEach$1: function(_, action) {
+ var cell, modifications;
+ cell = this._first;
+ modifications = this._modifications;
+ for (; cell != null;) {
+ action.call$1(cell.get$_collection$_element());
+ if (modifications !== this._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(this));
+ cell = cell._next;
+ }
+ },
+ add$1: function(_, element) {
+ var strings, table, nums, rest, hash, bucket;
+ if (typeof element === "string" && element !== "__proto__") {
+ strings = this._strings;
+ if (strings == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._strings = table;
+ strings = table;
+ }
+ return this._addHashTableEntry$2(strings, element);
+ } else if (typeof element === "number" && (element & 0x3ffffff) === element) {
+ nums = this._nums;
+ if (nums == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._nums = table;
+ nums = table;
+ }
+ return this._addHashTableEntry$2(nums, element);
+ } else {
+ rest = this._rest;
+ if (rest == null) {
+ table = Object.create(null);
+ table[""] = table;
+ delete table[""];
+ this._rest = table;
+ rest = table;
+ }
+ hash = this._computeHashCode$1(element);
+ bucket = rest[hash];
+ if (bucket == null)
+ rest[hash] = [this._newLinkedCell$1(element)];
+ else {
+ if (this._findBucketIndex$2(bucket, element) >= 0)
+ return false;
+ bucket.push(this._newLinkedCell$1(element));
+ }
+ return true;
+ }
+ },
+ addAll$1: function(_, objects) {
+ var t1;
+ for (t1 = J.get$iterator$ax(objects); t1.moveNext$0();)
+ this.add$1(0, t1._current);
+ },
+ remove$1: function(_, object) {
+ var rest, bucket, index;
+ if (typeof object === "string" && object !== "__proto__")
+ return this._removeHashTableEntry$2(this._strings, object);
+ else if (typeof object === "number" && (object & 0x3ffffff) === object)
+ return this._removeHashTableEntry$2(this._nums, object);
+ else {
+ rest = this._rest;
+ if (rest == null)
+ return false;
+ bucket = rest[this._computeHashCode$1(object)];
+ index = this._findBucketIndex$2(bucket, object);
+ if (index < 0)
+ return false;
+ this._unlinkCell$1(bucket.splice(index, 1)[0]);
+ return true;
+ }
+ },
+ _addHashTableEntry$2: function(table, element) {
+ if (table[element] != null)
+ return false;
+ table[element] = this._newLinkedCell$1(element);
+ return true;
+ },
+ _removeHashTableEntry$2: function(table, element) {
+ var cell;
+ if (table == null)
+ return false;
+ cell = table[element];
+ if (cell == null)
+ return false;
+ this._unlinkCell$1(cell);
+ delete table[element];
+ return true;
+ },
+ _newLinkedCell$1: function(element) {
+ var cell, last;
+ cell = new P.LinkedHashSetCell(element, null, null);
+ if (this._first == null) {
+ this._last = cell;
+ this._first = cell;
+ } else {
+ last = this._last;
+ cell._previous = last;
+ last.set$_next(cell);
+ this._last = cell;
+ }
+ this._collection$_length = this._collection$_length + 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ return cell;
+ },
+ _unlinkCell$1: function(cell) {
+ var previous, next;
+ previous = cell.get$_previous();
+ next = cell.get$_next();
+ if (previous == null)
+ this._first = next;
+ else
+ previous.set$_next(next);
+ if (next == null)
+ this._last = previous;
+ else
+ next.set$_previous(previous);
+ this._collection$_length = this._collection$_length - 1;
+ this._modifications = this._modifications + 1 & 67108863;
+ },
+ _computeHashCode$1: function(element) {
+ return J.get$hashCode$(element) & 0x3ffffff;
+ },
+ _findBucketIndex$2: function(bucket, element) {
+ var $length, i;
+ if (bucket == null)
+ return -1;
+ $length = bucket.length;
+ for (i = 0; i < $length; ++i)
+ if (J.$eq(bucket[i].get$_collection$_element(), element))
+ return i;
+ return -1;
+ },
+ $isEfficientLength: true
+ },
+ LinkedHashSetCell: {
+ "^": "Object;_collection$_element<,_next@,_previous@"
+ },
+ LinkedHashSetIterator: {
+ "^": "Object;_set,_modifications,_cell,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var t1 = this._set;
+ if (this._modifications !== t1._modifications)
+ throw H.wrapException(P.ConcurrentModificationError$(t1));
+ else {
+ t1 = this._cell;
+ if (t1 == null) {
+ this._collection$_current = null;
+ return false;
+ } else {
+ this._collection$_current = t1.get$_collection$_element();
+ this._cell = t1._next;
+ return true;
+ }
+ }
+ }
+ },
+ _HashSetBase: {
+ "^": "IterableBase;",
+ toString$0: function(_) {
+ return H.IterableMixinWorkaround_toStringIterable(this, "{", "}");
+ },
+ $isEfficientLength: true
+ },
+ IterableBase: {
+ "^": "Object;",
+ forEach$1: function(_, f) {
+ var t1;
+ for (t1 = this.get$iterator(this); t1.moveNext$0();)
+ f.call$1(t1.get$current());
+ },
+ toList$1$growable: function(_, growable) {
+ return P.List_List$from(this, growable, H.getRuntimeTypeArgument(this, "IterableBase", 0));
+ },
+ toList$0: function($receiver) {
+ return this.toList$1$growable($receiver, true);
+ },
+ get$length: function(_) {
+ var it, count;
+ it = this.get$iterator(this);
+ for (count = 0; it.moveNext$0();)
+ ++count;
+ return count;
+ },
+ get$isEmpty: function(_) {
+ return !this.get$iterator(this).moveNext$0();
+ },
+ get$single: function(_) {
+ var it, result;
+ it = this.get$iterator(this);
+ if (!it.moveNext$0())
+ throw H.wrapException(P.StateError$("No elements"));
+ result = it.get$current();
+ if (it.moveNext$0())
+ throw H.wrapException(P.StateError$("More than one element"));
+ return result;
+ },
+ elementAt$1: function(_, index) {
+ var t1, remaining, element;
+ if (index < 0)
+ throw H.wrapException(P.RangeError$value(index));
+ for (t1 = this.get$iterator(this), remaining = index; t1.moveNext$0();) {
+ element = t1.get$current();
+ if (remaining === 0)
+ return element;
+ --remaining;
+ }
+ throw H.wrapException(P.RangeError$value(index));
+ },
+ toString$0: function(_) {
+ return P._iterableToString(this);
+ }
+ },
+ ListBase: {
+ "^": "Object+ListMixin;",
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true
+ },
+ ListMixin: {
+ "^": "Object;",
+ get$iterator: function(receiver) {
+ return new H.ListIterator(receiver, this.get$length(receiver), 0, null);
+ },
+ elementAt$1: function(receiver, index) {
+ return this.$index(receiver, index);
+ },
+ forEach$1: function(receiver, action) {
+ var $length, i;
+ $length = this.get$length(receiver);
+ for (i = 0; i < $length; ++i) {
+ action.call$1(this.$index(receiver, i));
+ if ($length !== this.get$length(receiver))
+ throw H.wrapException(P.ConcurrentModificationError$(receiver));
+ }
+ },
+ get$isEmpty: function(receiver) {
+ return this.get$length(receiver) === 0;
+ },
+ where$1: function(receiver, test) {
+ return H.setRuntimeTypeInfo(new H.WhereIterable(receiver, test), [H.getRuntimeTypeArgument(receiver, "ListMixin", 0)]);
+ },
+ toString$0: function(receiver) {
+ var result;
+ if ($.get$_toStringVisiting().contains$1(0, receiver))
+ return "[...]";
+ result = P.StringBuffer$("");
+ try {
+ $.get$_toStringVisiting().add$1(0, receiver);
+ result.write$1("[");
+ result.writeAll$2(receiver, ", ");
+ result.write$1("]");
+ } finally {
+ $.get$_toStringVisiting().remove$1(0, receiver);
+ }
+ return result.get$_contents();
+ },
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true
+ },
+ Maps_mapToString_closure: {
+ "^": "Closure:10;box_0,result_1",
+ call$2: function(k, v) {
+ var t1 = this.box_0;
+ if (!t1.first_0)
+ this.result_1.write$1(", ");
+ t1.first_0 = false;
+ t1 = this.result_1;
+ t1.write$1(k);
+ t1.write$1(": ");
+ t1.write$1(v);
+ }
+ },
+ ListQueue: {
+ "^": "IterableBase;_table,_head,_tail,_modificationCount",
+ get$iterator: function(_) {
+ return new P._ListQueueIterator(this, this._tail, this._modificationCount, this._head, null);
+ },
+ forEach$1: function(_, action) {
+ var modificationCount, i, t1;
+ modificationCount = this._modificationCount;
+ for (i = this._head; i !== this._tail; i = (i + 1 & this._table.length - 1) >>> 0) {
+ t1 = this._table;
+ if (i < 0 || i >= t1.length)
+ return H.ioore(t1, i);
+ action.call$1(t1[i]);
+ if (modificationCount !== this._modificationCount)
+ H.throwExpression(P.ConcurrentModificationError$(this));
+ }
+ },
+ get$isEmpty: function(_) {
+ return this._head === this._tail;
+ },
+ get$length: function(_) {
+ return (this._tail - this._head & this._table.length - 1) >>> 0;
+ },
+ toString$0: function(_) {
+ return H.IterableMixinWorkaround_toStringIterable(this, "{", "}");
+ },
+ _add$1: function(element) {
+ var t1, t2, t3;
+ t1 = this._table;
+ t2 = this._tail;
+ t3 = t1.length;
+ if (t2 < 0 || t2 >= t3)
+ return H.ioore(t1, t2);
+ t1[t2] = element;
+ t3 = (t2 + 1 & t3 - 1) >>> 0;
+ this._tail = t3;
+ if (this._head === t3)
+ this._grow$0();
+ this._modificationCount = this._modificationCount + 1;
+ },
+ _grow$0: function() {
+ var t1, newTable, t2, split;
+ t1 = Array(this._table.length * 2);
+ t1.fixed$length = init;
+ newTable = H.setRuntimeTypeInfo(t1, [H.getTypeArgumentByIndex(this, 0)]);
+ t1 = this._table;
+ t2 = this._head;
+ split = t1.length - t2;
+ H.IterableMixinWorkaround_setRangeList(newTable, 0, split, t1, t2);
+ t1 = this._head;
+ t2 = this._table;
+ H.IterableMixinWorkaround_setRangeList(newTable, split, split + t1, t2, 0);
+ this._head = 0;
+ this._tail = this._table.length;
+ this._table = newTable;
+ },
+ ListQueue$1: function(initialCapacity, $E) {
+ var t1 = Array(8);
+ t1.fixed$length = init;
+ this._table = H.setRuntimeTypeInfo(t1, [$E]);
+ },
+ $isEfficientLength: true,
+ static: {"^": "ListQueue__INITIAL_CAPACITY"}
+ },
+ _ListQueueIterator: {
+ "^": "Object;_queue,_end,_modificationCount,_collection$_position,_collection$_current",
+ get$current: function() {
+ return this._collection$_current;
+ },
+ moveNext$0: function() {
+ var t1, t2, t3;
+ t1 = this._queue;
+ if (this._modificationCount !== t1._modificationCount)
+ H.throwExpression(P.ConcurrentModificationError$(t1));
+ t2 = this._collection$_position;
+ if (t2 === this._end) {
+ this._collection$_current = null;
+ return false;
+ }
+ t1 = t1._table;
+ t3 = t1.length;
+ if (t2 >= t3)
+ return H.ioore(t1, t2);
+ this._collection$_current = t1[t2];
+ this._collection$_position = (t2 + 1 & t3 - 1) >>> 0;
+ return true;
+ }
+ }
+}],
+["dart.convert", "dart:convert", , P, {
+ "^": "",
+ _convertJsonToDart: function(json, reviver) {
+ var revive = new P._convertJsonToDart_closure();
+ return revive.call$2(null, new P._convertJsonToDart_walk(revive).call$1(json));
+ },
+ _parseJson: function(source, reviver) {
+ var parsed, e, t1, exception;
+ t1 = source;
+ if (typeof t1 !== "string")
+ throw H.wrapException(new P.ArgumentError(source));
+ parsed = null;
+ try {
+ parsed = JSON.parse(source);
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ throw H.wrapException(P.FormatException$(String(e)));
+ }
+
+ return P._convertJsonToDart(parsed, reviver);
+ },
+ _defaultToEncodable: [function(object) {
+ return object.toJson$0();
+ }, "call$1", "_defaultToEncodable$closure", 2, 0, 5],
+ _convertJsonToDart_closure: {
+ "^": "Closure:10;",
+ call$2: function(key, value) {
+ return value;
+ }
+ },
+ _convertJsonToDart_walk: {
+ "^": "Closure:11;revive_0",
+ call$1: function(e) {
+ var list, t1, i, keys, map, key, proto;
+ if (e == null || typeof e != "object")
+ return e;
+ if (Object.getPrototypeOf(e) === Array.prototype) {
+ list = e;
+ for (t1 = this.revive_0, i = 0; i < list.length; ++i)
+ list[i] = t1.call$2(i, this.call$1(list[i]));
+ return list;
+ }
+ keys = Object.keys(e);
+ map = H.fillLiteralMap([], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null));
+ for (t1 = this.revive_0, i = 0; i < keys.length; ++i) {
+ key = keys[i];
+ map.$indexSet(0, key, t1.call$2(key, this.call$1(e[key])));
+ }
+ proto = e.__proto__;
+ if (typeof proto !== "undefined" && proto !== Object.prototype)
+ map.$indexSet(0, "__proto__", t1.call$2("__proto__", this.call$1(proto)));
+ return map;
+ }
+ },
+ Codec: {
+ "^": "Object;"
+ },
+ Converter: {
+ "^": "Object;"
+ },
+ JsonUnsupportedObjectError: {
+ "^": "Error;unsupportedObject,cause",
+ toString$0: function(_) {
+ if (this.cause != null)
+ return "Converting object to an encodable object failed.";
+ else
+ return "Converting object did not return an encodable object.";
+ },
+ static: {JsonUnsupportedObjectError$: function(unsupportedObject, cause) {
+ return new P.JsonUnsupportedObjectError(unsupportedObject, cause);
+ }}
+ },
+ JsonCyclicError: {
+ "^": "JsonUnsupportedObjectError;unsupportedObject,cause",
+ toString$0: function(_) {
+ return "Cyclic error in JSON stringify";
+ },
+ static: {JsonCyclicError$: function(object) {
+ return new P.JsonCyclicError(object, null);
+ }}
+ },
+ JsonCodec: {
+ "^": "Codec;_reviver,_toEncodable",
+ decode$2$reviver: function(source, reviver) {
+ return P._parseJson(source, this.get$decoder()._reviver);
+ },
+ decode$1: function(source) {
+ return this.decode$2$reviver(source, null);
+ },
+ encode$2$toEncodable: function(value, toEncodable) {
+ return P._JsonStringifier_stringify(value, this.get$encoder()._toEncodableFunction);
+ },
+ encode$1: function(value) {
+ return this.encode$2$toEncodable(value, null);
+ },
+ get$encoder: function() {
+ return C.JsonEncoder_null;
+ },
+ get$decoder: function() {
+ return C.JsonDecoder_null;
+ }
+ },
+ JsonEncoder: {
+ "^": "Converter;_toEncodableFunction"
+ },
+ JsonDecoder: {
+ "^": "Converter;_reviver"
+ },
+ _JsonStringifier: {
+ "^": "Object;_toEncodable,_sink,_seen",
+ _toEncodable$1: function(arg0) {
+ return this._toEncodable.call$1(arg0);
+ },
+ escape$1: function(s) {
+ var t1, $length, t2, offset, i, charCode, t3, charCodes, str;
+ t1 = J.getInterceptor$asx(s);
+ $length = t1.get$length(s);
+ if (typeof $length !== "number")
+ return H.iae($length);
+ t2 = this._sink;
+ offset = 0;
+ i = 0;
+ for (; i < $length; ++i) {
+ charCode = t1.codeUnitAt$1(s, i);
+ if (charCode > 92)
+ continue;
+ if (charCode < 32) {
+ if (i > offset) {
+ t3 = C.JSString_methods.substring$2(s, offset, i);
+ t2._contents = t2._contents + t3;
+ }
+ offset = i + 1;
+ charCodes = P.List_List$filled(1, 92, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ switch (charCode) {
+ case 8:
+ charCodes = P.List_List$filled(1, 98, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 9:
+ charCodes = P.List_List$filled(1, 116, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 10:
+ charCodes = P.List_List$filled(1, 110, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 12:
+ charCodes = P.List_List$filled(1, 102, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ case 13:
+ charCodes = P.List_List$filled(1, 114, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ default:
+ charCodes = P.List_List$filled(1, 117, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ charCodes = P.List_List$filled(1, 48, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ charCodes = P.List_List$filled(1, 48, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ t3 = charCode >>> 4 & 15;
+ t3 = t3 < 10 ? 48 + t3 : 87 + t3;
+ charCodes = P.List_List$filled(1, t3, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ t3 = charCode & 15;
+ t3 = t3 < 10 ? 48 + t3 : 87 + t3;
+ charCodes = P.List_List$filled(1, t3, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ break;
+ }
+ } else if (charCode === 34 || charCode === 92) {
+ if (i > offset) {
+ t3 = C.JSString_methods.substring$2(s, offset, i);
+ t2._contents = t2._contents + t3;
+ }
+ offset = i + 1;
+ charCodes = P.List_List$filled(1, 92, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ charCodes = P.List_List$filled(1, charCode, J.JSInt);
+ t3 = H.Primitives_stringFromCharCodes(charCodes);
+ t2._contents = t2._contents + t3;
+ }
+ }
+ if (offset === 0) {
+ str = typeof s === "string" ? s : H.S(s);
+ t2._contents = t2._contents + str;
+ } else if (offset < $length) {
+ t1 = t1.substring$2(s, offset, $length);
+ t2._contents = t2._contents + t1;
+ }
+ },
+ checkCycle$1: function(object) {
+ var t1, t2, i, t3;
+ for (t1 = this._seen, t2 = t1.length, i = 0; i < t2; ++i) {
+ t3 = t1[i];
+ if (object == null ? t3 == null : object === t3)
+ throw H.wrapException(P.JsonCyclicError$(object));
+ }
+ t1.push(object);
+ },
+ stringifyValue$1: function(object) {
+ var customJson, e, t1, exception;
+ if (!this.stringifyJsonValue$1(object)) {
+ this.checkCycle$1(object);
+ try {
+ customJson = this._toEncodable$1(object);
+ if (!this.stringifyJsonValue$1(customJson)) {
+ t1 = P.JsonUnsupportedObjectError$(object, null);
+ throw H.wrapException(t1);
+ }
+ t1 = this._seen;
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ } catch (exception) {
+ t1 = H.unwrapException(exception);
+ e = t1;
+ throw H.wrapException(P.JsonUnsupportedObjectError$(object, e));
+ }
+
+ }
+ },
+ stringifyJsonValue$1: function(object) {
+ var t1, t2, i, t3, separator, key;
+ if (typeof object === "number") {
+ if (!C.JSNumber_methods.get$isFinite(object))
+ return false;
+ this._sink.write$1(C.JSNumber_methods.toString$0(object));
+ return true;
+ } else if (object === true) {
+ this._sink.write$1("true");
+ return true;
+ } else if (object === false) {
+ this._sink.write$1("false");
+ return true;
+ } else if (object == null) {
+ this._sink.write$1("null");
+ return true;
+ } else if (typeof object === "string") {
+ t1 = this._sink;
+ t1.write$1("\"");
+ this.escape$1(object);
+ t1.write$1("\"");
+ return true;
+ } else {
+ t1 = J.getInterceptor(object);
+ if (!!t1.$isList) {
+ this.checkCycle$1(object);
+ t2 = this._sink;
+ t2.write$1("[");
+ if (t1.get$length(object) > 0) {
+ this.stringifyValue$1(t1.$index(object, 0));
+ for (i = 1; i < t1.get$length(object); ++i) {
+ t2._contents = t2._contents + ",";
+ this.stringifyValue$1(t1.$index(object, i));
+ }
+ }
+ t2.write$1("]");
+ this._removeSeen$1(object);
+ return true;
+ } else if (!!t1.$isMap) {
+ this.checkCycle$1(object);
+ t2 = this._sink;
+ t2.write$1("{");
+ for (t3 = J.get$iterator$ax(t1.get$keys(object)), separator = "\""; t3.moveNext$0(); separator = ",\"") {
+ key = t3.get$current();
+ t2._contents = t2._contents + separator;
+ this.escape$1(key);
+ t2._contents = t2._contents + "\":";
+ this.stringifyValue$1(t1.$index(object, key));
+ }
+ t2.write$1("}");
+ this._removeSeen$1(object);
+ return true;
+ } else
+ return false;
+ }
+ },
+ _removeSeen$1: function(object) {
+ var t1 = this._seen;
+ if (0 >= t1.length)
+ return H.ioore(t1, 0);
+ t1.pop();
+ },
+ static: {"^": "_JsonStringifier_BACKSPACE,_JsonStringifier_TAB,_JsonStringifier_NEWLINE,_JsonStringifier_CARRIAGE_RETURN,_JsonStringifier_FORM_FEED,_JsonStringifier_QUOTE,_JsonStringifier_CHAR_0,_JsonStringifier_BACKSLASH,_JsonStringifier_CHAR_b,_JsonStringifier_CHAR_f,_JsonStringifier_CHAR_n,_JsonStringifier_CHAR_r,_JsonStringifier_CHAR_t,_JsonStringifier_CHAR_u", _JsonStringifier_stringify: function(object, toEncodable) {
+ var output;
+ toEncodable = P._defaultToEncodable$closure();
+ output = P.StringBuffer$("");
+ new P._JsonStringifier(toEncodable, output, []).stringifyValue$1(object);
+ return output._contents;
+ }}
+ }
+}],
+["dart.core", "dart:core", , P, {
+ "^": "",
+ _symbolToString: function(symbol) {
+ return H.Symbol_getName(symbol);
+ },
+ Error_safeToString: function(object) {
+ var buffer, t1, i, t2, codeUnit, charCodes;
+ if (typeof object === "number" || typeof object === "boolean" || null == object)
+ return J.toString$0(object);
+ if (typeof object === "string") {
+ buffer = new P.StringBuffer("");
+ buffer._contents = "\"";
+ for (t1 = object.length, i = 0, t2 = "\""; i < t1; ++i) {
+ codeUnit = C.JSString_methods.codeUnitAt$1(object, i);
+ if (codeUnit <= 31)
+ if (codeUnit === 10) {
+ t2 = buffer._contents + "\\n";
+ buffer._contents = t2;
+ } else if (codeUnit === 13) {
+ t2 = buffer._contents + "\\r";
+ buffer._contents = t2;
+ } else if (codeUnit === 9) {
+ t2 = buffer._contents + "\\t";
+ buffer._contents = t2;
+ } else {
+ t2 = buffer._contents + "\\x";
+ buffer._contents = t2;
+ if (codeUnit < 16)
+ buffer._contents = t2 + "0";
+ else {
+ buffer._contents = t2 + "1";
+ codeUnit -= 16;
+ }
+ t2 = codeUnit < 10 ? 48 + codeUnit : 87 + codeUnit;
+ charCodes = P.List_List$filled(1, t2, J.JSInt);
+ t2 = H.Primitives_stringFromCharCodes(charCodes);
+ t2 = buffer._contents + t2;
+ buffer._contents = t2;
+ }
+ else if (codeUnit === 92) {
+ t2 = buffer._contents + "\\\\";
+ buffer._contents = t2;
+ } else if (codeUnit === 34) {
+ t2 = buffer._contents + "\\\"";
+ buffer._contents = t2;
+ } else {
+ charCodes = P.List_List$filled(1, codeUnit, J.JSInt);
+ t2 = H.Primitives_stringFromCharCodes(charCodes);
+ t2 = buffer._contents + t2;
+ buffer._contents = t2;
+ }
+ }
+ t1 = t2 + "\"";
+ buffer._contents = t1;
+ return t1;
+ }
+ return "Instance of '" + H.Primitives_objectTypeName(object) + "'";
+ },
+ Exception_Exception: function(message) {
+ return new P._ExceptionImplementation(message);
+ },
+ identical: [function(a, b) {
+ return a == null ? b == null : a === b;
+ }, "call$2", "identical$closure", 4, 0, 6],
+ identityHashCode: [function(object) {
+ return H.objectHashCode(object);
+ }, "call$1", "identityHashCode$closure", 2, 0, 7],
+ List_List$filled: function($length, fill, $E) {
+ var result, t1, i;
+ result = J.JSArray_JSArray$fixed($length, $E);
+ if ($length !== 0 && true)
+ for (t1 = result.length, i = 0; i < t1; ++i)
+ result[i] = fill;
+ return result;
+ },
+ List_List$from: function(other, growable, $E) {
+ var list, t1;
+ list = H.setRuntimeTypeInfo([], [$E]);
+ for (t1 = J.get$iterator$ax(other); t1.moveNext$0();)
+ list.push(t1.get$current());
+ if (growable)
+ return list;
+ list.fixed$length = init;
+ return list;
+ },
+ print: function(object) {
+ var line = H.S(object);
+ H.printString(line);
+ },
+ NoSuchMethodError_toString_closure: {
+ "^": "Closure:18;box_0",
+ call$2: function(key, value) {
+ var t1 = this.box_0;
+ if (t1.i_1 > 0)
+ t1.sb_0.write$1(", ");
+ t1.sb_0.write$1(P._symbolToString(key));
+ }
+ },
+ DateTime: {
+ "^": "Object;millisecondsSinceEpoch,isUtc",
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ if (!J.getInterceptor(other).$isDateTime)
+ return false;
+ return this.millisecondsSinceEpoch === other.millisecondsSinceEpoch && this.isUtc === other.isUtc;
+ },
+ get$hashCode: function(_) {
+ return this.millisecondsSinceEpoch;
+ },
+ toString$0: function(_) {
+ var t1, y, m, d, h, min, sec, ms;
+ t1 = this.isUtc;
+ y = P.DateTime__fourDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCFullYear() + 0 : H.Primitives_lazyAsJsDate(this).getFullYear() + 0);
+ m = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCMonth() + 1 : H.Primitives_lazyAsJsDate(this).getMonth() + 1);
+ d = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCDate() + 0 : H.Primitives_lazyAsJsDate(this).getDate() + 0);
+ h = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCHours() + 0 : H.Primitives_lazyAsJsDate(this).getHours() + 0);
+ min = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCMinutes() + 0 : H.Primitives_lazyAsJsDate(this).getMinutes() + 0);
+ sec = P.DateTime__twoDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCSeconds() + 0 : H.Primitives_lazyAsJsDate(this).getSeconds() + 0);
+ ms = P.DateTime__threeDigits(t1 ? H.Primitives_lazyAsJsDate(this).getUTCMilliseconds() + 0 : H.Primitives_lazyAsJsDate(this).getMilliseconds() + 0);
+ if (t1)
+ return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + "Z";
+ else
+ return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms;
+ },
+ DateTime$fromMillisecondsSinceEpoch$2$isUtc: function(millisecondsSinceEpoch, isUtc) {
+ if (Math.abs(millisecondsSinceEpoch) > 8640000000000000)
+ throw H.wrapException(new P.ArgumentError(millisecondsSinceEpoch));
+ },
+ DateTime$_now$0: function() {
+ H.Primitives_lazyAsJsDate(this);
+ },
+ $isDateTime: true,
+ static: {"^": "DateTime_MONDAY,DateTime_TUESDAY,DateTime_WEDNESDAY,DateTime_THURSDAY,DateTime_FRIDAY,DateTime_SATURDAY,DateTime_SUNDAY,DateTime_DAYS_PER_WEEK,DateTime_JANUARY,DateTime_FEBRUARY,DateTime_MARCH,DateTime_APRIL,DateTime_MAY,DateTime_JUNE,DateTime_JULY,DateTime_AUGUST,DateTime_SEPTEMBER,DateTime_OCTOBER,DateTime_NOVEMBER,DateTime_DECEMBER,DateTime_MONTHS_PER_YEAR,DateTime__MAX_MILLISECONDS_SINCE_EPOCH", DateTime_parse: function(formattedString) {
+ var match, t1, t2, years, month, day, hour, minute, second, millisecond, addOneMillisecond, t3, sign, hourDifference, minuteDifference, isUtc, millisecondsSinceEpoch;
+ match = new H.JSSyntaxRegExp(H.JSSyntaxRegExp_makeNative("^([+-]?\\d{4,5})-?(\\d\\d)-?(\\d\\d)(?:[ T](\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(.\\d{1,6})?)?)?( ?[zZ]| ?([-+])(\\d\\d)(?::?(\\d\\d))?)?)?$", false, true, false), null, null).firstMatch$1(formattedString);
+ if (match != null) {
+ t1 = new P.DateTime_parse_parseIntOrZero();
+ t2 = match._match;
+ if (1 >= t2.length)
+ return H.ioore(t2, 1);
+ years = H.Primitives_parseInt(t2[1], null, null);
+ if (2 >= t2.length)
+ return H.ioore(t2, 2);
+ month = H.Primitives_parseInt(t2[2], null, null);
+ if (3 >= t2.length)
+ return H.ioore(t2, 3);
+ day = H.Primitives_parseInt(t2[3], null, null);
+ if (4 >= t2.length)
+ return H.ioore(t2, 4);
+ hour = t1.call$1(t2[4]);
+ if (5 >= t2.length)
+ return H.ioore(t2, 5);
+ minute = t1.call$1(t2[5]);
+ if (6 >= t2.length)
+ return H.ioore(t2, 6);
+ second = t1.call$1(t2[6]);
+ if (7 >= t2.length)
+ return H.ioore(t2, 7);
+ millisecond = J.round$0$n(J.$mul$ns(new P.DateTime_parse_parseDoubleOrZero().call$1(t2[7]), 1000));
+ if (millisecond === 1000) {
+ addOneMillisecond = true;
+ millisecond = 999;
+ } else
+ addOneMillisecond = false;
+ t3 = t2.length;
+ if (8 >= t3)
+ return H.ioore(t2, 8);
+ if (t2[8] != null) {
+ if (9 >= t3)
+ return H.ioore(t2, 9);
+ t3 = t2[9];
+ if (t3 != null) {
+ sign = J.$eq(t3, "-") ? -1 : 1;
+ if (10 >= t2.length)
+ return H.ioore(t2, 10);
+ hourDifference = H.Primitives_parseInt(t2[10], null, null);
+ if (11 >= t2.length)
+ return H.ioore(t2, 11);
+ minuteDifference = t1.call$1(t2[11]);
+ if (typeof hourDifference !== "number")
+ return H.iae(hourDifference);
+ minuteDifference = J.$add$ns(minuteDifference, 60 * hourDifference);
+ if (typeof minuteDifference !== "number")
+ return H.iae(minuteDifference);
+ minute = J.$sub$n(minute, sign * minuteDifference);
+ }
+ isUtc = true;
+ } else
+ isUtc = false;
+ millisecondsSinceEpoch = H.Primitives_valueFromDecomposedDate(years, month, day, hour, minute, second, millisecond, isUtc);
+ return P.DateTime$fromMillisecondsSinceEpoch(addOneMillisecond ? millisecondsSinceEpoch + 1 : millisecondsSinceEpoch, isUtc);
+ } else
+ throw H.wrapException(P.FormatException$(formattedString));
+ }, DateTime$fromMillisecondsSinceEpoch: function(millisecondsSinceEpoch, isUtc) {
+ var t1 = new P.DateTime(millisecondsSinceEpoch, isUtc);
+ t1.DateTime$fromMillisecondsSinceEpoch$2$isUtc(millisecondsSinceEpoch, isUtc);
+ return t1;
+ }, DateTime__fourDigits: function(n) {
+ var absN, sign;
+ absN = Math.abs(n);
+ sign = n < 0 ? "-" : "";
+ if (absN >= 1000)
+ return "" + n;
+ if (absN >= 100)
+ return sign + "0" + H.S(absN);
+ if (absN >= 10)
+ return sign + "00" + H.S(absN);
+ return sign + "000" + H.S(absN);
+ }, DateTime__threeDigits: function(n) {
+ if (n >= 100)
+ return "" + n;
+ if (n >= 10)
+ return "0" + n;
+ return "00" + n;
+ }, DateTime__twoDigits: function(n) {
+ if (n >= 10)
+ return "" + n;
+ return "0" + n;
+ }}
+ },
+ DateTime_parse_parseIntOrZero: {
+ "^": "Closure:19;",
+ call$1: function(matched) {
+ if (matched == null)
+ return 0;
+ return H.Primitives_parseInt(matched, null, null);
+ }
+ },
+ DateTime_parse_parseDoubleOrZero: {
+ "^": "Closure:20;",
+ call$1: function(matched) {
+ if (matched == null)
+ return 0;
+ return H.Primitives_parseDouble(matched, null);
+ }
+ },
+ Duration: {
+ "^": "Object;_duration<",
+ $add: function(_, other) {
+ return P.Duration$(0, 0, this._duration + other.get$_duration(), 0, 0, 0);
+ },
+ $sub: function(_, other) {
+ return P.Duration$(0, 0, C.JSInt_methods.$sub(this._duration, other.get$_duration()), 0, 0, 0);
+ },
+ $mul: function(_, factor) {
+ return P.Duration$(0, 0, C.JSNumber_methods.toInt$0(C.JSInt_methods.roundToDouble$0(this._duration * factor)), 0, 0, 0);
+ },
+ $lt: function(_, other) {
+ return C.JSInt_methods.$lt(this._duration, other.get$_duration());
+ },
+ $le: function(_, other) {
+ return C.JSInt_methods.$le(this._duration, other.get$_duration());
+ },
+ $ge: function(_, other) {
+ return C.JSInt_methods.$ge(this._duration, other.get$_duration());
+ },
+ $eq: function(_, other) {
+ if (other == null)
+ return false;
+ if (!J.getInterceptor(other).$isDuration)
+ return false;
+ return this._duration === other._duration;
+ },
+ get$hashCode: function(_) {
+ return this._duration & 0x1FFFFFFF;
+ },
+ toString$0: function(_) {
+ var t1, t2, twoDigitMinutes, twoDigitSeconds, sixDigitUs;
+ t1 = new P.Duration_toString_twoDigits();
+ t2 = this._duration;
+ if (t2 < 0)
+ return "-" + H.S(P.Duration$(0, 0, -t2, 0, 0, 0));
+ twoDigitMinutes = t1.call$1(C.JSInt_methods.remainder$1(C.JSInt_methods._tdivFast$1(t2, 60000000), 60));
+ twoDigitSeconds = t1.call$1(C.JSInt_methods.remainder$1(C.JSInt_methods._tdivFast$1(t2, 1000000), 60));
+ sixDigitUs = new P.Duration_toString_sixDigits().call$1(C.JSInt_methods.remainder$1(t2, 1000000));
+ return "" + C.JSInt_methods._tdivFast$1(t2, 3600000000) + ":" + H.S(twoDigitMinutes) + ":" + H.S(twoDigitSeconds) + "." + H.S(sixDigitUs);
+ },
+ $isDuration: true,
+ static: {"^": "Duration_MICROSECONDS_PER_MILLISECOND,Duration_MILLISECONDS_PER_SECOND,Duration_SECONDS_PER_MINUTE,Duration_MINUTES_PER_HOUR,Duration_HOURS_PER_DAY,Duration_MICROSECONDS_PER_SECOND,Duration_MICROSECONDS_PER_MINUTE,Duration_MICROSECONDS_PER_HOUR,Duration_MICROSECONDS_PER_DAY,Duration_MILLISECONDS_PER_MINUTE,Duration_MILLISECONDS_PER_HOUR,Duration_MILLISECONDS_PER_DAY,Duration_SECONDS_PER_HOUR,Duration_SECONDS_PER_DAY,Duration_MINUTES_PER_DAY,Duration_ZERO", Duration$: function(days, hours, microseconds, milliseconds, minutes, seconds) {
+ return new P.Duration(days * 86400000000 + hours * 3600000000 + minutes * 60000000 + seconds * 1000000 + milliseconds * 1000 + microseconds);
+ }}
+ },
+ Duration_toString_sixDigits: {
+ "^": "Closure:21;",
+ call$1: function(n) {
+ if (n >= 100000)
+ return "" + n;
+ if (n >= 10000)
+ return "0" + n;
+ if (n >= 1000)
+ return "00" + n;
+ if (n >= 100)
+ return "000" + n;
+ if (n >= 10)
+ return "0000" + n;
+ return "00000" + n;
+ }
+ },
+ Duration_toString_twoDigits: {
+ "^": "Closure:21;",
+ call$1: function(n) {
+ if (n >= 10)
+ return "" + n;
+ return "0" + n;
+ }
+ },
+ Error: {
+ "^": "Object;",
+ get$stackTrace: function() {
+ return new H._StackTrace(this.$thrownJsError, null);
+ },
+ $isError: true
+ },
+ NullThrownError: {
+ "^": "Error;",
+ toString$0: function(_) {
+ return "Throw of null.";
+ }
+ },
+ ArgumentError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ var t1 = this.message;
+ if (t1 != null)
+ return "Illegal argument(s): " + H.S(t1);
+ return "Illegal argument(s)";
+ },
+ static: {ArgumentError$: function(message) {
+ return new P.ArgumentError(message);
+ }}
+ },
+ RangeError: {
+ "^": "ArgumentError;message",
+ toString$0: function(_) {
+ return "RangeError: " + H.S(this.message);
+ },
+ static: {RangeError$: function(message) {
+ return new P.RangeError(message);
+ }, RangeError$value: function(value) {
+ return new P.RangeError("value " + H.S(value));
+ }, RangeError$range: function(value, start, end) {
+ return new P.RangeError("value " + H.S(value) + " not in range " + start + ".." + H.S(end));
+ }}
+ },
+ UnsupportedError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ return "Unsupported operation: " + this.message;
+ },
+ static: {UnsupportedError$: function(message) {
+ return new P.UnsupportedError(message);
+ }}
+ },
+ UnimplementedError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ var t1 = this.message;
+ return t1 != null ? "UnimplementedError: " + H.S(t1) : "UnimplementedError";
+ },
+ $isError: true,
+ static: {UnimplementedError$: function(message) {
+ return new P.UnimplementedError(message);
+ }}
+ },
+ StateError: {
+ "^": "Error;message",
+ toString$0: function(_) {
+ return "Bad state: " + this.message;
+ },
+ static: {StateError$: function(message) {
+ return new P.StateError(message);
+ }}
+ },
+ ConcurrentModificationError: {
+ "^": "Error;modifiedObject",
+ toString$0: function(_) {
+ var t1 = this.modifiedObject;
+ if (t1 == null)
+ return "Concurrent modification during iteration.";
+ return "Concurrent modification during iteration: " + H.S(P.Error_safeToString(t1)) + ".";
+ },
+ static: {ConcurrentModificationError$: function(modifiedObject) {
+ return new P.ConcurrentModificationError(modifiedObject);
+ }}
+ },
+ OutOfMemoryError: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "Out of Memory";
+ },
+ get$stackTrace: function() {
+ return;
+ },
+ $isError: true
+ },
+ StackOverflowError: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "Stack Overflow";
+ },
+ get$stackTrace: function() {
+ return;
+ },
+ $isError: true
+ },
+ CyclicInitializationError: {
+ "^": "Error;variableName",
+ toString$0: function(_) {
+ return "Reading static variable '" + this.variableName + "' during its initialization";
+ },
+ static: {CyclicInitializationError$: function(variableName) {
+ return new P.CyclicInitializationError(variableName);
+ }}
+ },
+ _ExceptionImplementation: {
+ "^": "Object;message",
+ toString$0: function(_) {
+ var t1 = this.message;
+ if (t1 == null)
+ return "Exception";
+ return "Exception: " + H.S(t1);
+ }
+ },
+ FormatException: {
+ "^": "Object;message",
+ toString$0: function(_) {
+ return "FormatException: " + H.S(this.message);
+ },
+ $isFormatException: true,
+ static: {FormatException$: function(message) {
+ return new P.FormatException(message);
+ }}
+ },
+ Expando: {
+ "^": "Object;name",
+ toString$0: function(_) {
+ return "Expando:" + H.S(this.name);
+ },
+ $index: function(_, object) {
+ var values = H.Primitives_getProperty(object, "expando$values");
+ return values == null ? null : H.Primitives_getProperty(values, this._getKey$0());
+ },
+ $indexSet: function(_, object, value) {
+ var values = H.Primitives_getProperty(object, "expando$values");
+ if (values == null) {
+ values = new P.Object();
+ H.Primitives_setProperty(object, "expando$values", values);
+ }
+ H.Primitives_setProperty(values, this._getKey$0(), value);
+ },
+ _getKey$0: function() {
+ var key, t1;
+ key = H.Primitives_getProperty(this, "expando$key");
+ if (key == null) {
+ t1 = $.Expando__keyCount;
+ $.Expando__keyCount = t1 + 1;
+ key = "expando$key$" + t1;
+ H.Primitives_setProperty(this, "expando$key", key);
+ }
+ return key;
+ },
+ static: {"^": "Expando__KEY_PROPERTY_NAME,Expando__EXPANDO_PROPERTY_NAME,Expando__keyCount"}
+ },
+ Iterator: {
+ "^": "Object;"
+ },
+ Null: {
+ "^": "Object;",
+ toString$0: function(_) {
+ return "null";
+ }
+ },
+ Object: {
+ "^": ";",
+ $eq: function(_, other) {
+ return this === other;
+ },
+ get$hashCode: function(_) {
+ return H.Primitives_objectHashCode(this);
+ },
+ toString$0: function(_) {
+ return H.Primitives_objectToString(this);
+ }
+ },
+ StackTrace: {
+ "^": "Object;"
+ },
+ StringBuffer: {
+ "^": "Object;_contents<",
+ get$length: function(_) {
+ return this._contents.length;
+ },
+ get$isEmpty: function(_) {
+ return this._contents.length === 0;
+ },
+ write$1: function(obj) {
+ var str = typeof obj === "string" ? obj : H.S(obj);
+ this._contents = this._contents + str;
+ },
+ writeAll$2: function(objects, separator) {
+ var iterator, str;
+ iterator = J.get$iterator$ax(objects);
+ if (!iterator.moveNext$0())
+ return;
+ if (separator.length === 0)
+ do {
+ str = iterator.get$current();
+ str = typeof str === "string" ? str : H.S(str);
+ this._contents = this._contents + str;
+ } while (iterator.moveNext$0());
+ else {
+ this.write$1(iterator.get$current());
+ for (; iterator.moveNext$0();) {
+ this._contents = this._contents + separator;
+ str = iterator.get$current();
+ str = typeof str === "string" ? str : H.S(str);
+ this._contents = this._contents + str;
+ }
+ }
+ },
+ toString$0: function(_) {
+ return this._contents;
+ },
+ StringBuffer$1: function($content) {
+ this._contents = $content;
+ },
+ static: {StringBuffer$: function($content) {
+ var t1 = new P.StringBuffer("");
+ t1.StringBuffer$1($content);
+ return t1;
+ }}
+ },
+ Symbol: {
+ "^": "Object;"
+ }
+}],
+["dart.dom.html", "dart:html", , W, {
+ "^": "",
+ Element_Element$html: function(html, treeSanitizer, validator) {
+ var fragment, t1;
+ fragment = J.createFragment$3$treeSanitizer$validator$x(document.body, html, treeSanitizer, validator);
+ fragment.toString;
+ t1 = new W._ChildNodeListLazy(fragment);
+ t1 = t1.where$1(t1, new W.Element_Element$html_closure());
+ return t1.get$single(t1);
+ },
+ Window__isDartLocation: function(thing) {
+ var exception;
+ try {
+ return !!J.getInterceptor(thing).$isLocation;
+ } catch (exception) {
+ H.unwrapException(exception);
+ return false;
+ }
+
+ },
+ _wrapZone: function(callback) {
+ var t1 = $.Zone__current;
+ if (t1 === C.C__RootZone)
+ return callback;
+ return t1.bindUnaryCallback$2$runGuarded(callback, true);
+ },
+ HtmlElement: {
+ "^": "Element;",
+ "%": "HTMLAppletElement|HTMLBRElement|HTMLCanvasElement|HTMLContentElement|HTMLDListElement|HTMLDataListElement|HTMLDetailsElement|HTMLDialogElement|HTMLDirectoryElement|HTMLDivElement|HTMLFontElement|HTMLFrameElement|HTMLFrameSetElement|HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLImageElement|HTMLLabelElement|HTMLLegendElement|HTMLMarqueeElement|HTMLMenuElement|HTMLModElement|HTMLOListElement|HTMLParagraphElement|HTMLPreElement|HTMLQuoteElement|HTMLScriptElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableHeaderCellElement|HTMLTitleElement|HTMLTrackElement|HTMLUListElement|HTMLUnknownElement;HTMLElement"
+ },
+ AnchorElement: {
+ "^": "HtmlElement;hostname=,href},port=,protocol=",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "HTMLAnchorElement"
+ },
+ AreaElement: {
+ "^": "HtmlElement;hostname=,href},port=,protocol=",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "HTMLAreaElement"
+ },
+ BaseElement: {
+ "^": "HtmlElement;href}",
+ "%": "HTMLBaseElement"
+ },
+ BodyElement: {
+ "^": "HtmlElement;",
+ get$onBlur: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_blur._eventType, false), [null]);
+ },
+ $isBodyElement: true,
+ "%": "HTMLBodyElement"
+ },
+ ButtonElement: {
+ "^": "HtmlElement;disabled},name=,value%",
+ "%": "HTMLButtonElement"
+ },
+ CharacterData: {
+ "^": "Node;length=",
+ "%": "CDATASection|CharacterData|Comment|ProcessingInstruction|Text"
+ },
+ DomException: {
+ "^": "Interceptor;",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "DOMException"
+ },
+ Element: {
+ "^": "Node;",
+ get$attributes: function(receiver) {
+ return new W._ElementAttributeMap(receiver);
+ },
+ toString$0: function(receiver) {
+ return receiver.localName;
+ },
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var t1, t2, base, contextElement, fragment;
+ if (treeSanitizer == null) {
+ t1 = $.Element__defaultValidator;
+ if (t1 == null) {
+ t1 = H.setRuntimeTypeInfo([], [W.NodeValidator]);
+ t2 = new W.NodeValidatorBuilder(t1);
+ t1.push(W._Html5NodeValidator$(null));
+ t1.push(W._TemplatingNodeValidator$());
+ $.Element__defaultValidator = t2;
+ validator = t2;
+ } else
+ validator = t1;
+ t1 = $.Element__defaultSanitizer;
+ if (t1 == null) {
+ t1 = new W._ValidatingTreeSanitizer(validator);
+ $.Element__defaultSanitizer = t1;
+ treeSanitizer = t1;
+ } else {
+ t1.validator = validator;
+ treeSanitizer = t1;
+ }
+ }
+ if ($.Element__parseDocument == null) {
+ t1 = document.implementation.createHTMLDocument("");
+ $.Element__parseDocument = t1;
+ $.Element__parseRange = t1.createRange();
+ base = $.Element__parseDocument.createElement("base", null);
+ J.set$href$x(base, document.baseURI);
+ $.Element__parseDocument.head.appendChild(base);
+ }
+ t1 = $.Element__parseDocument;
+ if (!!this.$isBodyElement)
+ contextElement = t1.body;
+ else {
+ contextElement = t1.createElement(receiver.tagName, null);
+ $.Element__parseDocument.body.appendChild(contextElement);
+ }
+ if ("createContextualFragment" in window.Range.prototype) {
+ $.Element__parseRange.selectNodeContents(contextElement);
+ fragment = $.Element__parseRange.createContextualFragment(html);
+ } else {
+ contextElement.innerHTML = html;
+ fragment = $.Element__parseDocument.createDocumentFragment();
+ for (; t1 = contextElement.firstChild, t1 != null;)
+ fragment.appendChild(t1);
+ }
+ t1 = $.Element__parseDocument.body;
+ if (contextElement == null ? t1 != null : contextElement !== t1)
+ J.remove$0$ax(contextElement);
+ treeSanitizer.sanitizeTree$1(fragment);
+ document.adoptNode(fragment);
+ return fragment;
+ },
+ createFragment$2$treeSanitizer: function($receiver, html, treeSanitizer) {
+ return this.createFragment$3$treeSanitizer$validator($receiver, html, treeSanitizer, null);
+ },
+ set$innerHtml: function(receiver, html) {
+ this.setInnerHtml$1(receiver, html);
+ },
+ setInnerHtml$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ receiver.textContent = null;
+ receiver.appendChild(this.createFragment$3$treeSanitizer$validator(receiver, html, treeSanitizer, validator));
+ },
+ setInnerHtml$1: function($receiver, html) {
+ return this.setInnerHtml$3$treeSanitizer$validator($receiver, html, null, null);
+ },
+ get$onBlur: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_blur._eventType, false), [null]);
+ },
+ get$onChange: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_change._eventType, false), [null]);
+ },
+ get$onClick: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_click._eventType, false), [null]);
+ },
+ get$onInput: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_input._eventType, false), [null]);
+ },
+ $isElement: true,
+ "%": ";Element"
+ },
+ EmbedElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLEmbedElement"
+ },
+ ErrorEvent: {
+ "^": "Event;error=",
+ "%": "ErrorEvent"
+ },
+ Event: {
+ "^": "Interceptor;",
+ preventDefault$0: function(receiver) {
+ return receiver.preventDefault();
+ },
+ "%": "AudioProcessingEvent|AutocompleteErrorEvent|BeforeLoadEvent|BeforeUnloadEvent|CSSFontFaceLoadEvent|CloseEvent|CustomEvent|DeviceMotionEvent|DeviceOrientationEvent|HashChangeEvent|IDBVersionChangeEvent|MIDIConnectionEvent|MIDIMessageEvent|MediaKeyEvent|MediaKeyMessageEvent|MediaKeyNeededEvent|MediaStreamEvent|MediaStreamTrackEvent|MessageEvent|MutationEvent|OfflineAudioCompletionEvent|OverflowEvent|PageTransitionEvent|PopStateEvent|ProgressEvent|RTCDTMFToneChangeEvent|RTCDataChannelEvent|RTCIceCandidateEvent|ResourceProgressEvent|SecurityPolicyViolationEvent|SpeechInputEvent|SpeechRecognitionEvent|SpeechSynthesisEvent|StorageEvent|TrackEvent|TransitionEvent|WebGLContextEvent|WebKitAnimationEvent|WebKitTransitionEvent|XMLHttpRequestProgressEvent;Event"
+ },
+ EventTarget: {
+ "^": "Interceptor;",
+ addEventListener$3: function(receiver, type, listener, useCapture) {
+ return receiver.addEventListener(type, H.convertDartClosureToJS(listener, 1), useCapture);
+ },
+ removeEventListener$3: function(receiver, type, listener, useCapture) {
+ return receiver.removeEventListener(type, H.convertDartClosureToJS(listener, 1), useCapture);
+ },
+ "%": ";EventTarget"
+ },
+ FieldSetElement: {
+ "^": "HtmlElement;disabled},name=",
+ "%": "HTMLFieldSetElement"
+ },
+ FormElement: {
+ "^": "HtmlElement;length=,name=",
+ "%": "HTMLFormElement"
+ },
+ IFrameElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLIFrameElement"
+ },
+ InputElement: {
+ "^": "HtmlElement;disabled},name=,value%",
+ $isElement: true,
+ "%": "HTMLInputElement"
+ },
+ KeygenElement: {
+ "^": "HtmlElement;disabled},name=",
+ "%": "HTMLKeygenElement"
+ },
+ LIElement: {
+ "^": "HtmlElement;value%",
+ "%": "HTMLLIElement"
+ },
+ LinkElement: {
+ "^": "HtmlElement;disabled},href}",
+ "%": "HTMLLinkElement"
+ },
+ Location: {
+ "^": "Interceptor;hostname=,port=,protocol=",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ $isLocation: true,
+ "%": "Location"
+ },
+ MapElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLMapElement"
+ },
+ MediaElement: {
+ "^": "HtmlElement;error=",
+ "%": "HTMLAudioElement|HTMLMediaElement|HTMLVideoElement"
+ },
+ MetaElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLMetaElement"
+ },
+ MeterElement: {
+ "^": "HtmlElement;value%",
+ "%": "HTMLMeterElement"
+ },
+ MidiOutput: {
+ "^": "MidiPort;",
+ send$2: function(receiver, data, timestamp) {
+ return receiver.send(data, timestamp);
+ },
+ send$1: function($receiver, data) {
+ return $receiver.send(data);
+ },
+ "%": "MIDIOutput"
+ },
+ MidiPort: {
+ "^": "EventTarget;",
+ "%": "MIDIInput;MIDIPort"
+ },
+ MouseEvent: {
+ "^": "UIEvent;",
+ "%": "DragEvent|MSPointerEvent|MouseEvent|MouseScrollEvent|MouseWheelEvent|PointerEvent|WheelEvent"
+ },
+ Node: {
+ "^": "EventTarget;",
+ get$nodes: function(receiver) {
+ return new W._ChildNodeListLazy(receiver);
+ },
+ remove$0: function(receiver) {
+ var t1 = receiver.parentNode;
+ if (t1 != null)
+ t1.removeChild(receiver);
+ },
+ toString$0: function(receiver) {
+ var t1 = receiver.nodeValue;
+ return t1 == null ? J.Interceptor.prototype.toString$0.call(this, receiver) : t1;
+ },
+ "%": "Document|DocumentFragment|DocumentType|HTMLDocument|Notation|ShadowRoot|XMLDocument;Node"
+ },
+ NodeList: {
+ "^": "Interceptor_ListMixin_ImmutableListMixin;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ throw H.wrapException(P.RangeError$range(index, 0, t1));
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ throw H.wrapException(P.UnsupportedError$("Cannot assign element of immutable List."));
+ },
+ elementAt$1: function(receiver, index) {
+ if (index < 0 || index >= receiver.length)
+ return H.ioore(receiver, index);
+ return receiver[index];
+ },
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true,
+ $isJavaScriptIndexingBehavior: true,
+ "%": "NodeList|RadioNodeList"
+ },
+ ObjectElement: {
+ "^": "HtmlElement;name=",
+ "%": "HTMLObjectElement"
+ },
+ OptGroupElement: {
+ "^": "HtmlElement;disabled}",
+ "%": "HTMLOptGroupElement"
+ },
+ OptionElement: {
+ "^": "HtmlElement;disabled},value%",
+ "%": "HTMLOptionElement"
+ },
+ OutputElement: {
+ "^": "HtmlElement;name=,value%",
+ "%": "HTMLOutputElement"
+ },
+ ParamElement: {
+ "^": "HtmlElement;name=,value%",
+ "%": "HTMLParamElement"
+ },
+ ProgressElement: {
+ "^": "HtmlElement;value%",
+ "%": "HTMLProgressElement"
+ },
+ Range: {
+ "^": "Interceptor;",
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "Range"
+ },
+ SelectElement: {
+ "^": "HtmlElement;disabled},length=,name=,value%",
+ "%": "HTMLSelectElement"
+ },
+ SpeechRecognitionError: {
+ "^": "Event;error=",
+ "%": "SpeechRecognitionError"
+ },
+ Storage: {
+ "^": "Interceptor;",
+ $index: function(receiver, key) {
+ return receiver.getItem(key);
+ },
+ $indexSet: function(receiver, key, value) {
+ receiver.setItem(key, value);
+ },
+ forEach$1: function(receiver, f) {
+ var i, key;
+ for (i = 0; true; ++i) {
+ key = receiver.key(i);
+ if (key == null)
+ return;
+ f.call$2(key, receiver.getItem(key));
+ }
+ },
+ get$keys: function(receiver) {
+ var keys = [];
+ this.forEach$1(receiver, new W.Storage_keys_closure(keys));
+ return keys;
+ },
+ get$values: function(receiver) {
+ var values = [];
+ this.forEach$1(receiver, new W.Storage_values_closure(values));
+ return values;
+ },
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ get$isEmpty: function(receiver) {
+ return receiver.key(0) == null;
+ },
+ $isMap: true,
+ $asMap: function() {
+ return [J.JSString, J.JSString];
+ },
+ "%": "Storage"
+ },
+ StyleElement: {
+ "^": "HtmlElement;disabled}",
+ "%": "HTMLStyleElement"
+ },
+ TableElement: {
+ "^": "HtmlElement;",
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var table, fragment;
+ if ("createContextualFragment" in window.Range.prototype)
+ return W.Element.prototype.createFragment$3$treeSanitizer$validator.call(this, receiver, html, treeSanitizer, validator);
+ table = W.Element_Element$html("", treeSanitizer, validator);
+ fragment = document.createDocumentFragment();
+ fragment.toString;
+ new W._ChildNodeListLazy(fragment).addAll$1(0, J.get$nodes$x(table));
+ return fragment;
+ },
+ "%": "HTMLTableElement"
+ },
+ TableRowElement: {
+ "^": "HtmlElement;",
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var fragment, t1, section, row;
+ if ("createContextualFragment" in window.Range.prototype)
+ return W.Element.prototype.createFragment$3$treeSanitizer$validator.call(this, receiver, html, treeSanitizer, validator);
+ fragment = document.createDocumentFragment();
+ t1 = J.createFragment$3$treeSanitizer$validator$x(document.createElement("table", null), html, treeSanitizer, validator);
+ t1.toString;
+ t1 = new W._ChildNodeListLazy(t1);
+ section = t1.get$single(t1);
+ section.toString;
+ t1 = new W._ChildNodeListLazy(section);
+ row = t1.get$single(t1);
+ fragment.toString;
+ row.toString;
+ new W._ChildNodeListLazy(fragment).addAll$1(0, new W._ChildNodeListLazy(row));
+ return fragment;
+ },
+ "%": "HTMLTableRowElement"
+ },
+ TableSectionElement: {
+ "^": "HtmlElement;",
+ createFragment$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var fragment, t1, section;
+ if ("createContextualFragment" in window.Range.prototype)
+ return W.Element.prototype.createFragment$3$treeSanitizer$validator.call(this, receiver, html, treeSanitizer, validator);
+ fragment = document.createDocumentFragment();
+ t1 = J.createFragment$3$treeSanitizer$validator$x(document.createElement("table", null), html, treeSanitizer, validator);
+ t1.toString;
+ t1 = new W._ChildNodeListLazy(t1);
+ section = t1.get$single(t1);
+ fragment.toString;
+ section.toString;
+ new W._ChildNodeListLazy(fragment).addAll$1(0, new W._ChildNodeListLazy(section));
+ return fragment;
+ },
+ "%": "HTMLTableSectionElement"
+ },
+ TemplateElement: {
+ "^": "HtmlElement;",
+ setInnerHtml$3$treeSanitizer$validator: function(receiver, html, treeSanitizer, validator) {
+ var fragment;
+ receiver.textContent = null;
+ fragment = this.createFragment$3$treeSanitizer$validator(receiver, html, treeSanitizer, validator);
+ receiver.content.appendChild(fragment);
+ },
+ setInnerHtml$1: function($receiver, html) {
+ return this.setInnerHtml$3$treeSanitizer$validator($receiver, html, null, null);
+ },
+ $isTemplateElement: true,
+ "%": "HTMLTemplateElement"
+ },
+ TextAreaElement: {
+ "^": "HtmlElement;disabled},name=,value%",
+ "%": "HTMLTextAreaElement"
+ },
+ UIEvent: {
+ "^": "Event;",
+ "%": "CompositionEvent|FocusEvent|KeyboardEvent|SVGZoomEvent|TextEvent|TouchEvent;UIEvent"
+ },
+ Window: {
+ "^": "EventTarget;",
+ get$location: function(receiver) {
+ var result = receiver.location;
+ if (W.Window__isDartLocation(result) === true)
+ return result;
+ if (null == receiver._location_wrapper)
+ receiver._location_wrapper = new W._LocationWrapper(result);
+ return receiver._location_wrapper;
+ },
+ toString$0: function(receiver) {
+ return receiver.toString();
+ },
+ "%": "DOMWindow|Window"
+ },
+ _Attr: {
+ "^": "Node;name=,value=",
+ "%": "Attr"
+ },
+ _NamedNodeMap: {
+ "^": "Interceptor_ListMixin_ImmutableListMixin0;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ throw H.wrapException(P.RangeError$range(index, 0, t1));
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ throw H.wrapException(P.UnsupportedError$("Cannot assign element of immutable List."));
+ },
+ elementAt$1: function(receiver, index) {
+ if (index < 0 || index >= receiver.length)
+ return H.ioore(receiver, index);
+ return receiver[index];
+ },
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true,
+ $isJavaScriptIndexingBehavior: true,
+ "%": "MozNamedAttrMap|NamedNodeMap"
+ },
+ Element_Element$html_closure: {
+ "^": "Closure:11;",
+ call$1: function(e) {
+ return !!J.getInterceptor(e).$isElement;
+ }
+ },
+ _ChildNodeListLazy: {
+ "^": "ListBase;_this",
+ get$single: function(_) {
+ var t1, l;
+ t1 = this._this;
+ l = t1.childNodes.length;
+ if (l === 0)
+ throw H.wrapException(P.StateError$("No elements"));
+ if (l > 1)
+ throw H.wrapException(P.StateError$("More than one element"));
+ return t1.firstChild;
+ },
+ addAll$1: function(_, iterable) {
+ var t1, t2, len, i;
+ t1 = iterable._this;
+ t2 = this._this;
+ if (t1 !== t2)
+ for (len = t1.childNodes.length, i = 0; i < len; ++i)
+ t2.appendChild(t1.firstChild);
+ return;
+ },
+ $indexSet: function(_, index, value) {
+ var t1, t2;
+ t1 = this._this;
+ t2 = t1.childNodes;
+ if (index >>> 0 !== index || index >= t2.length)
+ return H.ioore(t2, index);
+ t1.replaceChild(value, t2[index]);
+ },
+ get$iterator: function(_) {
+ return C.NodeList_methods.get$iterator(this._this.childNodes);
+ },
+ get$length: function(_) {
+ return this._this.childNodes.length;
+ },
+ $index: function(_, index) {
+ var t1 = this._this.childNodes;
+ if (index >>> 0 !== index || index >= t1.length)
+ return H.ioore(t1, index);
+ return t1[index];
+ },
+ $asListBase: function() {
+ return [W.Node];
+ },
+ $asList: function() {
+ return [W.Node];
+ }
+ },
+ Interceptor_ListMixin: {
+ "^": "Interceptor+ListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ Interceptor_ListMixin_ImmutableListMixin: {
+ "^": "Interceptor_ListMixin+ImmutableListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ Storage_keys_closure: {
+ "^": "Closure:10;keys_0",
+ call$2: function(k, v) {
+ return this.keys_0.push(k);
+ }
+ },
+ Storage_values_closure: {
+ "^": "Closure:10;values_0",
+ call$2: function(k, v) {
+ return this.values_0.push(v);
+ }
+ },
+ Interceptor_ListMixin0: {
+ "^": "Interceptor+ListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ Interceptor_ListMixin_ImmutableListMixin0: {
+ "^": "Interceptor_ListMixin0+ImmutableListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [W.Node];
+ },
+ $isEfficientLength: true
+ },
+ _AttributeMap: {
+ "^": "Object;",
+ forEach$1: function(_, f) {
+ var t1, key;
+ for (t1 = this.get$keys(this), t1 = new H.ListIterator(t1, t1.length, 0, null); t1.moveNext$0();) {
+ key = t1._current;
+ f.call$2(key, this.$index(0, key));
+ }
+ },
+ get$keys: function(_) {
+ var attributes, keys, len, i, t1;
+ attributes = this._element.attributes;
+ keys = H.setRuntimeTypeInfo([], [J.JSString]);
+ for (len = attributes.length, i = 0; i < len; ++i) {
+ if (i >= attributes.length)
+ return H.ioore(attributes, i);
+ t1 = attributes[i];
+ if (this._matches$1(t1))
+ keys.push(J.get$name$x(t1));
+ }
+ return keys;
+ },
+ get$values: function(_) {
+ var attributes, values, len, i, t1;
+ attributes = this._element.attributes;
+ values = H.setRuntimeTypeInfo([], [J.JSString]);
+ for (len = attributes.length, i = 0; i < len; ++i) {
+ if (i >= attributes.length)
+ return H.ioore(attributes, i);
+ t1 = attributes[i];
+ if (this._matches$1(t1))
+ values.push(J.get$value$x(t1));
+ }
+ return values;
+ },
+ get$isEmpty: function(_) {
+ return this.get$length(this) === 0;
+ },
+ $isMap: true,
+ $asMap: function() {
+ return [J.JSString, J.JSString];
+ }
+ },
+ _ElementAttributeMap: {
+ "^": "_AttributeMap;_element",
+ $index: function(_, key) {
+ return this._element.getAttribute(key);
+ },
+ $indexSet: function(_, key, value) {
+ this._element.setAttribute(key, value);
+ },
+ get$length: function(_) {
+ return this.get$keys(this).length;
+ },
+ _matches$1: function(node) {
+ return node.namespaceURI == null;
+ }
+ },
+ EventStreamProvider: {
+ "^": "Object;_eventType"
+ },
+ _EventStream: {
+ "^": "Stream;",
+ listen$4$cancelOnError$onDone$onError: function(onData, cancelOnError, onDone, onError) {
+ var t1 = new W._EventStreamSubscription(0, this._target, this._eventType, W._wrapZone(onData), this._useCapture);
+ t1.$builtinTypeInfo = this.$builtinTypeInfo;
+ t1._tryResume$0();
+ return t1;
+ }
+ },
+ _ElementEventStreamImpl: {
+ "^": "_EventStream;_target,_eventType,_useCapture"
+ },
+ _EventStreamSubscription: {
+ "^": "StreamSubscription;_pauseCount,_target,_eventType,_onData,_useCapture",
+ cancel$0: function() {
+ if (this._target == null)
+ return;
+ this._unlisten$0();
+ this._target = null;
+ this._onData = null;
+ return;
+ },
+ _tryResume$0: function() {
+ var t1 = this._onData;
+ if (t1 != null && this._pauseCount <= 0)
+ J.addEventListener$3$x(this._target, this._eventType, t1, this._useCapture);
+ },
+ _unlisten$0: function() {
+ var t1 = this._onData;
+ if (t1 != null)
+ J.removeEventListener$3$x(this._target, this._eventType, t1, this._useCapture);
+ }
+ },
+ _Html5NodeValidator: {
+ "^": "Object;uriPolicy<",
+ allowsElement$1: function(element) {
+ return $.get$_Html5NodeValidator__allowedElements().contains$1(0, element.tagName);
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ var tagName, t1, validator;
+ tagName = element.tagName;
+ t1 = $.get$_Html5NodeValidator__attributeValidators();
+ validator = t1.$index(0, H.S(tagName) + "::" + attributeName);
+ if (validator == null)
+ validator = t1.$index(0, "*::" + attributeName);
+ if (validator == null)
+ return false;
+ return validator.call$4(element, attributeName, value, this);
+ },
+ _Html5NodeValidator$1$uriPolicy: function(uriPolicy) {
+ var t1, t2;
+ t1 = $.get$_Html5NodeValidator__attributeValidators();
+ if (t1.get$isEmpty(t1)) {
+ for (t2 = new H.ListIterator(C.List_1GN, 261, 0, null); t2.moveNext$0();)
+ t1.$indexSet(0, t2._current, W._Html5NodeValidator__standardAttributeValidator$closure());
+ for (t2 = new H.ListIterator(C.List_yrN, 12, 0, null); t2.moveNext$0();)
+ t1.$indexSet(0, t2._current, W._Html5NodeValidator__uriAttributeValidator$closure());
+ }
+ },
+ static: {"^": "_Html5NodeValidator__allowedElements,_Html5NodeValidator__standardAttributes,_Html5NodeValidator__uriAttributes,_Html5NodeValidator__attributeValidators", _Html5NodeValidator$: function(uriPolicy) {
+ var e, t1;
+ e = document.createElement("a", null);
+ t1 = new W._SameOriginUriPolicy(e, C.Window_methods.get$location(window));
+ t1 = new W._Html5NodeValidator(t1);
+ t1._Html5NodeValidator$1$uriPolicy(uriPolicy);
+ return t1;
+ }, _Html5NodeValidator__standardAttributeValidator: [function(element, attributeName, value, context) {
+ return true;
+ }, "call$4", "_Html5NodeValidator__standardAttributeValidator$closure", 8, 0, 8], _Html5NodeValidator__uriAttributeValidator: [function(element, attributeName, value, context) {
+ var t1, t2, t3, t4, t5, t6;
+ t1 = context.get$uriPolicy();
+ t2 = t1._hiddenAnchor;
+ t3 = J.getInterceptor$x(t2);
+ t3.set$href(t2, value);
+ t4 = t3.get$hostname(t2);
+ t1 = t1._loc;
+ t5 = J.getInterceptor$x(t1);
+ t6 = t5.get$hostname(t1);
+ if (t4 == null ? t6 == null : t4 === t6) {
+ t4 = t3.get$port(t2);
+ t6 = t5.get$port(t1);
+ if (t4 == null ? t6 == null : t4 === t6) {
+ t4 = t3.get$protocol(t2);
+ t1 = t5.get$protocol(t1);
+ t1 = t4 == null ? t1 == null : t4 === t1;
+ } else
+ t1 = false;
+ } else
+ t1 = false;
+ if (!t1)
+ t1 = t3.get$hostname(t2) === "" && t3.get$port(t2) === "" && t3.get$protocol(t2) === ":";
+ else
+ t1 = true;
+ return t1;
+ }, "call$4", "_Html5NodeValidator__uriAttributeValidator$closure", 8, 0, 8]}
+ },
+ ImmutableListMixin: {
+ "^": "Object;",
+ get$iterator: function(receiver) {
+ return new W.FixedSizeListIterator(receiver, this.get$length(receiver), -1, null);
+ },
+ $isList: true,
+ $asList: null,
+ $isEfficientLength: true
+ },
+ NodeValidatorBuilder: {
+ "^": "Object;_validators",
+ allowsElement$1: function(element) {
+ return H.IterableMixinWorkaround_any(this._validators, new W.NodeValidatorBuilder_allowsElement_closure(element));
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ return H.IterableMixinWorkaround_any(this._validators, new W.NodeValidatorBuilder_allowsAttribute_closure(element, attributeName, value));
+ }
+ },
+ NodeValidatorBuilder_allowsElement_closure: {
+ "^": "Closure:11;element_0",
+ call$1: function(v) {
+ return v.allowsElement$1(this.element_0);
+ }
+ },
+ NodeValidatorBuilder_allowsAttribute_closure: {
+ "^": "Closure:11;element_0,attributeName_1,value_2",
+ call$1: function(v) {
+ return v.allowsAttribute$3(this.element_0, this.attributeName_1, this.value_2);
+ }
+ },
+ _SimpleNodeValidator: {
+ "^": "Object;uriPolicy<",
+ allowsElement$1: function(element) {
+ return this.allowedElements.contains$1(0, element.tagName);
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ var tagName, t1;
+ tagName = element.tagName;
+ t1 = this.allowedUriAttributes;
+ if (t1.contains$1(0, H.S(tagName) + "::" + attributeName))
+ return this.uriPolicy.allowsUri$1(value);
+ else if (t1.contains$1(0, "*::" + attributeName))
+ return this.uriPolicy.allowsUri$1(value);
+ else {
+ t1 = this.allowedAttributes;
+ if (t1.contains$1(0, H.S(tagName) + "::" + attributeName))
+ return true;
+ else if (t1.contains$1(0, "*::" + attributeName))
+ return true;
+ else if (t1.contains$1(0, H.S(tagName) + "::*"))
+ return true;
+ else if (t1.contains$1(0, "*::*"))
+ return true;
+ }
+ return false;
+ }
+ },
+ _TemplatingNodeValidator: {
+ "^": "_SimpleNodeValidator;_templateAttrs,allowedElements,allowedAttributes,allowedUriAttributes,uriPolicy",
+ allowsAttribute$3: function(element, attributeName, value) {
+ if (W._SimpleNodeValidator.prototype.allowsAttribute$3.call(this, element, attributeName, value))
+ return true;
+ if (attributeName === "template" && value === "")
+ return true;
+ if (element.getAttribute("template") === "")
+ return this._templateAttrs.contains$1(0, attributeName);
+ return false;
+ },
+ static: {"^": "_TemplatingNodeValidator__TEMPLATE_ATTRS", _TemplatingNodeValidator$: function() {
+ var t1, t2, t3, t4;
+ t1 = H.setRuntimeTypeInfo(new H.MappedListIterable(C.List_wSV, new W._TemplatingNodeValidator_closure()), [null, null]);
+ t2 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t2.addAll$1(0, ["TEMPLATE"]);
+ t3 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t3.addAll$1(0, t1);
+ t1 = t3;
+ t3 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t4 = P.LinkedHashSet_LinkedHashSet(null, null, null, J.JSString);
+ t4.addAll$1(0, C.List_wSV);
+ return new W._TemplatingNodeValidator(t4, t2, t1, t3, null);
+ }}
+ },
+ _TemplatingNodeValidator_closure: {
+ "^": "Closure:11;",
+ call$1: function(attr) {
+ return "TEMPLATE::" + H.S(attr);
+ }
+ },
+ _SvgNodeValidator: {
+ "^": "Object;",
+ allowsElement$1: function(element) {
+ var t1 = J.getInterceptor(element);
+ if (!!t1.$isScriptElement)
+ return false;
+ if (!!t1.$isSvgElement)
+ return true;
+ return false;
+ },
+ allowsAttribute$3: function(element, attributeName, value) {
+ if (attributeName === "is" || C.JSString_methods.startsWith$1(attributeName, "on"))
+ return false;
+ return this.allowsElement$1(element);
+ }
+ },
+ FixedSizeListIterator: {
+ "^": "Object;_array,_html$_length,_position,_html$_current",
+ moveNext$0: function() {
+ var nextPosition, t1;
+ nextPosition = this._position + 1;
+ t1 = this._html$_length;
+ if (nextPosition < t1) {
+ this._html$_current = J.$index$asx(this._array, nextPosition);
+ this._position = nextPosition;
+ return true;
+ }
+ this._html$_current = null;
+ this._position = t1;
+ return false;
+ },
+ get$current: function() {
+ return this._html$_current;
+ }
+ },
+ _LocationWrapper: {
+ "^": "Object;_ptr",
+ get$hostname: function(_) {
+ return this._ptr.hostname;
+ },
+ get$port: function(_) {
+ return this._ptr.port;
+ },
+ get$protocol: function(_) {
+ return this._ptr.protocol;
+ },
+ toString$0: function(_) {
+ return this._ptr.toString();
+ },
+ $isLocation: true
+ },
+ NodeValidator: {
+ "^": "Object;"
+ },
+ _SameOriginUriPolicy: {
+ "^": "Object;_hiddenAnchor,_loc"
+ },
+ _ValidatingTreeSanitizer: {
+ "^": "Object;validator",
+ sanitizeTree$1: function(node) {
+ new W._ValidatingTreeSanitizer_sanitizeTree_walk(this).call$1(node);
+ },
+ sanitizeNode$1: function(node) {
+ var t1, attrs, t2, isAttr, keys, i, $name, t3;
+ switch (node.nodeType) {
+ case 1:
+ t1 = J.getInterceptor$x(node);
+ attrs = t1.get$attributes(node);
+ if (!this.validator.allowsElement$1(node)) {
+ window;
+ t2 = "Removing disallowed element <" + H.S(node.tagName) + ">";
+ if (typeof console != "undefined")
+ console.warn(t2);
+ t1.remove$0(node);
+ break;
+ }
+ t2 = attrs._element;
+ isAttr = t2.getAttribute("is");
+ if (isAttr != null)
+ if (!this.validator.allowsAttribute$3(node, "is", isAttr)) {
+ window;
+ t2 = "Removing disallowed type extension <" + H.S(node.tagName) + " is=\"" + isAttr + "\">";
+ if (typeof console != "undefined")
+ console.warn(t2);
+ t1.remove$0(node);
+ break;
+ }
+ keys = C.JSArray_methods.toList$0(attrs.get$keys(attrs));
+ for (i = attrs.get$keys(attrs).length - 1; i >= 0; --i) {
+ if (i >= keys.length)
+ return H.ioore(keys, i);
+ $name = keys[i];
+ if (!this.validator.allowsAttribute$3(node, J.toLowerCase$0$s($name), t2.getAttribute($name))) {
+ window;
+ t3 = "Removing disallowed attribute <" + H.S(node.tagName) + " " + $name + "=\"" + H.S(t2.getAttribute($name)) + "\">";
+ if (typeof console != "undefined")
+ console.warn(t3);
+ t2.getAttribute($name);
+ t2.removeAttribute($name);
+ }
+ }
+ if (!!t1.$isTemplateElement)
+ this.sanitizeTree$1(node.content);
+ break;
+ case 8:
+ case 11:
+ case 3:
+ case 4:
+ break;
+ default:
+ J.remove$0$ax(node);
+ }
+ }
+ },
+ _ValidatingTreeSanitizer_sanitizeTree_walk: {
+ "^": "Closure:22;this_0",
+ call$1: function(node) {
+ var child, nextChild;
+ this.this_0.sanitizeNode$1(node);
+ child = node.lastChild;
+ for (; child != null; child = nextChild) {
+ nextChild = child.previousSibling;
+ this.call$1(child);
+ }
+ }
+ }
+}],
+["dart.dom.svg", "dart:svg", , P, {
+ "^": "",
+ ScriptElement: {
+ "^": "SvgElement;",
+ $isScriptElement: true,
+ "%": "SVGScriptElement"
+ },
+ StyleElement0: {
+ "^": "SvgElement;disabled}",
+ "%": "SVGStyleElement"
+ },
+ SvgElement: {
+ "^": "Element;",
+ set$innerHtml: function(receiver, value) {
+ receiver.textContent = null;
+ receiver.appendChild(this.createFragment$3$treeSanitizer$validator(receiver, value, null, null));
+ },
+ createFragment$3$treeSanitizer$validator: function(receiver, svg, treeSanitizer, validator) {
+ var t1, html, fragment, svgFragment, root;
+ t1 = H.setRuntimeTypeInfo([], [W.NodeValidator]);
+ validator = new W.NodeValidatorBuilder(t1);
+ t1.push(W._Html5NodeValidator$(null));
+ t1.push(W._TemplatingNodeValidator$());
+ t1.push(new W._SvgNodeValidator());
+ treeSanitizer = new W._ValidatingTreeSanitizer(validator);
+ html = "" + svg + " ";
+ fragment = J.createFragment$2$treeSanitizer$x(document.body, html, treeSanitizer);
+ svgFragment = document.createDocumentFragment();
+ fragment.toString;
+ t1 = new W._ChildNodeListLazy(fragment);
+ root = t1.get$single(t1);
+ for (; t1 = root.firstChild, t1 != null;)
+ svgFragment.appendChild(t1);
+ return svgFragment;
+ },
+ get$onBlur: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_blur._eventType, false), [null]);
+ },
+ get$onChange: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_change._eventType, false), [null]);
+ },
+ get$onClick: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_click._eventType, false), [null]);
+ },
+ get$onInput: function(receiver) {
+ return H.setRuntimeTypeInfo(new W._ElementEventStreamImpl(receiver, C.EventStreamProvider_input._eventType, false), [null]);
+ },
+ $isSvgElement: true,
+ "%": "SVGAElement|SVGAltGlyphDefElement|SVGAltGlyphElement|SVGAltGlyphItemElement|SVGAnimateElement|SVGAnimateMotionElement|SVGAnimateTransformElement|SVGAnimationElement|SVGCircleElement|SVGClipPathElement|SVGComponentTransferFunctionElement|SVGCursorElement|SVGDefsElement|SVGDescElement|SVGDiscardElement|SVGEllipseElement|SVGFEBlendElement|SVGFEColorMatrixElement|SVGFEComponentTransferElement|SVGFECompositeElement|SVGFEConvolveMatrixElement|SVGFEDiffuseLightingElement|SVGFEDisplacementMapElement|SVGFEDistantLightElement|SVGFEDropShadowElement|SVGFEFloodElement|SVGFEFuncAElement|SVGFEFuncBElement|SVGFEFuncGElement|SVGFEFuncRElement|SVGFEGaussianBlurElement|SVGFEImageElement|SVGFEMergeElement|SVGFEMergeNodeElement|SVGFEMorphologyElement|SVGFEOffsetElement|SVGFEPointLightElement|SVGFESpecularLightingElement|SVGFESpotLightElement|SVGFETileElement|SVGFETurbulenceElement|SVGFilterElement|SVGFontElement|SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement|SVGForeignObjectElement|SVGGElement|SVGGeometryElement|SVGGlyphElement|SVGGlyphRefElement|SVGGradientElement|SVGGraphicsElement|SVGHKernElement|SVGImageElement|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMarkerElement|SVGMaskElement|SVGMetadataElement|SVGMissingGlyphElement|SVGPathElement|SVGPatternElement|SVGPolygonElement|SVGPolylineElement|SVGRadialGradientElement|SVGRectElement|SVGSVGElement|SVGSetElement|SVGStopElement|SVGSwitchElement|SVGSymbolElement|SVGTSpanElement|SVGTextContentElement|SVGTextElement|SVGTextPathElement|SVGTextPositioningElement|SVGTitleElement|SVGUseElement|SVGVKernElement|SVGViewElement;SVGElement"
+ }
+}],
+["dart.isolate", "dart:isolate", , P, {
+ "^": "",
+ Capability: {
+ "^": "Object;",
+ $isCapability: true,
+ static: {Capability_Capability: function() {
+ return new H.CapabilityImpl((Math.random() * 0x100000000 >>> 0) + (Math.random() * 0x100000000 >>> 0) * 4294967296);
+ }}
+ }
+}],
+["dart.typed_data.implementation", "dart:_native_typed_data", , H, {
+ "^": "",
+ NativeTypedData: {
+ "^": "Interceptor;",
+ _invalidIndex$2: function(receiver, index, $length) {
+ var t1 = J.getInterceptor$n(index);
+ if (t1.$lt(index, 0) || t1.$ge(index, $length))
+ throw H.wrapException(P.RangeError$range(index, 0, $length));
+ else
+ throw H.wrapException(P.ArgumentError$("Invalid list index " + H.S(index)));
+ },
+ "%": ";ArrayBufferView;NativeTypedArray|NativeTypedArray_ListMixin|NativeTypedArray_ListMixin_FixedLengthListMixin|NativeTypedArrayOfInt"
+ },
+ NativeUint8List: {
+ "^": "NativeTypedArrayOfInt;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $index: function(receiver, index) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ this._invalidIndex$2(receiver, index, t1);
+ return receiver[index];
+ },
+ $indexSet: function(receiver, index, value) {
+ var t1 = receiver.length;
+ if (index >>> 0 !== index || index >= t1)
+ this._invalidIndex$2(receiver, index, t1);
+ receiver[index] = value;
+ },
+ $isList: true,
+ $asList: function() {
+ return [J.JSInt];
+ },
+ $isEfficientLength: true,
+ "%": ";Uint8Array"
+ },
+ NativeTypedArray: {
+ "^": "NativeTypedData;",
+ get$length: function(receiver) {
+ return receiver.length;
+ },
+ $isJavaScriptIndexingBehavior: true
+ },
+ NativeTypedArrayOfInt: {
+ "^": "NativeTypedArray_ListMixin_FixedLengthListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [J.JSInt];
+ },
+ $isEfficientLength: true
+ },
+ NativeTypedArray_ListMixin: {
+ "^": "NativeTypedArray+ListMixin;",
+ $isList: true,
+ $asList: function() {
+ return [J.JSInt];
+ },
+ $isEfficientLength: true
+ },
+ NativeTypedArray_ListMixin_FixedLengthListMixin: {
+ "^": "NativeTypedArray_ListMixin+FixedLengthListMixin;"
+ }
+}],
+["dart2js._js_primitives", "dart:_js_primitives", , H, {
+ "^": "",
+ printString: function(string) {
+ if (typeof dartPrint == "function") {
+ dartPrint(string);
+ return;
+ }
+ if (typeof console == "object" && typeof console.log == "function") {
+ console.log(string);
+ return;
+ }
+ if (typeof window == "object")
+ return;
+ if (typeof print == "function") {
+ print(string);
+ return;
+ }
+ throw "Unable to print message: " + String(string);
+ }
+}],
+]);
+Isolate.$finishClasses($$, $, null);
+$$ = null;
+
+// Runtime type support
+J.JSString.$isString = true;
+J.JSString.$isObject = true;
+J.JSInt.$isint = true;
+J.JSInt.$isObject = true;
+W.Node.$isNode = true;
+W.Node.$isObject = true;
+J.JSNumber.$isObject = true;
+P.Duration.$isObject = true;
+P.Object.$isObject = true;
+W.NodeValidator.$isObject = true;
+W.MouseEvent.$isEvent = true;
+W.MouseEvent.$isObject = true;
+W.Event.$isEvent = true;
+W.Event.$isObject = true;
+J.JSBool.$isbool = true;
+J.JSBool.$isObject = true;
+H.RawReceivePortImpl.$isObject = true;
+H._IsolateEvent.$isObject = true;
+H._IsolateContext.$isObject = true;
+P.Symbol.$isSymbol = true;
+P.Symbol.$isObject = true;
+P.StackTrace.$isStackTrace = true;
+P.StackTrace.$isObject = true;
+J.JSDouble.$isdouble = true;
+J.JSDouble.$isObject = true;
+W.Element.$isElement = true;
+W.Element.$isNode = true;
+W.Element.$isObject = true;
+W._Html5NodeValidator.$is_Html5NodeValidator = true;
+W._Html5NodeValidator.$isObject = true;
+P._EventSink.$is_EventSink = true;
+P._EventSink.$isObject = true;
+// getInterceptor methods
+J.getInterceptor = function(receiver) {
+ if (typeof receiver == "number") {
+ if (Math.floor(receiver) == receiver)
+ return J.JSInt.prototype;
+ return J.JSDouble.prototype;
+ }
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return J.JSNull.prototype;
+ if (typeof receiver == "boolean")
+ return J.JSBool.prototype;
+ if (receiver.constructor == Array)
+ return J.JSArray.prototype;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.getInterceptor$asx = function(receiver) {
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return receiver;
+ if (receiver.constructor == Array)
+ return J.JSArray.prototype;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.getInterceptor$ax = function(receiver) {
+ if (receiver == null)
+ return receiver;
+ if (receiver.constructor == Array)
+ return J.JSArray.prototype;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.getInterceptor$n = function(receiver) {
+ if (typeof receiver == "number")
+ return J.JSNumber.prototype;
+ if (receiver == null)
+ return receiver;
+ if (!(receiver instanceof P.Object))
+ return J.UnknownJavaScriptObject.prototype;
+ return receiver;
+};
+J.getInterceptor$ns = function(receiver) {
+ if (typeof receiver == "number")
+ return J.JSNumber.prototype;
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return receiver;
+ if (!(receiver instanceof P.Object))
+ return J.UnknownJavaScriptObject.prototype;
+ return receiver;
+};
+J.getInterceptor$s = function(receiver) {
+ if (typeof receiver == "string")
+ return J.JSString.prototype;
+ if (receiver == null)
+ return receiver;
+ if (!(receiver instanceof P.Object))
+ return J.UnknownJavaScriptObject.prototype;
+ return receiver;
+};
+J.getInterceptor$x = function(receiver) {
+ if (receiver == null)
+ return receiver;
+ if (typeof receiver != "object")
+ return receiver;
+ if (receiver instanceof P.Object)
+ return receiver;
+ return J.getNativeInterceptor(receiver);
+};
+J.$add$ns = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver + a0;
+ return J.getInterceptor$ns(receiver).$add(receiver, a0);
+};
+J.$eq = function(receiver, a0) {
+ if (receiver == null)
+ return a0 == null;
+ if (typeof receiver != "object")
+ return a0 != null && receiver === a0;
+ return J.getInterceptor(receiver).$eq(receiver, a0);
+};
+J.$ge$n = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver >= a0;
+ return J.getInterceptor$n(receiver).$ge(receiver, a0);
+};
+J.$index$asx = function(receiver, a0) {
+ if (receiver.constructor == Array || typeof receiver == "string" || H.isJsIndexable(receiver, receiver[init.dispatchPropertyName]))
+ if (a0 >>> 0 === a0 && a0 < receiver.length)
+ return receiver[a0];
+ return J.getInterceptor$asx(receiver).$index(receiver, a0);
+};
+J.$indexSet$ax = function(receiver, a0, a1) {
+ if ((receiver.constructor == Array || H.isJsIndexable(receiver, receiver[init.dispatchPropertyName])) && !receiver.immutable$list && a0 >>> 0 === a0 && a0 < receiver.length)
+ return receiver[a0] = a1;
+ return J.getInterceptor$ax(receiver).$indexSet(receiver, a0, a1);
+};
+J.$mul$ns = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver * a0;
+ return J.getInterceptor$ns(receiver).$mul(receiver, a0);
+};
+J.$sub$n = function(receiver, a0) {
+ if (typeof receiver == "number" && typeof a0 == "number")
+ return receiver - a0;
+ return J.getInterceptor$n(receiver).$sub(receiver, a0);
+};
+J.addEventListener$3$x = function(receiver, a0, a1, a2) {
+ return J.getInterceptor$x(receiver).addEventListener$3(receiver, a0, a1, a2);
+};
+J.contains$1$asx = function(receiver, a0) {
+ return J.getInterceptor$asx(receiver).contains$1(receiver, a0);
+};
+J.createFragment$2$treeSanitizer$x = function(receiver, a0, a1) {
+ return J.getInterceptor$x(receiver).createFragment$2$treeSanitizer(receiver, a0, a1);
+};
+J.createFragment$3$treeSanitizer$validator$x = function(receiver, a0, a1, a2) {
+ return J.getInterceptor$x(receiver).createFragment$3$treeSanitizer$validator(receiver, a0, a1, a2);
+};
+J.elementAt$1$ax = function(receiver, a0) {
+ return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0);
+};
+J.forEach$1$ax = function(receiver, a0) {
+ return J.getInterceptor$ax(receiver).forEach$1(receiver, a0);
+};
+J.get$_key$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$_key(receiver);
+};
+J.get$error$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$error(receiver);
+};
+J.get$hashCode$ = function(receiver) {
+ return J.getInterceptor(receiver).get$hashCode(receiver);
+};
+J.get$isEmpty$asx = function(receiver) {
+ return J.getInterceptor$asx(receiver).get$isEmpty(receiver);
+};
+J.get$iterator$ax = function(receiver) {
+ return J.getInterceptor$ax(receiver).get$iterator(receiver);
+};
+J.get$length$asx = function(receiver) {
+ return J.getInterceptor$asx(receiver).get$length(receiver);
+};
+J.get$name$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$name(receiver);
+};
+J.get$nodes$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$nodes(receiver);
+};
+J.get$onBlur$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onBlur(receiver);
+};
+J.get$onChange$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onChange(receiver);
+};
+J.get$onClick$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onClick(receiver);
+};
+J.get$onInput$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$onInput(receiver);
+};
+J.get$value$x = function(receiver) {
+ return J.getInterceptor$x(receiver).get$value(receiver);
+};
+J.preventDefault$0$x = function(receiver) {
+ return J.getInterceptor$x(receiver).preventDefault$0(receiver);
+};
+J.remove$0$ax = function(receiver) {
+ return J.getInterceptor$ax(receiver).remove$0(receiver);
+};
+J.remove$1$ax = function(receiver, a0) {
+ return J.getInterceptor$ax(receiver).remove$1(receiver, a0);
+};
+J.removeEventListener$3$x = function(receiver, a0, a1, a2) {
+ return J.getInterceptor$x(receiver).removeEventListener$3(receiver, a0, a1, a2);
+};
+J.round$0$n = function(receiver) {
+ return J.getInterceptor$n(receiver).round$0(receiver);
+};
+J.send$1$x = function(receiver, a0) {
+ return J.getInterceptor$x(receiver).send$1(receiver, a0);
+};
+J.set$disabled$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$disabled(receiver, value);
+};
+J.set$href$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$href(receiver, value);
+};
+J.set$innerHtml$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$innerHtml(receiver, value);
+};
+J.set$value$x = function(receiver, value) {
+ return J.getInterceptor$x(receiver).set$value(receiver, value);
+};
+J.toList$0$ax = function(receiver) {
+ return J.getInterceptor$ax(receiver).toList$0(receiver);
+};
+J.toLowerCase$0$s = function(receiver) {
+ return J.getInterceptor$s(receiver).toLowerCase$0(receiver);
+};
+J.toString$0 = function(receiver) {
+ return J.getInterceptor(receiver).toString$0(receiver);
+};
+J.toStringAsFixed$1$n = function(receiver, a0) {
+ return J.getInterceptor$n(receiver).toStringAsFixed$1(receiver, a0);
+};
+J.trim$0$s = function(receiver) {
+ return J.getInterceptor$s(receiver).trim$0(receiver);
+};
+C.C_DynamicRuntimeType = new H.DynamicRuntimeType();
+C.C_OutOfMemoryError = new P.OutOfMemoryError();
+C.C__RootZone = new P._RootZone();
+C.Duration_0 = new P.Duration(0);
+C.EventStreamProvider_blur = new W.EventStreamProvider("blur");
+C.EventStreamProvider_change = new W.EventStreamProvider("change");
+C.EventStreamProvider_click = new W.EventStreamProvider("click");
+C.EventStreamProvider_input = new W.EventStreamProvider("input");
+C.JSArray_methods = J.JSArray.prototype;
+C.JSInt_methods = J.JSInt.prototype;
+C.JSNumber_methods = J.JSNumber.prototype;
+C.JSString_methods = J.JSString.prototype;
+C.JS_CONST_0 = function(hooks) {
+ if (typeof dartExperimentalFixupGetTag != "function") return hooks;
+ hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
+};
+C.JS_CONST_Fs4 = function(hooks) { return hooks; }
+;
+C.JS_CONST_IX5 = function getTagFallback(o) {
+ var constructor = o.constructor;
+ if (typeof constructor == "function") {
+ var name = constructor.name;
+ if (typeof name == "string"
+ && name !== ""
+ && name !== "Object"
+ && name !== "Function.prototype") {
+ return name;
+ }
+ }
+ var s = Object.prototype.toString.call(o);
+ return s.substring(8, s.length - 1);
+};
+C.JS_CONST_QJm = function(getTagFallback) {
+ return function(hooks) {
+ if (typeof navigator != "object") return hooks;
+ var ua = navigator.userAgent;
+ if (ua.indexOf("DumpRenderTree") >= 0) return hooks;
+ if (ua.indexOf("Chrome") >= 0) {
+ function confirm(p) {
+ return typeof window == "object" && window[p] && window[p].name == p;
+ }
+ if (confirm("Window") && confirm("HTMLElement")) return hooks;
+ }
+ hooks.getTag = getTagFallback;
+ };
+};
+C.JS_CONST_U4w = function(hooks) {
+ var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
+ if (userAgent.indexOf("Firefox") == -1) return hooks;
+ var getTag = hooks.getTag;
+ var quickMap = {
+ "BeforeUnloadEvent": "Event",
+ "DataTransfer": "Clipboard",
+ "GeoGeolocation": "Geolocation",
+ "WorkerMessageEvent": "MessageEvent",
+ "XMLDocument": "!Document"};
+ function getTagFirefox(o) {
+ var tag = getTag(o);
+ return quickMap[tag] || tag;
+ }
+ hooks.getTag = getTagFirefox;
+};
+C.JS_CONST_aQP = function() {
+ function typeNameInChrome(o) {
+ var name = o.constructor.name;
+ if (name) return name;
+ var s = Object.prototype.toString.call(o);
+ return s.substring(8, s.length - 1);
+ }
+ function getUnknownTag(object, tag) {
+ if (/^HTML[A-Z].*Element$/.test(tag)) {
+ var name = Object.prototype.toString.call(object);
+ if (name == "[object Object]") return null;
+ return "HTMLElement";
+ }
+ }
+ function getUnknownTagGenericBrowser(object, tag) {
+ if (object instanceof HTMLElement) return "HTMLElement";
+ return getUnknownTag(object, tag);
+ }
+ function prototypeForTag(tag) {
+ if (typeof window == "undefined") return null;
+ if (typeof window[tag] == "undefined") return null;
+ var constructor = window[tag];
+ if (typeof constructor != "function") return null;
+ return constructor.prototype;
+ }
+ function discriminator(tag) { return null; }
+ var isBrowser = typeof navigator == "object";
+ return {
+ getTag: typeNameInChrome,
+ getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
+ prototypeForTag: prototypeForTag,
+ discriminator: discriminator };
+};
+C.JS_CONST_gkc = function(hooks) {
+ var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
+ if (userAgent.indexOf("Trident/") == -1) return hooks;
+ var getTag = hooks.getTag;
+ var quickMap = {
+ "BeforeUnloadEvent": "Event",
+ "DataTransfer": "Clipboard",
+ "HTMLDDElement": "HTMLElement",
+ "HTMLDTElement": "HTMLElement",
+ "HTMLPhraseElement": "HTMLElement",
+ "Position": "Geoposition"
+ };
+ function getTagIE(o) {
+ var tag = getTag(o);
+ var newTag = quickMap[tag];
+ if (newTag) return newTag;
+ if (tag == "Object") {
+ if (window.DataView && (o instanceof window.DataView)) return "DataView";
+ }
+ return tag;
+ }
+ function prototypeForTagIE(tag) {
+ var constructor = window[tag];
+ if (constructor == null) return null;
+ return constructor.prototype;
+ }
+ hooks.getTag = getTagIE;
+ hooks.prototypeForTag = prototypeForTagIE;
+};
+C.JS_CONST_rr7 = function(hooks) {
+ var getTag = hooks.getTag;
+ var prototypeForTag = hooks.prototypeForTag;
+ function getTagFixed(o) {
+ var tag = getTag(o);
+ if (tag == "Document") {
+ if (!!o.xmlVersion) return "!Document";
+ return "!HTMLDocument";
+ }
+ return tag;
+ }
+ function prototypeForTagFixed(tag) {
+ if (tag == "Document") return null;
+ return prototypeForTag(tag);
+ }
+ hooks.getTag = getTagFixed;
+ hooks.prototypeForTag = prototypeForTagFixed;
+};
+C.JsonCodec_null_null = new P.JsonCodec(null, null);
+C.JsonDecoder_null = new P.JsonDecoder(null);
+C.JsonEncoder_null = new P.JsonEncoder(null);
+Isolate.makeConstantList = function(list) {
+ list.immutable$list = init;
+ list.fixed$length = init;
+ return list;
+};
+C.List_1GN = H.setRuntimeTypeInfo(Isolate.makeConstantList(["*::class", "*::dir", "*::draggable", "*::hidden", "*::id", "*::inert", "*::itemprop", "*::itemref", "*::itemscope", "*::lang", "*::spellcheck", "*::title", "*::translate", "A::accesskey", "A::coords", "A::hreflang", "A::name", "A::shape", "A::tabindex", "A::target", "A::type", "AREA::accesskey", "AREA::alt", "AREA::coords", "AREA::nohref", "AREA::shape", "AREA::tabindex", "AREA::target", "AUDIO::controls", "AUDIO::loop", "AUDIO::mediagroup", "AUDIO::muted", "AUDIO::preload", "BDO::dir", "BODY::alink", "BODY::bgcolor", "BODY::link", "BODY::text", "BODY::vlink", "BR::clear", "BUTTON::accesskey", "BUTTON::disabled", "BUTTON::name", "BUTTON::tabindex", "BUTTON::type", "BUTTON::value", "CANVAS::height", "CANVAS::width", "CAPTION::align", "COL::align", "COL::char", "COL::charoff", "COL::span", "COL::valign", "COL::width", "COLGROUP::align", "COLGROUP::char", "COLGROUP::charoff", "COLGROUP::span", "COLGROUP::valign", "COLGROUP::width", "COMMAND::checked", "COMMAND::command", "COMMAND::disabled", "COMMAND::label", "COMMAND::radiogroup", "COMMAND::type", "DATA::value", "DEL::datetime", "DETAILS::open", "DIR::compact", "DIV::align", "DL::compact", "FIELDSET::disabled", "FONT::color", "FONT::face", "FONT::size", "FORM::accept", "FORM::autocomplete", "FORM::enctype", "FORM::method", "FORM::name", "FORM::novalidate", "FORM::target", "FRAME::name", "H1::align", "H2::align", "H3::align", "H4::align", "H5::align", "H6::align", "HR::align", "HR::noshade", "HR::size", "HR::width", "HTML::version", "IFRAME::align", "IFRAME::frameborder", "IFRAME::height", "IFRAME::marginheight", "IFRAME::marginwidth", "IFRAME::width", "IMG::align", "IMG::alt", "IMG::border", "IMG::height", "IMG::hspace", "IMG::ismap", "IMG::name", "IMG::usemap", "IMG::vspace", "IMG::width", "INPUT::accept", "INPUT::accesskey", "INPUT::align", "INPUT::alt", "INPUT::autocomplete", "INPUT::checked", "INPUT::disabled", "INPUT::inputmode", "INPUT::ismap", "INPUT::list", "INPUT::max", "INPUT::maxlength", "INPUT::min", "INPUT::multiple", "INPUT::name", "INPUT::placeholder", "INPUT::readonly", "INPUT::required", "INPUT::size", "INPUT::step", "INPUT::tabindex", "INPUT::type", "INPUT::usemap", "INPUT::value", "INS::datetime", "KEYGEN::disabled", "KEYGEN::keytype", "KEYGEN::name", "LABEL::accesskey", "LABEL::for", "LEGEND::accesskey", "LEGEND::align", "LI::type", "LI::value", "LINK::sizes", "MAP::name", "MENU::compact", "MENU::label", "MENU::type", "METER::high", "METER::low", "METER::max", "METER::min", "METER::value", "OBJECT::typemustmatch", "OL::compact", "OL::reversed", "OL::start", "OL::type", "OPTGROUP::disabled", "OPTGROUP::label", "OPTION::disabled", "OPTION::label", "OPTION::selected", "OPTION::value", "OUTPUT::for", "OUTPUT::name", "P::align", "PRE::width", "PROGRESS::max", "PROGRESS::min", "PROGRESS::value", "SELECT::autocomplete", "SELECT::disabled", "SELECT::multiple", "SELECT::name", "SELECT::required", "SELECT::size", "SELECT::tabindex", "SOURCE::type", "TABLE::align", "TABLE::bgcolor", "TABLE::border", "TABLE::cellpadding", "TABLE::cellspacing", "TABLE::frame", "TABLE::rules", "TABLE::summary", "TABLE::width", "TBODY::align", "TBODY::char", "TBODY::charoff", "TBODY::valign", "TD::abbr", "TD::align", "TD::axis", "TD::bgcolor", "TD::char", "TD::charoff", "TD::colspan", "TD::headers", "TD::height", "TD::nowrap", "TD::rowspan", "TD::scope", "TD::valign", "TD::width", "TEXTAREA::accesskey", "TEXTAREA::autocomplete", "TEXTAREA::cols", "TEXTAREA::disabled", "TEXTAREA::inputmode", "TEXTAREA::name", "TEXTAREA::placeholder", "TEXTAREA::readonly", "TEXTAREA::required", "TEXTAREA::rows", "TEXTAREA::tabindex", "TEXTAREA::wrap", "TFOOT::align", "TFOOT::char", "TFOOT::charoff", "TFOOT::valign", "TH::abbr", "TH::align", "TH::axis", "TH::bgcolor", "TH::char", "TH::charoff", "TH::colspan", "TH::headers", "TH::height", "TH::nowrap", "TH::rowspan", "TH::scope", "TH::valign", "TH::width", "THEAD::align", "THEAD::char", "THEAD::charoff", "THEAD::valign", "TR::align", "TR::bgcolor", "TR::char", "TR::charoff", "TR::valign", "TRACK::default", "TRACK::kind", "TRACK::label", "TRACK::srclang", "UL::compact", "UL::type", "VIDEO::controls", "VIDEO::height", "VIDEO::loop", "VIDEO::mediagroup", "VIDEO::muted", "VIDEO::preload", "VIDEO::width"]), [J.JSString]);
+C.List_wSV = H.setRuntimeTypeInfo(Isolate.makeConstantList(["bind", "if", "ref", "repeat", "syntax"]), [J.JSString]);
+C.List_yrN = H.setRuntimeTypeInfo(Isolate.makeConstantList(["A::href", "AREA::href", "BLOCKQUOTE::cite", "BODY::background", "COMMAND::icon", "DEL::cite", "FORM::action", "IMG::src", "INPUT::src", "INS::cite", "Q::cite", "VIDEO::poster"]), [J.JSString]);
+C.NodeList_methods = W.NodeList.prototype;
+C.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
+C.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
+C.Window_methods = W.Window.prototype;
+$.libraries_to_load = {};
+$.Primitives_mirrorFunctionCacheName = "$cachedFunction";
+$.Primitives_mirrorInvokeCacheName = "$cachedInvocation";
+$.Closure_functionCounter = 0;
+$.BoundClosure_selfFieldNameCache = null;
+$.BoundClosure_receiverFieldNameCache = null;
+$.RuntimeFunctionType_inAssert = false;
+$.getTagFunction = null;
+$.alternateTagFunction = null;
+$.prototypeForTagFunction = null;
+$.dispatchRecordsForInstanceTags = null;
+$.interceptorsForUncacheableTags = null;
+$.initNativeDispatchFlag = null;
+$.owner = null;
+$.balance = null;
+$.error = null;
+$.number = null;
+$.amount = null;
+$.btn_other = null;
+$.btn_deposit = null;
+$.btn_interest = null;
+$.bac = null;
+$.printToZone = null;
+$._nextCallback = null;
+$._lastCallback = null;
+$.Zone__current = C.C__RootZone;
+$.Expando__keyCount = 0;
+$.Element__parseDocument = null;
+$.Element__parseRange = null;
+$.Element__defaultValidator = null;
+$.Element__defaultSanitizer = null;
+$.Device__isOpera = null;
+$.Device__isWebKit = null;
+Isolate.$lazy($, "globalThis", "globalThis", "get$globalThis", function() {
+ return function() { return this; }();
+});
+Isolate.$lazy($, "globalWindow", "globalWindow", "get$globalWindow", function() {
+ return $.get$globalThis().window;
+});
+Isolate.$lazy($, "globalWorker", "globalWorker", "get$globalWorker", function() {
+ return $.get$globalThis().Worker;
+});
+Isolate.$lazy($, "globalPostMessageDefined", "globalPostMessageDefined", "get$globalPostMessageDefined", function() {
+ return $.get$globalThis().postMessage !== void 0;
+});
+Isolate.$lazy($, "thisScript", "IsolateNatives_thisScript", "get$IsolateNatives_thisScript", function() {
+ return H.IsolateNatives_computeThisScript();
+});
+Isolate.$lazy($, "workerIds", "IsolateNatives_workerIds", "get$IsolateNatives_workerIds", function() {
+ return new P.Expando(null);
+});
+Isolate.$lazy($, "noSuchMethodPattern", "TypeErrorDecoder_noSuchMethodPattern", "get$TypeErrorDecoder_noSuchMethodPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({ toString: function() { return "$receiver$"; } }));
+});
+Isolate.$lazy($, "notClosurePattern", "TypeErrorDecoder_notClosurePattern", "get$TypeErrorDecoder_notClosurePattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn({ $method$: null, toString: function() { return "$receiver$"; } }));
+});
+Isolate.$lazy($, "nullCallPattern", "TypeErrorDecoder_nullCallPattern", "get$TypeErrorDecoder_nullCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(null));
+});
+Isolate.$lazy($, "nullLiteralCallPattern", "TypeErrorDecoder_nullLiteralCallPattern", "get$TypeErrorDecoder_nullLiteralCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ var $argumentsExpr$ = '$arguments$'
+ try {
+ null.$method$($argumentsExpr$);
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "undefinedCallPattern", "TypeErrorDecoder_undefinedCallPattern", "get$TypeErrorDecoder_undefinedCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokeCallErrorOn(void 0));
+});
+Isolate.$lazy($, "undefinedLiteralCallPattern", "TypeErrorDecoder_undefinedLiteralCallPattern", "get$TypeErrorDecoder_undefinedLiteralCallPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ var $argumentsExpr$ = '$arguments$'
+ try {
+ (void 0).$method$($argumentsExpr$);
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "nullPropertyPattern", "TypeErrorDecoder_nullPropertyPattern", "get$TypeErrorDecoder_nullPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(null));
+});
+Isolate.$lazy($, "nullLiteralPropertyPattern", "TypeErrorDecoder_nullLiteralPropertyPattern", "get$TypeErrorDecoder_nullLiteralPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ try {
+ null.$method$;
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "undefinedPropertyPattern", "TypeErrorDecoder_undefinedPropertyPattern", "get$TypeErrorDecoder_undefinedPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(H.TypeErrorDecoder_provokePropertyErrorOn(void 0));
+});
+Isolate.$lazy($, "undefinedLiteralPropertyPattern", "TypeErrorDecoder_undefinedLiteralPropertyPattern", "get$TypeErrorDecoder_undefinedLiteralPropertyPattern", function() {
+ return H.TypeErrorDecoder_extractPattern(function() {
+ try {
+ (void 0).$method$;
+ } catch (e) {
+ return e.message;
+ }
+}());
+});
+Isolate.$lazy($, "_toStringList", "IterableMixinWorkaround__toStringList", "get$IterableMixinWorkaround__toStringList", function() {
+ return [];
+});
+Isolate.$lazy($, "_toStringVisiting", "_toStringVisiting", "get$_toStringVisiting", function() {
+ return P.HashSet_HashSet$identity(null);
+});
+Isolate.$lazy($, "_toStringList", "Maps__toStringList", "get$Maps__toStringList", function() {
+ return [];
+});
+Isolate.$lazy($, "_allowedElements", "_Html5NodeValidator__allowedElements", "get$_Html5NodeValidator__allowedElements", function() {
+ var t1 = P.LinkedHashSet_LinkedHashSet(null, null, null, null);
+ t1.addAll$1(0, ["A", "ABBR", "ACRONYM", "ADDRESS", "AREA", "ARTICLE", "ASIDE", "AUDIO", "B", "BDI", "BDO", "BIG", "BLOCKQUOTE", "BR", "BUTTON", "CANVAS", "CAPTION", "CENTER", "CITE", "CODE", "COL", "COLGROUP", "COMMAND", "DATA", "DATALIST", "DD", "DEL", "DETAILS", "DFN", "DIR", "DIV", "DL", "DT", "EM", "FIELDSET", "FIGCAPTION", "FIGURE", "FONT", "FOOTER", "FORM", "H1", "H2", "H3", "H4", "H5", "H6", "HEADER", "HGROUP", "HR", "I", "IFRAME", "IMG", "INPUT", "INS", "KBD", "LABEL", "LEGEND", "LI", "MAP", "MARK", "MENU", "METER", "NAV", "NOBR", "OL", "OPTGROUP", "OPTION", "OUTPUT", "P", "PRE", "PROGRESS", "Q", "S", "SAMP", "SECTION", "SELECT", "SMALL", "SOURCE", "SPAN", "STRIKE", "STRONG", "SUB", "SUMMARY", "SUP", "TABLE", "TBODY", "TD", "TEXTAREA", "TFOOT", "TH", "THEAD", "TIME", "TR", "TRACK", "TT", "U", "UL", "VAR", "VIDEO", "WBR"]);
+ return t1;
+});
+Isolate.$lazy($, "_attributeValidators", "_Html5NodeValidator__attributeValidators", "get$_Html5NodeValidator__attributeValidators", function() {
+ return H.fillLiteralMap([], P.LinkedHashMap_LinkedHashMap(null, null, null, null, null));
+});
+// Native classes
+
+init.functionAliases = {};
+;
+init.metadata = [{func: "dynamic__String", args: [J.JSString]},
+{func: "void_", void: true},
+{func: "dynamic__Event", args: [W.Event]},
+{func: "bool__dynamic_dynamic", ret: J.JSBool, args: [null, null]},
+{func: "int__dynamic", ret: J.JSInt, args: [null]},
+{func: "Object__dynamic", ret: P.Object, args: [null]},
+{func: "bool__Object_Object", ret: J.JSBool, args: [P.Object, P.Object]},
+{func: "int__Object", ret: J.JSInt, args: [P.Object]},
+{func: "bool__Element_String_String__Html5NodeValidator", ret: J.JSBool, args: [W.Element, J.JSString, J.JSString, W._Html5NodeValidator]},
+{func: "args0"},
+{func: "args2", args: [null, null]},
+{func: "args1", args: [null]},
+{func: "dynamic__dynamic_String", args: [null, J.JSString]},
+{func: "void__dynamic__StackTrace", void: true, args: [null], opt: [P.StackTrace]},
+,
+{func: "dynamic__dynamic__dynamic", args: [null], opt: [null]},
+{func: "bool_", ret: J.JSBool},
+{func: "dynamic__dynamic_StackTrace", args: [null, P.StackTrace]},
+{func: "dynamic__Symbol_dynamic", args: [P.Symbol, null]},
+{func: "int__String", ret: J.JSInt, args: [J.JSString]},
+{func: "double__String", ret: J.JSDouble, args: [J.JSString]},
+{func: "String__int", ret: J.JSString, args: [J.JSInt]},
+{func: "void__Node", void: true, args: [W.Node]},
+];
+$ = null;
+Isolate = Isolate.$finishIsolateConstructor(Isolate);
+$ = new Isolate();
+function convertToFastObject(properties) {
+ function MyClass() {};
+ MyClass.prototype = properties;
+ new MyClass();
+ return properties;
+}
+A = convertToFastObject(A);
+B = convertToFastObject(B);
+C = convertToFastObject(C);
+D = convertToFastObject(D);
+E = convertToFastObject(E);
+F = convertToFastObject(F);
+G = convertToFastObject(G);
+H = convertToFastObject(H);
+J = convertToFastObject(J);
+K = convertToFastObject(K);
+L = convertToFastObject(L);
+M = convertToFastObject(M);
+N = convertToFastObject(N);
+O = convertToFastObject(O);
+P = convertToFastObject(P);
+Q = convertToFastObject(Q);
+R = convertToFastObject(R);
+S = convertToFastObject(S);
+T = convertToFastObject(T);
+U = convertToFastObject(U);
+V = convertToFastObject(V);
+W = convertToFastObject(W);
+X = convertToFastObject(X);
+Y = convertToFastObject(Y);
+Z = convertToFastObject(Z);
+!function() {
+ function intern(s) {
+ var o = {};
+ o[s] = 1;
+ return Object.keys(convertToFastObject(o))[0];
+ }
+ init.getIsolateTag = function(name) {
+ return intern("___dart_" + name + init.isolateTag);
+ };
+ var tableProperty = "___dart_isolate_tags_";
+ var usedProperties = Object[tableProperty] || (Object[tableProperty] = Object.create(null));
+ var rootProperty = "_ZxYxX";
+ for (var i = 0;; i++) {
+ var property = intern(rootProperty + "_" + i + "_");
+ if (!(property in usedProperties)) {
+ usedProperties[property] = 1;
+ init.isolateTag = property;
+ break;
+ }
+ }
+}();
+init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
+// BEGIN invoke [main].
+;(function (callback) {
+ if (typeof document === "undefined") {
+ callback(null);
+ return;
+ }
+ if (document.currentScript) {
+ callback(document.currentScript);
+ return;
+ }
+
+ var scripts = document.scripts;
+ function onLoad(event) {
+ for (var i = 0; i < scripts.length; ++i) {
+ scripts[i].removeEventListener("load", onLoad, false);
+ }
+ callback(event.target);
+ }
+ for (var i = 0; i < scripts.length; ++i) {
+ scripts[i].addEventListener("load", onLoad, false);
+ }
+})(function(currentScript) {
+ init.currentScript = currentScript;
+
+ if (typeof dartMainRunner === "function") {
+ dartMainRunner((function(a){H.startRootIsolate(M.main$closure(),a)}), []);
+ } else {
+ (function(a){H.startRootIsolate(M.main$closure(),a)})([]);
+ }
+});
+// END invoke [main].
+function init() {
+ Isolate.$isolateProperties = {};
+ function generateAccessor(fieldDescriptor, accessors, cls) {
+ var fieldInformation = fieldDescriptor.split("-");
+ var field = fieldInformation[0];
+ var len = field.length;
+ var code = field.charCodeAt(len - 1);
+ var reflectable;
+ if (fieldInformation.length > 1)
+ reflectable = true;
+ else
+ reflectable = false;
+ code = code >= 60 && code <= 64 ? code - 59 : code >= 123 && code <= 126 ? code - 117 : code >= 37 && code <= 43 ? code - 27 : 0;
+ if (code) {
+ var getterCode = code & 3;
+ var setterCode = code >> 2;
+ var accessorName = field = field.substring(0, len - 1);
+ var divider = field.indexOf(":");
+ if (divider > 0) {
+ accessorName = field.substring(0, divider);
+ field = field.substring(divider + 1);
+ }
+ if (getterCode) {
+ var args = getterCode & 2 ? "receiver" : "";
+ var receiver = getterCode & 1 ? "this" : "receiver";
+ var body = "return " + receiver + "." + field;
+ var property = cls + ".prototype.get$" + accessorName + "=";
+ var fn = "function(" + args + "){" + body + "}";
+ if (reflectable)
+ accessors.push(property + "$reflectable(" + fn + ");\n");
+ else
+ accessors.push(property + fn + ";\n");
+ }
+ if (setterCode) {
+ var args = setterCode & 2 ? "receiver, value" : "value";
+ var receiver = setterCode & 1 ? "this" : "receiver";
+ var body = receiver + "." + field + " = value";
+ var property = cls + ".prototype.set$" + accessorName + "=";
+ var fn = "function(" + args + "){" + body + "}";
+ if (reflectable)
+ accessors.push(property + "$reflectable(" + fn + ");\n");
+ else
+ accessors.push(property + fn + ";\n");
+ }
+ }
+ return field;
+ }
+ Isolate.$isolateProperties.$generateAccessor = generateAccessor;
+ function defineClass(name, cls, fields) {
+ var accessors = [];
+ var str = "function " + cls + "(";
+ var body = "";
+ for (var i = 0; i < fields.length; i++) {
+ if (i != 0)
+ str += ", ";
+ var field = generateAccessor(fields[i], accessors, cls);
+ var parameter = "parameter_" + field;
+ str += parameter;
+ body += "this." + field + " = " + parameter + ";\n";
+ }
+ str += ") {\n" + body + "}\n";
+ str += cls + ".builtin$cls=\"" + name + "\";\n";
+ str += "$desc=$collectedClasses." + cls + ";\n";
+ str += "if($desc instanceof Array) $desc = $desc[1];\n";
+ str += cls + ".prototype = $desc;\n";
+ if (typeof defineClass.name != "string") {
+ str += cls + ".name=\"" + cls + "\";\n";
+ }
+ str += accessors.join("");
+ return str;
+ }
+ var inheritFrom = function() {
+ function tmp() {
+ }
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ return function(constructor, superConstructor) {
+ tmp.prototype = superConstructor.prototype;
+ var object = new tmp();
+ var properties = constructor.prototype;
+ for (var member in properties)
+ if (hasOwnProperty.call(properties, member))
+ object[member] = properties[member];
+ object.constructor = constructor;
+ constructor.prototype = object;
+ return object;
+ };
+ }();
+ Isolate.$finishClasses = function(collectedClasses, isolateProperties, existingIsolateProperties) {
+ var pendingClasses = {};
+ if (!init.allClasses)
+ init.allClasses = {};
+ var allClasses = init.allClasses;
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ if (typeof dart_precompiled == "function") {
+ var constructors = dart_precompiled(collectedClasses);
+ } else {
+ var combinedConstructorFunction = "function $reflectable(fn){fn.$reflectable=1;return fn};\n" + "var $desc;\n";
+ var constructorsList = [];
+ }
+ for (var cls in collectedClasses) {
+ if (hasOwnProperty.call(collectedClasses, cls)) {
+ var desc = collectedClasses[cls];
+ if (desc instanceof Array)
+ desc = desc[1];
+ var classData = desc["^"], supr, name = cls, fields = classData;
+ if (typeof classData == "string") {
+ var split = classData.split("/");
+ if (split.length == 2) {
+ name = split[0];
+ fields = split[1];
+ }
+ }
+ var s = fields.split(";");
+ fields = s[1] == "" ? [] : s[1].split(",");
+ supr = s[0];
+ split = supr.split(":");
+ if (split.length == 2) {
+ supr = split[0];
+ var functionSignature = split[1];
+ if (functionSignature)
+ desc.$signature = function(s) {
+ return function() {
+ return init.metadata[s];
+ };
+ }(functionSignature);
+ }
+ if (supr && supr.indexOf("+") > 0) {
+ s = supr.split("+");
+ supr = s[0];
+ var mixin = collectedClasses[s[1]];
+ if (mixin instanceof Array)
+ mixin = mixin[1];
+ for (var d in mixin) {
+ if (hasOwnProperty.call(mixin, d) && !hasOwnProperty.call(desc, d))
+ desc[d] = mixin[d];
+ }
+ }
+ if (typeof dart_precompiled != "function") {
+ combinedConstructorFunction += defineClass(name, cls, fields);
+ constructorsList.push(cls);
+ }
+ if (supr)
+ pendingClasses[cls] = supr;
+ }
+ }
+ if (typeof dart_precompiled != "function") {
+ combinedConstructorFunction += "return [\n " + constructorsList.join(",\n ") + "\n]";
+ var constructors = new Function("$collectedClasses", combinedConstructorFunction)(collectedClasses);
+ combinedConstructorFunction = null;
+ }
+ for (var i = 0; i < constructors.length; i++) {
+ var constructor = constructors[i];
+ var cls = constructor.name;
+ var desc = collectedClasses[cls];
+ var globalObject = isolateProperties;
+ if (desc instanceof Array) {
+ globalObject = desc[0] || isolateProperties;
+ desc = desc[1];
+ }
+ allClasses[cls] = constructor;
+ globalObject[cls] = constructor;
+ }
+ constructors = null;
+ var finishedClasses = {};
+ init.interceptorsByTag = Object.create(null);
+ init.leafTags = {};
+ function finishClass(cls) {
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ if (hasOwnProperty.call(finishedClasses, cls))
+ return;
+ finishedClasses[cls] = true;
+ var superclass = pendingClasses[cls];
+ if (!superclass || typeof superclass != "string")
+ return;
+ finishClass(superclass);
+ var constructor = allClasses[cls];
+ var superConstructor = allClasses[superclass];
+ if (!superConstructor)
+ superConstructor = existingIsolateProperties[superclass];
+ var prototype = inheritFrom(constructor, superConstructor);
+ if (hasOwnProperty.call(prototype, "%")) {
+ var nativeSpec = prototype["%"].split(";");
+ if (nativeSpec[0]) {
+ var tags = nativeSpec[0].split("|");
+ for (var i = 0; i < tags.length; i++) {
+ init.interceptorsByTag[tags[i]] = constructor;
+ init.leafTags[tags[i]] = true;
+ }
+ }
+ if (nativeSpec[1]) {
+ tags = nativeSpec[1].split("|");
+ if (nativeSpec[2]) {
+ var subclasses = nativeSpec[2].split("|");
+ for (var i = 0; i < subclasses.length; i++) {
+ var subclass = allClasses[subclasses[i]];
+ subclass.$nativeSuperclassTag = tags[0];
+ }
+ }
+ for (i = 0; i < tags.length; i++) {
+ init.interceptorsByTag[tags[i]] = constructor;
+ init.leafTags[tags[i]] = false;
+ }
+ }
+ }
+ }
+ for (var cls in pendingClasses)
+ finishClass(cls);
+ };
+ Isolate.$lazy = function(prototype, staticName, fieldName, getterName, lazyValue) {
+ var sentinelUndefined = {};
+ var sentinelInProgress = {};
+ prototype[fieldName] = sentinelUndefined;
+ prototype[getterName] = function() {
+ var result = $[fieldName];
+ try {
+ if (result === sentinelUndefined) {
+ $[fieldName] = sentinelInProgress;
+ try {
+ result = $[fieldName] = lazyValue();
+ } finally {
+ if (result === sentinelUndefined) {
+ if ($[fieldName] === sentinelInProgress) {
+ $[fieldName] = null;
+ }
+ }
+ }
+ } else {
+ if (result === sentinelInProgress)
+ H.throwCyclicInit(staticName);
+ }
+ return result;
+ } finally {
+ $[getterName] = function() {
+ return this[fieldName];
+ };
+ }
+ };
+ };
+ Isolate.$finishIsolateConstructor = function(oldIsolate) {
+ var isolateProperties = oldIsolate.$isolateProperties;
+ function Isolate() {
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
+ for (var staticName in isolateProperties)
+ if (hasOwnProperty.call(isolateProperties, staticName))
+ this[staticName] = isolateProperties[staticName];
+ function ForceEfficientMap() {
+ }
+ ForceEfficientMap.prototype = this;
+ new ForceEfficientMap();
+ }
+ Isolate.prototype = oldIsolate.prototype;
+ Isolate.prototype.constructor = Isolate;
+ Isolate.$isolateProperties = isolateProperties;
+ Isolate.$finishClasses = oldIsolate.$finishClasses;
+ Isolate.makeConstantList = oldIsolate.makeConstantList;
+ return Isolate;
+ };
+}
+})()
+function dart_precompiled($collectedClasses) {
+ var $desc;
+ function HtmlElement() {
+ }
+ HtmlElement.builtin$cls = "HtmlElement";
+ if (!"name" in HtmlElement)
+ HtmlElement.name = "HtmlElement";
+ $desc = $collectedClasses.HtmlElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HtmlElement.prototype = $desc;
+ function AnchorElement() {
+ }
+ AnchorElement.builtin$cls = "AnchorElement";
+ if (!"name" in AnchorElement)
+ AnchorElement.name = "AnchorElement";
+ $desc = $collectedClasses.AnchorElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AnchorElement.prototype = $desc;
+ AnchorElement.prototype.get$hostname = function(receiver) {
+ return receiver.hostname;
+ };
+ AnchorElement.prototype.set$href = function(receiver, v) {
+ return receiver.href = v;
+ };
+ AnchorElement.prototype.get$port = function(receiver) {
+ return receiver.port;
+ };
+ AnchorElement.prototype.get$protocol = function(receiver) {
+ return receiver.protocol;
+ };
+ function AnimationEvent() {
+ }
+ AnimationEvent.builtin$cls = "AnimationEvent";
+ if (!"name" in AnimationEvent)
+ AnimationEvent.name = "AnimationEvent";
+ $desc = $collectedClasses.AnimationEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AnimationEvent.prototype = $desc;
+ function AreaElement() {
+ }
+ AreaElement.builtin$cls = "AreaElement";
+ if (!"name" in AreaElement)
+ AreaElement.name = "AreaElement";
+ $desc = $collectedClasses.AreaElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AreaElement.prototype = $desc;
+ AreaElement.prototype.get$hostname = function(receiver) {
+ return receiver.hostname;
+ };
+ AreaElement.prototype.set$href = function(receiver, v) {
+ return receiver.href = v;
+ };
+ AreaElement.prototype.get$port = function(receiver) {
+ return receiver.port;
+ };
+ AreaElement.prototype.get$protocol = function(receiver) {
+ return receiver.protocol;
+ };
+ function AudioElement() {
+ }
+ AudioElement.builtin$cls = "AudioElement";
+ if (!"name" in AudioElement)
+ AudioElement.name = "AudioElement";
+ $desc = $collectedClasses.AudioElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AudioElement.prototype = $desc;
+ function AutocompleteErrorEvent() {
+ }
+ AutocompleteErrorEvent.builtin$cls = "AutocompleteErrorEvent";
+ if (!"name" in AutocompleteErrorEvent)
+ AutocompleteErrorEvent.name = "AutocompleteErrorEvent";
+ $desc = $collectedClasses.AutocompleteErrorEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AutocompleteErrorEvent.prototype = $desc;
+ function BRElement() {
+ }
+ BRElement.builtin$cls = "BRElement";
+ if (!"name" in BRElement)
+ BRElement.name = "BRElement";
+ $desc = $collectedClasses.BRElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ BRElement.prototype = $desc;
+ function BaseElement() {
+ }
+ BaseElement.builtin$cls = "BaseElement";
+ if (!"name" in BaseElement)
+ BaseElement.name = "BaseElement";
+ $desc = $collectedClasses.BaseElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ BaseElement.prototype = $desc;
+ BaseElement.prototype.set$href = function(receiver, v) {
+ return receiver.href = v;
+ };
+ function BeforeLoadEvent() {
+ }
+ BeforeLoadEvent.builtin$cls = "BeforeLoadEvent";
+ if (!"name" in BeforeLoadEvent)
+ BeforeLoadEvent.name = "BeforeLoadEvent";
+ $desc = $collectedClasses.BeforeLoadEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ BeforeLoadEvent.prototype = $desc;
+ function BeforeUnloadEvent() {
+ }
+ BeforeUnloadEvent.builtin$cls = "BeforeUnloadEvent";
+ if (!"name" in BeforeUnloadEvent)
+ BeforeUnloadEvent.name = "BeforeUnloadEvent";
+ $desc = $collectedClasses.BeforeUnloadEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ BeforeUnloadEvent.prototype = $desc;
+ function BodyElement() {
+ }
+ BodyElement.builtin$cls = "BodyElement";
+ if (!"name" in BodyElement)
+ BodyElement.name = "BodyElement";
+ $desc = $collectedClasses.BodyElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ BodyElement.prototype = $desc;
+ function ButtonElement() {
+ }
+ ButtonElement.builtin$cls = "ButtonElement";
+ if (!"name" in ButtonElement)
+ ButtonElement.name = "ButtonElement";
+ $desc = $collectedClasses.ButtonElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ButtonElement.prototype = $desc;
+ ButtonElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ ButtonElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ ButtonElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ ButtonElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function CDataSection() {
+ }
+ CDataSection.builtin$cls = "CDataSection";
+ if (!"name" in CDataSection)
+ CDataSection.name = "CDataSection";
+ $desc = $collectedClasses.CDataSection;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CDataSection.prototype = $desc;
+ function CanvasElement() {
+ }
+ CanvasElement.builtin$cls = "CanvasElement";
+ if (!"name" in CanvasElement)
+ CanvasElement.name = "CanvasElement";
+ $desc = $collectedClasses.CanvasElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CanvasElement.prototype = $desc;
+ function CharacterData() {
+ }
+ CharacterData.builtin$cls = "CharacterData";
+ if (!"name" in CharacterData)
+ CharacterData.name = "CharacterData";
+ $desc = $collectedClasses.CharacterData;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CharacterData.prototype = $desc;
+ CharacterData.prototype.get$length = function(receiver) {
+ return receiver.length;
+ };
+ function CloseEvent() {
+ }
+ CloseEvent.builtin$cls = "CloseEvent";
+ if (!"name" in CloseEvent)
+ CloseEvent.name = "CloseEvent";
+ $desc = $collectedClasses.CloseEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CloseEvent.prototype = $desc;
+ function Comment() {
+ }
+ Comment.builtin$cls = "Comment";
+ if (!"name" in Comment)
+ Comment.name = "Comment";
+ $desc = $collectedClasses.Comment;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Comment.prototype = $desc;
+ function CompositionEvent() {
+ }
+ CompositionEvent.builtin$cls = "CompositionEvent";
+ if (!"name" in CompositionEvent)
+ CompositionEvent.name = "CompositionEvent";
+ $desc = $collectedClasses.CompositionEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CompositionEvent.prototype = $desc;
+ function ContentElement() {
+ }
+ ContentElement.builtin$cls = "ContentElement";
+ if (!"name" in ContentElement)
+ ContentElement.name = "ContentElement";
+ $desc = $collectedClasses.ContentElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ContentElement.prototype = $desc;
+ function CssFontFaceLoadEvent() {
+ }
+ CssFontFaceLoadEvent.builtin$cls = "CssFontFaceLoadEvent";
+ if (!"name" in CssFontFaceLoadEvent)
+ CssFontFaceLoadEvent.name = "CssFontFaceLoadEvent";
+ $desc = $collectedClasses.CssFontFaceLoadEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CssFontFaceLoadEvent.prototype = $desc;
+ function CustomEvent() {
+ }
+ CustomEvent.builtin$cls = "CustomEvent";
+ if (!"name" in CustomEvent)
+ CustomEvent.name = "CustomEvent";
+ $desc = $collectedClasses.CustomEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CustomEvent.prototype = $desc;
+ function DListElement() {
+ }
+ DListElement.builtin$cls = "DListElement";
+ if (!"name" in DListElement)
+ DListElement.name = "DListElement";
+ $desc = $collectedClasses.DListElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DListElement.prototype = $desc;
+ function DataListElement() {
+ }
+ DataListElement.builtin$cls = "DataListElement";
+ if (!"name" in DataListElement)
+ DataListElement.name = "DataListElement";
+ $desc = $collectedClasses.DataListElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DataListElement.prototype = $desc;
+ function DetailsElement() {
+ }
+ DetailsElement.builtin$cls = "DetailsElement";
+ if (!"name" in DetailsElement)
+ DetailsElement.name = "DetailsElement";
+ $desc = $collectedClasses.DetailsElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DetailsElement.prototype = $desc;
+ function DeviceMotionEvent() {
+ }
+ DeviceMotionEvent.builtin$cls = "DeviceMotionEvent";
+ if (!"name" in DeviceMotionEvent)
+ DeviceMotionEvent.name = "DeviceMotionEvent";
+ $desc = $collectedClasses.DeviceMotionEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DeviceMotionEvent.prototype = $desc;
+ function DeviceOrientationEvent() {
+ }
+ DeviceOrientationEvent.builtin$cls = "DeviceOrientationEvent";
+ if (!"name" in DeviceOrientationEvent)
+ DeviceOrientationEvent.name = "DeviceOrientationEvent";
+ $desc = $collectedClasses.DeviceOrientationEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DeviceOrientationEvent.prototype = $desc;
+ function DialogElement() {
+ }
+ DialogElement.builtin$cls = "DialogElement";
+ if (!"name" in DialogElement)
+ DialogElement.name = "DialogElement";
+ $desc = $collectedClasses.DialogElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DialogElement.prototype = $desc;
+ function DivElement() {
+ }
+ DivElement.builtin$cls = "DivElement";
+ if (!"name" in DivElement)
+ DivElement.name = "DivElement";
+ $desc = $collectedClasses.DivElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DivElement.prototype = $desc;
+ function Document() {
+ }
+ Document.builtin$cls = "Document";
+ if (!"name" in Document)
+ Document.name = "Document";
+ $desc = $collectedClasses.Document;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Document.prototype = $desc;
+ function DocumentFragment() {
+ }
+ DocumentFragment.builtin$cls = "DocumentFragment";
+ if (!"name" in DocumentFragment)
+ DocumentFragment.name = "DocumentFragment";
+ $desc = $collectedClasses.DocumentFragment;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DocumentFragment.prototype = $desc;
+ function DomError() {
+ }
+ DomError.builtin$cls = "DomError";
+ if (!"name" in DomError)
+ DomError.name = "DomError";
+ $desc = $collectedClasses.DomError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DomError.prototype = $desc;
+ function DomException() {
+ }
+ DomException.builtin$cls = "DomException";
+ if (!"name" in DomException)
+ DomException.name = "DomException";
+ $desc = $collectedClasses.DomException;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DomException.prototype = $desc;
+ function DomImplementation() {
+ }
+ DomImplementation.builtin$cls = "DomImplementation";
+ if (!"name" in DomImplementation)
+ DomImplementation.name = "DomImplementation";
+ $desc = $collectedClasses.DomImplementation;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DomImplementation.prototype = $desc;
+ function Element() {
+ }
+ Element.builtin$cls = "Element";
+ if (!"name" in Element)
+ Element.name = "Element";
+ $desc = $collectedClasses.Element;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Element.prototype = $desc;
+ function EmbedElement() {
+ }
+ EmbedElement.builtin$cls = "EmbedElement";
+ if (!"name" in EmbedElement)
+ EmbedElement.name = "EmbedElement";
+ $desc = $collectedClasses.EmbedElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ EmbedElement.prototype = $desc;
+ EmbedElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function ErrorEvent() {
+ }
+ ErrorEvent.builtin$cls = "ErrorEvent";
+ if (!"name" in ErrorEvent)
+ ErrorEvent.name = "ErrorEvent";
+ $desc = $collectedClasses.ErrorEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ErrorEvent.prototype = $desc;
+ ErrorEvent.prototype.get$error = function(receiver) {
+ return receiver.error;
+ };
+ function Event() {
+ }
+ Event.builtin$cls = "Event";
+ if (!"name" in Event)
+ Event.name = "Event";
+ $desc = $collectedClasses.Event;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Event.prototype = $desc;
+ function EventTarget() {
+ }
+ EventTarget.builtin$cls = "EventTarget";
+ if (!"name" in EventTarget)
+ EventTarget.name = "EventTarget";
+ $desc = $collectedClasses.EventTarget;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ EventTarget.prototype = $desc;
+ function FieldSetElement() {
+ }
+ FieldSetElement.builtin$cls = "FieldSetElement";
+ if (!"name" in FieldSetElement)
+ FieldSetElement.name = "FieldSetElement";
+ $desc = $collectedClasses.FieldSetElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FieldSetElement.prototype = $desc;
+ FieldSetElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ FieldSetElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function FileError() {
+ }
+ FileError.builtin$cls = "FileError";
+ if (!"name" in FileError)
+ FileError.name = "FileError";
+ $desc = $collectedClasses.FileError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FileError.prototype = $desc;
+ function FocusEvent() {
+ }
+ FocusEvent.builtin$cls = "FocusEvent";
+ if (!"name" in FocusEvent)
+ FocusEvent.name = "FocusEvent";
+ $desc = $collectedClasses.FocusEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FocusEvent.prototype = $desc;
+ function FormElement() {
+ }
+ FormElement.builtin$cls = "FormElement";
+ if (!"name" in FormElement)
+ FormElement.name = "FormElement";
+ $desc = $collectedClasses.FormElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FormElement.prototype = $desc;
+ FormElement.prototype.get$length = function(receiver) {
+ return receiver.length;
+ };
+ FormElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function HRElement() {
+ }
+ HRElement.builtin$cls = "HRElement";
+ if (!"name" in HRElement)
+ HRElement.name = "HRElement";
+ $desc = $collectedClasses.HRElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HRElement.prototype = $desc;
+ function HashChangeEvent() {
+ }
+ HashChangeEvent.builtin$cls = "HashChangeEvent";
+ if (!"name" in HashChangeEvent)
+ HashChangeEvent.name = "HashChangeEvent";
+ $desc = $collectedClasses.HashChangeEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HashChangeEvent.prototype = $desc;
+ function HeadElement() {
+ }
+ HeadElement.builtin$cls = "HeadElement";
+ if (!"name" in HeadElement)
+ HeadElement.name = "HeadElement";
+ $desc = $collectedClasses.HeadElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HeadElement.prototype = $desc;
+ function HeadingElement() {
+ }
+ HeadingElement.builtin$cls = "HeadingElement";
+ if (!"name" in HeadingElement)
+ HeadingElement.name = "HeadingElement";
+ $desc = $collectedClasses.HeadingElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HeadingElement.prototype = $desc;
+ function HtmlDocument() {
+ }
+ HtmlDocument.builtin$cls = "HtmlDocument";
+ if (!"name" in HtmlDocument)
+ HtmlDocument.name = "HtmlDocument";
+ $desc = $collectedClasses.HtmlDocument;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HtmlDocument.prototype = $desc;
+ function HtmlHtmlElement() {
+ }
+ HtmlHtmlElement.builtin$cls = "HtmlHtmlElement";
+ if (!"name" in HtmlHtmlElement)
+ HtmlHtmlElement.name = "HtmlHtmlElement";
+ $desc = $collectedClasses.HtmlHtmlElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HtmlHtmlElement.prototype = $desc;
+ function IFrameElement() {
+ }
+ IFrameElement.builtin$cls = "IFrameElement";
+ if (!"name" in IFrameElement)
+ IFrameElement.name = "IFrameElement";
+ $desc = $collectedClasses.IFrameElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ IFrameElement.prototype = $desc;
+ IFrameElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function ImageElement() {
+ }
+ ImageElement.builtin$cls = "ImageElement";
+ if (!"name" in ImageElement)
+ ImageElement.name = "ImageElement";
+ $desc = $collectedClasses.ImageElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ImageElement.prototype = $desc;
+ function InputElement() {
+ }
+ InputElement.builtin$cls = "InputElement";
+ if (!"name" in InputElement)
+ InputElement.name = "InputElement";
+ $desc = $collectedClasses.InputElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ InputElement.prototype = $desc;
+ InputElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ InputElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ InputElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ InputElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function KeyboardEvent() {
+ }
+ KeyboardEvent.builtin$cls = "KeyboardEvent";
+ if (!"name" in KeyboardEvent)
+ KeyboardEvent.name = "KeyboardEvent";
+ $desc = $collectedClasses.KeyboardEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ KeyboardEvent.prototype = $desc;
+ function KeygenElement() {
+ }
+ KeygenElement.builtin$cls = "KeygenElement";
+ if (!"name" in KeygenElement)
+ KeygenElement.name = "KeygenElement";
+ $desc = $collectedClasses.KeygenElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ KeygenElement.prototype = $desc;
+ KeygenElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ KeygenElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function LIElement() {
+ }
+ LIElement.builtin$cls = "LIElement";
+ if (!"name" in LIElement)
+ LIElement.name = "LIElement";
+ $desc = $collectedClasses.LIElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LIElement.prototype = $desc;
+ LIElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ LIElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function LabelElement() {
+ }
+ LabelElement.builtin$cls = "LabelElement";
+ if (!"name" in LabelElement)
+ LabelElement.name = "LabelElement";
+ $desc = $collectedClasses.LabelElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LabelElement.prototype = $desc;
+ function LegendElement() {
+ }
+ LegendElement.builtin$cls = "LegendElement";
+ if (!"name" in LegendElement)
+ LegendElement.name = "LegendElement";
+ $desc = $collectedClasses.LegendElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LegendElement.prototype = $desc;
+ function LinkElement() {
+ }
+ LinkElement.builtin$cls = "LinkElement";
+ if (!"name" in LinkElement)
+ LinkElement.name = "LinkElement";
+ $desc = $collectedClasses.LinkElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LinkElement.prototype = $desc;
+ LinkElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ LinkElement.prototype.set$href = function(receiver, v) {
+ return receiver.href = v;
+ };
+ function Location() {
+ }
+ Location.builtin$cls = "Location";
+ if (!"name" in Location)
+ Location.name = "Location";
+ $desc = $collectedClasses.Location;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Location.prototype = $desc;
+ Location.prototype.get$hostname = function(receiver) {
+ return receiver.hostname;
+ };
+ Location.prototype.get$port = function(receiver) {
+ return receiver.port;
+ };
+ Location.prototype.get$protocol = function(receiver) {
+ return receiver.protocol;
+ };
+ function MapElement() {
+ }
+ MapElement.builtin$cls = "MapElement";
+ if (!"name" in MapElement)
+ MapElement.name = "MapElement";
+ $desc = $collectedClasses.MapElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MapElement.prototype = $desc;
+ MapElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function MediaElement() {
+ }
+ MediaElement.builtin$cls = "MediaElement";
+ if (!"name" in MediaElement)
+ MediaElement.name = "MediaElement";
+ $desc = $collectedClasses.MediaElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaElement.prototype = $desc;
+ MediaElement.prototype.get$error = function(receiver) {
+ return receiver.error;
+ };
+ function MediaError() {
+ }
+ MediaError.builtin$cls = "MediaError";
+ if (!"name" in MediaError)
+ MediaError.name = "MediaError";
+ $desc = $collectedClasses.MediaError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaError.prototype = $desc;
+ function MediaKeyError() {
+ }
+ MediaKeyError.builtin$cls = "MediaKeyError";
+ if (!"name" in MediaKeyError)
+ MediaKeyError.name = "MediaKeyError";
+ $desc = $collectedClasses.MediaKeyError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaKeyError.prototype = $desc;
+ function MediaKeyEvent() {
+ }
+ MediaKeyEvent.builtin$cls = "MediaKeyEvent";
+ if (!"name" in MediaKeyEvent)
+ MediaKeyEvent.name = "MediaKeyEvent";
+ $desc = $collectedClasses.MediaKeyEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaKeyEvent.prototype = $desc;
+ function MediaKeyMessageEvent() {
+ }
+ MediaKeyMessageEvent.builtin$cls = "MediaKeyMessageEvent";
+ if (!"name" in MediaKeyMessageEvent)
+ MediaKeyMessageEvent.name = "MediaKeyMessageEvent";
+ $desc = $collectedClasses.MediaKeyMessageEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaKeyMessageEvent.prototype = $desc;
+ function MediaKeyNeededEvent() {
+ }
+ MediaKeyNeededEvent.builtin$cls = "MediaKeyNeededEvent";
+ if (!"name" in MediaKeyNeededEvent)
+ MediaKeyNeededEvent.name = "MediaKeyNeededEvent";
+ $desc = $collectedClasses.MediaKeyNeededEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaKeyNeededEvent.prototype = $desc;
+ function MediaStreamEvent() {
+ }
+ MediaStreamEvent.builtin$cls = "MediaStreamEvent";
+ if (!"name" in MediaStreamEvent)
+ MediaStreamEvent.name = "MediaStreamEvent";
+ $desc = $collectedClasses.MediaStreamEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaStreamEvent.prototype = $desc;
+ function MediaStreamTrackEvent() {
+ }
+ MediaStreamTrackEvent.builtin$cls = "MediaStreamTrackEvent";
+ if (!"name" in MediaStreamTrackEvent)
+ MediaStreamTrackEvent.name = "MediaStreamTrackEvent";
+ $desc = $collectedClasses.MediaStreamTrackEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MediaStreamTrackEvent.prototype = $desc;
+ function MenuElement() {
+ }
+ MenuElement.builtin$cls = "MenuElement";
+ if (!"name" in MenuElement)
+ MenuElement.name = "MenuElement";
+ $desc = $collectedClasses.MenuElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MenuElement.prototype = $desc;
+ function MessageEvent() {
+ }
+ MessageEvent.builtin$cls = "MessageEvent";
+ if (!"name" in MessageEvent)
+ MessageEvent.name = "MessageEvent";
+ $desc = $collectedClasses.MessageEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MessageEvent.prototype = $desc;
+ function MetaElement() {
+ }
+ MetaElement.builtin$cls = "MetaElement";
+ if (!"name" in MetaElement)
+ MetaElement.name = "MetaElement";
+ $desc = $collectedClasses.MetaElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MetaElement.prototype = $desc;
+ MetaElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function MeterElement() {
+ }
+ MeterElement.builtin$cls = "MeterElement";
+ if (!"name" in MeterElement)
+ MeterElement.name = "MeterElement";
+ $desc = $collectedClasses.MeterElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MeterElement.prototype = $desc;
+ MeterElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ MeterElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function MidiConnectionEvent() {
+ }
+ MidiConnectionEvent.builtin$cls = "MidiConnectionEvent";
+ if (!"name" in MidiConnectionEvent)
+ MidiConnectionEvent.name = "MidiConnectionEvent";
+ $desc = $collectedClasses.MidiConnectionEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MidiConnectionEvent.prototype = $desc;
+ function MidiInput() {
+ }
+ MidiInput.builtin$cls = "MidiInput";
+ if (!"name" in MidiInput)
+ MidiInput.name = "MidiInput";
+ $desc = $collectedClasses.MidiInput;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MidiInput.prototype = $desc;
+ function MidiMessageEvent() {
+ }
+ MidiMessageEvent.builtin$cls = "MidiMessageEvent";
+ if (!"name" in MidiMessageEvent)
+ MidiMessageEvent.name = "MidiMessageEvent";
+ $desc = $collectedClasses.MidiMessageEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MidiMessageEvent.prototype = $desc;
+ function MidiOutput() {
+ }
+ MidiOutput.builtin$cls = "MidiOutput";
+ if (!"name" in MidiOutput)
+ MidiOutput.name = "MidiOutput";
+ $desc = $collectedClasses.MidiOutput;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MidiOutput.prototype = $desc;
+ function MidiPort() {
+ }
+ MidiPort.builtin$cls = "MidiPort";
+ if (!"name" in MidiPort)
+ MidiPort.name = "MidiPort";
+ $desc = $collectedClasses.MidiPort;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MidiPort.prototype = $desc;
+ function ModElement() {
+ }
+ ModElement.builtin$cls = "ModElement";
+ if (!"name" in ModElement)
+ ModElement.name = "ModElement";
+ $desc = $collectedClasses.ModElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ModElement.prototype = $desc;
+ function MouseEvent() {
+ }
+ MouseEvent.builtin$cls = "MouseEvent";
+ if (!"name" in MouseEvent)
+ MouseEvent.name = "MouseEvent";
+ $desc = $collectedClasses.MouseEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MouseEvent.prototype = $desc;
+ function Navigator() {
+ }
+ Navigator.builtin$cls = "Navigator";
+ if (!"name" in Navigator)
+ Navigator.name = "Navigator";
+ $desc = $collectedClasses.Navigator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Navigator.prototype = $desc;
+ function NavigatorUserMediaError() {
+ }
+ NavigatorUserMediaError.builtin$cls = "NavigatorUserMediaError";
+ if (!"name" in NavigatorUserMediaError)
+ NavigatorUserMediaError.name = "NavigatorUserMediaError";
+ $desc = $collectedClasses.NavigatorUserMediaError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NavigatorUserMediaError.prototype = $desc;
+ function Node() {
+ }
+ Node.builtin$cls = "Node";
+ if (!"name" in Node)
+ Node.name = "Node";
+ $desc = $collectedClasses.Node;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Node.prototype = $desc;
+ function NodeList() {
+ }
+ NodeList.builtin$cls = "NodeList";
+ if (!"name" in NodeList)
+ NodeList.name = "NodeList";
+ $desc = $collectedClasses.NodeList;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NodeList.prototype = $desc;
+ function OListElement() {
+ }
+ OListElement.builtin$cls = "OListElement";
+ if (!"name" in OListElement)
+ OListElement.name = "OListElement";
+ $desc = $collectedClasses.OListElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ OListElement.prototype = $desc;
+ function ObjectElement() {
+ }
+ ObjectElement.builtin$cls = "ObjectElement";
+ if (!"name" in ObjectElement)
+ ObjectElement.name = "ObjectElement";
+ $desc = $collectedClasses.ObjectElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ObjectElement.prototype = $desc;
+ ObjectElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ function OptGroupElement() {
+ }
+ OptGroupElement.builtin$cls = "OptGroupElement";
+ if (!"name" in OptGroupElement)
+ OptGroupElement.name = "OptGroupElement";
+ $desc = $collectedClasses.OptGroupElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ OptGroupElement.prototype = $desc;
+ OptGroupElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ function OptionElement() {
+ }
+ OptionElement.builtin$cls = "OptionElement";
+ if (!"name" in OptionElement)
+ OptionElement.name = "OptionElement";
+ $desc = $collectedClasses.OptionElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ OptionElement.prototype = $desc;
+ OptionElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ OptionElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ OptionElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function OutputElement() {
+ }
+ OutputElement.builtin$cls = "OutputElement";
+ if (!"name" in OutputElement)
+ OutputElement.name = "OutputElement";
+ $desc = $collectedClasses.OutputElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ OutputElement.prototype = $desc;
+ OutputElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ OutputElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ OutputElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function OverflowEvent() {
+ }
+ OverflowEvent.builtin$cls = "OverflowEvent";
+ if (!"name" in OverflowEvent)
+ OverflowEvent.name = "OverflowEvent";
+ $desc = $collectedClasses.OverflowEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ OverflowEvent.prototype = $desc;
+ function PageTransitionEvent() {
+ }
+ PageTransitionEvent.builtin$cls = "PageTransitionEvent";
+ if (!"name" in PageTransitionEvent)
+ PageTransitionEvent.name = "PageTransitionEvent";
+ $desc = $collectedClasses.PageTransitionEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PageTransitionEvent.prototype = $desc;
+ function ParagraphElement() {
+ }
+ ParagraphElement.builtin$cls = "ParagraphElement";
+ if (!"name" in ParagraphElement)
+ ParagraphElement.name = "ParagraphElement";
+ $desc = $collectedClasses.ParagraphElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ParagraphElement.prototype = $desc;
+ function ParamElement() {
+ }
+ ParamElement.builtin$cls = "ParamElement";
+ if (!"name" in ParamElement)
+ ParamElement.name = "ParamElement";
+ $desc = $collectedClasses.ParamElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ParamElement.prototype = $desc;
+ ParamElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ ParamElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ ParamElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function PopStateEvent() {
+ }
+ PopStateEvent.builtin$cls = "PopStateEvent";
+ if (!"name" in PopStateEvent)
+ PopStateEvent.name = "PopStateEvent";
+ $desc = $collectedClasses.PopStateEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PopStateEvent.prototype = $desc;
+ function PositionError() {
+ }
+ PositionError.builtin$cls = "PositionError";
+ if (!"name" in PositionError)
+ PositionError.name = "PositionError";
+ $desc = $collectedClasses.PositionError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PositionError.prototype = $desc;
+ function PreElement() {
+ }
+ PreElement.builtin$cls = "PreElement";
+ if (!"name" in PreElement)
+ PreElement.name = "PreElement";
+ $desc = $collectedClasses.PreElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PreElement.prototype = $desc;
+ function ProcessingInstruction() {
+ }
+ ProcessingInstruction.builtin$cls = "ProcessingInstruction";
+ if (!"name" in ProcessingInstruction)
+ ProcessingInstruction.name = "ProcessingInstruction";
+ $desc = $collectedClasses.ProcessingInstruction;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ProcessingInstruction.prototype = $desc;
+ function ProgressElement() {
+ }
+ ProgressElement.builtin$cls = "ProgressElement";
+ if (!"name" in ProgressElement)
+ ProgressElement.name = "ProgressElement";
+ $desc = $collectedClasses.ProgressElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ProgressElement.prototype = $desc;
+ ProgressElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ ProgressElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function ProgressEvent() {
+ }
+ ProgressEvent.builtin$cls = "ProgressEvent";
+ if (!"name" in ProgressEvent)
+ ProgressEvent.name = "ProgressEvent";
+ $desc = $collectedClasses.ProgressEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ProgressEvent.prototype = $desc;
+ function QuoteElement() {
+ }
+ QuoteElement.builtin$cls = "QuoteElement";
+ if (!"name" in QuoteElement)
+ QuoteElement.name = "QuoteElement";
+ $desc = $collectedClasses.QuoteElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ QuoteElement.prototype = $desc;
+ function Range() {
+ }
+ Range.builtin$cls = "Range";
+ if (!"name" in Range)
+ Range.name = "Range";
+ $desc = $collectedClasses.Range;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Range.prototype = $desc;
+ function ResourceProgressEvent() {
+ }
+ ResourceProgressEvent.builtin$cls = "ResourceProgressEvent";
+ if (!"name" in ResourceProgressEvent)
+ ResourceProgressEvent.name = "ResourceProgressEvent";
+ $desc = $collectedClasses.ResourceProgressEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ResourceProgressEvent.prototype = $desc;
+ function RtcDataChannelEvent() {
+ }
+ RtcDataChannelEvent.builtin$cls = "RtcDataChannelEvent";
+ if (!"name" in RtcDataChannelEvent)
+ RtcDataChannelEvent.name = "RtcDataChannelEvent";
+ $desc = $collectedClasses.RtcDataChannelEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RtcDataChannelEvent.prototype = $desc;
+ function RtcDtmfToneChangeEvent() {
+ }
+ RtcDtmfToneChangeEvent.builtin$cls = "RtcDtmfToneChangeEvent";
+ if (!"name" in RtcDtmfToneChangeEvent)
+ RtcDtmfToneChangeEvent.name = "RtcDtmfToneChangeEvent";
+ $desc = $collectedClasses.RtcDtmfToneChangeEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RtcDtmfToneChangeEvent.prototype = $desc;
+ function RtcIceCandidateEvent() {
+ }
+ RtcIceCandidateEvent.builtin$cls = "RtcIceCandidateEvent";
+ if (!"name" in RtcIceCandidateEvent)
+ RtcIceCandidateEvent.name = "RtcIceCandidateEvent";
+ $desc = $collectedClasses.RtcIceCandidateEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RtcIceCandidateEvent.prototype = $desc;
+ function ScriptElement0() {
+ }
+ ScriptElement0.builtin$cls = "ScriptElement0";
+ if (!"name" in ScriptElement0)
+ ScriptElement0.name = "ScriptElement0";
+ $desc = $collectedClasses.ScriptElement0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ScriptElement0.prototype = $desc;
+ function SecurityPolicyViolationEvent() {
+ }
+ SecurityPolicyViolationEvent.builtin$cls = "SecurityPolicyViolationEvent";
+ if (!"name" in SecurityPolicyViolationEvent)
+ SecurityPolicyViolationEvent.name = "SecurityPolicyViolationEvent";
+ $desc = $collectedClasses.SecurityPolicyViolationEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SecurityPolicyViolationEvent.prototype = $desc;
+ function SelectElement() {
+ }
+ SelectElement.builtin$cls = "SelectElement";
+ if (!"name" in SelectElement)
+ SelectElement.name = "SelectElement";
+ $desc = $collectedClasses.SelectElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SelectElement.prototype = $desc;
+ SelectElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ SelectElement.prototype.get$length = function(receiver) {
+ return receiver.length;
+ };
+ SelectElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ SelectElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ SelectElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function ShadowElement() {
+ }
+ ShadowElement.builtin$cls = "ShadowElement";
+ if (!"name" in ShadowElement)
+ ShadowElement.name = "ShadowElement";
+ $desc = $collectedClasses.ShadowElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ShadowElement.prototype = $desc;
+ function ShadowRoot() {
+ }
+ ShadowRoot.builtin$cls = "ShadowRoot";
+ if (!"name" in ShadowRoot)
+ ShadowRoot.name = "ShadowRoot";
+ $desc = $collectedClasses.ShadowRoot;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ShadowRoot.prototype = $desc;
+ function SourceElement() {
+ }
+ SourceElement.builtin$cls = "SourceElement";
+ if (!"name" in SourceElement)
+ SourceElement.name = "SourceElement";
+ $desc = $collectedClasses.SourceElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SourceElement.prototype = $desc;
+ function SpanElement() {
+ }
+ SpanElement.builtin$cls = "SpanElement";
+ if (!"name" in SpanElement)
+ SpanElement.name = "SpanElement";
+ $desc = $collectedClasses.SpanElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SpanElement.prototype = $desc;
+ function SpeechInputEvent() {
+ }
+ SpeechInputEvent.builtin$cls = "SpeechInputEvent";
+ if (!"name" in SpeechInputEvent)
+ SpeechInputEvent.name = "SpeechInputEvent";
+ $desc = $collectedClasses.SpeechInputEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SpeechInputEvent.prototype = $desc;
+ function SpeechRecognitionError() {
+ }
+ SpeechRecognitionError.builtin$cls = "SpeechRecognitionError";
+ if (!"name" in SpeechRecognitionError)
+ SpeechRecognitionError.name = "SpeechRecognitionError";
+ $desc = $collectedClasses.SpeechRecognitionError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SpeechRecognitionError.prototype = $desc;
+ SpeechRecognitionError.prototype.get$error = function(receiver) {
+ return receiver.error;
+ };
+ function SpeechRecognitionEvent() {
+ }
+ SpeechRecognitionEvent.builtin$cls = "SpeechRecognitionEvent";
+ if (!"name" in SpeechRecognitionEvent)
+ SpeechRecognitionEvent.name = "SpeechRecognitionEvent";
+ $desc = $collectedClasses.SpeechRecognitionEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SpeechRecognitionEvent.prototype = $desc;
+ function SpeechSynthesisEvent() {
+ }
+ SpeechSynthesisEvent.builtin$cls = "SpeechSynthesisEvent";
+ if (!"name" in SpeechSynthesisEvent)
+ SpeechSynthesisEvent.name = "SpeechSynthesisEvent";
+ $desc = $collectedClasses.SpeechSynthesisEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SpeechSynthesisEvent.prototype = $desc;
+ function Storage() {
+ }
+ Storage.builtin$cls = "Storage";
+ if (!"name" in Storage)
+ Storage.name = "Storage";
+ $desc = $collectedClasses.Storage;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Storage.prototype = $desc;
+ function StorageEvent() {
+ }
+ StorageEvent.builtin$cls = "StorageEvent";
+ if (!"name" in StorageEvent)
+ StorageEvent.name = "StorageEvent";
+ $desc = $collectedClasses.StorageEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StorageEvent.prototype = $desc;
+ function StyleElement() {
+ }
+ StyleElement.builtin$cls = "StyleElement";
+ if (!"name" in StyleElement)
+ StyleElement.name = "StyleElement";
+ $desc = $collectedClasses.StyleElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StyleElement.prototype = $desc;
+ StyleElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ function TableCaptionElement() {
+ }
+ TableCaptionElement.builtin$cls = "TableCaptionElement";
+ if (!"name" in TableCaptionElement)
+ TableCaptionElement.name = "TableCaptionElement";
+ $desc = $collectedClasses.TableCaptionElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TableCaptionElement.prototype = $desc;
+ function TableCellElement() {
+ }
+ TableCellElement.builtin$cls = "TableCellElement";
+ if (!"name" in TableCellElement)
+ TableCellElement.name = "TableCellElement";
+ $desc = $collectedClasses.TableCellElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TableCellElement.prototype = $desc;
+ function TableColElement() {
+ }
+ TableColElement.builtin$cls = "TableColElement";
+ if (!"name" in TableColElement)
+ TableColElement.name = "TableColElement";
+ $desc = $collectedClasses.TableColElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TableColElement.prototype = $desc;
+ function TableElement() {
+ }
+ TableElement.builtin$cls = "TableElement";
+ if (!"name" in TableElement)
+ TableElement.name = "TableElement";
+ $desc = $collectedClasses.TableElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TableElement.prototype = $desc;
+ function TableRowElement() {
+ }
+ TableRowElement.builtin$cls = "TableRowElement";
+ if (!"name" in TableRowElement)
+ TableRowElement.name = "TableRowElement";
+ $desc = $collectedClasses.TableRowElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TableRowElement.prototype = $desc;
+ function TableSectionElement() {
+ }
+ TableSectionElement.builtin$cls = "TableSectionElement";
+ if (!"name" in TableSectionElement)
+ TableSectionElement.name = "TableSectionElement";
+ $desc = $collectedClasses.TableSectionElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TableSectionElement.prototype = $desc;
+ function TemplateElement() {
+ }
+ TemplateElement.builtin$cls = "TemplateElement";
+ if (!"name" in TemplateElement)
+ TemplateElement.name = "TemplateElement";
+ $desc = $collectedClasses.TemplateElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TemplateElement.prototype = $desc;
+ function Text() {
+ }
+ Text.builtin$cls = "Text";
+ if (!"name" in Text)
+ Text.name = "Text";
+ $desc = $collectedClasses.Text;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Text.prototype = $desc;
+ function TextAreaElement() {
+ }
+ TextAreaElement.builtin$cls = "TextAreaElement";
+ if (!"name" in TextAreaElement)
+ TextAreaElement.name = "TextAreaElement";
+ $desc = $collectedClasses.TextAreaElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TextAreaElement.prototype = $desc;
+ TextAreaElement.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ TextAreaElement.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ TextAreaElement.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ TextAreaElement.prototype.set$value = function(receiver, v) {
+ return receiver.value = v;
+ };
+ function TextEvent() {
+ }
+ TextEvent.builtin$cls = "TextEvent";
+ if (!"name" in TextEvent)
+ TextEvent.name = "TextEvent";
+ $desc = $collectedClasses.TextEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TextEvent.prototype = $desc;
+ function TitleElement() {
+ }
+ TitleElement.builtin$cls = "TitleElement";
+ if (!"name" in TitleElement)
+ TitleElement.name = "TitleElement";
+ $desc = $collectedClasses.TitleElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TitleElement.prototype = $desc;
+ function TouchEvent() {
+ }
+ TouchEvent.builtin$cls = "TouchEvent";
+ if (!"name" in TouchEvent)
+ TouchEvent.name = "TouchEvent";
+ $desc = $collectedClasses.TouchEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TouchEvent.prototype = $desc;
+ function TrackElement() {
+ }
+ TrackElement.builtin$cls = "TrackElement";
+ if (!"name" in TrackElement)
+ TrackElement.name = "TrackElement";
+ $desc = $collectedClasses.TrackElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TrackElement.prototype = $desc;
+ function TrackEvent() {
+ }
+ TrackEvent.builtin$cls = "TrackEvent";
+ if (!"name" in TrackEvent)
+ TrackEvent.name = "TrackEvent";
+ $desc = $collectedClasses.TrackEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TrackEvent.prototype = $desc;
+ function TransitionEvent() {
+ }
+ TransitionEvent.builtin$cls = "TransitionEvent";
+ if (!"name" in TransitionEvent)
+ TransitionEvent.name = "TransitionEvent";
+ $desc = $collectedClasses.TransitionEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TransitionEvent.prototype = $desc;
+ function UIEvent() {
+ }
+ UIEvent.builtin$cls = "UIEvent";
+ if (!"name" in UIEvent)
+ UIEvent.name = "UIEvent";
+ $desc = $collectedClasses.UIEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UIEvent.prototype = $desc;
+ function UListElement() {
+ }
+ UListElement.builtin$cls = "UListElement";
+ if (!"name" in UListElement)
+ UListElement.name = "UListElement";
+ $desc = $collectedClasses.UListElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UListElement.prototype = $desc;
+ function UnknownElement() {
+ }
+ UnknownElement.builtin$cls = "UnknownElement";
+ if (!"name" in UnknownElement)
+ UnknownElement.name = "UnknownElement";
+ $desc = $collectedClasses.UnknownElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UnknownElement.prototype = $desc;
+ function VideoElement() {
+ }
+ VideoElement.builtin$cls = "VideoElement";
+ if (!"name" in VideoElement)
+ VideoElement.name = "VideoElement";
+ $desc = $collectedClasses.VideoElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ VideoElement.prototype = $desc;
+ function WheelEvent() {
+ }
+ WheelEvent.builtin$cls = "WheelEvent";
+ if (!"name" in WheelEvent)
+ WheelEvent.name = "WheelEvent";
+ $desc = $collectedClasses.WheelEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ WheelEvent.prototype = $desc;
+ function Window() {
+ }
+ Window.builtin$cls = "Window";
+ if (!"name" in Window)
+ Window.name = "Window";
+ $desc = $collectedClasses.Window;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Window.prototype = $desc;
+ function XmlDocument() {
+ }
+ XmlDocument.builtin$cls = "XmlDocument";
+ if (!"name" in XmlDocument)
+ XmlDocument.name = "XmlDocument";
+ $desc = $collectedClasses.XmlDocument;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ XmlDocument.prototype = $desc;
+ function _Attr() {
+ }
+ _Attr.builtin$cls = "_Attr";
+ if (!"name" in _Attr)
+ _Attr.name = "_Attr";
+ $desc = $collectedClasses._Attr;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Attr.prototype = $desc;
+ _Attr.prototype.get$name = function(receiver) {
+ return receiver.name;
+ };
+ _Attr.prototype.get$value = function(receiver) {
+ return receiver.value;
+ };
+ function _DocumentType() {
+ }
+ _DocumentType.builtin$cls = "_DocumentType";
+ if (!"name" in _DocumentType)
+ _DocumentType.name = "_DocumentType";
+ $desc = $collectedClasses._DocumentType;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _DocumentType.prototype = $desc;
+ function _HTMLAppletElement() {
+ }
+ _HTMLAppletElement.builtin$cls = "_HTMLAppletElement";
+ if (!"name" in _HTMLAppletElement)
+ _HTMLAppletElement.name = "_HTMLAppletElement";
+ $desc = $collectedClasses._HTMLAppletElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HTMLAppletElement.prototype = $desc;
+ function _HTMLDirectoryElement() {
+ }
+ _HTMLDirectoryElement.builtin$cls = "_HTMLDirectoryElement";
+ if (!"name" in _HTMLDirectoryElement)
+ _HTMLDirectoryElement.name = "_HTMLDirectoryElement";
+ $desc = $collectedClasses._HTMLDirectoryElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HTMLDirectoryElement.prototype = $desc;
+ function _HTMLFontElement() {
+ }
+ _HTMLFontElement.builtin$cls = "_HTMLFontElement";
+ if (!"name" in _HTMLFontElement)
+ _HTMLFontElement.name = "_HTMLFontElement";
+ $desc = $collectedClasses._HTMLFontElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HTMLFontElement.prototype = $desc;
+ function _HTMLFrameElement() {
+ }
+ _HTMLFrameElement.builtin$cls = "_HTMLFrameElement";
+ if (!"name" in _HTMLFrameElement)
+ _HTMLFrameElement.name = "_HTMLFrameElement";
+ $desc = $collectedClasses._HTMLFrameElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HTMLFrameElement.prototype = $desc;
+ function _HTMLFrameSetElement() {
+ }
+ _HTMLFrameSetElement.builtin$cls = "_HTMLFrameSetElement";
+ if (!"name" in _HTMLFrameSetElement)
+ _HTMLFrameSetElement.name = "_HTMLFrameSetElement";
+ $desc = $collectedClasses._HTMLFrameSetElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HTMLFrameSetElement.prototype = $desc;
+ function _HTMLMarqueeElement() {
+ }
+ _HTMLMarqueeElement.builtin$cls = "_HTMLMarqueeElement";
+ if (!"name" in _HTMLMarqueeElement)
+ _HTMLMarqueeElement.name = "_HTMLMarqueeElement";
+ $desc = $collectedClasses._HTMLMarqueeElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HTMLMarqueeElement.prototype = $desc;
+ function _MutationEvent() {
+ }
+ _MutationEvent.builtin$cls = "_MutationEvent";
+ if (!"name" in _MutationEvent)
+ _MutationEvent.name = "_MutationEvent";
+ $desc = $collectedClasses._MutationEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _MutationEvent.prototype = $desc;
+ function _NamedNodeMap() {
+ }
+ _NamedNodeMap.builtin$cls = "_NamedNodeMap";
+ if (!"name" in _NamedNodeMap)
+ _NamedNodeMap.name = "_NamedNodeMap";
+ $desc = $collectedClasses._NamedNodeMap;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _NamedNodeMap.prototype = $desc;
+ function _Notation() {
+ }
+ _Notation.builtin$cls = "_Notation";
+ if (!"name" in _Notation)
+ _Notation.name = "_Notation";
+ $desc = $collectedClasses._Notation;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Notation.prototype = $desc;
+ function _XMLHttpRequestProgressEvent() {
+ }
+ _XMLHttpRequestProgressEvent.builtin$cls = "_XMLHttpRequestProgressEvent";
+ if (!"name" in _XMLHttpRequestProgressEvent)
+ _XMLHttpRequestProgressEvent.name = "_XMLHttpRequestProgressEvent";
+ $desc = $collectedClasses._XMLHttpRequestProgressEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _XMLHttpRequestProgressEvent.prototype = $desc;
+ function VersionChangeEvent() {
+ }
+ VersionChangeEvent.builtin$cls = "VersionChangeEvent";
+ if (!"name" in VersionChangeEvent)
+ VersionChangeEvent.name = "VersionChangeEvent";
+ $desc = $collectedClasses.VersionChangeEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ VersionChangeEvent.prototype = $desc;
+ function AElement() {
+ }
+ AElement.builtin$cls = "AElement";
+ if (!"name" in AElement)
+ AElement.name = "AElement";
+ $desc = $collectedClasses.AElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AElement.prototype = $desc;
+ function AltGlyphElement() {
+ }
+ AltGlyphElement.builtin$cls = "AltGlyphElement";
+ if (!"name" in AltGlyphElement)
+ AltGlyphElement.name = "AltGlyphElement";
+ $desc = $collectedClasses.AltGlyphElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AltGlyphElement.prototype = $desc;
+ function AnimateElement() {
+ }
+ AnimateElement.builtin$cls = "AnimateElement";
+ if (!"name" in AnimateElement)
+ AnimateElement.name = "AnimateElement";
+ $desc = $collectedClasses.AnimateElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AnimateElement.prototype = $desc;
+ function AnimateMotionElement() {
+ }
+ AnimateMotionElement.builtin$cls = "AnimateMotionElement";
+ if (!"name" in AnimateMotionElement)
+ AnimateMotionElement.name = "AnimateMotionElement";
+ $desc = $collectedClasses.AnimateMotionElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AnimateMotionElement.prototype = $desc;
+ function AnimateTransformElement() {
+ }
+ AnimateTransformElement.builtin$cls = "AnimateTransformElement";
+ if (!"name" in AnimateTransformElement)
+ AnimateTransformElement.name = "AnimateTransformElement";
+ $desc = $collectedClasses.AnimateTransformElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AnimateTransformElement.prototype = $desc;
+ function AnimatedNumberList() {
+ }
+ AnimatedNumberList.builtin$cls = "AnimatedNumberList";
+ if (!"name" in AnimatedNumberList)
+ AnimatedNumberList.name = "AnimatedNumberList";
+ $desc = $collectedClasses.AnimatedNumberList;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AnimatedNumberList.prototype = $desc;
+ function AnimationElement() {
+ }
+ AnimationElement.builtin$cls = "AnimationElement";
+ if (!"name" in AnimationElement)
+ AnimationElement.name = "AnimationElement";
+ $desc = $collectedClasses.AnimationElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AnimationElement.prototype = $desc;
+ function CircleElement() {
+ }
+ CircleElement.builtin$cls = "CircleElement";
+ if (!"name" in CircleElement)
+ CircleElement.name = "CircleElement";
+ $desc = $collectedClasses.CircleElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CircleElement.prototype = $desc;
+ function ClipPathElement() {
+ }
+ ClipPathElement.builtin$cls = "ClipPathElement";
+ if (!"name" in ClipPathElement)
+ ClipPathElement.name = "ClipPathElement";
+ $desc = $collectedClasses.ClipPathElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ClipPathElement.prototype = $desc;
+ function DefsElement() {
+ }
+ DefsElement.builtin$cls = "DefsElement";
+ if (!"name" in DefsElement)
+ DefsElement.name = "DefsElement";
+ $desc = $collectedClasses.DefsElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DefsElement.prototype = $desc;
+ function DescElement() {
+ }
+ DescElement.builtin$cls = "DescElement";
+ if (!"name" in DescElement)
+ DescElement.name = "DescElement";
+ $desc = $collectedClasses.DescElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DescElement.prototype = $desc;
+ function DiscardElement() {
+ }
+ DiscardElement.builtin$cls = "DiscardElement";
+ if (!"name" in DiscardElement)
+ DiscardElement.name = "DiscardElement";
+ $desc = $collectedClasses.DiscardElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DiscardElement.prototype = $desc;
+ function EllipseElement() {
+ }
+ EllipseElement.builtin$cls = "EllipseElement";
+ if (!"name" in EllipseElement)
+ EllipseElement.name = "EllipseElement";
+ $desc = $collectedClasses.EllipseElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ EllipseElement.prototype = $desc;
+ function FEBlendElement() {
+ }
+ FEBlendElement.builtin$cls = "FEBlendElement";
+ if (!"name" in FEBlendElement)
+ FEBlendElement.name = "FEBlendElement";
+ $desc = $collectedClasses.FEBlendElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEBlendElement.prototype = $desc;
+ function FEColorMatrixElement() {
+ }
+ FEColorMatrixElement.builtin$cls = "FEColorMatrixElement";
+ if (!"name" in FEColorMatrixElement)
+ FEColorMatrixElement.name = "FEColorMatrixElement";
+ $desc = $collectedClasses.FEColorMatrixElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEColorMatrixElement.prototype = $desc;
+ function FEComponentTransferElement() {
+ }
+ FEComponentTransferElement.builtin$cls = "FEComponentTransferElement";
+ if (!"name" in FEComponentTransferElement)
+ FEComponentTransferElement.name = "FEComponentTransferElement";
+ $desc = $collectedClasses.FEComponentTransferElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEComponentTransferElement.prototype = $desc;
+ function FECompositeElement() {
+ }
+ FECompositeElement.builtin$cls = "FECompositeElement";
+ if (!"name" in FECompositeElement)
+ FECompositeElement.name = "FECompositeElement";
+ $desc = $collectedClasses.FECompositeElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FECompositeElement.prototype = $desc;
+ function FEConvolveMatrixElement() {
+ }
+ FEConvolveMatrixElement.builtin$cls = "FEConvolveMatrixElement";
+ if (!"name" in FEConvolveMatrixElement)
+ FEConvolveMatrixElement.name = "FEConvolveMatrixElement";
+ $desc = $collectedClasses.FEConvolveMatrixElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEConvolveMatrixElement.prototype = $desc;
+ function FEDiffuseLightingElement() {
+ }
+ FEDiffuseLightingElement.builtin$cls = "FEDiffuseLightingElement";
+ if (!"name" in FEDiffuseLightingElement)
+ FEDiffuseLightingElement.name = "FEDiffuseLightingElement";
+ $desc = $collectedClasses.FEDiffuseLightingElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEDiffuseLightingElement.prototype = $desc;
+ function FEDisplacementMapElement() {
+ }
+ FEDisplacementMapElement.builtin$cls = "FEDisplacementMapElement";
+ if (!"name" in FEDisplacementMapElement)
+ FEDisplacementMapElement.name = "FEDisplacementMapElement";
+ $desc = $collectedClasses.FEDisplacementMapElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEDisplacementMapElement.prototype = $desc;
+ function FEDistantLightElement() {
+ }
+ FEDistantLightElement.builtin$cls = "FEDistantLightElement";
+ if (!"name" in FEDistantLightElement)
+ FEDistantLightElement.name = "FEDistantLightElement";
+ $desc = $collectedClasses.FEDistantLightElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEDistantLightElement.prototype = $desc;
+ function FEFloodElement() {
+ }
+ FEFloodElement.builtin$cls = "FEFloodElement";
+ if (!"name" in FEFloodElement)
+ FEFloodElement.name = "FEFloodElement";
+ $desc = $collectedClasses.FEFloodElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEFloodElement.prototype = $desc;
+ function FEFuncAElement() {
+ }
+ FEFuncAElement.builtin$cls = "FEFuncAElement";
+ if (!"name" in FEFuncAElement)
+ FEFuncAElement.name = "FEFuncAElement";
+ $desc = $collectedClasses.FEFuncAElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEFuncAElement.prototype = $desc;
+ function FEFuncBElement() {
+ }
+ FEFuncBElement.builtin$cls = "FEFuncBElement";
+ if (!"name" in FEFuncBElement)
+ FEFuncBElement.name = "FEFuncBElement";
+ $desc = $collectedClasses.FEFuncBElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEFuncBElement.prototype = $desc;
+ function FEFuncGElement() {
+ }
+ FEFuncGElement.builtin$cls = "FEFuncGElement";
+ if (!"name" in FEFuncGElement)
+ FEFuncGElement.name = "FEFuncGElement";
+ $desc = $collectedClasses.FEFuncGElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEFuncGElement.prototype = $desc;
+ function FEFuncRElement() {
+ }
+ FEFuncRElement.builtin$cls = "FEFuncRElement";
+ if (!"name" in FEFuncRElement)
+ FEFuncRElement.name = "FEFuncRElement";
+ $desc = $collectedClasses.FEFuncRElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEFuncRElement.prototype = $desc;
+ function FEGaussianBlurElement() {
+ }
+ FEGaussianBlurElement.builtin$cls = "FEGaussianBlurElement";
+ if (!"name" in FEGaussianBlurElement)
+ FEGaussianBlurElement.name = "FEGaussianBlurElement";
+ $desc = $collectedClasses.FEGaussianBlurElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEGaussianBlurElement.prototype = $desc;
+ function FEImageElement() {
+ }
+ FEImageElement.builtin$cls = "FEImageElement";
+ if (!"name" in FEImageElement)
+ FEImageElement.name = "FEImageElement";
+ $desc = $collectedClasses.FEImageElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEImageElement.prototype = $desc;
+ function FEMergeElement() {
+ }
+ FEMergeElement.builtin$cls = "FEMergeElement";
+ if (!"name" in FEMergeElement)
+ FEMergeElement.name = "FEMergeElement";
+ $desc = $collectedClasses.FEMergeElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEMergeElement.prototype = $desc;
+ function FEMergeNodeElement() {
+ }
+ FEMergeNodeElement.builtin$cls = "FEMergeNodeElement";
+ if (!"name" in FEMergeNodeElement)
+ FEMergeNodeElement.name = "FEMergeNodeElement";
+ $desc = $collectedClasses.FEMergeNodeElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEMergeNodeElement.prototype = $desc;
+ function FEMorphologyElement() {
+ }
+ FEMorphologyElement.builtin$cls = "FEMorphologyElement";
+ if (!"name" in FEMorphologyElement)
+ FEMorphologyElement.name = "FEMorphologyElement";
+ $desc = $collectedClasses.FEMorphologyElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEMorphologyElement.prototype = $desc;
+ function FEOffsetElement() {
+ }
+ FEOffsetElement.builtin$cls = "FEOffsetElement";
+ if (!"name" in FEOffsetElement)
+ FEOffsetElement.name = "FEOffsetElement";
+ $desc = $collectedClasses.FEOffsetElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEOffsetElement.prototype = $desc;
+ function FEPointLightElement() {
+ }
+ FEPointLightElement.builtin$cls = "FEPointLightElement";
+ if (!"name" in FEPointLightElement)
+ FEPointLightElement.name = "FEPointLightElement";
+ $desc = $collectedClasses.FEPointLightElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FEPointLightElement.prototype = $desc;
+ function FESpecularLightingElement() {
+ }
+ FESpecularLightingElement.builtin$cls = "FESpecularLightingElement";
+ if (!"name" in FESpecularLightingElement)
+ FESpecularLightingElement.name = "FESpecularLightingElement";
+ $desc = $collectedClasses.FESpecularLightingElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FESpecularLightingElement.prototype = $desc;
+ function FESpotLightElement() {
+ }
+ FESpotLightElement.builtin$cls = "FESpotLightElement";
+ if (!"name" in FESpotLightElement)
+ FESpotLightElement.name = "FESpotLightElement";
+ $desc = $collectedClasses.FESpotLightElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FESpotLightElement.prototype = $desc;
+ function FETileElement() {
+ }
+ FETileElement.builtin$cls = "FETileElement";
+ if (!"name" in FETileElement)
+ FETileElement.name = "FETileElement";
+ $desc = $collectedClasses.FETileElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FETileElement.prototype = $desc;
+ function FETurbulenceElement() {
+ }
+ FETurbulenceElement.builtin$cls = "FETurbulenceElement";
+ if (!"name" in FETurbulenceElement)
+ FETurbulenceElement.name = "FETurbulenceElement";
+ $desc = $collectedClasses.FETurbulenceElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FETurbulenceElement.prototype = $desc;
+ function FilterElement() {
+ }
+ FilterElement.builtin$cls = "FilterElement";
+ if (!"name" in FilterElement)
+ FilterElement.name = "FilterElement";
+ $desc = $collectedClasses.FilterElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FilterElement.prototype = $desc;
+ function ForeignObjectElement() {
+ }
+ ForeignObjectElement.builtin$cls = "ForeignObjectElement";
+ if (!"name" in ForeignObjectElement)
+ ForeignObjectElement.name = "ForeignObjectElement";
+ $desc = $collectedClasses.ForeignObjectElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ForeignObjectElement.prototype = $desc;
+ function GElement() {
+ }
+ GElement.builtin$cls = "GElement";
+ if (!"name" in GElement)
+ GElement.name = "GElement";
+ $desc = $collectedClasses.GElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ GElement.prototype = $desc;
+ function GeometryElement() {
+ }
+ GeometryElement.builtin$cls = "GeometryElement";
+ if (!"name" in GeometryElement)
+ GeometryElement.name = "GeometryElement";
+ $desc = $collectedClasses.GeometryElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ GeometryElement.prototype = $desc;
+ function GraphicsElement() {
+ }
+ GraphicsElement.builtin$cls = "GraphicsElement";
+ if (!"name" in GraphicsElement)
+ GraphicsElement.name = "GraphicsElement";
+ $desc = $collectedClasses.GraphicsElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ GraphicsElement.prototype = $desc;
+ function ImageElement0() {
+ }
+ ImageElement0.builtin$cls = "ImageElement0";
+ if (!"name" in ImageElement0)
+ ImageElement0.name = "ImageElement0";
+ $desc = $collectedClasses.ImageElement0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ImageElement0.prototype = $desc;
+ function LineElement() {
+ }
+ LineElement.builtin$cls = "LineElement";
+ if (!"name" in LineElement)
+ LineElement.name = "LineElement";
+ $desc = $collectedClasses.LineElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LineElement.prototype = $desc;
+ function LinearGradientElement() {
+ }
+ LinearGradientElement.builtin$cls = "LinearGradientElement";
+ if (!"name" in LinearGradientElement)
+ LinearGradientElement.name = "LinearGradientElement";
+ $desc = $collectedClasses.LinearGradientElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LinearGradientElement.prototype = $desc;
+ function MarkerElement() {
+ }
+ MarkerElement.builtin$cls = "MarkerElement";
+ if (!"name" in MarkerElement)
+ MarkerElement.name = "MarkerElement";
+ $desc = $collectedClasses.MarkerElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MarkerElement.prototype = $desc;
+ function MaskElement() {
+ }
+ MaskElement.builtin$cls = "MaskElement";
+ if (!"name" in MaskElement)
+ MaskElement.name = "MaskElement";
+ $desc = $collectedClasses.MaskElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MaskElement.prototype = $desc;
+ function MetadataElement() {
+ }
+ MetadataElement.builtin$cls = "MetadataElement";
+ if (!"name" in MetadataElement)
+ MetadataElement.name = "MetadataElement";
+ $desc = $collectedClasses.MetadataElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MetadataElement.prototype = $desc;
+ function PathElement() {
+ }
+ PathElement.builtin$cls = "PathElement";
+ if (!"name" in PathElement)
+ PathElement.name = "PathElement";
+ $desc = $collectedClasses.PathElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PathElement.prototype = $desc;
+ function PatternElement() {
+ }
+ PatternElement.builtin$cls = "PatternElement";
+ if (!"name" in PatternElement)
+ PatternElement.name = "PatternElement";
+ $desc = $collectedClasses.PatternElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PatternElement.prototype = $desc;
+ function PolygonElement() {
+ }
+ PolygonElement.builtin$cls = "PolygonElement";
+ if (!"name" in PolygonElement)
+ PolygonElement.name = "PolygonElement";
+ $desc = $collectedClasses.PolygonElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PolygonElement.prototype = $desc;
+ function PolylineElement() {
+ }
+ PolylineElement.builtin$cls = "PolylineElement";
+ if (!"name" in PolylineElement)
+ PolylineElement.name = "PolylineElement";
+ $desc = $collectedClasses.PolylineElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PolylineElement.prototype = $desc;
+ function RadialGradientElement() {
+ }
+ RadialGradientElement.builtin$cls = "RadialGradientElement";
+ if (!"name" in RadialGradientElement)
+ RadialGradientElement.name = "RadialGradientElement";
+ $desc = $collectedClasses.RadialGradientElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RadialGradientElement.prototype = $desc;
+ function RectElement() {
+ }
+ RectElement.builtin$cls = "RectElement";
+ if (!"name" in RectElement)
+ RectElement.name = "RectElement";
+ $desc = $collectedClasses.RectElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RectElement.prototype = $desc;
+ function ScriptElement() {
+ }
+ ScriptElement.builtin$cls = "ScriptElement";
+ if (!"name" in ScriptElement)
+ ScriptElement.name = "ScriptElement";
+ $desc = $collectedClasses.ScriptElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ScriptElement.prototype = $desc;
+ function SetElement() {
+ }
+ SetElement.builtin$cls = "SetElement";
+ if (!"name" in SetElement)
+ SetElement.name = "SetElement";
+ $desc = $collectedClasses.SetElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SetElement.prototype = $desc;
+ function StopElement() {
+ }
+ StopElement.builtin$cls = "StopElement";
+ if (!"name" in StopElement)
+ StopElement.name = "StopElement";
+ $desc = $collectedClasses.StopElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StopElement.prototype = $desc;
+ function StyleElement0() {
+ }
+ StyleElement0.builtin$cls = "StyleElement0";
+ if (!"name" in StyleElement0)
+ StyleElement0.name = "StyleElement0";
+ $desc = $collectedClasses.StyleElement0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StyleElement0.prototype = $desc;
+ StyleElement0.prototype.set$disabled = function(receiver, v) {
+ return receiver.disabled = v;
+ };
+ function SvgElement() {
+ }
+ SvgElement.builtin$cls = "SvgElement";
+ if (!"name" in SvgElement)
+ SvgElement.name = "SvgElement";
+ $desc = $collectedClasses.SvgElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SvgElement.prototype = $desc;
+ function SvgSvgElement() {
+ }
+ SvgSvgElement.builtin$cls = "SvgSvgElement";
+ if (!"name" in SvgSvgElement)
+ SvgSvgElement.name = "SvgSvgElement";
+ $desc = $collectedClasses.SvgSvgElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SvgSvgElement.prototype = $desc;
+ function SwitchElement() {
+ }
+ SwitchElement.builtin$cls = "SwitchElement";
+ if (!"name" in SwitchElement)
+ SwitchElement.name = "SwitchElement";
+ $desc = $collectedClasses.SwitchElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SwitchElement.prototype = $desc;
+ function SymbolElement() {
+ }
+ SymbolElement.builtin$cls = "SymbolElement";
+ if (!"name" in SymbolElement)
+ SymbolElement.name = "SymbolElement";
+ $desc = $collectedClasses.SymbolElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SymbolElement.prototype = $desc;
+ function TSpanElement() {
+ }
+ TSpanElement.builtin$cls = "TSpanElement";
+ if (!"name" in TSpanElement)
+ TSpanElement.name = "TSpanElement";
+ $desc = $collectedClasses.TSpanElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TSpanElement.prototype = $desc;
+ function TextContentElement() {
+ }
+ TextContentElement.builtin$cls = "TextContentElement";
+ if (!"name" in TextContentElement)
+ TextContentElement.name = "TextContentElement";
+ $desc = $collectedClasses.TextContentElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TextContentElement.prototype = $desc;
+ function TextElement() {
+ }
+ TextElement.builtin$cls = "TextElement";
+ if (!"name" in TextElement)
+ TextElement.name = "TextElement";
+ $desc = $collectedClasses.TextElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TextElement.prototype = $desc;
+ function TextPathElement() {
+ }
+ TextPathElement.builtin$cls = "TextPathElement";
+ if (!"name" in TextPathElement)
+ TextPathElement.name = "TextPathElement";
+ $desc = $collectedClasses.TextPathElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TextPathElement.prototype = $desc;
+ function TextPositioningElement() {
+ }
+ TextPositioningElement.builtin$cls = "TextPositioningElement";
+ if (!"name" in TextPositioningElement)
+ TextPositioningElement.name = "TextPositioningElement";
+ $desc = $collectedClasses.TextPositioningElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TextPositioningElement.prototype = $desc;
+ function TitleElement0() {
+ }
+ TitleElement0.builtin$cls = "TitleElement0";
+ if (!"name" in TitleElement0)
+ TitleElement0.name = "TitleElement0";
+ $desc = $collectedClasses.TitleElement0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TitleElement0.prototype = $desc;
+ function UseElement() {
+ }
+ UseElement.builtin$cls = "UseElement";
+ if (!"name" in UseElement)
+ UseElement.name = "UseElement";
+ $desc = $collectedClasses.UseElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UseElement.prototype = $desc;
+ function ViewElement() {
+ }
+ ViewElement.builtin$cls = "ViewElement";
+ if (!"name" in ViewElement)
+ ViewElement.name = "ViewElement";
+ $desc = $collectedClasses.ViewElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ViewElement.prototype = $desc;
+ function ZoomEvent() {
+ }
+ ZoomEvent.builtin$cls = "ZoomEvent";
+ if (!"name" in ZoomEvent)
+ ZoomEvent.name = "ZoomEvent";
+ $desc = $collectedClasses.ZoomEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ZoomEvent.prototype = $desc;
+ function _GradientElement() {
+ }
+ _GradientElement.builtin$cls = "_GradientElement";
+ if (!"name" in _GradientElement)
+ _GradientElement.name = "_GradientElement";
+ $desc = $collectedClasses._GradientElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _GradientElement.prototype = $desc;
+ function _SVGAltGlyphDefElement() {
+ }
+ _SVGAltGlyphDefElement.builtin$cls = "_SVGAltGlyphDefElement";
+ if (!"name" in _SVGAltGlyphDefElement)
+ _SVGAltGlyphDefElement.name = "_SVGAltGlyphDefElement";
+ $desc = $collectedClasses._SVGAltGlyphDefElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGAltGlyphDefElement.prototype = $desc;
+ function _SVGAltGlyphItemElement() {
+ }
+ _SVGAltGlyphItemElement.builtin$cls = "_SVGAltGlyphItemElement";
+ if (!"name" in _SVGAltGlyphItemElement)
+ _SVGAltGlyphItemElement.name = "_SVGAltGlyphItemElement";
+ $desc = $collectedClasses._SVGAltGlyphItemElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGAltGlyphItemElement.prototype = $desc;
+ function _SVGComponentTransferFunctionElement() {
+ }
+ _SVGComponentTransferFunctionElement.builtin$cls = "_SVGComponentTransferFunctionElement";
+ if (!"name" in _SVGComponentTransferFunctionElement)
+ _SVGComponentTransferFunctionElement.name = "_SVGComponentTransferFunctionElement";
+ $desc = $collectedClasses._SVGComponentTransferFunctionElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGComponentTransferFunctionElement.prototype = $desc;
+ function _SVGCursorElement() {
+ }
+ _SVGCursorElement.builtin$cls = "_SVGCursorElement";
+ if (!"name" in _SVGCursorElement)
+ _SVGCursorElement.name = "_SVGCursorElement";
+ $desc = $collectedClasses._SVGCursorElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGCursorElement.prototype = $desc;
+ function _SVGFEDropShadowElement() {
+ }
+ _SVGFEDropShadowElement.builtin$cls = "_SVGFEDropShadowElement";
+ if (!"name" in _SVGFEDropShadowElement)
+ _SVGFEDropShadowElement.name = "_SVGFEDropShadowElement";
+ $desc = $collectedClasses._SVGFEDropShadowElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGFEDropShadowElement.prototype = $desc;
+ function _SVGFontElement() {
+ }
+ _SVGFontElement.builtin$cls = "_SVGFontElement";
+ if (!"name" in _SVGFontElement)
+ _SVGFontElement.name = "_SVGFontElement";
+ $desc = $collectedClasses._SVGFontElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGFontElement.prototype = $desc;
+ function _SVGFontFaceElement() {
+ }
+ _SVGFontFaceElement.builtin$cls = "_SVGFontFaceElement";
+ if (!"name" in _SVGFontFaceElement)
+ _SVGFontFaceElement.name = "_SVGFontFaceElement";
+ $desc = $collectedClasses._SVGFontFaceElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGFontFaceElement.prototype = $desc;
+ function _SVGFontFaceFormatElement() {
+ }
+ _SVGFontFaceFormatElement.builtin$cls = "_SVGFontFaceFormatElement";
+ if (!"name" in _SVGFontFaceFormatElement)
+ _SVGFontFaceFormatElement.name = "_SVGFontFaceFormatElement";
+ $desc = $collectedClasses._SVGFontFaceFormatElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGFontFaceFormatElement.prototype = $desc;
+ function _SVGFontFaceNameElement() {
+ }
+ _SVGFontFaceNameElement.builtin$cls = "_SVGFontFaceNameElement";
+ if (!"name" in _SVGFontFaceNameElement)
+ _SVGFontFaceNameElement.name = "_SVGFontFaceNameElement";
+ $desc = $collectedClasses._SVGFontFaceNameElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGFontFaceNameElement.prototype = $desc;
+ function _SVGFontFaceSrcElement() {
+ }
+ _SVGFontFaceSrcElement.builtin$cls = "_SVGFontFaceSrcElement";
+ if (!"name" in _SVGFontFaceSrcElement)
+ _SVGFontFaceSrcElement.name = "_SVGFontFaceSrcElement";
+ $desc = $collectedClasses._SVGFontFaceSrcElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGFontFaceSrcElement.prototype = $desc;
+ function _SVGFontFaceUriElement() {
+ }
+ _SVGFontFaceUriElement.builtin$cls = "_SVGFontFaceUriElement";
+ if (!"name" in _SVGFontFaceUriElement)
+ _SVGFontFaceUriElement.name = "_SVGFontFaceUriElement";
+ $desc = $collectedClasses._SVGFontFaceUriElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGFontFaceUriElement.prototype = $desc;
+ function _SVGGlyphElement() {
+ }
+ _SVGGlyphElement.builtin$cls = "_SVGGlyphElement";
+ if (!"name" in _SVGGlyphElement)
+ _SVGGlyphElement.name = "_SVGGlyphElement";
+ $desc = $collectedClasses._SVGGlyphElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGGlyphElement.prototype = $desc;
+ function _SVGGlyphRefElement() {
+ }
+ _SVGGlyphRefElement.builtin$cls = "_SVGGlyphRefElement";
+ if (!"name" in _SVGGlyphRefElement)
+ _SVGGlyphRefElement.name = "_SVGGlyphRefElement";
+ $desc = $collectedClasses._SVGGlyphRefElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGGlyphRefElement.prototype = $desc;
+ function _SVGHKernElement() {
+ }
+ _SVGHKernElement.builtin$cls = "_SVGHKernElement";
+ if (!"name" in _SVGHKernElement)
+ _SVGHKernElement.name = "_SVGHKernElement";
+ $desc = $collectedClasses._SVGHKernElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGHKernElement.prototype = $desc;
+ function _SVGMPathElement() {
+ }
+ _SVGMPathElement.builtin$cls = "_SVGMPathElement";
+ if (!"name" in _SVGMPathElement)
+ _SVGMPathElement.name = "_SVGMPathElement";
+ $desc = $collectedClasses._SVGMPathElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGMPathElement.prototype = $desc;
+ function _SVGMissingGlyphElement() {
+ }
+ _SVGMissingGlyphElement.builtin$cls = "_SVGMissingGlyphElement";
+ if (!"name" in _SVGMissingGlyphElement)
+ _SVGMissingGlyphElement.name = "_SVGMissingGlyphElement";
+ $desc = $collectedClasses._SVGMissingGlyphElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGMissingGlyphElement.prototype = $desc;
+ function _SVGVKernElement() {
+ }
+ _SVGVKernElement.builtin$cls = "_SVGVKernElement";
+ if (!"name" in _SVGVKernElement)
+ _SVGVKernElement.name = "_SVGVKernElement";
+ $desc = $collectedClasses._SVGVKernElement;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SVGVKernElement.prototype = $desc;
+ function AudioProcessingEvent() {
+ }
+ AudioProcessingEvent.builtin$cls = "AudioProcessingEvent";
+ if (!"name" in AudioProcessingEvent)
+ AudioProcessingEvent.name = "AudioProcessingEvent";
+ $desc = $collectedClasses.AudioProcessingEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ AudioProcessingEvent.prototype = $desc;
+ function OfflineAudioCompletionEvent() {
+ }
+ OfflineAudioCompletionEvent.builtin$cls = "OfflineAudioCompletionEvent";
+ if (!"name" in OfflineAudioCompletionEvent)
+ OfflineAudioCompletionEvent.name = "OfflineAudioCompletionEvent";
+ $desc = $collectedClasses.OfflineAudioCompletionEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ OfflineAudioCompletionEvent.prototype = $desc;
+ function ContextEvent() {
+ }
+ ContextEvent.builtin$cls = "ContextEvent";
+ if (!"name" in ContextEvent)
+ ContextEvent.name = "ContextEvent";
+ $desc = $collectedClasses.ContextEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ContextEvent.prototype = $desc;
+ function SqlError() {
+ }
+ SqlError.builtin$cls = "SqlError";
+ if (!"name" in SqlError)
+ SqlError.name = "SqlError";
+ $desc = $collectedClasses.SqlError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ SqlError.prototype = $desc;
+ function NativeTypedData() {
+ }
+ NativeTypedData.builtin$cls = "NativeTypedData";
+ if (!"name" in NativeTypedData)
+ NativeTypedData.name = "NativeTypedData";
+ $desc = $collectedClasses.NativeTypedData;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NativeTypedData.prototype = $desc;
+ function NativeUint8List() {
+ }
+ NativeUint8List.builtin$cls = "NativeUint8List";
+ if (!"name" in NativeUint8List)
+ NativeUint8List.name = "NativeUint8List";
+ $desc = $collectedClasses.NativeUint8List;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NativeUint8List.prototype = $desc;
+ function JS_CONST(code) {
+ this.code = code;
+ }
+ JS_CONST.builtin$cls = "JS_CONST";
+ if (!"name" in JS_CONST)
+ JS_CONST.name = "JS_CONST";
+ $desc = $collectedClasses.JS_CONST;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JS_CONST.prototype = $desc;
+ function Interceptor() {
+ }
+ Interceptor.builtin$cls = "Interceptor";
+ if (!"name" in Interceptor)
+ Interceptor.name = "Interceptor";
+ $desc = $collectedClasses.Interceptor;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Interceptor.prototype = $desc;
+ function JSBool() {
+ }
+ JSBool.builtin$cls = "bool";
+ if (!"name" in JSBool)
+ JSBool.name = "JSBool";
+ $desc = $collectedClasses.JSBool;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSBool.prototype = $desc;
+ function JSNull() {
+ }
+ JSNull.builtin$cls = "Null";
+ if (!"name" in JSNull)
+ JSNull.name = "JSNull";
+ $desc = $collectedClasses.JSNull;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSNull.prototype = $desc;
+ function JavaScriptObject() {
+ }
+ JavaScriptObject.builtin$cls = "JavaScriptObject";
+ if (!"name" in JavaScriptObject)
+ JavaScriptObject.name = "JavaScriptObject";
+ $desc = $collectedClasses.JavaScriptObject;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JavaScriptObject.prototype = $desc;
+ function PlainJavaScriptObject() {
+ }
+ PlainJavaScriptObject.builtin$cls = "PlainJavaScriptObject";
+ if (!"name" in PlainJavaScriptObject)
+ PlainJavaScriptObject.name = "PlainJavaScriptObject";
+ $desc = $collectedClasses.PlainJavaScriptObject;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ PlainJavaScriptObject.prototype = $desc;
+ function UnknownJavaScriptObject() {
+ }
+ UnknownJavaScriptObject.builtin$cls = "UnknownJavaScriptObject";
+ if (!"name" in UnknownJavaScriptObject)
+ UnknownJavaScriptObject.name = "UnknownJavaScriptObject";
+ $desc = $collectedClasses.UnknownJavaScriptObject;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UnknownJavaScriptObject.prototype = $desc;
+ function JSArray() {
+ }
+ JSArray.builtin$cls = "List";
+ if (!"name" in JSArray)
+ JSArray.name = "JSArray";
+ $desc = $collectedClasses.JSArray;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSArray.prototype = $desc;
+ function JSNumber() {
+ }
+ JSNumber.builtin$cls = "num";
+ if (!"name" in JSNumber)
+ JSNumber.name = "JSNumber";
+ $desc = $collectedClasses.JSNumber;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSNumber.prototype = $desc;
+ function JSInt() {
+ }
+ JSInt.builtin$cls = "int";
+ if (!"name" in JSInt)
+ JSInt.name = "JSInt";
+ $desc = $collectedClasses.JSInt;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSInt.prototype = $desc;
+ function JSDouble() {
+ }
+ JSDouble.builtin$cls = "double";
+ if (!"name" in JSDouble)
+ JSDouble.name = "JSDouble";
+ $desc = $collectedClasses.JSDouble;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSDouble.prototype = $desc;
+ function JSString() {
+ }
+ JSString.builtin$cls = "String";
+ if (!"name" in JSString)
+ JSString.name = "JSString";
+ $desc = $collectedClasses.JSString;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSString.prototype = $desc;
+ function startRootIsolate_closure(box_0, entry_1) {
+ this.box_0 = box_0;
+ this.entry_1 = entry_1;
+ }
+ startRootIsolate_closure.builtin$cls = "startRootIsolate_closure";
+ if (!"name" in startRootIsolate_closure)
+ startRootIsolate_closure.name = "startRootIsolate_closure";
+ $desc = $collectedClasses.startRootIsolate_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ startRootIsolate_closure.prototype = $desc;
+ function startRootIsolate_closure0(box_0, entry_2) {
+ this.box_0 = box_0;
+ this.entry_2 = entry_2;
+ }
+ startRootIsolate_closure0.builtin$cls = "startRootIsolate_closure0";
+ if (!"name" in startRootIsolate_closure0)
+ startRootIsolate_closure0.name = "startRootIsolate_closure0";
+ $desc = $collectedClasses.startRootIsolate_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ startRootIsolate_closure0.prototype = $desc;
+ function _Manager(nextIsolateId, currentManagerId, nextManagerId, currentContext, rootContext, topEventLoop, fromCommandLine, isWorker, supportsWorkers, isolates, mainManager, managers, entry) {
+ this.nextIsolateId = nextIsolateId;
+ this.currentManagerId = currentManagerId;
+ this.nextManagerId = nextManagerId;
+ this.currentContext = currentContext;
+ this.rootContext = rootContext;
+ this.topEventLoop = topEventLoop;
+ this.fromCommandLine = fromCommandLine;
+ this.isWorker = isWorker;
+ this.supportsWorkers = supportsWorkers;
+ this.isolates = isolates;
+ this.mainManager = mainManager;
+ this.managers = managers;
+ this.entry = entry;
+ }
+ _Manager.builtin$cls = "_Manager";
+ if (!"name" in _Manager)
+ _Manager.name = "_Manager";
+ $desc = $collectedClasses._Manager;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Manager.prototype = $desc;
+ function _IsolateContext(id, ports, weakPorts, isolateStatics, controlPort, pauseCapability, terminateCapability, isPaused, delayedEvents, pauseTokens, doneHandlers, errorsAreFatal) {
+ this.id = id;
+ this.ports = ports;
+ this.weakPorts = weakPorts;
+ this.isolateStatics = isolateStatics;
+ this.controlPort = controlPort;
+ this.pauseCapability = pauseCapability;
+ this.terminateCapability = terminateCapability;
+ this.isPaused = isPaused;
+ this.delayedEvents = delayedEvents;
+ this.pauseTokens = pauseTokens;
+ this.doneHandlers = doneHandlers;
+ this.errorsAreFatal = errorsAreFatal;
+ }
+ _IsolateContext.builtin$cls = "_IsolateContext";
+ if (!"name" in _IsolateContext)
+ _IsolateContext.name = "_IsolateContext";
+ $desc = $collectedClasses._IsolateContext;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _IsolateContext.prototype = $desc;
+ _IsolateContext.prototype.get$isolateStatics = function() {
+ return this.isolateStatics;
+ };
+ _IsolateContext.prototype.get$controlPort = function() {
+ return this.controlPort;
+ };
+ function _IsolateContext_handlePing_closure(responsePort_0) {
+ this.responsePort_0 = responsePort_0;
+ }
+ _IsolateContext_handlePing_closure.builtin$cls = "_IsolateContext_handlePing_closure";
+ if (!"name" in _IsolateContext_handlePing_closure)
+ _IsolateContext_handlePing_closure.name = "_IsolateContext_handlePing_closure";
+ $desc = $collectedClasses._IsolateContext_handlePing_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _IsolateContext_handlePing_closure.prototype = $desc;
+ function _EventLoop(events, _activeJsAsyncCount) {
+ this.events = events;
+ this._activeJsAsyncCount = _activeJsAsyncCount;
+ }
+ _EventLoop.builtin$cls = "_EventLoop";
+ if (!"name" in _EventLoop)
+ _EventLoop.name = "_EventLoop";
+ $desc = $collectedClasses._EventLoop;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _EventLoop.prototype = $desc;
+ function _EventLoop__runHelper_next(this_0) {
+ this.this_0 = this_0;
+ }
+ _EventLoop__runHelper_next.builtin$cls = "_EventLoop__runHelper_next";
+ if (!"name" in _EventLoop__runHelper_next)
+ _EventLoop__runHelper_next.name = "_EventLoop__runHelper_next";
+ $desc = $collectedClasses._EventLoop__runHelper_next;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _EventLoop__runHelper_next.prototype = $desc;
+ function _IsolateEvent(isolate, fn, message) {
+ this.isolate = isolate;
+ this.fn = fn;
+ this.message = message;
+ }
+ _IsolateEvent.builtin$cls = "_IsolateEvent";
+ if (!"name" in _IsolateEvent)
+ _IsolateEvent.name = "_IsolateEvent";
+ $desc = $collectedClasses._IsolateEvent;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _IsolateEvent.prototype = $desc;
+ function _MainManagerStub() {
+ }
+ _MainManagerStub.builtin$cls = "_MainManagerStub";
+ if (!"name" in _MainManagerStub)
+ _MainManagerStub.name = "_MainManagerStub";
+ $desc = $collectedClasses._MainManagerStub;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _MainManagerStub.prototype = $desc;
+ function IsolateNatives__processWorkerMessage_closure(entryPoint_0, args_1, message_2, isSpawnUri_3, startPaused_4, replyTo_5) {
+ this.entryPoint_0 = entryPoint_0;
+ this.args_1 = args_1;
+ this.message_2 = message_2;
+ this.isSpawnUri_3 = isSpawnUri_3;
+ this.startPaused_4 = startPaused_4;
+ this.replyTo_5 = replyTo_5;
+ }
+ IsolateNatives__processWorkerMessage_closure.builtin$cls = "IsolateNatives__processWorkerMessage_closure";
+ if (!"name" in IsolateNatives__processWorkerMessage_closure)
+ IsolateNatives__processWorkerMessage_closure.name = "IsolateNatives__processWorkerMessage_closure";
+ $desc = $collectedClasses.IsolateNatives__processWorkerMessage_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ IsolateNatives__processWorkerMessage_closure.prototype = $desc;
+ function IsolateNatives__startIsolate_runStartFunction(topLevel_0, args_1, message_2, isSpawnUri_3) {
+ this.topLevel_0 = topLevel_0;
+ this.args_1 = args_1;
+ this.message_2 = message_2;
+ this.isSpawnUri_3 = isSpawnUri_3;
+ }
+ IsolateNatives__startIsolate_runStartFunction.builtin$cls = "IsolateNatives__startIsolate_runStartFunction";
+ if (!"name" in IsolateNatives__startIsolate_runStartFunction)
+ IsolateNatives__startIsolate_runStartFunction.name = "IsolateNatives__startIsolate_runStartFunction";
+ $desc = $collectedClasses.IsolateNatives__startIsolate_runStartFunction;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ IsolateNatives__startIsolate_runStartFunction.prototype = $desc;
+ function _BaseSendPort() {
+ }
+ _BaseSendPort.builtin$cls = "_BaseSendPort";
+ if (!"name" in _BaseSendPort)
+ _BaseSendPort.name = "_BaseSendPort";
+ $desc = $collectedClasses._BaseSendPort;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _BaseSendPort.prototype = $desc;
+ function _NativeJsSendPort(_receivePort, _isolateId) {
+ this._receivePort = _receivePort;
+ this._isolateId = _isolateId;
+ }
+ _NativeJsSendPort.builtin$cls = "_NativeJsSendPort";
+ if (!"name" in _NativeJsSendPort)
+ _NativeJsSendPort.name = "_NativeJsSendPort";
+ $desc = $collectedClasses._NativeJsSendPort;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _NativeJsSendPort.prototype = $desc;
+ function _NativeJsSendPort_send_closure(box_0, this_1, shouldSerialize_2) {
+ this.box_0 = box_0;
+ this.this_1 = this_1;
+ this.shouldSerialize_2 = shouldSerialize_2;
+ }
+ _NativeJsSendPort_send_closure.builtin$cls = "_NativeJsSendPort_send_closure";
+ if (!"name" in _NativeJsSendPort_send_closure)
+ _NativeJsSendPort_send_closure.name = "_NativeJsSendPort_send_closure";
+ $desc = $collectedClasses._NativeJsSendPort_send_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _NativeJsSendPort_send_closure.prototype = $desc;
+ function _WorkerSendPort(_workerId, _receivePortId, _isolateId) {
+ this._workerId = _workerId;
+ this._receivePortId = _receivePortId;
+ this._isolateId = _isolateId;
+ }
+ _WorkerSendPort.builtin$cls = "_WorkerSendPort";
+ if (!"name" in _WorkerSendPort)
+ _WorkerSendPort.name = "_WorkerSendPort";
+ $desc = $collectedClasses._WorkerSendPort;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _WorkerSendPort.prototype = $desc;
+ function RawReceivePortImpl(_id, _handler, _isClosed) {
+ this._id = _id;
+ this._handler = _handler;
+ this._isClosed = _isClosed;
+ }
+ RawReceivePortImpl.builtin$cls = "RawReceivePortImpl";
+ if (!"name" in RawReceivePortImpl)
+ RawReceivePortImpl.name = "RawReceivePortImpl";
+ $desc = $collectedClasses.RawReceivePortImpl;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RawReceivePortImpl.prototype = $desc;
+ RawReceivePortImpl.prototype.get$_id = function() {
+ return this._id;
+ };
+ RawReceivePortImpl.prototype.get$_isClosed = function() {
+ return this._isClosed;
+ };
+ function _JsSerializer(_nextFreeRefId, _visited) {
+ this._nextFreeRefId = _nextFreeRefId;
+ this._visited = _visited;
+ }
+ _JsSerializer.builtin$cls = "_JsSerializer";
+ if (!"name" in _JsSerializer)
+ _JsSerializer.name = "_JsSerializer";
+ $desc = $collectedClasses._JsSerializer;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _JsSerializer.prototype = $desc;
+ function _JsCopier(_visited) {
+ this._visited = _visited;
+ }
+ _JsCopier.builtin$cls = "_JsCopier";
+ if (!"name" in _JsCopier)
+ _JsCopier.name = "_JsCopier";
+ $desc = $collectedClasses._JsCopier;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _JsCopier.prototype = $desc;
+ function _JsDeserializer(_deserialized) {
+ this._deserialized = _deserialized;
+ }
+ _JsDeserializer.builtin$cls = "_JsDeserializer";
+ if (!"name" in _JsDeserializer)
+ _JsDeserializer.name = "_JsDeserializer";
+ $desc = $collectedClasses._JsDeserializer;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _JsDeserializer.prototype = $desc;
+ function _JsVisitedMap(tagged) {
+ this.tagged = tagged;
+ }
+ _JsVisitedMap.builtin$cls = "_JsVisitedMap";
+ if (!"name" in _JsVisitedMap)
+ _JsVisitedMap.name = "_JsVisitedMap";
+ $desc = $collectedClasses._JsVisitedMap;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _JsVisitedMap.prototype = $desc;
+ function _MessageTraverserVisitedMap() {
+ }
+ _MessageTraverserVisitedMap.builtin$cls = "_MessageTraverserVisitedMap";
+ if (!"name" in _MessageTraverserVisitedMap)
+ _MessageTraverserVisitedMap.name = "_MessageTraverserVisitedMap";
+ $desc = $collectedClasses._MessageTraverserVisitedMap;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _MessageTraverserVisitedMap.prototype = $desc;
+ function _MessageTraverser() {
+ }
+ _MessageTraverser.builtin$cls = "_MessageTraverser";
+ if (!"name" in _MessageTraverser)
+ _MessageTraverser.name = "_MessageTraverser";
+ $desc = $collectedClasses._MessageTraverser;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _MessageTraverser.prototype = $desc;
+ function _Copier() {
+ }
+ _Copier.builtin$cls = "_Copier";
+ if (!"name" in _Copier)
+ _Copier.name = "_Copier";
+ $desc = $collectedClasses._Copier;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Copier.prototype = $desc;
+ function _Copier_visitMap_closure(box_0, this_1) {
+ this.box_0 = box_0;
+ this.this_1 = this_1;
+ }
+ _Copier_visitMap_closure.builtin$cls = "_Copier_visitMap_closure";
+ if (!"name" in _Copier_visitMap_closure)
+ _Copier_visitMap_closure.name = "_Copier_visitMap_closure";
+ $desc = $collectedClasses._Copier_visitMap_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Copier_visitMap_closure.prototype = $desc;
+ function _Serializer() {
+ }
+ _Serializer.builtin$cls = "_Serializer";
+ if (!"name" in _Serializer)
+ _Serializer.name = "_Serializer";
+ $desc = $collectedClasses._Serializer;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Serializer.prototype = $desc;
+ function _Deserializer() {
+ }
+ _Deserializer.builtin$cls = "_Deserializer";
+ if (!"name" in _Deserializer)
+ _Deserializer.name = "_Deserializer";
+ $desc = $collectedClasses._Deserializer;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Deserializer.prototype = $desc;
+ function TimerImpl(_once, _inEventLoop, _handle) {
+ this._once = _once;
+ this._inEventLoop = _inEventLoop;
+ this._handle = _handle;
+ }
+ TimerImpl.builtin$cls = "TimerImpl";
+ if (!"name" in TimerImpl)
+ TimerImpl.name = "TimerImpl";
+ $desc = $collectedClasses.TimerImpl;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TimerImpl.prototype = $desc;
+ function TimerImpl_internalCallback(this_0, callback_1) {
+ this.this_0 = this_0;
+ this.callback_1 = callback_1;
+ }
+ TimerImpl_internalCallback.builtin$cls = "TimerImpl_internalCallback";
+ if (!"name" in TimerImpl_internalCallback)
+ TimerImpl_internalCallback.name = "TimerImpl_internalCallback";
+ $desc = $collectedClasses.TimerImpl_internalCallback;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TimerImpl_internalCallback.prototype = $desc;
+ function TimerImpl_internalCallback0(this_2, callback_3) {
+ this.this_2 = this_2;
+ this.callback_3 = callback_3;
+ }
+ TimerImpl_internalCallback0.builtin$cls = "TimerImpl_internalCallback0";
+ if (!"name" in TimerImpl_internalCallback0)
+ TimerImpl_internalCallback0.name = "TimerImpl_internalCallback0";
+ $desc = $collectedClasses.TimerImpl_internalCallback0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TimerImpl_internalCallback0.prototype = $desc;
+ function CapabilityImpl(_id) {
+ this._id = _id;
+ }
+ CapabilityImpl.builtin$cls = "CapabilityImpl";
+ if (!"name" in CapabilityImpl)
+ CapabilityImpl.name = "CapabilityImpl";
+ $desc = $collectedClasses.CapabilityImpl;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CapabilityImpl.prototype = $desc;
+ CapabilityImpl.prototype.get$_id = function() {
+ return this._id;
+ };
+ function ReflectionInfo(jsFunction, data, isAccessor, requiredParameterCount, optionalParameterCount, areOptionalParametersNamed, functionType, cachedSortedIndices) {
+ this.jsFunction = jsFunction;
+ this.data = data;
+ this.isAccessor = isAccessor;
+ this.requiredParameterCount = requiredParameterCount;
+ this.optionalParameterCount = optionalParameterCount;
+ this.areOptionalParametersNamed = areOptionalParametersNamed;
+ this.functionType = functionType;
+ this.cachedSortedIndices = cachedSortedIndices;
+ }
+ ReflectionInfo.builtin$cls = "ReflectionInfo";
+ if (!"name" in ReflectionInfo)
+ ReflectionInfo.name = "ReflectionInfo";
+ $desc = $collectedClasses.ReflectionInfo;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ReflectionInfo.prototype = $desc;
+ function TypeErrorDecoder(_pattern, _arguments, _argumentsExpr, _expr, _method, _receiver) {
+ this._pattern = _pattern;
+ this._arguments = _arguments;
+ this._argumentsExpr = _argumentsExpr;
+ this._expr = _expr;
+ this._method = _method;
+ this._receiver = _receiver;
+ }
+ TypeErrorDecoder.builtin$cls = "TypeErrorDecoder";
+ if (!"name" in TypeErrorDecoder)
+ TypeErrorDecoder.name = "TypeErrorDecoder";
+ $desc = $collectedClasses.TypeErrorDecoder;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TypeErrorDecoder.prototype = $desc;
+ function NullError(_message, _method) {
+ this._message = _message;
+ this._method = _method;
+ }
+ NullError.builtin$cls = "NullError";
+ if (!"name" in NullError)
+ NullError.name = "NullError";
+ $desc = $collectedClasses.NullError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NullError.prototype = $desc;
+ function JsNoSuchMethodError(_message, _method, _receiver) {
+ this._message = _message;
+ this._method = _method;
+ this._receiver = _receiver;
+ }
+ JsNoSuchMethodError.builtin$cls = "JsNoSuchMethodError";
+ if (!"name" in JsNoSuchMethodError)
+ JsNoSuchMethodError.name = "JsNoSuchMethodError";
+ $desc = $collectedClasses.JsNoSuchMethodError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JsNoSuchMethodError.prototype = $desc;
+ function UnknownJsTypeError(_message) {
+ this._message = _message;
+ }
+ UnknownJsTypeError.builtin$cls = "UnknownJsTypeError";
+ if (!"name" in UnknownJsTypeError)
+ UnknownJsTypeError.name = "UnknownJsTypeError";
+ $desc = $collectedClasses.UnknownJsTypeError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UnknownJsTypeError.prototype = $desc;
+ function unwrapException_saveStackTrace(ex_0) {
+ this.ex_0 = ex_0;
+ }
+ unwrapException_saveStackTrace.builtin$cls = "unwrapException_saveStackTrace";
+ if (!"name" in unwrapException_saveStackTrace)
+ unwrapException_saveStackTrace.name = "unwrapException_saveStackTrace";
+ $desc = $collectedClasses.unwrapException_saveStackTrace;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ unwrapException_saveStackTrace.prototype = $desc;
+ function _StackTrace(_exception, _trace) {
+ this._exception = _exception;
+ this._trace = _trace;
+ }
+ _StackTrace.builtin$cls = "_StackTrace";
+ if (!"name" in _StackTrace)
+ _StackTrace.name = "_StackTrace";
+ $desc = $collectedClasses._StackTrace;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _StackTrace.prototype = $desc;
+ function invokeClosure_closure(closure_0) {
+ this.closure_0 = closure_0;
+ }
+ invokeClosure_closure.builtin$cls = "invokeClosure_closure";
+ if (!"name" in invokeClosure_closure)
+ invokeClosure_closure.name = "invokeClosure_closure";
+ $desc = $collectedClasses.invokeClosure_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ invokeClosure_closure.prototype = $desc;
+ function invokeClosure_closure0(closure_1, arg1_2) {
+ this.closure_1 = closure_1;
+ this.arg1_2 = arg1_2;
+ }
+ invokeClosure_closure0.builtin$cls = "invokeClosure_closure0";
+ if (!"name" in invokeClosure_closure0)
+ invokeClosure_closure0.name = "invokeClosure_closure0";
+ $desc = $collectedClasses.invokeClosure_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ invokeClosure_closure0.prototype = $desc;
+ function invokeClosure_closure1(closure_3, arg1_4, arg2_5) {
+ this.closure_3 = closure_3;
+ this.arg1_4 = arg1_4;
+ this.arg2_5 = arg2_5;
+ }
+ invokeClosure_closure1.builtin$cls = "invokeClosure_closure1";
+ if (!"name" in invokeClosure_closure1)
+ invokeClosure_closure1.name = "invokeClosure_closure1";
+ $desc = $collectedClasses.invokeClosure_closure1;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ invokeClosure_closure1.prototype = $desc;
+ function invokeClosure_closure2(closure_6, arg1_7, arg2_8, arg3_9) {
+ this.closure_6 = closure_6;
+ this.arg1_7 = arg1_7;
+ this.arg2_8 = arg2_8;
+ this.arg3_9 = arg3_9;
+ }
+ invokeClosure_closure2.builtin$cls = "invokeClosure_closure2";
+ if (!"name" in invokeClosure_closure2)
+ invokeClosure_closure2.name = "invokeClosure_closure2";
+ $desc = $collectedClasses.invokeClosure_closure2;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ invokeClosure_closure2.prototype = $desc;
+ function invokeClosure_closure3(closure_10, arg1_11, arg2_12, arg3_13, arg4_14) {
+ this.closure_10 = closure_10;
+ this.arg1_11 = arg1_11;
+ this.arg2_12 = arg2_12;
+ this.arg3_13 = arg3_13;
+ this.arg4_14 = arg4_14;
+ }
+ invokeClosure_closure3.builtin$cls = "invokeClosure_closure3";
+ if (!"name" in invokeClosure_closure3)
+ invokeClosure_closure3.name = "invokeClosure_closure3";
+ $desc = $collectedClasses.invokeClosure_closure3;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ invokeClosure_closure3.prototype = $desc;
+ function Closure() {
+ }
+ Closure.builtin$cls = "Closure";
+ if (!"name" in Closure)
+ Closure.name = "Closure";
+ $desc = $collectedClasses.Closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Closure.prototype = $desc;
+ function TearOffClosure() {
+ }
+ TearOffClosure.builtin$cls = "TearOffClosure";
+ if (!"name" in TearOffClosure)
+ TearOffClosure.name = "TearOffClosure";
+ $desc = $collectedClasses.TearOffClosure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ TearOffClosure.prototype = $desc;
+ function BoundClosure(_self, __js_helper$_target, _receiver, __js_helper$_name) {
+ this._self = _self;
+ this.__js_helper$_target = __js_helper$_target;
+ this._receiver = _receiver;
+ this.__js_helper$_name = __js_helper$_name;
+ }
+ BoundClosure.builtin$cls = "BoundClosure";
+ if (!"name" in BoundClosure)
+ BoundClosure.name = "BoundClosure";
+ $desc = $collectedClasses.BoundClosure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ BoundClosure.prototype = $desc;
+ function RuntimeError(message) {
+ this.message = message;
+ }
+ RuntimeError.builtin$cls = "RuntimeError";
+ if (!"name" in RuntimeError)
+ RuntimeError.name = "RuntimeError";
+ $desc = $collectedClasses.RuntimeError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RuntimeError.prototype = $desc;
+ function RuntimeType() {
+ }
+ RuntimeType.builtin$cls = "RuntimeType";
+ if (!"name" in RuntimeType)
+ RuntimeType.name = "RuntimeType";
+ $desc = $collectedClasses.RuntimeType;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RuntimeType.prototype = $desc;
+ function RuntimeFunctionType(returnType, parameterTypes, optionalParameterTypes, namedParameters) {
+ this.returnType = returnType;
+ this.parameterTypes = parameterTypes;
+ this.optionalParameterTypes = optionalParameterTypes;
+ this.namedParameters = namedParameters;
+ }
+ RuntimeFunctionType.builtin$cls = "RuntimeFunctionType";
+ if (!"name" in RuntimeFunctionType)
+ RuntimeFunctionType.name = "RuntimeFunctionType";
+ $desc = $collectedClasses.RuntimeFunctionType;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RuntimeFunctionType.prototype = $desc;
+ function DynamicRuntimeType() {
+ }
+ DynamicRuntimeType.builtin$cls = "DynamicRuntimeType";
+ if (!"name" in DynamicRuntimeType)
+ DynamicRuntimeType.name = "DynamicRuntimeType";
+ $desc = $collectedClasses.DynamicRuntimeType;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DynamicRuntimeType.prototype = $desc;
+ function initHooks_closure(getTag_0) {
+ this.getTag_0 = getTag_0;
+ }
+ initHooks_closure.builtin$cls = "initHooks_closure";
+ if (!"name" in initHooks_closure)
+ initHooks_closure.name = "initHooks_closure";
+ $desc = $collectedClasses.initHooks_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ initHooks_closure.prototype = $desc;
+ function initHooks_closure0(getUnknownTag_1) {
+ this.getUnknownTag_1 = getUnknownTag_1;
+ }
+ initHooks_closure0.builtin$cls = "initHooks_closure0";
+ if (!"name" in initHooks_closure0)
+ initHooks_closure0.name = "initHooks_closure0";
+ $desc = $collectedClasses.initHooks_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ initHooks_closure0.prototype = $desc;
+ function initHooks_closure1(prototypeForTag_2) {
+ this.prototypeForTag_2 = prototypeForTag_2;
+ }
+ initHooks_closure1.builtin$cls = "initHooks_closure1";
+ if (!"name" in initHooks_closure1)
+ initHooks_closure1.name = "initHooks_closure1";
+ $desc = $collectedClasses.initHooks_closure1;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ initHooks_closure1.prototype = $desc;
+ function JSSyntaxRegExp(_nativeRegExp, _nativeGlobalRegExp, _nativeAnchoredRegExp) {
+ this._nativeRegExp = _nativeRegExp;
+ this._nativeGlobalRegExp = _nativeGlobalRegExp;
+ this._nativeAnchoredRegExp = _nativeAnchoredRegExp;
+ }
+ JSSyntaxRegExp.builtin$cls = "JSSyntaxRegExp";
+ if (!"name" in JSSyntaxRegExp)
+ JSSyntaxRegExp.name = "JSSyntaxRegExp";
+ $desc = $collectedClasses.JSSyntaxRegExp;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JSSyntaxRegExp.prototype = $desc;
+ function _MatchImplementation(pattern, _match) {
+ this.pattern = pattern;
+ this._match = _match;
+ }
+ _MatchImplementation.builtin$cls = "_MatchImplementation";
+ if (!"name" in _MatchImplementation)
+ _MatchImplementation.name = "_MatchImplementation";
+ $desc = $collectedClasses._MatchImplementation;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _MatchImplementation.prototype = $desc;
+ function BankAccount(_number, owner, _balance, _pin_code, date_created, date_modified) {
+ this._number = _number;
+ this.owner = owner;
+ this._balance = _balance;
+ this._pin_code = _pin_code;
+ this.date_created = date_created;
+ this.date_modified = date_modified;
+ }
+ BankAccount.builtin$cls = "BankAccount";
+ if (!"name" in BankAccount)
+ BankAccount.name = "BankAccount";
+ $desc = $collectedClasses.BankAccount;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ BankAccount.prototype = $desc;
+ function Person(_bank_terminal$_name, address, _email, _gender, _date_birth) {
+ this._bank_terminal$_name = _bank_terminal$_name;
+ this.address = address;
+ this._email = _email;
+ this._gender = _gender;
+ this._date_birth = _date_birth;
+ }
+ Person.builtin$cls = "Person";
+ if (!"name" in Person)
+ Person.name = "Person";
+ $desc = $collectedClasses.Person;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Person.prototype = $desc;
+ function ListIterable() {
+ }
+ ListIterable.builtin$cls = "ListIterable";
+ if (!"name" in ListIterable)
+ ListIterable.name = "ListIterable";
+ $desc = $collectedClasses.ListIterable;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ListIterable.prototype = $desc;
+ function ListIterator(_iterable, _length, _index, _current) {
+ this._iterable = _iterable;
+ this._length = _length;
+ this._index = _index;
+ this._current = _current;
+ }
+ ListIterator.builtin$cls = "ListIterator";
+ if (!"name" in ListIterator)
+ ListIterator.name = "ListIterator";
+ $desc = $collectedClasses.ListIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ListIterator.prototype = $desc;
+ function MappedIterable(_iterable, _f) {
+ this._iterable = _iterable;
+ this._f = _f;
+ }
+ MappedIterable.builtin$cls = "MappedIterable";
+ if (!"name" in MappedIterable)
+ MappedIterable.name = "MappedIterable";
+ $desc = $collectedClasses.MappedIterable;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MappedIterable.prototype = $desc;
+ function EfficientLengthMappedIterable(_iterable, _f) {
+ this._iterable = _iterable;
+ this._f = _f;
+ }
+ EfficientLengthMappedIterable.builtin$cls = "EfficientLengthMappedIterable";
+ if (!"name" in EfficientLengthMappedIterable)
+ EfficientLengthMappedIterable.name = "EfficientLengthMappedIterable";
+ $desc = $collectedClasses.EfficientLengthMappedIterable;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ EfficientLengthMappedIterable.prototype = $desc;
+ function MappedIterator(_current, _iterator, _f) {
+ this._current = _current;
+ this._iterator = _iterator;
+ this._f = _f;
+ }
+ MappedIterator.builtin$cls = "MappedIterator";
+ if (!"name" in MappedIterator)
+ MappedIterator.name = "MappedIterator";
+ $desc = $collectedClasses.MappedIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MappedIterator.prototype = $desc;
+ function MappedListIterable(_source, _f) {
+ this._source = _source;
+ this._f = _f;
+ }
+ MappedListIterable.builtin$cls = "MappedListIterable";
+ if (!"name" in MappedListIterable)
+ MappedListIterable.name = "MappedListIterable";
+ $desc = $collectedClasses.MappedListIterable;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ MappedListIterable.prototype = $desc;
+ function WhereIterable(_iterable, _f) {
+ this._iterable = _iterable;
+ this._f = _f;
+ }
+ WhereIterable.builtin$cls = "WhereIterable";
+ if (!"name" in WhereIterable)
+ WhereIterable.name = "WhereIterable";
+ $desc = $collectedClasses.WhereIterable;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ WhereIterable.prototype = $desc;
+ function WhereIterator(_iterator, _f) {
+ this._iterator = _iterator;
+ this._f = _f;
+ }
+ WhereIterator.builtin$cls = "WhereIterator";
+ if (!"name" in WhereIterator)
+ WhereIterator.name = "WhereIterator";
+ $desc = $collectedClasses.WhereIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ WhereIterator.prototype = $desc;
+ function FixedLengthListMixin() {
+ }
+ FixedLengthListMixin.builtin$cls = "FixedLengthListMixin";
+ if (!"name" in FixedLengthListMixin)
+ FixedLengthListMixin.name = "FixedLengthListMixin";
+ $desc = $collectedClasses.FixedLengthListMixin;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FixedLengthListMixin.prototype = $desc;
+ function _AsyncError(error, stackTrace) {
+ this.error = error;
+ this.stackTrace = stackTrace;
+ }
+ _AsyncError.builtin$cls = "_AsyncError";
+ if (!"name" in _AsyncError)
+ _AsyncError.name = "_AsyncError";
+ $desc = $collectedClasses._AsyncError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _AsyncError.prototype = $desc;
+ _AsyncError.prototype.get$error = function(receiver) {
+ return this.error;
+ };
+ _AsyncError.prototype.get$stackTrace = function() {
+ return this.stackTrace;
+ };
+ function _Future(_state, _zone, _resultOrListeners, _nextListener, _onValueCallback, _errorTestCallback, _onErrorCallback, _whenCompleteActionCallback) {
+ this._state = _state;
+ this._zone = _zone;
+ this._resultOrListeners = _resultOrListeners;
+ this._nextListener = _nextListener;
+ this._onValueCallback = _onValueCallback;
+ this._errorTestCallback = _errorTestCallback;
+ this._onErrorCallback = _onErrorCallback;
+ this._whenCompleteActionCallback = _whenCompleteActionCallback;
+ }
+ _Future.builtin$cls = "_Future";
+ if (!"name" in _Future)
+ _Future.name = "_Future";
+ $desc = $collectedClasses._Future;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future.prototype = $desc;
+ _Future.prototype.get$_zone = function() {
+ return this._zone;
+ };
+ _Future.prototype.get$_nextListener = function() {
+ return this._nextListener;
+ };
+ function _Future__addListener_closure(this_0, listener_1) {
+ this.this_0 = this_0;
+ this.listener_1 = listener_1;
+ }
+ _Future__addListener_closure.builtin$cls = "_Future__addListener_closure";
+ if (!"name" in _Future__addListener_closure)
+ _Future__addListener_closure.name = "_Future__addListener_closure";
+ $desc = $collectedClasses._Future__addListener_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__addListener_closure.prototype = $desc;
+ function _Future__chainForeignFuture_closure(target_0) {
+ this.target_0 = target_0;
+ }
+ _Future__chainForeignFuture_closure.builtin$cls = "_Future__chainForeignFuture_closure";
+ if (!"name" in _Future__chainForeignFuture_closure)
+ _Future__chainForeignFuture_closure.name = "_Future__chainForeignFuture_closure";
+ $desc = $collectedClasses._Future__chainForeignFuture_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__chainForeignFuture_closure.prototype = $desc;
+ function _Future__chainForeignFuture_closure0(target_1) {
+ this.target_1 = target_1;
+ }
+ _Future__chainForeignFuture_closure0.builtin$cls = "_Future__chainForeignFuture_closure0";
+ if (!"name" in _Future__chainForeignFuture_closure0)
+ _Future__chainForeignFuture_closure0.name = "_Future__chainForeignFuture_closure0";
+ $desc = $collectedClasses._Future__chainForeignFuture_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__chainForeignFuture_closure0.prototype = $desc;
+ function _Future__propagateToListeners_handleValueCallback(box_1, listener_3, sourceValue_4, zone_5) {
+ this.box_1 = box_1;
+ this.listener_3 = listener_3;
+ this.sourceValue_4 = sourceValue_4;
+ this.zone_5 = zone_5;
+ }
+ _Future__propagateToListeners_handleValueCallback.builtin$cls = "_Future__propagateToListeners_handleValueCallback";
+ if (!"name" in _Future__propagateToListeners_handleValueCallback)
+ _Future__propagateToListeners_handleValueCallback.name = "_Future__propagateToListeners_handleValueCallback";
+ $desc = $collectedClasses._Future__propagateToListeners_handleValueCallback;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__propagateToListeners_handleValueCallback.prototype = $desc;
+ function _Future__propagateToListeners_handleError(box_2, box_1, listener_6, zone_7) {
+ this.box_2 = box_2;
+ this.box_1 = box_1;
+ this.listener_6 = listener_6;
+ this.zone_7 = zone_7;
+ }
+ _Future__propagateToListeners_handleError.builtin$cls = "_Future__propagateToListeners_handleError";
+ if (!"name" in _Future__propagateToListeners_handleError)
+ _Future__propagateToListeners_handleError.name = "_Future__propagateToListeners_handleError";
+ $desc = $collectedClasses._Future__propagateToListeners_handleError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__propagateToListeners_handleError.prototype = $desc;
+ function _Future__propagateToListeners_handleWhenCompleteCallback(box_2, box_1, hasError_8, listener_9, zone_10) {
+ this.box_2 = box_2;
+ this.box_1 = box_1;
+ this.hasError_8 = hasError_8;
+ this.listener_9 = listener_9;
+ this.zone_10 = zone_10;
+ }
+ _Future__propagateToListeners_handleWhenCompleteCallback.builtin$cls = "_Future__propagateToListeners_handleWhenCompleteCallback";
+ if (!"name" in _Future__propagateToListeners_handleWhenCompleteCallback)
+ _Future__propagateToListeners_handleWhenCompleteCallback.name = "_Future__propagateToListeners_handleWhenCompleteCallback";
+ $desc = $collectedClasses._Future__propagateToListeners_handleWhenCompleteCallback;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__propagateToListeners_handleWhenCompleteCallback.prototype = $desc;
+ function _Future__propagateToListeners_handleWhenCompleteCallback_closure(box_2, listener_11) {
+ this.box_2 = box_2;
+ this.listener_11 = listener_11;
+ }
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure.builtin$cls = "_Future__propagateToListeners_handleWhenCompleteCallback_closure";
+ if (!"name" in _Future__propagateToListeners_handleWhenCompleteCallback_closure)
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure.name = "_Future__propagateToListeners_handleWhenCompleteCallback_closure";
+ $desc = $collectedClasses._Future__propagateToListeners_handleWhenCompleteCallback_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = $desc;
+ function _Future__propagateToListeners_handleWhenCompleteCallback_closure0(box_0, listener_12) {
+ this.box_0 = box_0;
+ this.listener_12 = listener_12;
+ }
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure0.builtin$cls = "_Future__propagateToListeners_handleWhenCompleteCallback_closure0";
+ if (!"name" in _Future__propagateToListeners_handleWhenCompleteCallback_closure0)
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure0.name = "_Future__propagateToListeners_handleWhenCompleteCallback_closure0";
+ $desc = $collectedClasses._Future__propagateToListeners_handleWhenCompleteCallback_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Future__propagateToListeners_handleWhenCompleteCallback_closure0.prototype = $desc;
+ function _AsyncCallbackEntry(callback, next) {
+ this.callback = callback;
+ this.next = next;
+ }
+ _AsyncCallbackEntry.builtin$cls = "_AsyncCallbackEntry";
+ if (!"name" in _AsyncCallbackEntry)
+ _AsyncCallbackEntry.name = "_AsyncCallbackEntry";
+ $desc = $collectedClasses._AsyncCallbackEntry;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _AsyncCallbackEntry.prototype = $desc;
+ function Stream() {
+ }
+ Stream.builtin$cls = "Stream";
+ if (!"name" in Stream)
+ Stream.name = "Stream";
+ $desc = $collectedClasses.Stream;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream.prototype = $desc;
+ function Stream_forEach_closure(box_0, this_1, action_2, future_3) {
+ this.box_0 = box_0;
+ this.this_1 = this_1;
+ this.action_2 = action_2;
+ this.future_3 = future_3;
+ }
+ Stream_forEach_closure.builtin$cls = "Stream_forEach_closure";
+ if (!"name" in Stream_forEach_closure)
+ Stream_forEach_closure.name = "Stream_forEach_closure";
+ $desc = $collectedClasses.Stream_forEach_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_forEach_closure.prototype = $desc;
+ function Stream_forEach__closure(action_4, element_5) {
+ this.action_4 = action_4;
+ this.element_5 = element_5;
+ }
+ Stream_forEach__closure.builtin$cls = "Stream_forEach__closure";
+ if (!"name" in Stream_forEach__closure)
+ Stream_forEach__closure.name = "Stream_forEach__closure";
+ $desc = $collectedClasses.Stream_forEach__closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_forEach__closure.prototype = $desc;
+ function Stream_forEach__closure0() {
+ }
+ Stream_forEach__closure0.builtin$cls = "Stream_forEach__closure0";
+ if (!"name" in Stream_forEach__closure0)
+ Stream_forEach__closure0.name = "Stream_forEach__closure0";
+ $desc = $collectedClasses.Stream_forEach__closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_forEach__closure0.prototype = $desc;
+ function Stream_forEach_closure0(future_6) {
+ this.future_6 = future_6;
+ }
+ Stream_forEach_closure0.builtin$cls = "Stream_forEach_closure0";
+ if (!"name" in Stream_forEach_closure0)
+ Stream_forEach_closure0.name = "Stream_forEach_closure0";
+ $desc = $collectedClasses.Stream_forEach_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_forEach_closure0.prototype = $desc;
+ function Stream_length_closure(box_0) {
+ this.box_0 = box_0;
+ }
+ Stream_length_closure.builtin$cls = "Stream_length_closure";
+ if (!"name" in Stream_length_closure)
+ Stream_length_closure.name = "Stream_length_closure";
+ $desc = $collectedClasses.Stream_length_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_length_closure.prototype = $desc;
+ function Stream_length_closure0(box_0, future_1) {
+ this.box_0 = box_0;
+ this.future_1 = future_1;
+ }
+ Stream_length_closure0.builtin$cls = "Stream_length_closure0";
+ if (!"name" in Stream_length_closure0)
+ Stream_length_closure0.name = "Stream_length_closure0";
+ $desc = $collectedClasses.Stream_length_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_length_closure0.prototype = $desc;
+ function Stream_isEmpty_closure(box_0, future_1) {
+ this.box_0 = box_0;
+ this.future_1 = future_1;
+ }
+ Stream_isEmpty_closure.builtin$cls = "Stream_isEmpty_closure";
+ if (!"name" in Stream_isEmpty_closure)
+ Stream_isEmpty_closure.name = "Stream_isEmpty_closure";
+ $desc = $collectedClasses.Stream_isEmpty_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_isEmpty_closure.prototype = $desc;
+ function Stream_isEmpty_closure0(future_2) {
+ this.future_2 = future_2;
+ }
+ Stream_isEmpty_closure0.builtin$cls = "Stream_isEmpty_closure0";
+ if (!"name" in Stream_isEmpty_closure0)
+ Stream_isEmpty_closure0.name = "Stream_isEmpty_closure0";
+ $desc = $collectedClasses.Stream_isEmpty_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Stream_isEmpty_closure0.prototype = $desc;
+ function StreamSubscription() {
+ }
+ StreamSubscription.builtin$cls = "StreamSubscription";
+ if (!"name" in StreamSubscription)
+ StreamSubscription.name = "StreamSubscription";
+ $desc = $collectedClasses.StreamSubscription;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StreamSubscription.prototype = $desc;
+ function _EventSink() {
+ }
+ _EventSink.builtin$cls = "_EventSink";
+ if (!"name" in _EventSink)
+ _EventSink.name = "_EventSink";
+ $desc = $collectedClasses._EventSink;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _EventSink.prototype = $desc;
+ function _cancelAndError_closure(future_0, error_1, stackTrace_2) {
+ this.future_0 = future_0;
+ this.error_1 = error_1;
+ this.stackTrace_2 = stackTrace_2;
+ }
+ _cancelAndError_closure.builtin$cls = "_cancelAndError_closure";
+ if (!"name" in _cancelAndError_closure)
+ _cancelAndError_closure.name = "_cancelAndError_closure";
+ $desc = $collectedClasses._cancelAndError_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _cancelAndError_closure.prototype = $desc;
+ function _cancelAndErrorClosure_closure(subscription_0, future_1) {
+ this.subscription_0 = subscription_0;
+ this.future_1 = future_1;
+ }
+ _cancelAndErrorClosure_closure.builtin$cls = "_cancelAndErrorClosure_closure";
+ if (!"name" in _cancelAndErrorClosure_closure)
+ _cancelAndErrorClosure_closure.name = "_cancelAndErrorClosure_closure";
+ $desc = $collectedClasses._cancelAndErrorClosure_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _cancelAndErrorClosure_closure.prototype = $desc;
+ function _cancelAndValue_closure(future_0, value_1) {
+ this.future_0 = future_0;
+ this.value_1 = value_1;
+ }
+ _cancelAndValue_closure.builtin$cls = "_cancelAndValue_closure";
+ if (!"name" in _cancelAndValue_closure)
+ _cancelAndValue_closure.name = "_cancelAndValue_closure";
+ $desc = $collectedClasses._cancelAndValue_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _cancelAndValue_closure.prototype = $desc;
+ function _BaseZone() {
+ }
+ _BaseZone.builtin$cls = "_BaseZone";
+ if (!"name" in _BaseZone)
+ _BaseZone.name = "_BaseZone";
+ $desc = $collectedClasses._BaseZone;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _BaseZone.prototype = $desc;
+ function _BaseZone_bindCallback_closure(this_0, registered_1) {
+ this.this_0 = this_0;
+ this.registered_1 = registered_1;
+ }
+ _BaseZone_bindCallback_closure.builtin$cls = "_BaseZone_bindCallback_closure";
+ if (!"name" in _BaseZone_bindCallback_closure)
+ _BaseZone_bindCallback_closure.name = "_BaseZone_bindCallback_closure";
+ $desc = $collectedClasses._BaseZone_bindCallback_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _BaseZone_bindCallback_closure.prototype = $desc;
+ function _BaseZone_bindCallback_closure0(this_2, registered_3) {
+ this.this_2 = this_2;
+ this.registered_3 = registered_3;
+ }
+ _BaseZone_bindCallback_closure0.builtin$cls = "_BaseZone_bindCallback_closure0";
+ if (!"name" in _BaseZone_bindCallback_closure0)
+ _BaseZone_bindCallback_closure0.name = "_BaseZone_bindCallback_closure0";
+ $desc = $collectedClasses._BaseZone_bindCallback_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _BaseZone_bindCallback_closure0.prototype = $desc;
+ function _BaseZone_bindUnaryCallback_closure(this_0, registered_1) {
+ this.this_0 = this_0;
+ this.registered_1 = registered_1;
+ }
+ _BaseZone_bindUnaryCallback_closure.builtin$cls = "_BaseZone_bindUnaryCallback_closure";
+ if (!"name" in _BaseZone_bindUnaryCallback_closure)
+ _BaseZone_bindUnaryCallback_closure.name = "_BaseZone_bindUnaryCallback_closure";
+ $desc = $collectedClasses._BaseZone_bindUnaryCallback_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _BaseZone_bindUnaryCallback_closure.prototype = $desc;
+ function _BaseZone_bindUnaryCallback_closure0(this_2, registered_3) {
+ this.this_2 = this_2;
+ this.registered_3 = registered_3;
+ }
+ _BaseZone_bindUnaryCallback_closure0.builtin$cls = "_BaseZone_bindUnaryCallback_closure0";
+ if (!"name" in _BaseZone_bindUnaryCallback_closure0)
+ _BaseZone_bindUnaryCallback_closure0.name = "_BaseZone_bindUnaryCallback_closure0";
+ $desc = $collectedClasses._BaseZone_bindUnaryCallback_closure0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _BaseZone_bindUnaryCallback_closure0.prototype = $desc;
+ function _rootHandleUncaughtError_closure(error_0, stackTrace_1) {
+ this.error_0 = error_0;
+ this.stackTrace_1 = stackTrace_1;
+ }
+ _rootHandleUncaughtError_closure.builtin$cls = "_rootHandleUncaughtError_closure";
+ if (!"name" in _rootHandleUncaughtError_closure)
+ _rootHandleUncaughtError_closure.name = "_rootHandleUncaughtError_closure";
+ $desc = $collectedClasses._rootHandleUncaughtError_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _rootHandleUncaughtError_closure.prototype = $desc;
+ function _rootHandleUncaughtError__closure(error_2, stackTrace_3) {
+ this.error_2 = error_2;
+ this.stackTrace_3 = stackTrace_3;
+ }
+ _rootHandleUncaughtError__closure.builtin$cls = "_rootHandleUncaughtError__closure";
+ if (!"name" in _rootHandleUncaughtError__closure)
+ _rootHandleUncaughtError__closure.name = "_rootHandleUncaughtError__closure";
+ $desc = $collectedClasses._rootHandleUncaughtError__closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _rootHandleUncaughtError__closure.prototype = $desc;
+ function _RootZone() {
+ }
+ _RootZone.builtin$cls = "_RootZone";
+ if (!"name" in _RootZone)
+ _RootZone.name = "_RootZone";
+ $desc = $collectedClasses._RootZone;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _RootZone.prototype = $desc;
+ function _HashMap(_collection$_length, _strings, _nums, _rest, _keys) {
+ this._collection$_length = _collection$_length;
+ this._strings = _strings;
+ this._nums = _nums;
+ this._rest = _rest;
+ this._keys = _keys;
+ }
+ _HashMap.builtin$cls = "_HashMap";
+ if (!"name" in _HashMap)
+ _HashMap.name = "_HashMap";
+ $desc = $collectedClasses._HashMap;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HashMap.prototype = $desc;
+ function _HashMap_values_closure(this_0) {
+ this.this_0 = this_0;
+ }
+ _HashMap_values_closure.builtin$cls = "_HashMap_values_closure";
+ if (!"name" in _HashMap_values_closure)
+ _HashMap_values_closure.name = "_HashMap_values_closure";
+ $desc = $collectedClasses._HashMap_values_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HashMap_values_closure.prototype = $desc;
+ function HashMapKeyIterable(_map) {
+ this._map = _map;
+ }
+ HashMapKeyIterable.builtin$cls = "HashMapKeyIterable";
+ if (!"name" in HashMapKeyIterable)
+ HashMapKeyIterable.name = "HashMapKeyIterable";
+ $desc = $collectedClasses.HashMapKeyIterable;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HashMapKeyIterable.prototype = $desc;
+ function HashMapKeyIterator(_map, _keys, _offset, _collection$_current) {
+ this._map = _map;
+ this._keys = _keys;
+ this._offset = _offset;
+ this._collection$_current = _collection$_current;
+ }
+ HashMapKeyIterator.builtin$cls = "HashMapKeyIterator";
+ if (!"name" in HashMapKeyIterator)
+ HashMapKeyIterator.name = "HashMapKeyIterator";
+ $desc = $collectedClasses.HashMapKeyIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HashMapKeyIterator.prototype = $desc;
+ function _LinkedHashMap(_collection$_length, _strings, _nums, _rest, _first, _last, _modifications) {
+ this._collection$_length = _collection$_length;
+ this._strings = _strings;
+ this._nums = _nums;
+ this._rest = _rest;
+ this._first = _first;
+ this._last = _last;
+ this._modifications = _modifications;
+ }
+ _LinkedHashMap.builtin$cls = "_LinkedHashMap";
+ if (!"name" in _LinkedHashMap)
+ _LinkedHashMap.name = "_LinkedHashMap";
+ $desc = $collectedClasses._LinkedHashMap;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _LinkedHashMap.prototype = $desc;
+ function _LinkedHashMap_values_closure(this_0) {
+ this.this_0 = this_0;
+ }
+ _LinkedHashMap_values_closure.builtin$cls = "_LinkedHashMap_values_closure";
+ if (!"name" in _LinkedHashMap_values_closure)
+ _LinkedHashMap_values_closure.name = "_LinkedHashMap_values_closure";
+ $desc = $collectedClasses._LinkedHashMap_values_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _LinkedHashMap_values_closure.prototype = $desc;
+ function LinkedHashMapCell(_key, _value, _next, _previous) {
+ this._key = _key;
+ this._value = _value;
+ this._next = _next;
+ this._previous = _previous;
+ }
+ LinkedHashMapCell.builtin$cls = "LinkedHashMapCell";
+ if (!"name" in LinkedHashMapCell)
+ LinkedHashMapCell.name = "LinkedHashMapCell";
+ $desc = $collectedClasses.LinkedHashMapCell;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LinkedHashMapCell.prototype = $desc;
+ LinkedHashMapCell.prototype.get$_key = function(receiver) {
+ return this._key;
+ };
+ LinkedHashMapCell.prototype.get$_value = function() {
+ return this._value;
+ };
+ LinkedHashMapCell.prototype.set$_value = function(v) {
+ return this._value = v;
+ };
+ LinkedHashMapCell.prototype.get$_next = function() {
+ return this._next;
+ };
+ LinkedHashMapCell.prototype.set$_next = function(v) {
+ return this._next = v;
+ };
+ LinkedHashMapCell.prototype.get$_previous = function() {
+ return this._previous;
+ };
+ LinkedHashMapCell.prototype.set$_previous = function(v) {
+ return this._previous = v;
+ };
+ function LinkedHashMapKeyIterable(_map) {
+ this._map = _map;
+ }
+ LinkedHashMapKeyIterable.builtin$cls = "LinkedHashMapKeyIterable";
+ if (!"name" in LinkedHashMapKeyIterable)
+ LinkedHashMapKeyIterable.name = "LinkedHashMapKeyIterable";
+ $desc = $collectedClasses.LinkedHashMapKeyIterable;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LinkedHashMapKeyIterable.prototype = $desc;
+ function LinkedHashMapKeyIterator(_map, _modifications, _cell, _collection$_current) {
+ this._map = _map;
+ this._modifications = _modifications;
+ this._cell = _cell;
+ this._collection$_current = _collection$_current;
+ }
+ LinkedHashMapKeyIterator.builtin$cls = "LinkedHashMapKeyIterator";
+ if (!"name" in LinkedHashMapKeyIterator)
+ LinkedHashMapKeyIterator.name = "LinkedHashMapKeyIterator";
+ $desc = $collectedClasses.LinkedHashMapKeyIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LinkedHashMapKeyIterator.prototype = $desc;
+ function _HashSet() {
+ }
+ _HashSet.builtin$cls = "_HashSet";
+ if (!"name" in _HashSet)
+ _HashSet.name = "_HashSet";
+ $desc = $collectedClasses._HashSet;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HashSet.prototype = $desc;
+ function _IdentityHashSet(_collection$_length, _strings, _nums, _rest, _elements) {
+ this._collection$_length = _collection$_length;
+ this._strings = _strings;
+ this._nums = _nums;
+ this._rest = _rest;
+ this._elements = _elements;
+ }
+ _IdentityHashSet.builtin$cls = "_IdentityHashSet";
+ if (!"name" in _IdentityHashSet)
+ _IdentityHashSet.name = "_IdentityHashSet";
+ $desc = $collectedClasses._IdentityHashSet;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _IdentityHashSet.prototype = $desc;
+ function HashSetIterator(_set, _elements, _offset, _collection$_current) {
+ this._set = _set;
+ this._elements = _elements;
+ this._offset = _offset;
+ this._collection$_current = _collection$_current;
+ }
+ HashSetIterator.builtin$cls = "HashSetIterator";
+ if (!"name" in HashSetIterator)
+ HashSetIterator.name = "HashSetIterator";
+ $desc = $collectedClasses.HashSetIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ HashSetIterator.prototype = $desc;
+ function _LinkedHashSet(_collection$_length, _strings, _nums, _rest, _first, _last, _modifications) {
+ this._collection$_length = _collection$_length;
+ this._strings = _strings;
+ this._nums = _nums;
+ this._rest = _rest;
+ this._first = _first;
+ this._last = _last;
+ this._modifications = _modifications;
+ }
+ _LinkedHashSet.builtin$cls = "_LinkedHashSet";
+ if (!"name" in _LinkedHashSet)
+ _LinkedHashSet.name = "_LinkedHashSet";
+ $desc = $collectedClasses._LinkedHashSet;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _LinkedHashSet.prototype = $desc;
+ function LinkedHashSetCell(_collection$_element, _next, _previous) {
+ this._collection$_element = _collection$_element;
+ this._next = _next;
+ this._previous = _previous;
+ }
+ LinkedHashSetCell.builtin$cls = "LinkedHashSetCell";
+ if (!"name" in LinkedHashSetCell)
+ LinkedHashSetCell.name = "LinkedHashSetCell";
+ $desc = $collectedClasses.LinkedHashSetCell;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LinkedHashSetCell.prototype = $desc;
+ LinkedHashSetCell.prototype.get$_collection$_element = function() {
+ return this._collection$_element;
+ };
+ LinkedHashSetCell.prototype.get$_next = function() {
+ return this._next;
+ };
+ LinkedHashSetCell.prototype.set$_next = function(v) {
+ return this._next = v;
+ };
+ LinkedHashSetCell.prototype.get$_previous = function() {
+ return this._previous;
+ };
+ LinkedHashSetCell.prototype.set$_previous = function(v) {
+ return this._previous = v;
+ };
+ function LinkedHashSetIterator(_set, _modifications, _cell, _collection$_current) {
+ this._set = _set;
+ this._modifications = _modifications;
+ this._cell = _cell;
+ this._collection$_current = _collection$_current;
+ }
+ LinkedHashSetIterator.builtin$cls = "LinkedHashSetIterator";
+ if (!"name" in LinkedHashSetIterator)
+ LinkedHashSetIterator.name = "LinkedHashSetIterator";
+ $desc = $collectedClasses.LinkedHashSetIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ LinkedHashSetIterator.prototype = $desc;
+ function _HashSetBase() {
+ }
+ _HashSetBase.builtin$cls = "_HashSetBase";
+ if (!"name" in _HashSetBase)
+ _HashSetBase.name = "_HashSetBase";
+ $desc = $collectedClasses._HashSetBase;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _HashSetBase.prototype = $desc;
+ function IterableBase() {
+ }
+ IterableBase.builtin$cls = "IterableBase";
+ if (!"name" in IterableBase)
+ IterableBase.name = "IterableBase";
+ $desc = $collectedClasses.IterableBase;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ IterableBase.prototype = $desc;
+ function ListBase() {
+ }
+ ListBase.builtin$cls = "ListBase";
+ if (!"name" in ListBase)
+ ListBase.name = "ListBase";
+ $desc = $collectedClasses.ListBase;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ListBase.prototype = $desc;
+ function ListMixin() {
+ }
+ ListMixin.builtin$cls = "ListMixin";
+ if (!"name" in ListMixin)
+ ListMixin.name = "ListMixin";
+ $desc = $collectedClasses.ListMixin;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ListMixin.prototype = $desc;
+ function Maps_mapToString_closure(box_0, result_1) {
+ this.box_0 = box_0;
+ this.result_1 = result_1;
+ }
+ Maps_mapToString_closure.builtin$cls = "Maps_mapToString_closure";
+ if (!"name" in Maps_mapToString_closure)
+ Maps_mapToString_closure.name = "Maps_mapToString_closure";
+ $desc = $collectedClasses.Maps_mapToString_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Maps_mapToString_closure.prototype = $desc;
+ function ListQueue(_table, _head, _tail, _modificationCount) {
+ this._table = _table;
+ this._head = _head;
+ this._tail = _tail;
+ this._modificationCount = _modificationCount;
+ }
+ ListQueue.builtin$cls = "ListQueue";
+ if (!"name" in ListQueue)
+ ListQueue.name = "ListQueue";
+ $desc = $collectedClasses.ListQueue;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ListQueue.prototype = $desc;
+ function _ListQueueIterator(_queue, _end, _modificationCount, _collection$_position, _collection$_current) {
+ this._queue = _queue;
+ this._end = _end;
+ this._modificationCount = _modificationCount;
+ this._collection$_position = _collection$_position;
+ this._collection$_current = _collection$_current;
+ }
+ _ListQueueIterator.builtin$cls = "_ListQueueIterator";
+ if (!"name" in _ListQueueIterator)
+ _ListQueueIterator.name = "_ListQueueIterator";
+ $desc = $collectedClasses._ListQueueIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _ListQueueIterator.prototype = $desc;
+ function _convertJsonToDart_closure() {
+ }
+ _convertJsonToDart_closure.builtin$cls = "_convertJsonToDart_closure";
+ if (!"name" in _convertJsonToDart_closure)
+ _convertJsonToDart_closure.name = "_convertJsonToDart_closure";
+ $desc = $collectedClasses._convertJsonToDart_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _convertJsonToDart_closure.prototype = $desc;
+ function _convertJsonToDart_walk(revive_0) {
+ this.revive_0 = revive_0;
+ }
+ _convertJsonToDart_walk.builtin$cls = "_convertJsonToDart_walk";
+ if (!"name" in _convertJsonToDart_walk)
+ _convertJsonToDart_walk.name = "_convertJsonToDart_walk";
+ $desc = $collectedClasses._convertJsonToDart_walk;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _convertJsonToDart_walk.prototype = $desc;
+ function Codec() {
+ }
+ Codec.builtin$cls = "Codec";
+ if (!"name" in Codec)
+ Codec.name = "Codec";
+ $desc = $collectedClasses.Codec;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Codec.prototype = $desc;
+ function Converter() {
+ }
+ Converter.builtin$cls = "Converter";
+ if (!"name" in Converter)
+ Converter.name = "Converter";
+ $desc = $collectedClasses.Converter;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Converter.prototype = $desc;
+ function JsonUnsupportedObjectError(unsupportedObject, cause) {
+ this.unsupportedObject = unsupportedObject;
+ this.cause = cause;
+ }
+ JsonUnsupportedObjectError.builtin$cls = "JsonUnsupportedObjectError";
+ if (!"name" in JsonUnsupportedObjectError)
+ JsonUnsupportedObjectError.name = "JsonUnsupportedObjectError";
+ $desc = $collectedClasses.JsonUnsupportedObjectError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JsonUnsupportedObjectError.prototype = $desc;
+ function JsonCyclicError(unsupportedObject, cause) {
+ this.unsupportedObject = unsupportedObject;
+ this.cause = cause;
+ }
+ JsonCyclicError.builtin$cls = "JsonCyclicError";
+ if (!"name" in JsonCyclicError)
+ JsonCyclicError.name = "JsonCyclicError";
+ $desc = $collectedClasses.JsonCyclicError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JsonCyclicError.prototype = $desc;
+ function JsonCodec(_reviver, _toEncodable) {
+ this._reviver = _reviver;
+ this._toEncodable = _toEncodable;
+ }
+ JsonCodec.builtin$cls = "JsonCodec";
+ if (!"name" in JsonCodec)
+ JsonCodec.name = "JsonCodec";
+ $desc = $collectedClasses.JsonCodec;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JsonCodec.prototype = $desc;
+ function JsonEncoder(_toEncodableFunction) {
+ this._toEncodableFunction = _toEncodableFunction;
+ }
+ JsonEncoder.builtin$cls = "JsonEncoder";
+ if (!"name" in JsonEncoder)
+ JsonEncoder.name = "JsonEncoder";
+ $desc = $collectedClasses.JsonEncoder;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JsonEncoder.prototype = $desc;
+ function JsonDecoder(_reviver) {
+ this._reviver = _reviver;
+ }
+ JsonDecoder.builtin$cls = "JsonDecoder";
+ if (!"name" in JsonDecoder)
+ JsonDecoder.name = "JsonDecoder";
+ $desc = $collectedClasses.JsonDecoder;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ JsonDecoder.prototype = $desc;
+ function _JsonStringifier(_toEncodable, _sink, _seen) {
+ this._toEncodable = _toEncodable;
+ this._sink = _sink;
+ this._seen = _seen;
+ }
+ _JsonStringifier.builtin$cls = "_JsonStringifier";
+ if (!"name" in _JsonStringifier)
+ _JsonStringifier.name = "_JsonStringifier";
+ $desc = $collectedClasses._JsonStringifier;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _JsonStringifier.prototype = $desc;
+ function NoSuchMethodError_toString_closure(box_0) {
+ this.box_0 = box_0;
+ }
+ NoSuchMethodError_toString_closure.builtin$cls = "NoSuchMethodError_toString_closure";
+ if (!"name" in NoSuchMethodError_toString_closure)
+ NoSuchMethodError_toString_closure.name = "NoSuchMethodError_toString_closure";
+ $desc = $collectedClasses.NoSuchMethodError_toString_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NoSuchMethodError_toString_closure.prototype = $desc;
+ function DateTime(millisecondsSinceEpoch, isUtc) {
+ this.millisecondsSinceEpoch = millisecondsSinceEpoch;
+ this.isUtc = isUtc;
+ }
+ DateTime.builtin$cls = "DateTime";
+ if (!"name" in DateTime)
+ DateTime.name = "DateTime";
+ $desc = $collectedClasses.DateTime;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DateTime.prototype = $desc;
+ function DateTime_parse_parseIntOrZero() {
+ }
+ DateTime_parse_parseIntOrZero.builtin$cls = "DateTime_parse_parseIntOrZero";
+ if (!"name" in DateTime_parse_parseIntOrZero)
+ DateTime_parse_parseIntOrZero.name = "DateTime_parse_parseIntOrZero";
+ $desc = $collectedClasses.DateTime_parse_parseIntOrZero;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DateTime_parse_parseIntOrZero.prototype = $desc;
+ function DateTime_parse_parseDoubleOrZero() {
+ }
+ DateTime_parse_parseDoubleOrZero.builtin$cls = "DateTime_parse_parseDoubleOrZero";
+ if (!"name" in DateTime_parse_parseDoubleOrZero)
+ DateTime_parse_parseDoubleOrZero.name = "DateTime_parse_parseDoubleOrZero";
+ $desc = $collectedClasses.DateTime_parse_parseDoubleOrZero;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ DateTime_parse_parseDoubleOrZero.prototype = $desc;
+ function Duration(_duration) {
+ this._duration = _duration;
+ }
+ Duration.builtin$cls = "Duration";
+ if (!"name" in Duration)
+ Duration.name = "Duration";
+ $desc = $collectedClasses.Duration;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Duration.prototype = $desc;
+ Duration.prototype.get$_duration = function() {
+ return this._duration;
+ };
+ function Duration_toString_sixDigits() {
+ }
+ Duration_toString_sixDigits.builtin$cls = "Duration_toString_sixDigits";
+ if (!"name" in Duration_toString_sixDigits)
+ Duration_toString_sixDigits.name = "Duration_toString_sixDigits";
+ $desc = $collectedClasses.Duration_toString_sixDigits;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Duration_toString_sixDigits.prototype = $desc;
+ function Duration_toString_twoDigits() {
+ }
+ Duration_toString_twoDigits.builtin$cls = "Duration_toString_twoDigits";
+ if (!"name" in Duration_toString_twoDigits)
+ Duration_toString_twoDigits.name = "Duration_toString_twoDigits";
+ $desc = $collectedClasses.Duration_toString_twoDigits;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Duration_toString_twoDigits.prototype = $desc;
+ function Error() {
+ }
+ Error.builtin$cls = "Error";
+ if (!"name" in Error)
+ Error.name = "Error";
+ $desc = $collectedClasses.Error;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Error.prototype = $desc;
+ function NullThrownError() {
+ }
+ NullThrownError.builtin$cls = "NullThrownError";
+ if (!"name" in NullThrownError)
+ NullThrownError.name = "NullThrownError";
+ $desc = $collectedClasses.NullThrownError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NullThrownError.prototype = $desc;
+ function ArgumentError(message) {
+ this.message = message;
+ }
+ ArgumentError.builtin$cls = "ArgumentError";
+ if (!"name" in ArgumentError)
+ ArgumentError.name = "ArgumentError";
+ $desc = $collectedClasses.ArgumentError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ArgumentError.prototype = $desc;
+ function RangeError(message) {
+ this.message = message;
+ }
+ RangeError.builtin$cls = "RangeError";
+ if (!"name" in RangeError)
+ RangeError.name = "RangeError";
+ $desc = $collectedClasses.RangeError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ RangeError.prototype = $desc;
+ function UnsupportedError(message) {
+ this.message = message;
+ }
+ UnsupportedError.builtin$cls = "UnsupportedError";
+ if (!"name" in UnsupportedError)
+ UnsupportedError.name = "UnsupportedError";
+ $desc = $collectedClasses.UnsupportedError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UnsupportedError.prototype = $desc;
+ function UnimplementedError(message) {
+ this.message = message;
+ }
+ UnimplementedError.builtin$cls = "UnimplementedError";
+ if (!"name" in UnimplementedError)
+ UnimplementedError.name = "UnimplementedError";
+ $desc = $collectedClasses.UnimplementedError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ UnimplementedError.prototype = $desc;
+ function StateError(message) {
+ this.message = message;
+ }
+ StateError.builtin$cls = "StateError";
+ if (!"name" in StateError)
+ StateError.name = "StateError";
+ $desc = $collectedClasses.StateError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StateError.prototype = $desc;
+ function ConcurrentModificationError(modifiedObject) {
+ this.modifiedObject = modifiedObject;
+ }
+ ConcurrentModificationError.builtin$cls = "ConcurrentModificationError";
+ if (!"name" in ConcurrentModificationError)
+ ConcurrentModificationError.name = "ConcurrentModificationError";
+ $desc = $collectedClasses.ConcurrentModificationError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ConcurrentModificationError.prototype = $desc;
+ function OutOfMemoryError() {
+ }
+ OutOfMemoryError.builtin$cls = "OutOfMemoryError";
+ if (!"name" in OutOfMemoryError)
+ OutOfMemoryError.name = "OutOfMemoryError";
+ $desc = $collectedClasses.OutOfMemoryError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ OutOfMemoryError.prototype = $desc;
+ function StackOverflowError() {
+ }
+ StackOverflowError.builtin$cls = "StackOverflowError";
+ if (!"name" in StackOverflowError)
+ StackOverflowError.name = "StackOverflowError";
+ $desc = $collectedClasses.StackOverflowError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StackOverflowError.prototype = $desc;
+ function CyclicInitializationError(variableName) {
+ this.variableName = variableName;
+ }
+ CyclicInitializationError.builtin$cls = "CyclicInitializationError";
+ if (!"name" in CyclicInitializationError)
+ CyclicInitializationError.name = "CyclicInitializationError";
+ $desc = $collectedClasses.CyclicInitializationError;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ CyclicInitializationError.prototype = $desc;
+ function _ExceptionImplementation(message) {
+ this.message = message;
+ }
+ _ExceptionImplementation.builtin$cls = "_ExceptionImplementation";
+ if (!"name" in _ExceptionImplementation)
+ _ExceptionImplementation.name = "_ExceptionImplementation";
+ $desc = $collectedClasses._ExceptionImplementation;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _ExceptionImplementation.prototype = $desc;
+ function FormatException(message) {
+ this.message = message;
+ }
+ FormatException.builtin$cls = "FormatException";
+ if (!"name" in FormatException)
+ FormatException.name = "FormatException";
+ $desc = $collectedClasses.FormatException;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FormatException.prototype = $desc;
+ function Expando(name) {
+ this.name = name;
+ }
+ Expando.builtin$cls = "Expando";
+ if (!"name" in Expando)
+ Expando.name = "Expando";
+ $desc = $collectedClasses.Expando;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Expando.prototype = $desc;
+ function Iterator() {
+ }
+ Iterator.builtin$cls = "Iterator";
+ if (!"name" in Iterator)
+ Iterator.name = "Iterator";
+ $desc = $collectedClasses.Iterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Iterator.prototype = $desc;
+ function Null() {
+ }
+ Null.builtin$cls = "Null";
+ if (!"name" in Null)
+ Null.name = "Null";
+ $desc = $collectedClasses.Null;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Null.prototype = $desc;
+ function Object() {
+ }
+ Object.builtin$cls = "Object";
+ if (!"name" in Object)
+ Object.name = "Object";
+ $desc = $collectedClasses.Object;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Object.prototype = $desc;
+ function StackTrace() {
+ }
+ StackTrace.builtin$cls = "StackTrace";
+ if (!"name" in StackTrace)
+ StackTrace.name = "StackTrace";
+ $desc = $collectedClasses.StackTrace;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StackTrace.prototype = $desc;
+ function StringBuffer(_contents) {
+ this._contents = _contents;
+ }
+ StringBuffer.builtin$cls = "StringBuffer";
+ if (!"name" in StringBuffer)
+ StringBuffer.name = "StringBuffer";
+ $desc = $collectedClasses.StringBuffer;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ StringBuffer.prototype = $desc;
+ StringBuffer.prototype.get$_contents = function() {
+ return this._contents;
+ };
+ function Symbol() {
+ }
+ Symbol.builtin$cls = "Symbol";
+ if (!"name" in Symbol)
+ Symbol.name = "Symbol";
+ $desc = $collectedClasses.Symbol;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Symbol.prototype = $desc;
+ function Element_Element$html_closure() {
+ }
+ Element_Element$html_closure.builtin$cls = "Element_Element$html_closure";
+ if (!"name" in Element_Element$html_closure)
+ Element_Element$html_closure.name = "Element_Element$html_closure";
+ $desc = $collectedClasses.Element_Element$html_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Element_Element$html_closure.prototype = $desc;
+ function _ChildNodeListLazy(_this) {
+ this._this = _this;
+ }
+ _ChildNodeListLazy.builtin$cls = "_ChildNodeListLazy";
+ if (!"name" in _ChildNodeListLazy)
+ _ChildNodeListLazy.name = "_ChildNodeListLazy";
+ $desc = $collectedClasses._ChildNodeListLazy;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _ChildNodeListLazy.prototype = $desc;
+ function Interceptor_ListMixin() {
+ }
+ Interceptor_ListMixin.builtin$cls = "Interceptor_ListMixin";
+ if (!"name" in Interceptor_ListMixin)
+ Interceptor_ListMixin.name = "Interceptor_ListMixin";
+ $desc = $collectedClasses.Interceptor_ListMixin;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Interceptor_ListMixin.prototype = $desc;
+ function Interceptor_ListMixin_ImmutableListMixin() {
+ }
+ Interceptor_ListMixin_ImmutableListMixin.builtin$cls = "Interceptor_ListMixin_ImmutableListMixin";
+ if (!"name" in Interceptor_ListMixin_ImmutableListMixin)
+ Interceptor_ListMixin_ImmutableListMixin.name = "Interceptor_ListMixin_ImmutableListMixin";
+ $desc = $collectedClasses.Interceptor_ListMixin_ImmutableListMixin;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Interceptor_ListMixin_ImmutableListMixin.prototype = $desc;
+ function Storage_keys_closure(keys_0) {
+ this.keys_0 = keys_0;
+ }
+ Storage_keys_closure.builtin$cls = "Storage_keys_closure";
+ if (!"name" in Storage_keys_closure)
+ Storage_keys_closure.name = "Storage_keys_closure";
+ $desc = $collectedClasses.Storage_keys_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Storage_keys_closure.prototype = $desc;
+ function Storage_values_closure(values_0) {
+ this.values_0 = values_0;
+ }
+ Storage_values_closure.builtin$cls = "Storage_values_closure";
+ if (!"name" in Storage_values_closure)
+ Storage_values_closure.name = "Storage_values_closure";
+ $desc = $collectedClasses.Storage_values_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Storage_values_closure.prototype = $desc;
+ function Interceptor_ListMixin0() {
+ }
+ Interceptor_ListMixin0.builtin$cls = "Interceptor_ListMixin0";
+ if (!"name" in Interceptor_ListMixin0)
+ Interceptor_ListMixin0.name = "Interceptor_ListMixin0";
+ $desc = $collectedClasses.Interceptor_ListMixin0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Interceptor_ListMixin0.prototype = $desc;
+ function Interceptor_ListMixin_ImmutableListMixin0() {
+ }
+ Interceptor_ListMixin_ImmutableListMixin0.builtin$cls = "Interceptor_ListMixin_ImmutableListMixin0";
+ if (!"name" in Interceptor_ListMixin_ImmutableListMixin0)
+ Interceptor_ListMixin_ImmutableListMixin0.name = "Interceptor_ListMixin_ImmutableListMixin0";
+ $desc = $collectedClasses.Interceptor_ListMixin_ImmutableListMixin0;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Interceptor_ListMixin_ImmutableListMixin0.prototype = $desc;
+ function _AttributeMap() {
+ }
+ _AttributeMap.builtin$cls = "_AttributeMap";
+ if (!"name" in _AttributeMap)
+ _AttributeMap.name = "_AttributeMap";
+ $desc = $collectedClasses._AttributeMap;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _AttributeMap.prototype = $desc;
+ function _ElementAttributeMap(_element) {
+ this._element = _element;
+ }
+ _ElementAttributeMap.builtin$cls = "_ElementAttributeMap";
+ if (!"name" in _ElementAttributeMap)
+ _ElementAttributeMap.name = "_ElementAttributeMap";
+ $desc = $collectedClasses._ElementAttributeMap;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _ElementAttributeMap.prototype = $desc;
+ function EventStreamProvider(_eventType) {
+ this._eventType = _eventType;
+ }
+ EventStreamProvider.builtin$cls = "EventStreamProvider";
+ if (!"name" in EventStreamProvider)
+ EventStreamProvider.name = "EventStreamProvider";
+ $desc = $collectedClasses.EventStreamProvider;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ EventStreamProvider.prototype = $desc;
+ function _EventStream() {
+ }
+ _EventStream.builtin$cls = "_EventStream";
+ if (!"name" in _EventStream)
+ _EventStream.name = "_EventStream";
+ $desc = $collectedClasses._EventStream;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _EventStream.prototype = $desc;
+ function _ElementEventStreamImpl(_target, _eventType, _useCapture) {
+ this._target = _target;
+ this._eventType = _eventType;
+ this._useCapture = _useCapture;
+ }
+ _ElementEventStreamImpl.builtin$cls = "_ElementEventStreamImpl";
+ if (!"name" in _ElementEventStreamImpl)
+ _ElementEventStreamImpl.name = "_ElementEventStreamImpl";
+ $desc = $collectedClasses._ElementEventStreamImpl;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _ElementEventStreamImpl.prototype = $desc;
+ function _EventStreamSubscription(_pauseCount, _target, _eventType, _onData, _useCapture) {
+ this._pauseCount = _pauseCount;
+ this._target = _target;
+ this._eventType = _eventType;
+ this._onData = _onData;
+ this._useCapture = _useCapture;
+ }
+ _EventStreamSubscription.builtin$cls = "_EventStreamSubscription";
+ if (!"name" in _EventStreamSubscription)
+ _EventStreamSubscription.name = "_EventStreamSubscription";
+ $desc = $collectedClasses._EventStreamSubscription;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _EventStreamSubscription.prototype = $desc;
+ function _Html5NodeValidator(uriPolicy) {
+ this.uriPolicy = uriPolicy;
+ }
+ _Html5NodeValidator.builtin$cls = "_Html5NodeValidator";
+ if (!"name" in _Html5NodeValidator)
+ _Html5NodeValidator.name = "_Html5NodeValidator";
+ $desc = $collectedClasses._Html5NodeValidator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _Html5NodeValidator.prototype = $desc;
+ _Html5NodeValidator.prototype.get$uriPolicy = function() {
+ return this.uriPolicy;
+ };
+ function ImmutableListMixin() {
+ }
+ ImmutableListMixin.builtin$cls = "ImmutableListMixin";
+ if (!"name" in ImmutableListMixin)
+ ImmutableListMixin.name = "ImmutableListMixin";
+ $desc = $collectedClasses.ImmutableListMixin;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ ImmutableListMixin.prototype = $desc;
+ function NodeValidatorBuilder(_validators) {
+ this._validators = _validators;
+ }
+ NodeValidatorBuilder.builtin$cls = "NodeValidatorBuilder";
+ if (!"name" in NodeValidatorBuilder)
+ NodeValidatorBuilder.name = "NodeValidatorBuilder";
+ $desc = $collectedClasses.NodeValidatorBuilder;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NodeValidatorBuilder.prototype = $desc;
+ function NodeValidatorBuilder_allowsElement_closure(element_0) {
+ this.element_0 = element_0;
+ }
+ NodeValidatorBuilder_allowsElement_closure.builtin$cls = "NodeValidatorBuilder_allowsElement_closure";
+ if (!"name" in NodeValidatorBuilder_allowsElement_closure)
+ NodeValidatorBuilder_allowsElement_closure.name = "NodeValidatorBuilder_allowsElement_closure";
+ $desc = $collectedClasses.NodeValidatorBuilder_allowsElement_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NodeValidatorBuilder_allowsElement_closure.prototype = $desc;
+ function NodeValidatorBuilder_allowsAttribute_closure(element_0, attributeName_1, value_2) {
+ this.element_0 = element_0;
+ this.attributeName_1 = attributeName_1;
+ this.value_2 = value_2;
+ }
+ NodeValidatorBuilder_allowsAttribute_closure.builtin$cls = "NodeValidatorBuilder_allowsAttribute_closure";
+ if (!"name" in NodeValidatorBuilder_allowsAttribute_closure)
+ NodeValidatorBuilder_allowsAttribute_closure.name = "NodeValidatorBuilder_allowsAttribute_closure";
+ $desc = $collectedClasses.NodeValidatorBuilder_allowsAttribute_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NodeValidatorBuilder_allowsAttribute_closure.prototype = $desc;
+ function _SimpleNodeValidator(uriPolicy) {
+ this.uriPolicy = uriPolicy;
+ }
+ _SimpleNodeValidator.builtin$cls = "_SimpleNodeValidator";
+ if (!"name" in _SimpleNodeValidator)
+ _SimpleNodeValidator.name = "_SimpleNodeValidator";
+ $desc = $collectedClasses._SimpleNodeValidator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SimpleNodeValidator.prototype = $desc;
+ _SimpleNodeValidator.prototype.get$uriPolicy = function() {
+ return this.uriPolicy;
+ };
+ function _TemplatingNodeValidator(_templateAttrs, allowedElements, allowedAttributes, allowedUriAttributes, uriPolicy) {
+ this._templateAttrs = _templateAttrs;
+ this.allowedElements = allowedElements;
+ this.allowedAttributes = allowedAttributes;
+ this.allowedUriAttributes = allowedUriAttributes;
+ this.uriPolicy = uriPolicy;
+ }
+ _TemplatingNodeValidator.builtin$cls = "_TemplatingNodeValidator";
+ if (!"name" in _TemplatingNodeValidator)
+ _TemplatingNodeValidator.name = "_TemplatingNodeValidator";
+ $desc = $collectedClasses._TemplatingNodeValidator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _TemplatingNodeValidator.prototype = $desc;
+ function _TemplatingNodeValidator_closure() {
+ }
+ _TemplatingNodeValidator_closure.builtin$cls = "_TemplatingNodeValidator_closure";
+ if (!"name" in _TemplatingNodeValidator_closure)
+ _TemplatingNodeValidator_closure.name = "_TemplatingNodeValidator_closure";
+ $desc = $collectedClasses._TemplatingNodeValidator_closure;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _TemplatingNodeValidator_closure.prototype = $desc;
+ function _SvgNodeValidator() {
+ }
+ _SvgNodeValidator.builtin$cls = "_SvgNodeValidator";
+ if (!"name" in _SvgNodeValidator)
+ _SvgNodeValidator.name = "_SvgNodeValidator";
+ $desc = $collectedClasses._SvgNodeValidator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SvgNodeValidator.prototype = $desc;
+ function FixedSizeListIterator(_array, _html$_length, _position, _html$_current) {
+ this._array = _array;
+ this._html$_length = _html$_length;
+ this._position = _position;
+ this._html$_current = _html$_current;
+ }
+ FixedSizeListIterator.builtin$cls = "FixedSizeListIterator";
+ if (!"name" in FixedSizeListIterator)
+ FixedSizeListIterator.name = "FixedSizeListIterator";
+ $desc = $collectedClasses.FixedSizeListIterator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ FixedSizeListIterator.prototype = $desc;
+ function _LocationWrapper(_ptr) {
+ this._ptr = _ptr;
+ }
+ _LocationWrapper.builtin$cls = "_LocationWrapper";
+ if (!"name" in _LocationWrapper)
+ _LocationWrapper.name = "_LocationWrapper";
+ $desc = $collectedClasses._LocationWrapper;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _LocationWrapper.prototype = $desc;
+ function NodeValidator() {
+ }
+ NodeValidator.builtin$cls = "NodeValidator";
+ if (!"name" in NodeValidator)
+ NodeValidator.name = "NodeValidator";
+ $desc = $collectedClasses.NodeValidator;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NodeValidator.prototype = $desc;
+ function _SameOriginUriPolicy(_hiddenAnchor, _loc) {
+ this._hiddenAnchor = _hiddenAnchor;
+ this._loc = _loc;
+ }
+ _SameOriginUriPolicy.builtin$cls = "_SameOriginUriPolicy";
+ if (!"name" in _SameOriginUriPolicy)
+ _SameOriginUriPolicy.name = "_SameOriginUriPolicy";
+ $desc = $collectedClasses._SameOriginUriPolicy;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _SameOriginUriPolicy.prototype = $desc;
+ function _ValidatingTreeSanitizer(validator) {
+ this.validator = validator;
+ }
+ _ValidatingTreeSanitizer.builtin$cls = "_ValidatingTreeSanitizer";
+ if (!"name" in _ValidatingTreeSanitizer)
+ _ValidatingTreeSanitizer.name = "_ValidatingTreeSanitizer";
+ $desc = $collectedClasses._ValidatingTreeSanitizer;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _ValidatingTreeSanitizer.prototype = $desc;
+ function _ValidatingTreeSanitizer_sanitizeTree_walk(this_0) {
+ this.this_0 = this_0;
+ }
+ _ValidatingTreeSanitizer_sanitizeTree_walk.builtin$cls = "_ValidatingTreeSanitizer_sanitizeTree_walk";
+ if (!"name" in _ValidatingTreeSanitizer_sanitizeTree_walk)
+ _ValidatingTreeSanitizer_sanitizeTree_walk.name = "_ValidatingTreeSanitizer_sanitizeTree_walk";
+ $desc = $collectedClasses._ValidatingTreeSanitizer_sanitizeTree_walk;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ _ValidatingTreeSanitizer_sanitizeTree_walk.prototype = $desc;
+ function Capability() {
+ }
+ Capability.builtin$cls = "Capability";
+ if (!"name" in Capability)
+ Capability.name = "Capability";
+ $desc = $collectedClasses.Capability;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ Capability.prototype = $desc;
+ function NativeTypedArray() {
+ }
+ NativeTypedArray.builtin$cls = "NativeTypedArray";
+ if (!"name" in NativeTypedArray)
+ NativeTypedArray.name = "NativeTypedArray";
+ $desc = $collectedClasses.NativeTypedArray;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NativeTypedArray.prototype = $desc;
+ function NativeTypedArrayOfInt() {
+ }
+ NativeTypedArrayOfInt.builtin$cls = "NativeTypedArrayOfInt";
+ if (!"name" in NativeTypedArrayOfInt)
+ NativeTypedArrayOfInt.name = "NativeTypedArrayOfInt";
+ $desc = $collectedClasses.NativeTypedArrayOfInt;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NativeTypedArrayOfInt.prototype = $desc;
+ function NativeTypedArray_ListMixin() {
+ }
+ NativeTypedArray_ListMixin.builtin$cls = "NativeTypedArray_ListMixin";
+ if (!"name" in NativeTypedArray_ListMixin)
+ NativeTypedArray_ListMixin.name = "NativeTypedArray_ListMixin";
+ $desc = $collectedClasses.NativeTypedArray_ListMixin;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NativeTypedArray_ListMixin.prototype = $desc;
+ function NativeTypedArray_ListMixin_FixedLengthListMixin() {
+ }
+ NativeTypedArray_ListMixin_FixedLengthListMixin.builtin$cls = "NativeTypedArray_ListMixin_FixedLengthListMixin";
+ if (!"name" in NativeTypedArray_ListMixin_FixedLengthListMixin)
+ NativeTypedArray_ListMixin_FixedLengthListMixin.name = "NativeTypedArray_ListMixin_FixedLengthListMixin";
+ $desc = $collectedClasses.NativeTypedArray_ListMixin_FixedLengthListMixin;
+ if ($desc instanceof Array)
+ $desc = $desc[1];
+ NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = $desc;
+ return [HtmlElement, AnchorElement, AnimationEvent, AreaElement, AudioElement, AutocompleteErrorEvent, BRElement, BaseElement, BeforeLoadEvent, BeforeUnloadEvent, BodyElement, ButtonElement, CDataSection, CanvasElement, CharacterData, CloseEvent, Comment, CompositionEvent, ContentElement, CssFontFaceLoadEvent, CustomEvent, DListElement, DataListElement, DetailsElement, DeviceMotionEvent, DeviceOrientationEvent, DialogElement, DivElement, Document, DocumentFragment, DomError, DomException, DomImplementation, Element, EmbedElement, ErrorEvent, Event, EventTarget, FieldSetElement, FileError, FocusEvent, FormElement, HRElement, HashChangeEvent, HeadElement, HeadingElement, HtmlDocument, HtmlHtmlElement, IFrameElement, ImageElement, InputElement, KeyboardEvent, KeygenElement, LIElement, LabelElement, LegendElement, LinkElement, Location, MapElement, MediaElement, MediaError, MediaKeyError, MediaKeyEvent, MediaKeyMessageEvent, MediaKeyNeededEvent, MediaStreamEvent, MediaStreamTrackEvent, MenuElement, MessageEvent, MetaElement, MeterElement, MidiConnectionEvent, MidiInput, MidiMessageEvent, MidiOutput, MidiPort, ModElement, MouseEvent, Navigator, NavigatorUserMediaError, Node, NodeList, OListElement, ObjectElement, OptGroupElement, OptionElement, OutputElement, OverflowEvent, PageTransitionEvent, ParagraphElement, ParamElement, PopStateEvent, PositionError, PreElement, ProcessingInstruction, ProgressElement, ProgressEvent, QuoteElement, Range, ResourceProgressEvent, RtcDataChannelEvent, RtcDtmfToneChangeEvent, RtcIceCandidateEvent, ScriptElement0, SecurityPolicyViolationEvent, SelectElement, ShadowElement, ShadowRoot, SourceElement, SpanElement, SpeechInputEvent, SpeechRecognitionError, SpeechRecognitionEvent, SpeechSynthesisEvent, Storage, StorageEvent, StyleElement, TableCaptionElement, TableCellElement, TableColElement, TableElement, TableRowElement, TableSectionElement, TemplateElement, Text, TextAreaElement, TextEvent, TitleElement, TouchEvent, TrackElement, TrackEvent, TransitionEvent, UIEvent, UListElement, UnknownElement, VideoElement, WheelEvent, Window, XmlDocument, _Attr, _DocumentType, _HTMLAppletElement, _HTMLDirectoryElement, _HTMLFontElement, _HTMLFrameElement, _HTMLFrameSetElement, _HTMLMarqueeElement, _MutationEvent, _NamedNodeMap, _Notation, _XMLHttpRequestProgressEvent, VersionChangeEvent, AElement, AltGlyphElement, AnimateElement, AnimateMotionElement, AnimateTransformElement, AnimatedNumberList, AnimationElement, CircleElement, ClipPathElement, DefsElement, DescElement, DiscardElement, EllipseElement, FEBlendElement, FEColorMatrixElement, FEComponentTransferElement, FECompositeElement, FEConvolveMatrixElement, FEDiffuseLightingElement, FEDisplacementMapElement, FEDistantLightElement, FEFloodElement, FEFuncAElement, FEFuncBElement, FEFuncGElement, FEFuncRElement, FEGaussianBlurElement, FEImageElement, FEMergeElement, FEMergeNodeElement, FEMorphologyElement, FEOffsetElement, FEPointLightElement, FESpecularLightingElement, FESpotLightElement, FETileElement, FETurbulenceElement, FilterElement, ForeignObjectElement, GElement, GeometryElement, GraphicsElement, ImageElement0, LineElement, LinearGradientElement, MarkerElement, MaskElement, MetadataElement, PathElement, PatternElement, PolygonElement, PolylineElement, RadialGradientElement, RectElement, ScriptElement, SetElement, StopElement, StyleElement0, SvgElement, SvgSvgElement, SwitchElement, SymbolElement, TSpanElement, TextContentElement, TextElement, TextPathElement, TextPositioningElement, TitleElement0, UseElement, ViewElement, ZoomEvent, _GradientElement, _SVGAltGlyphDefElement, _SVGAltGlyphItemElement, _SVGComponentTransferFunctionElement, _SVGCursorElement, _SVGFEDropShadowElement, _SVGFontElement, _SVGFontFaceElement, _SVGFontFaceFormatElement, _SVGFontFaceNameElement, _SVGFontFaceSrcElement, _SVGFontFaceUriElement, _SVGGlyphElement, _SVGGlyphRefElement, _SVGHKernElement, _SVGMPathElement, _SVGMissingGlyphElement, _SVGVKernElement, AudioProcessingEvent, OfflineAudioCompletionEvent, ContextEvent, SqlError, NativeTypedData, NativeUint8List, JS_CONST, Interceptor, JSBool, JSNull, JavaScriptObject, PlainJavaScriptObject, UnknownJavaScriptObject, JSArray, JSNumber, JSInt, JSDouble, JSString, startRootIsolate_closure, startRootIsolate_closure0, _Manager, _IsolateContext, _IsolateContext_handlePing_closure, _EventLoop, _EventLoop__runHelper_next, _IsolateEvent, _MainManagerStub, IsolateNatives__processWorkerMessage_closure, IsolateNatives__startIsolate_runStartFunction, _BaseSendPort, _NativeJsSendPort, _NativeJsSendPort_send_closure, _WorkerSendPort, RawReceivePortImpl, _JsSerializer, _JsCopier, _JsDeserializer, _JsVisitedMap, _MessageTraverserVisitedMap, _MessageTraverser, _Copier, _Copier_visitMap_closure, _Serializer, _Deserializer, TimerImpl, TimerImpl_internalCallback, TimerImpl_internalCallback0, CapabilityImpl, ReflectionInfo, TypeErrorDecoder, NullError, JsNoSuchMethodError, UnknownJsTypeError, unwrapException_saveStackTrace, _StackTrace, invokeClosure_closure, invokeClosure_closure0, invokeClosure_closure1, invokeClosure_closure2, invokeClosure_closure3, Closure, TearOffClosure, BoundClosure, RuntimeError, RuntimeType, RuntimeFunctionType, DynamicRuntimeType, initHooks_closure, initHooks_closure0, initHooks_closure1, JSSyntaxRegExp, _MatchImplementation, BankAccount, Person, ListIterable, ListIterator, MappedIterable, EfficientLengthMappedIterable, MappedIterator, MappedListIterable, WhereIterable, WhereIterator, FixedLengthListMixin, _AsyncError, _Future, _Future__addListener_closure, _Future__chainForeignFuture_closure, _Future__chainForeignFuture_closure0, _Future__propagateToListeners_handleValueCallback, _Future__propagateToListeners_handleError, _Future__propagateToListeners_handleWhenCompleteCallback, _Future__propagateToListeners_handleWhenCompleteCallback_closure, _Future__propagateToListeners_handleWhenCompleteCallback_closure0, _AsyncCallbackEntry, Stream, Stream_forEach_closure, Stream_forEach__closure, Stream_forEach__closure0, Stream_forEach_closure0, Stream_length_closure, Stream_length_closure0, Stream_isEmpty_closure, Stream_isEmpty_closure0, StreamSubscription, _EventSink, _cancelAndError_closure, _cancelAndErrorClosure_closure, _cancelAndValue_closure, _BaseZone, _BaseZone_bindCallback_closure, _BaseZone_bindCallback_closure0, _BaseZone_bindUnaryCallback_closure, _BaseZone_bindUnaryCallback_closure0, _rootHandleUncaughtError_closure, _rootHandleUncaughtError__closure, _RootZone, _HashMap, _HashMap_values_closure, HashMapKeyIterable, HashMapKeyIterator, _LinkedHashMap, _LinkedHashMap_values_closure, LinkedHashMapCell, LinkedHashMapKeyIterable, LinkedHashMapKeyIterator, _HashSet, _IdentityHashSet, HashSetIterator, _LinkedHashSet, LinkedHashSetCell, LinkedHashSetIterator, _HashSetBase, IterableBase, ListBase, ListMixin, Maps_mapToString_closure, ListQueue, _ListQueueIterator, _convertJsonToDart_closure, _convertJsonToDart_walk, Codec, Converter, JsonUnsupportedObjectError, JsonCyclicError, JsonCodec, JsonEncoder, JsonDecoder, _JsonStringifier, NoSuchMethodError_toString_closure, DateTime, DateTime_parse_parseIntOrZero, DateTime_parse_parseDoubleOrZero, Duration, Duration_toString_sixDigits, Duration_toString_twoDigits, Error, NullThrownError, ArgumentError, RangeError, UnsupportedError, UnimplementedError, StateError, ConcurrentModificationError, OutOfMemoryError, StackOverflowError, CyclicInitializationError, _ExceptionImplementation, FormatException, Expando, Iterator, Null, Object, StackTrace, StringBuffer, Symbol, Element_Element$html_closure, _ChildNodeListLazy, Interceptor_ListMixin, Interceptor_ListMixin_ImmutableListMixin, Storage_keys_closure, Storage_values_closure, Interceptor_ListMixin0, Interceptor_ListMixin_ImmutableListMixin0, _AttributeMap, _ElementAttributeMap, EventStreamProvider, _EventStream, _ElementEventStreamImpl, _EventStreamSubscription, _Html5NodeValidator, ImmutableListMixin, NodeValidatorBuilder, NodeValidatorBuilder_allowsElement_closure, NodeValidatorBuilder_allowsAttribute_closure, _SimpleNodeValidator, _TemplatingNodeValidator, _TemplatingNodeValidator_closure, _SvgNodeValidator, FixedSizeListIterator, _LocationWrapper, NodeValidator, _SameOriginUriPolicy, _ValidatingTreeSanitizer, _ValidatingTreeSanitizer_sanitizeTree_walk, Capability, NativeTypedArray, NativeTypedArrayOfInt, NativeTypedArray_ListMixin, NativeTypedArray_ListMixin_FixedLengthListMixin];
+}
diff --git a/Chapter 1/bank_terminal/build/web/bank_terminal_s5.html b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.html
new file mode 100644
index 0000000..01eadb4
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/bank_terminal_s5.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+ Bank terminal s5
+
+
+
+ Bank terminal s5
+
+
+
+
+
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_chrome/dart2js/chrome_dart2js.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_chrome/dart2js/chrome_dart2js.dart
new file mode 100644
index 0000000..93f8f75
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_chrome/dart2js/chrome_dart2js.dart
@@ -0,0 +1,1252 @@
+/// Native wrappers for the Chrome packaged app APIs.
+///
+/// These functions allow direct access to the chrome.* APIs, allowing
+/// Chrome packaged apps to be written using Dart.
+///
+/// For more information on these APIs, see the
+/// [chrome.* API documentation](http://developer.chrome.com/apps/api_index.html).
+library _chrome;
+
+import 'dart:_foreign_helper' show JS;
+import 'dart:_js_helper';
+import 'dart:html_common';
+import 'dart:html';
+
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// DO NOT EDIT
+// Auto-generated dart:_chrome library.
+
+
+/* TODO(sashab): Add "show convertDartClosureToJS" once 'show' works. */
+
+
+// Generated files below this line.
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/**
+ * A set of utilities for use with the Chrome Extension APIs.
+ *
+ * Allows for easy access to required JS objects.
+ */
+
+/**
+ * A dart object, that is convertible to JS. Used for creating objects in dart,
+ * then passing them to JS.
+ *
+ * Objects that are passable to JS need to implement this interface.
+ */
+abstract class ChromeObject {
+ /*
+ * Default Constructor
+ *
+ * Called by child objects during their regular construction.
+ */
+ ChromeObject() : _jsObject = JS('var', '{}');
+
+ /*
+ * Internal proxy constructor
+ *
+ * Creates a new Dart object using this existing proxy.
+ */
+ ChromeObject._proxy(this._jsObject);
+
+ /*
+ * JS Object Representation
+ */
+ final Object _jsObject;
+}
+
+/**
+ * Useful functions for converting arguments.
+ */
+
+/**
+ * Converts the given map-type argument to js-friendly format, recursively.
+ * Returns the new Map object.
+ */
+Object _convertMapArgument(Map argument) {
+ Map m = new Map();
+ for (Object key in argument.keys)
+ m[key] = convertArgument(argument[key]);
+ return convertDartToNative_Dictionary(m);
+}
+
+/**
+ * Converts the given list-type argument to js-friendly format, recursively.
+ * Returns the new List object.
+ */
+List _convertListArgument(List argument) {
+ List l = new List();
+ for (var i = 0; i < argument.length; i ++)
+ l.add(convertArgument(argument[i]));
+ return l;
+}
+
+/**
+ * Converts the given argument Object to js-friendly format, recursively.
+ *
+ * Flattens out all Chrome objects into their corresponding ._toMap()
+ * definitions, then converts them to JS objects.
+ *
+ * Returns the new argument.
+ *
+ * Cannot be used for functions.
+ */
+Object convertArgument(var argument) {
+ if (argument == null)
+ return argument;
+
+ if (argument is num || argument is String || argument is bool)
+ return argument;
+
+ if (argument is ChromeObject)
+ return argument._jsObject;
+
+ if (argument is List)
+ return _convertListArgument(argument);
+
+ if (argument is Map)
+ return _convertMapArgument(argument);
+
+ if (argument is Function)
+ throw new Exception("Cannot serialize Function argument ${argument}.");
+
+ // TODO(sashab): Try and detect whether the argument is already serialized.
+ return argument;
+}
+
+/// Description of a declarative rule for handling events.
+class Rule extends ChromeObject {
+ /*
+ * Public (Dart) constructor
+ */
+ Rule({String id, List conditions, List actions, int priority}) {
+ this.id = id;
+ this.conditions = conditions;
+ this.actions = actions;
+ this.priority = priority;
+ }
+
+ /*
+ * Private (JS) constructor
+ */
+ Rule._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ String get id => JS('String', '#.id', this._jsObject);
+
+ void set id(String id) {
+ JS('void', '#.id = #', this._jsObject, id);
+ }
+
+ // TODO(sashab): Wrap these generic Lists somehow.
+ List get conditions => JS('List', '#.conditions', this._jsObject);
+
+ void set conditions(List conditions) {
+ JS('void', '#.conditions = #', this._jsObject, convertArgument(conditions));
+ }
+
+ // TODO(sashab): Wrap these generic Lists somehow.
+ List get actions => JS('List', '#.actions', this._jsObject);
+
+ void set actions(List actions) {
+ JS('void', '#.actions = #', this._jsObject, convertArgument(actions));
+ }
+
+ int get priority => JS('int', '#.priority', this._jsObject);
+
+ void set priority(int priority) {
+ JS('void', '#.priority = #', this._jsObject, priority);
+ }
+
+}
+
+/**
+ * The Event class.
+ *
+ * Chrome Event classes extend this interface.
+ *
+ * e.g.
+ *
+ * // chrome.app.runtime.onLaunched
+ * class Event_ChromeAppRuntimeOnLaunched extends Event {
+ * // constructor, passing the arity of the callback
+ * Event_ChromeAppRuntimeOnLaunched(jsObject) :
+ * super._(jsObject, 1);
+ *
+ * // methods, strengthening the Function parameter specificity
+ * void addListener(void callback(LaunchData launchData))
+ * => super.addListener(callback);
+ * void removeListener(void callback(LaunchData launchData))
+ * => super.removeListener(callback);
+ * bool hasListener(void callback(LaunchData launchData))
+ * => super.hasListener(callback);
+ * }
+ *
+ */
+class Event {
+ /*
+ * JS Object Representation
+ */
+ final Object _jsObject;
+
+ /*
+ * Number of arguments the callback takes.
+ */
+ final int _callbackArity;
+
+ /*
+ * Private constructor
+ */
+ Event._(this._jsObject, this._callbackArity);
+
+ /*
+ * Methods
+ */
+
+ /// Registers an event listener callback to an event.
+ void addListener(Function callback) =>
+ JS('void',
+ '#.addListener(#)',
+ this._jsObject,
+ convertDartClosureToJS(callback, this._callbackArity)
+ );
+
+ /// Deregisters an event listener callback from an event.
+ void removeListener(Function callback) =>
+ JS('void',
+ '#.removeListener(#)',
+ this._jsObject,
+ convertDartClosureToJS(callback, this._callbackArity)
+ );
+
+ /// Returns True if callback is registered to the event.
+ bool hasListener(Function callback) =>
+ JS('bool',
+ '#.hasListener(#)',
+ this._jsObject,
+ convertDartClosureToJS(callback, this._callbackArity)
+ );
+
+ /// Returns true if any event listeners are registered to the event.
+ bool hasListeners() =>
+ JS('bool',
+ '#.hasListeners()',
+ this._jsObject
+ );
+
+ /// Registers rules to handle events.
+ ///
+ /// [eventName] is the name of the event this function affects and [rules] are
+ /// the rules to be registered. These do not replace previously registered
+ /// rules. [callback] is called with registered rules.
+ ///
+ void addRules(String eventName, List rules,
+ [void callback(List rules)]) {
+ // proxy the callback
+ void __proxy_callback(List rules) {
+ if (callback != null) {
+ List __proxy_rules = new List();
+
+ for (Object o in rules)
+ __proxy_rules.add(new Rule._proxy(o));
+
+ callback(__proxy_rules);
+ }
+ }
+
+ JS('void',
+ '#.addRules(#, #, #)',
+ this._jsObject,
+ convertArgument(eventName),
+ convertArgument(rules),
+ convertDartClosureToJS(__proxy_callback, 1)
+ );
+ }
+
+ /// Returns currently registered rules.
+ ///
+ /// [eventName] is the name of the event this function affects and, if an array
+ /// is passed as [ruleIdentifiers], only rules with identifiers contained in
+ /// this array are returned. [callback] is called with registered rules.
+ ///
+ void getRules(String eventName, [List ruleIdentifiers,
+ void callback(List rules)]) {
+ // proxy the callback
+ void __proxy_callback(List rules) {
+ if (callback != null) {
+ List __proxy_rules = new List();
+
+ for (Object o in rules)
+ __proxy_rules.add(new Rule._proxy(o));
+
+ callback(__proxy_rules);
+ }
+ }
+
+ JS('void',
+ '#.getRules(#, #, #)',
+ this._jsObject,
+ convertArgument(eventName),
+ convertArgument(ruleIdentifiers),
+ convertDartClosureToJS(__proxy_callback, 1)
+ );
+ }
+
+ /// Unregisters currently registered rules.
+ ///
+ /// [eventName] is the name of the event this function affects and, if an array
+ /// is passed as [ruleIdentifiers], only rules with identifiers contained in
+ /// this array are unregistered. [callback] is called when the rules are
+ /// unregistered.
+ ///
+ void removeRules(String eventName, [List ruleIdentifiers,
+ void callback()]) =>
+ JS('void',
+ '#.removeRules(#, #, #)',
+ this._jsObject,
+ convertArgument(eventName),
+ convertArgument(ruleIdentifiers),
+ convertDartClosureToJS(callback, 0)
+ );
+}
+
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+
+// chrome.app
+class API_ChromeApp {
+ /*
+ * JS Variable
+ */
+ final Object _jsObject;
+
+ /*
+ * Members
+ */
+ API_app_window window;
+ API_app_runtime runtime;
+
+ /*
+ * Constructor
+ */
+ API_ChromeApp(this._jsObject) {
+ var window_object = JS('', '#.window', this._jsObject);
+ if (window_object == null)
+ throw new UnsupportedError('Not supported by current browser.');
+ window = new API_app_window(window_object);
+
+ var runtime_object = JS('', '#.runtime', this._jsObject);
+ if (runtime_object == null)
+ throw new UnsupportedError('Not supported by current browser.');
+ runtime = new API_app_runtime(runtime_object);
+ }
+}
+
+// chrome
+class API_Chrome {
+ /*
+ * JS Variable
+ */
+ Object _jsObject;
+
+ /*
+ * Members
+ */
+ API_ChromeApp app;
+ API_file_system fileSystem;
+
+ /*
+ * Constructor
+ */
+ API_Chrome() {
+ this._jsObject = JS("Object", "chrome");
+ if (this._jsObject == null)
+ throw new UnsupportedError('Not supported by current browser.');
+
+ var app_object = JS('', '#.app', this._jsObject);
+ if (app_object == null)
+ throw new UnsupportedError('Not supported by current browser.');
+ app = new API_ChromeApp(app_object);
+
+ var file_system_object = JS('', '#.fileSystem', this._jsObject);
+ if (file_system_object == null)
+ throw new UnsupportedError('Not supported by current browser.');
+ fileSystem = new API_file_system(file_system_object);
+ }
+}
+
+// The final chrome objects
+final API_Chrome chrome = new API_Chrome();
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Generated from namespace: app.window
+
+
+/**
+ * Types
+ */
+
+class AppWindowBounds extends ChromeObject {
+ /*
+ * Public constructor
+ */
+ AppWindowBounds({int left, int top, int width, int height}) {
+ if (left != null)
+ this.left = left;
+ if (top != null)
+ this.top = top;
+ if (width != null)
+ this.width = width;
+ if (height != null)
+ this.height = height;
+ }
+
+ /*
+ * Private constructor
+ */
+ AppWindowBounds._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ int get left => JS('int', '#.left', this._jsObject);
+
+ void set left(int left) {
+ JS('void', '#.left = #', this._jsObject, left);
+ }
+
+ int get top => JS('int', '#.top', this._jsObject);
+
+ void set top(int top) {
+ JS('void', '#.top = #', this._jsObject, top);
+ }
+
+ int get width => JS('int', '#.width', this._jsObject);
+
+ void set width(int width) {
+ JS('void', '#.width = #', this._jsObject, width);
+ }
+
+ int get height => JS('int', '#.height', this._jsObject);
+
+ void set height(int height) {
+ JS('void', '#.height = #', this._jsObject, height);
+ }
+
+}
+
+class AppWindowCreateWindowOptions extends ChromeObject {
+ /*
+ * Public constructor
+ */
+ AppWindowCreateWindowOptions({String id, int defaultWidth, int defaultHeight, int defaultLeft, int defaultTop, int width, int height, int left, int top, int minWidth, int minHeight, int maxWidth, int maxHeight, String type, String frame, AppWindowBounds bounds, bool transparentBackground, String state, bool hidden, bool resizable, bool singleton}) {
+ if (id != null)
+ this.id = id;
+ if (defaultWidth != null)
+ this.defaultWidth = defaultWidth;
+ if (defaultHeight != null)
+ this.defaultHeight = defaultHeight;
+ if (defaultLeft != null)
+ this.defaultLeft = defaultLeft;
+ if (defaultTop != null)
+ this.defaultTop = defaultTop;
+ if (width != null)
+ this.width = width;
+ if (height != null)
+ this.height = height;
+ if (left != null)
+ this.left = left;
+ if (top != null)
+ this.top = top;
+ if (minWidth != null)
+ this.minWidth = minWidth;
+ if (minHeight != null)
+ this.minHeight = minHeight;
+ if (maxWidth != null)
+ this.maxWidth = maxWidth;
+ if (maxHeight != null)
+ this.maxHeight = maxHeight;
+ if (type != null)
+ this.type = type;
+ if (frame != null)
+ this.frame = frame;
+ if (bounds != null)
+ this.bounds = bounds;
+ if (transparentBackground != null)
+ this.transparentBackground = transparentBackground;
+ if (state != null)
+ this.state = state;
+ if (hidden != null)
+ this.hidden = hidden;
+ if (resizable != null)
+ this.resizable = resizable;
+ if (singleton != null)
+ this.singleton = singleton;
+ }
+
+ /*
+ * Private constructor
+ */
+ AppWindowCreateWindowOptions._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ /// Id to identify the window. This will be used to remember the size and
+ /// position of the window and restore that geometry when a window with the
+ /// same id is later opened.
+ String get id => JS('String', '#.id', this._jsObject);
+
+ void set id(String id) {
+ JS('void', '#.id = #', this._jsObject, id);
+ }
+
+ /// Default width of the window. (Deprecated; regular bounds act like this
+ /// now.)
+ int get defaultWidth => JS('int', '#.defaultWidth', this._jsObject);
+
+ void set defaultWidth(int defaultWidth) {
+ JS('void', '#.defaultWidth = #', this._jsObject, defaultWidth);
+ }
+
+ /// Default height of the window. (Deprecated; regular bounds act like this
+ /// now.)
+ int get defaultHeight => JS('int', '#.defaultHeight', this._jsObject);
+
+ void set defaultHeight(int defaultHeight) {
+ JS('void', '#.defaultHeight = #', this._jsObject, defaultHeight);
+ }
+
+ /// Default X coordinate of the window. (Deprecated; regular bounds act like
+ /// this now.)
+ int get defaultLeft => JS('int', '#.defaultLeft', this._jsObject);
+
+ void set defaultLeft(int defaultLeft) {
+ JS('void', '#.defaultLeft = #', this._jsObject, defaultLeft);
+ }
+
+ /// Default Y coordinate of the window. (Deprecated; regular bounds act like
+ /// this now.)
+ int get defaultTop => JS('int', '#.defaultTop', this._jsObject);
+
+ void set defaultTop(int defaultTop) {
+ JS('void', '#.defaultTop = #', this._jsObject, defaultTop);
+ }
+
+ /// Width of the window. (Deprecated; use 'bounds'.)
+ int get width => JS('int', '#.width', this._jsObject);
+
+ void set width(int width) {
+ JS('void', '#.width = #', this._jsObject, width);
+ }
+
+ /// Height of the window. (Deprecated; use 'bounds'.)
+ int get height => JS('int', '#.height', this._jsObject);
+
+ void set height(int height) {
+ JS('void', '#.height = #', this._jsObject, height);
+ }
+
+ /// X coordinate of the window. (Deprecated; use 'bounds'.)
+ int get left => JS('int', '#.left', this._jsObject);
+
+ void set left(int left) {
+ JS('void', '#.left = #', this._jsObject, left);
+ }
+
+ /// Y coordinate of the window. (Deprecated; use 'bounds'.)
+ int get top => JS('int', '#.top', this._jsObject);
+
+ void set top(int top) {
+ JS('void', '#.top = #', this._jsObject, top);
+ }
+
+ /// Minimum width for the lifetime of the window.
+ int get minWidth => JS('int', '#.minWidth', this._jsObject);
+
+ void set minWidth(int minWidth) {
+ JS('void', '#.minWidth = #', this._jsObject, minWidth);
+ }
+
+ /// Minimum height for the lifetime of the window.
+ int get minHeight => JS('int', '#.minHeight', this._jsObject);
+
+ void set minHeight(int minHeight) {
+ JS('void', '#.minHeight = #', this._jsObject, minHeight);
+ }
+
+ /// Maximum width for the lifetime of the window.
+ int get maxWidth => JS('int', '#.maxWidth', this._jsObject);
+
+ void set maxWidth(int maxWidth) {
+ JS('void', '#.maxWidth = #', this._jsObject, maxWidth);
+ }
+
+ /// Maximum height for the lifetime of the window.
+ int get maxHeight => JS('int', '#.maxHeight', this._jsObject);
+
+ void set maxHeight(int maxHeight) {
+ JS('void', '#.maxHeight = #', this._jsObject, maxHeight);
+ }
+
+ /// Type of window to create.
+ String get type => JS('String', '#.type', this._jsObject);
+
+ void set type(String type) {
+ JS('void', '#.type = #', this._jsObject, type);
+ }
+
+ /// Frame type: 'none' or 'chrome' (defaults to 'chrome').
+ String get frame => JS('String', '#.frame', this._jsObject);
+
+ void set frame(String frame) {
+ JS('void', '#.frame = #', this._jsObject, frame);
+ }
+
+ /// Size and position of the content in the window (excluding the titlebar). If
+ /// an id is also specified and a window with a matching id has been shown
+ /// before, the remembered bounds of the window will be used instead.
+ AppWindowBounds get bounds => new AppWindowBounds._proxy(JS('', '#.bounds', this._jsObject));
+
+ void set bounds(AppWindowBounds bounds) {
+ JS('void', '#.bounds = #', this._jsObject, convertArgument(bounds));
+ }
+
+ /// Enable window background transparency. Only supported in ash. Requires
+ /// experimental API permission.
+ bool get transparentBackground => JS('bool', '#.transparentBackground', this._jsObject);
+
+ void set transparentBackground(bool transparentBackground) {
+ JS('void', '#.transparentBackground = #', this._jsObject, transparentBackground);
+ }
+
+ /// The initial state of the window, allowing it to be created already
+ /// fullscreen, maximized, or minimized. Defaults to 'normal'.
+ String get state => JS('String', '#.state', this._jsObject);
+
+ void set state(String state) {
+ JS('void', '#.state = #', this._jsObject, state);
+ }
+
+ /// If true, the window will be created in a hidden state. Call show() on the
+ /// window to show it once it has been created. Defaults to false.
+ bool get hidden => JS('bool', '#.hidden', this._jsObject);
+
+ void set hidden(bool hidden) {
+ JS('void', '#.hidden = #', this._jsObject, hidden);
+ }
+
+ /// If true, the window will be resizable by the user. Defaults to true.
+ bool get resizable => JS('bool', '#.resizable', this._jsObject);
+
+ void set resizable(bool resizable) {
+ JS('void', '#.resizable = #', this._jsObject, resizable);
+ }
+
+ /// By default if you specify an id for the window, the window will only be
+ /// created if another window with the same id doesn't already exist. If a
+ /// window with the same id already exists that window is activated instead. If
+ /// you do want to create multiple windows with the same id, you can set this
+ /// property to false.
+ bool get singleton => JS('bool', '#.singleton', this._jsObject);
+
+ void set singleton(bool singleton) {
+ JS('void', '#.singleton = #', this._jsObject, singleton);
+ }
+
+}
+
+class AppWindowAppWindow extends ChromeObject {
+ /*
+ * Private constructor
+ */
+ AppWindowAppWindow._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ /// The JavaScript 'window' object for the created child.
+ // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+ // for details. All rights reserved. Use of this source code is governed by a
+ // BSD-style license that can be found in the LICENSE file.
+
+ // TODO(sashab, sra): Detect whether this is the current window, or an
+ // external one, and return an appropriately-typed object
+ WindowBase get contentWindow =>
+ JS("Window", "#.contentWindow", this._jsObject);
+
+ /*
+ * Methods
+ */
+ /// Focus the window.
+ void focus() => JS('void', '#.focus()', this._jsObject);
+
+ /// Fullscreens the window.
+ void fullscreen() => JS('void', '#.fullscreen()', this._jsObject);
+
+ /// Is the window fullscreen?
+ bool isFullscreen() => JS('bool', '#.isFullscreen()', this._jsObject);
+
+ /// Minimize the window.
+ void minimize() => JS('void', '#.minimize()', this._jsObject);
+
+ /// Is the window minimized?
+ bool isMinimized() => JS('bool', '#.isMinimized()', this._jsObject);
+
+ /// Maximize the window.
+ void maximize() => JS('void', '#.maximize()', this._jsObject);
+
+ /// Is the window maximized?
+ bool isMaximized() => JS('bool', '#.isMaximized()', this._jsObject);
+
+ /// Restore the window, exiting a maximized, minimized, or fullscreen state.
+ void restore() => JS('void', '#.restore()', this._jsObject);
+
+ /// Move the window to the position (|left|, |top|).
+ void moveTo(int left, int top) => JS('void', '#.moveTo(#, #)', this._jsObject, left, top);
+
+ /// Resize the window to |width|x|height| pixels in size.
+ void resizeTo(int width, int height) => JS('void', '#.resizeTo(#, #)', this._jsObject, width, height);
+
+ /// Draw attention to the window.
+ void drawAttention() => JS('void', '#.drawAttention()', this._jsObject);
+
+ /// Clear attention to the window.
+ void clearAttention() => JS('void', '#.clearAttention()', this._jsObject);
+
+ /// Close the window.
+ void close() => JS('void', '#.close()', this._jsObject);
+
+ /// Show the window. Does nothing if the window is already visible.
+ void show() => JS('void', '#.show()', this._jsObject);
+
+ /// Hide the window. Does nothing if the window is already hidden.
+ void hide() => JS('void', '#.hide()', this._jsObject);
+
+ /// Get the window's bounds as a $ref:Bounds object.
+ // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+ // for details. All rights reserved. Use of this source code is governed by a
+ // BSD-style license that can be found in the LICENSE file.
+
+ // TODO(sashab, kalman): Fix IDL parser to read function return values
+ // correctly. Currently, it just reads void for all functions.
+ AppWindowBounds getBounds() =>
+ new AppWindowBounds._proxy(JS('void', '#.getBounds()', this._jsObject));
+
+ /// Set the window's bounds.
+ void setBounds(AppWindowBounds bounds) => JS('void', '#.setBounds(#)', this._jsObject, convertArgument(bounds));
+
+ /// Set the app icon for the window (experimental). Currently this is only
+ /// being implemented on Ash. TODO(stevenjb): Investigate implementing this on
+ /// Windows and OSX.
+ void setIcon(String icon_url) => JS('void', '#.setIcon(#)', this._jsObject, icon_url);
+
+}
+
+/**
+ * Events
+ */
+
+/// Fired when the window is resized.
+class Event_app_window_onBoundsChanged extends Event {
+ void addListener(void callback()) => super.addListener(callback);
+
+ void removeListener(void callback()) => super.removeListener(callback);
+
+ bool hasListener(void callback()) => super.hasListener(callback);
+
+ Event_app_window_onBoundsChanged(jsObject) : super._(jsObject, 0);
+}
+
+/// Fired when the window is closed.
+class Event_app_window_onClosed extends Event {
+ void addListener(void callback()) => super.addListener(callback);
+
+ void removeListener(void callback()) => super.removeListener(callback);
+
+ bool hasListener(void callback()) => super.hasListener(callback);
+
+ Event_app_window_onClosed(jsObject) : super._(jsObject, 0);
+}
+
+/// Fired when the window is fullscreened.
+class Event_app_window_onFullscreened extends Event {
+ void addListener(void callback()) => super.addListener(callback);
+
+ void removeListener(void callback()) => super.removeListener(callback);
+
+ bool hasListener(void callback()) => super.hasListener(callback);
+
+ Event_app_window_onFullscreened(jsObject) : super._(jsObject, 0);
+}
+
+/// Fired when the window is maximized.
+class Event_app_window_onMaximized extends Event {
+ void addListener(void callback()) => super.addListener(callback);
+
+ void removeListener(void callback()) => super.removeListener(callback);
+
+ bool hasListener(void callback()) => super.hasListener(callback);
+
+ Event_app_window_onMaximized(jsObject) : super._(jsObject, 0);
+}
+
+/// Fired when the window is minimized.
+class Event_app_window_onMinimized extends Event {
+ void addListener(void callback()) => super.addListener(callback);
+
+ void removeListener(void callback()) => super.removeListener(callback);
+
+ bool hasListener(void callback()) => super.hasListener(callback);
+
+ Event_app_window_onMinimized(jsObject) : super._(jsObject, 0);
+}
+
+/// Fired when the window is restored from being minimized or maximized.
+class Event_app_window_onRestored extends Event {
+ void addListener(void callback()) => super.addListener(callback);
+
+ void removeListener(void callback()) => super.removeListener(callback);
+
+ bool hasListener(void callback()) => super.hasListener(callback);
+
+ Event_app_window_onRestored(jsObject) : super._(jsObject, 0);
+}
+
+/**
+ * Functions
+ */
+
+class API_app_window {
+ /*
+ * API connection
+ */
+ Object _jsObject;
+
+ /*
+ * Events
+ */
+ Event_app_window_onBoundsChanged onBoundsChanged;
+ Event_app_window_onClosed onClosed;
+ Event_app_window_onFullscreened onFullscreened;
+ Event_app_window_onMaximized onMaximized;
+ Event_app_window_onMinimized onMinimized;
+ Event_app_window_onRestored onRestored;
+
+ /*
+ * Functions
+ */
+ /// The size and position of a window can be specified in a number of different
+ /// ways. The most simple option is not specifying anything at all, in which
+ /// case a default size and platform dependent position will be used.
+ /// Another option is to use the bounds property, which will put the window at
+ /// the specified coordinates with the specified size. If the window has a
+ /// frame, it's total size will be the size given plus the size of the frame;
+ /// that is, the size in bounds is the content size, not the window
+ /// size. To automatically remember the positions of windows you can
+ /// give them ids. If a window has an id, This id is used to remember the size
+ /// and position of the window whenever it is moved or resized. This size and
+ /// position is then used instead of the specified bounds on subsequent opening
+ /// of a window with the same id. If you need to open a window with an id at a
+ /// location other than the remembered default, you can create it hidden, move
+ /// it to the desired location, then show it.
+ // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+ // for details. All rights reserved. Use of this source code is governed by a
+ // BSD-style license that can be found in the LICENSE file.
+
+ // TODO(sashab): This override is no longer needed once prefixes are removed.
+ void create(String url,
+ [AppWindowCreateWindowOptions options,
+ void callback(AppWindowAppWindow created_window)]) {
+ void __proxy_callback(created_window) {
+ if (callback != null)
+ callback(new AppWindowAppWindow._proxy(created_window));
+ }
+ JS('void', '#.create(#, #, #)', this._jsObject, url, convertArgument(options),
+ convertDartClosureToJS(__proxy_callback, 1));
+ }
+
+ /// Returns an $ref:AppWindow object for the current script context (ie
+ /// JavaScript 'window' object). This can also be called on a handle to a
+ /// script context for another page, for example:
+ /// otherWindow.chrome.app.window.current().
+ // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+ // for details. All rights reserved. Use of this source code is governed by a
+ // BSD-style license that can be found in the LICENSE file.
+
+ // TODO(sashab, kalman): Fix IDL parser to read function return values
+ // correctly. Currently, it just reads void for all functions.
+ AppWindowAppWindow current() =>
+ new AppWindowAppWindow._proxy(JS('void', '#.current()', this._jsObject));
+
+ void initializeAppWindow(Object state) => JS('void', '#.initializeAppWindow(#)', this._jsObject, convertArgument(state));
+
+ API_app_window(this._jsObject) {
+ onBoundsChanged = new Event_app_window_onBoundsChanged(JS('', '#.onBoundsChanged', this._jsObject));
+ onClosed = new Event_app_window_onClosed(JS('', '#.onClosed', this._jsObject));
+ onFullscreened = new Event_app_window_onFullscreened(JS('', '#.onFullscreened', this._jsObject));
+ onMaximized = new Event_app_window_onMaximized(JS('', '#.onMaximized', this._jsObject));
+ onMinimized = new Event_app_window_onMinimized(JS('', '#.onMinimized', this._jsObject));
+ onRestored = new Event_app_window_onRestored(JS('', '#.onRestored', this._jsObject));
+ }
+}
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Generated from namespace: app.runtime
+
+
+/**
+ * Types
+ */
+
+class AppRuntimeLaunchItem extends ChromeObject {
+ /*
+ * Public constructor
+ */
+ AppRuntimeLaunchItem({FileEntry entry, String type}) {
+ if (entry != null)
+ this.entry = entry;
+ if (type != null)
+ this.type = type;
+ }
+
+ /*
+ * Private constructor
+ */
+ AppRuntimeLaunchItem._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ /// FileEntry for the file.
+ FileEntry get entry => JS('FileEntry', '#.entry', this._jsObject);
+
+ void set entry(FileEntry entry) {
+ JS('void', '#.entry = #', this._jsObject, convertArgument(entry));
+ }
+
+ /// The MIME type of the file.
+ String get type => JS('String', '#.type', this._jsObject);
+
+ void set type(String type) {
+ JS('void', '#.type = #', this._jsObject, type);
+ }
+
+}
+
+class AppRuntimeLaunchData extends ChromeObject {
+ /*
+ * Public constructor
+ */
+ AppRuntimeLaunchData({String id, List items}) {
+ if (id != null)
+ this.id = id;
+ if (items != null)
+ this.items = items;
+ }
+
+ /*
+ * Private constructor
+ */
+ AppRuntimeLaunchData._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ /// The id of the file handler that the app is being invoked with.
+ String get id => JS('String', '#.id', this._jsObject);
+
+ void set id(String id) {
+ JS('void', '#.id = #', this._jsObject, id);
+ }
+
+ List get items {
+ List __proxy_items = new List();
+ int count = JS('int', '#.items.length', this._jsObject);
+ for (int i = 0; i < count; i++) {
+ var item = JS('', '#.items[#]', this._jsObject, i);
+ __proxy_items.add(new AppRuntimeLaunchItem._proxy(item));
+ }
+ return __proxy_items;
+ }
+
+ void set items(List items) {
+ JS('void', '#.items = #', this._jsObject, convertArgument(items));
+ }
+
+}
+
+/**
+ * Events
+ */
+
+/// Fired when an app is launched from the launcher.
+class Event_app_runtime_onLaunched extends Event {
+ void addListener(void callback(AppRuntimeLaunchData launchData)) {
+ void __proxy_callback(launchData) {
+ if (callback != null) {
+ callback(new AppRuntimeLaunchData._proxy(launchData));
+ }
+ }
+ super.addListener(__proxy_callback);
+ }
+
+ void removeListener(void callback(AppRuntimeLaunchData launchData)) {
+ void __proxy_callback(launchData) {
+ if (callback != null) {
+ callback(new AppRuntimeLaunchData._proxy(launchData));
+ }
+ }
+ super.removeListener(__proxy_callback);
+ }
+
+ bool hasListener(void callback(AppRuntimeLaunchData launchData)) {
+ void __proxy_callback(launchData) {
+ if (callback != null) {
+ callback(new AppRuntimeLaunchData._proxy(launchData));
+ }
+ }
+ super.hasListener(__proxy_callback);
+ }
+
+ Event_app_runtime_onLaunched(jsObject) : super._(jsObject, 1);
+}
+
+/// Fired at Chrome startup to apps that were running when Chrome last shut
+/// down.
+class Event_app_runtime_onRestarted extends Event {
+ void addListener(void callback()) => super.addListener(callback);
+
+ void removeListener(void callback()) => super.removeListener(callback);
+
+ bool hasListener(void callback()) => super.hasListener(callback);
+
+ Event_app_runtime_onRestarted(jsObject) : super._(jsObject, 0);
+}
+
+/**
+ * Functions
+ */
+
+class API_app_runtime {
+ /*
+ * API connection
+ */
+ Object _jsObject;
+
+ /*
+ * Events
+ */
+ Event_app_runtime_onLaunched onLaunched;
+ Event_app_runtime_onRestarted onRestarted;
+ API_app_runtime(this._jsObject) {
+ onLaunched = new Event_app_runtime_onLaunched(JS('', '#.onLaunched', this._jsObject));
+ onRestarted = new Event_app_runtime_onRestarted(JS('', '#.onRestarted', this._jsObject));
+ }
+}
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Generated from namespace: fileSystem
+
+
+/**
+ * Types
+ */
+
+class FilesystemAcceptOption extends ChromeObject {
+ /*
+ * Public constructor
+ */
+ FilesystemAcceptOption({String description, List mimeTypes, List extensions}) {
+ if (description != null)
+ this.description = description;
+ if (mimeTypes != null)
+ this.mimeTypes = mimeTypes;
+ if (extensions != null)
+ this.extensions = extensions;
+ }
+
+ /*
+ * Private constructor
+ */
+ FilesystemAcceptOption._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ /// This is the optional text description for this option. If not present, a
+ /// description will be automatically generated; typically containing an
+ /// expanded list of valid extensions (e.g. "text/html" may expand to "*.html,
+ /// *.htm").
+ String get description => JS('String', '#.description', this._jsObject);
+
+ void set description(String description) {
+ JS('void', '#.description = #', this._jsObject, description);
+ }
+
+ /// Mime-types to accept, e.g. "image/jpeg" or "audio/*". One of mimeTypes or
+ /// extensions must contain at least one valid element.
+ List get mimeTypes => JS('List', '#.mimeTypes', this._jsObject);
+
+ void set mimeTypes(List mimeTypes) {
+ JS('void', '#.mimeTypes = #', this._jsObject, mimeTypes);
+ }
+
+ /// Extensions to accept, e.g. "jpg", "gif", "crx".
+ List get extensions => JS('List', '#.extensions', this._jsObject);
+
+ void set extensions(List extensions) {
+ JS('void', '#.extensions = #', this._jsObject, extensions);
+ }
+
+}
+
+class FilesystemChooseEntryOptions extends ChromeObject {
+ /*
+ * Public constructor
+ */
+ FilesystemChooseEntryOptions({String type, String suggestedName, List accepts, bool acceptsAllTypes}) {
+ if (type != null)
+ this.type = type;
+ if (suggestedName != null)
+ this.suggestedName = suggestedName;
+ if (accepts != null)
+ this.accepts = accepts;
+ if (acceptsAllTypes != null)
+ this.acceptsAllTypes = acceptsAllTypes;
+ }
+
+ /*
+ * Private constructor
+ */
+ FilesystemChooseEntryOptions._proxy(_jsObject) : super._proxy(_jsObject);
+
+ /*
+ * Public accessors
+ */
+ /// Type of the prompt to show. The default is 'openFile'.
+ String get type => JS('String', '#.type', this._jsObject);
+
+ void set type(String type) {
+ JS('void', '#.type = #', this._jsObject, type);
+ }
+
+ /// The suggested file name that will be presented to the user as the default
+ /// name to read or write. This is optional.
+ String get suggestedName => JS('String', '#.suggestedName', this._jsObject);
+
+ void set suggestedName(String suggestedName) {
+ JS('void', '#.suggestedName = #', this._jsObject, suggestedName);
+ }
+
+ /// The optional list of accept options for this file opener. Each option will
+ /// be presented as a unique group to the end-user.
+ List get accepts {
+ List __proxy_accepts = new List();
+ int count = JS('int', '#.accepts.length', this._jsObject);
+ for (int i = 0; i < count; i++) {
+ var item = JS('', '#.accepts[#]', this._jsObject, i);
+ __proxy_accepts.add(new FilesystemAcceptOption._proxy(item));
+ }
+ return __proxy_accepts;
+ }
+
+ void set accepts(List accepts) {
+ JS('void', '#.accepts = #', this._jsObject, convertArgument(accepts));
+ }
+
+ /// Whether to accept all file types, in addition to the options specified in
+ /// the accepts argument. The default is true. If the accepts field is unset or
+ /// contains no valid entries, this will always be reset to true.
+ bool get acceptsAllTypes => JS('bool', '#.acceptsAllTypes', this._jsObject);
+
+ void set acceptsAllTypes(bool acceptsAllTypes) {
+ JS('void', '#.acceptsAllTypes = #', this._jsObject, acceptsAllTypes);
+ }
+
+}
+
+/**
+ * Functions
+ */
+
+class API_file_system {
+ /*
+ * API connection
+ */
+ Object _jsObject;
+
+ /*
+ * Functions
+ */
+ /// Get the display path of a FileEntry object. The display path is based on
+ /// the full path of the file on the local file system, but may be made more
+ /// readable for display purposes.
+ void getDisplayPath(FileEntry fileEntry, void callback(String displayPath)) => JS('void', '#.getDisplayPath(#, #)', this._jsObject, convertArgument(fileEntry), convertDartClosureToJS(callback, 1));
+
+ /// Get a writable FileEntry from another FileEntry. This call will fail if the
+ /// application does not have the 'write' permission under 'fileSystem'.
+ void getWritableEntry(FileEntry fileEntry, void callback(FileEntry fileEntry)) {
+ void __proxy_callback(fileEntry) {
+ if (callback != null) {
+ callback(fileEntry);
+ }
+ }
+ JS('void', '#.getWritableEntry(#, #)', this._jsObject, convertArgument(fileEntry), convertDartClosureToJS(__proxy_callback, 1));
+ }
+
+ /// Gets whether this FileEntry is writable or not.
+ void isWritableEntry(FileEntry fileEntry, void callback(bool isWritable)) => JS('void', '#.isWritableEntry(#, #)', this._jsObject, convertArgument(fileEntry), convertDartClosureToJS(callback, 1));
+
+ /// Ask the user to choose a file.
+ void chooseEntry(void callback(FileEntry fileEntry), [FilesystemChooseEntryOptions options]) {
+ void __proxy_callback(fileEntry) {
+ if (callback != null) {
+ callback(fileEntry);
+ }
+ }
+ JS('void', '#.chooseEntry(#, #)', this._jsObject, convertArgument(options), convertDartClosureToJS(__proxy_callback, 1));
+ }
+
+ /// Returns the file entry with the given id if it can be restored. This call
+ /// will fail otherwise.
+ void restoreEntry(String id, void callback(FileEntry fileEntry)) {
+ void __proxy_callback(fileEntry) {
+ if (callback != null) {
+ callback(fileEntry);
+ }
+ }
+ JS('void', '#.restoreEntry(#, #)', this._jsObject, id, convertDartClosureToJS(__proxy_callback, 1));
+ }
+
+ /// Returns whether a file entry for the given id can be restored, i.e. whether
+ /// restoreEntry would succeed with this id now.
+ void isRestorable(String id, void callback(bool isRestorable)) => JS('void', '#.isRestorable(#, #)', this._jsObject, id, convertDartClosureToJS(callback, 1));
+
+ /// Returns an id that can be passed to restoreEntry to regain access to a
+ /// given file entry. Only the 500 most recently used entries are retained,
+ /// where calls to retainEntry and restoreEntry count as use. If the app has
+ /// the 'retainEntries' permission under 'fileSystem', entries are retained
+ /// indefinitely. Otherwise, entries are retained only while the app is running
+ /// and across restarts.
+ String retainEntry(FileEntry fileEntry) => JS('String', '#.retainEntry(#)', this._jsObject, convertArgument(fileEntry));
+
+ API_file_system(this._jsObject) {
+ }
+}
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_chrome/dartium/chrome_dartium.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_chrome/dartium/chrome_dartium.dart
new file mode 100644
index 0000000..c16c9e5
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_chrome/dartium/chrome_dartium.dart
@@ -0,0 +1,16 @@
+/// Native wrappers for the Chrome Packaged App APIs.
+///
+/// These functions allow direct access to the Packaged App APIs, allowing
+/// Chrome Packaged Apps to be written using Dart.
+///
+/// For more information on these APIs, see the
+/// [Chrome APIs Documentation](http://developer.chrome.com/extensions/api_index.html)
+library _chrome;
+
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// DO NOT EDIT
+// Auto-generated dart:_chrome library.
+
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/compiler.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/compiler.dart
new file mode 100644
index 0000000..b79ab22
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/compiler.dart
@@ -0,0 +1,187 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library compiler;
+
+import 'dart:async';
+import 'implementation/apiimpl.dart';
+
+// Unless explicitly allowed, passing [:null:] for any argument to the
+// methods of library will result in an Error being thrown.
+
+/**
+ * Returns a future that completes to the source corresponding to [uri].
+ * If an exception occurs, the future completes with this exception.
+ *
+ * The source can be represented either as a [:List:] of UTF-8 bytes or as
+ * a [String].
+ *
+ * The following text is non-normative:
+ *
+ * It is recommended to return a UTF-8 encoded list of bytes because the scanner
+ * is more efficient in this case. In either case, the data structure is
+ * expected to hold a zero element at the last position. If this is not the
+ * case, the entire data structure is copied before scanning.
+ */
+typedef Future/*>*/ CompilerInputProvider(Uri uri);
+
+/// Deprecated, please use [CompilerInputProvider] instead.
+typedef Future ReadStringFromUri(Uri uri);
+
+/**
+ * Returns an [EventSink] that will serve as compiler output for the given
+ * component.
+ *
+ * Components are identified by [name] and [extension]. By convention,
+ * the empty string [:"":] will represent the main script
+ * (corresponding to the script parameter of [compile]) even if the
+ * main script is a library. For libraries that are compiled
+ * separately, the library name is used.
+ *
+ * At least the following extensions can be expected:
+ *
+ * * "js" for JavaScript output.
+ * * "js.map" for source maps.
+ * * "dart" for Dart output.
+ * * "dart.map" for source maps.
+ *
+ * As more features are added to the compiler, new names and
+ * extensions may be introduced.
+ */
+typedef EventSink CompilerOutputProvider(String name,
+ String extension);
+
+/**
+ * Invoked by the compiler to report diagnostics. If [uri] is
+ * [:null:], so are [begin] and [end]. No other arguments may be
+ * [:null:]. If [uri] is not [:null:], neither are [begin] and
+ * [end]. [uri] indicates the compilation unit from where the
+ * diagnostic originates. [begin] and [end] are zero-based character
+ * offsets from the beginning of the compilaton unit. [message] is the
+ * diagnostic message, and [kind] indicates indicates what kind of
+ * diagnostic it is.
+ */
+typedef void DiagnosticHandler(Uri uri, int begin, int end,
+ String message, Diagnostic kind);
+
+/**
+ * Returns a future that completes to a non-null String when [script]
+ * has been successfully compiled.
+ *
+ * The compiler output is obtained by providing an [outputProvider].
+ *
+ * If the compilation fails, the future's value will be [:null:] and
+ * [handler] will have been invoked at least once with [:kind ==
+ * Diagnostic.ERROR:] or [:kind == Diagnostic.CRASH:].
+ *
+ * Deprecated: if no [outputProvider] is given, the future completes
+ * to the compiled script. This behavior will be removed in the future
+ * as the compiler may create multiple files to support lazy loading
+ * of libraries.
+ */
+Future compile(Uri script,
+ Uri libraryRoot,
+ Uri packageRoot,
+ CompilerInputProvider inputProvider,
+ DiagnosticHandler handler,
+ [List options = const [],
+ CompilerOutputProvider outputProvider,
+ Map environment = const {}]) {
+ if (!libraryRoot.path.endsWith("/")) {
+ throw new ArgumentError("libraryRoot must end with a /");
+ }
+ if (packageRoot != null && !packageRoot.path.endsWith("/")) {
+ throw new ArgumentError("packageRoot must end with a /");
+ }
+ // TODO(ahe): Consider completing the future with an exception if
+ // code is null.
+ Compiler compiler = new Compiler(inputProvider,
+ outputProvider,
+ handler,
+ libraryRoot,
+ packageRoot,
+ options,
+ environment);
+ // TODO(ahe): Use the value of the future (which signals success or failure).
+ return compiler.run(script).then((_) {
+ String code = compiler.assembledCode;
+ if (code != null && outputProvider != null) {
+ code = ''; // Non-null signals success.
+ }
+ return code;
+ });
+}
+
+/**
+ * Kind of diagnostics that the compiler can report.
+ */
+class Diagnostic {
+ /**
+ * An error as identified by the "Dart Programming Language
+ * Specification" [http://www.dartlang.org/docs/spec/].
+ *
+ * Note: the compiler may still produce an executable result after
+ * reporting a compilation error. The specification says:
+ *
+ * "A compile-time error must be reported by a Dart compiler before
+ * the erroneous code is executed." and "If a compile-time error
+ * occurs within the code of a running isolate A, A is immediately
+ * suspended."
+ *
+ * This means that the compiler can generate code that when executed
+ * terminates execution.
+ */
+ static const Diagnostic ERROR = const Diagnostic(1, 'error');
+
+ /**
+ * A warning as identified by the "Dart Programming Language
+ * Specification" [http://www.dartlang.org/docs/spec/].
+ */
+ static const Diagnostic WARNING = const Diagnostic(2, 'warning');
+
+ /**
+ * Any other warning that is not covered by [WARNING].
+ */
+ static const Diagnostic HINT = const Diagnostic(4, 'hint');
+
+ /**
+ * Additional information about the preceding non-info diagnostic from the
+ * compiler.
+ *
+ * For example, consider a duplicated definition. The compiler first emits a
+ * message about the duplicated definition, then emits an info message about
+ * the location of the existing definition.
+ */
+ static const Diagnostic INFO = const Diagnostic(8, 'info');
+
+ /**
+ * Informational messages that shouldn't be printed unless
+ * explicitly requested by the user of a compiler.
+ */
+ static const Diagnostic VERBOSE_INFO = const Diagnostic(16, 'verbose info');
+
+ /**
+ * An internal error in the compiler.
+ */
+ static const Diagnostic CRASH = const Diagnostic(32, 'crash');
+
+ /**
+ * An [int] representation of this kind. The ordinals are designed
+ * to be used as bitsets.
+ */
+ final int ordinal;
+
+ /**
+ * The name of this kind.
+ */
+ final String name;
+
+ /**
+ * This constructor is not private to support user-defined
+ * diagnostic kinds.
+ */
+ const Diagnostic(this.ordinal, this.name);
+
+ String toString() => name;
+}
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/apiimpl.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/apiimpl.dart
new file mode 100644
index 0000000..bde352e
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/apiimpl.dart
@@ -0,0 +1,342 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library leg_apiimpl;
+
+import 'dart:async';
+
+import '../compiler.dart' as api;
+import 'dart2jslib.dart' as leg;
+import 'tree/tree.dart' as tree;
+import 'elements/elements.dart' as elements;
+import 'ssa/tracer.dart' as ssa;
+import '../../libraries.dart';
+import 'source_file.dart';
+
+
+class Compiler extends leg.Compiler {
+ api.CompilerInputProvider provider;
+ api.DiagnosticHandler handler;
+ final Uri libraryRoot;
+ final Uri packageRoot;
+ List options;
+ Map environment;
+ bool mockableLibraryUsed = false;
+ final Set allowedLibraryCategories;
+
+ Compiler(this.provider,
+ api.CompilerOutputProvider outputProvider,
+ this.handler,
+ this.libraryRoot,
+ this.packageRoot,
+ List options,
+ this.environment)
+ : this.options = options,
+ this.allowedLibraryCategories = getAllowedLibraryCategories(options),
+ super(
+ tracer: new ssa.HTracer(
+ ssa.GENERATE_SSA_TRACE ? outputProvider('dart', 'cfg') : null),
+ outputProvider: outputProvider,
+ enableTypeAssertions: hasOption(options, '--enable-checked-mode'),
+ enableUserAssertions: hasOption(options, '--enable-checked-mode'),
+ trustTypeAnnotations:
+ hasOption(options, '--trust-type-annotations'),
+ enableMinification: hasOption(options, '--minify'),
+ enableNativeLiveTypeAnalysis:
+ !hasOption(options, '--disable-native-live-type-analysis'),
+ emitJavaScript: !hasOption(options, '--output-type=dart'),
+ analyzeAllFlag: hasOption(options, '--analyze-all'),
+ analyzeOnly: hasOption(options, '--analyze-only'),
+ analyzeSignaturesOnly:
+ hasOption(options, '--analyze-signatures-only'),
+ strips: extractCsvOption(options, '--force-strip='),
+ enableConcreteTypeInference:
+ hasOption(options, '--enable-concrete-type-inference'),
+ disableTypeInferenceFlag:
+ hasOption(options, '--disable-type-inference'),
+ preserveComments: hasOption(options, '--preserve-comments'),
+ verbose: hasOption(options, '--verbose'),
+ sourceMapUri: extractUriOption(options, '--source-map='),
+ outputUri: extractUriOption(options, '--out='),
+ terseDiagnostics: hasOption(options, '--terse'),
+ dumpInfo: hasOption(options, '--dump-info'),
+ buildId: extractStringOption(
+ options, '--build-id=',
+ "build number could not be determined"),
+ showPackageWarnings:
+ hasOption(options, '--show-package-warnings')) {
+ if (!libraryRoot.path.endsWith("/")) {
+ throw new ArgumentError("libraryRoot must end with a /");
+ }
+ if (packageRoot != null && !packageRoot.path.endsWith("/")) {
+ throw new ArgumentError("packageRoot must end with a /");
+ }
+ }
+
+ static String extractStringOption(List options,
+ String prefix,
+ String defaultValue) {
+ for (String option in options) {
+ if (option.startsWith(prefix)) {
+ return option.substring(prefix.length);
+ }
+ }
+ return defaultValue;
+ }
+
+ static Uri extractUriOption(List options, String prefix) {
+ var option = extractStringOption(options, prefix, null);
+ return (option == null) ? null : Uri.parse(option);
+ }
+
+ // CSV: Comma separated values.
+ static List extractCsvOption(List options, String prefix) {
+ for (String option in options) {
+ if (option.startsWith(prefix)) {
+ return option.substring(prefix.length).split(',');
+ }
+ }
+ return const [];
+ }
+
+ static Set getAllowedLibraryCategories(List options) {
+ var result = extractCsvOption(options, '--categories=');
+ if (result.isEmpty) {
+ result = ['Client'];
+ }
+ result.add('Shared');
+ result.add('Internal');
+ return new Set.from(result);
+ }
+
+ static bool hasOption(List options, String option) {
+ return options.indexOf(option) >= 0;
+ }
+
+ // TODO(johnniwinther): Merge better with [translateDartUri] when
+ // [scanBuiltinLibrary] is removed.
+ String lookupLibraryPath(String dartLibraryName) {
+ LibraryInfo info = LIBRARIES[dartLibraryName];
+ if (info == null) return null;
+ if (!info.isDart2jsLibrary) return null;
+ if (!allowedLibraryCategories.contains(info.category)) return null;
+ String path = info.dart2jsPath;
+ if (path == null) {
+ path = info.path;
+ }
+ return "lib/$path";
+ }
+
+ String lookupPatchPath(String dartLibraryName) {
+ LibraryInfo info = LIBRARIES[dartLibraryName];
+ if (info == null) return null;
+ if (!info.isDart2jsLibrary) return null;
+ String path = info.dart2jsPatchPath;
+ if (path == null) return null;
+ return "lib/$path";
+ }
+
+ Future scanBuiltinLibrary(String path) {
+ Uri uri = libraryRoot.resolve(lookupLibraryPath(path));
+ Uri canonicalUri = new Uri(scheme: "dart", path: path);
+ return libraryLoader.loadLibrary(uri, null, canonicalUri);
+ }
+
+ void log(message) {
+ handler(null, null, null, message, api.Diagnostic.VERBOSE_INFO);
+ }
+
+ /// See [leg.Compiler.translateResolvedUri].
+ Uri translateResolvedUri(elements.LibraryElement importingLibrary,
+ Uri resolvedUri, tree.Node node) {
+ if (resolvedUri.scheme == 'dart') {
+ return translateDartUri(importingLibrary, resolvedUri, node);
+ }
+ return resolvedUri;
+ }
+
+ /**
+ * Reads the script designated by [readableUri].
+ */
+ Future readScript(leg.Spannable node, Uri readableUri) {
+ if (!readableUri.isAbsolute) {
+ internalError(node,
+ 'Relative uri $readableUri provided to readScript(Uri).');
+ }
+
+ // We need to store the current element since we are reporting read errors
+ // asynchronously and therefore need to restore the current element for
+ // [node] to be valid.
+ elements.Element element = currentElement;
+ void reportReadError(exception) {
+ withCurrentElement(element, () {
+ reportError(node,
+ leg.MessageKind.READ_SCRIPT_ERROR,
+ {'uri': readableUri, 'exception': exception});
+ });
+ }
+
+ Uri resourceUri = translateUri(node, readableUri);
+ // TODO(johnniwinther): Wrap the result from [provider] in a specialized
+ // [Future] to ensure that we never execute an asynchronous action without
+ // setting up the current element of the compiler.
+ return new Future.sync(() => callUserProvider(resourceUri)).then((data) {
+ SourceFile sourceFile;
+ String resourceUriString = resourceUri.toString();
+ if (data is List) {
+ sourceFile = new Utf8BytesSourceFile(resourceUriString, data);
+ } else if (data is String) {
+ sourceFile = new StringSourceFile(resourceUriString, data);
+ } else {
+ String message = "Expected a 'String' or a 'List' from the input "
+ "provider, but got: ${Error.safeToString(data)}.";
+ reportReadError(message);
+ }
+ // We use [readableUri] as the URI for the script since need to preserve
+ // the scheme in the script because [Script.uri] is used for resolving
+ // relative URIs mentioned in the script. See the comment on
+ // [LibraryLoader] for more details.
+ return new leg.Script(readableUri, resourceUri, sourceFile);
+ }).catchError((error) {
+ reportReadError(error);
+ return null;
+ });
+ }
+
+ /**
+ * Translates a readable URI into a resource URI.
+ *
+ * See [LibraryLoader] for terminology on URIs.
+ */
+ Uri translateUri(leg.Spannable node, Uri readableUri) {
+ switch (readableUri.scheme) {
+ case 'package': return translatePackageUri(node, readableUri);
+ default: return readableUri;
+ }
+ }
+
+ Uri translateDartUri(elements.LibraryElement importingLibrary,
+ Uri resolvedUri, tree.Node node) {
+ LibraryInfo libraryInfo = LIBRARIES[resolvedUri.path];
+ String path = lookupLibraryPath(resolvedUri.path);
+ if (libraryInfo != null &&
+ libraryInfo.category == "Internal") {
+ bool allowInternalLibraryAccess = false;
+ if (importingLibrary != null) {
+ if (importingLibrary.isPlatformLibrary || importingLibrary.isPatch) {
+ allowInternalLibraryAccess = true;
+ } else if (importingLibrary.canonicalUri.path.contains(
+ 'dart/tests/compiler/dart2js_native')) {
+ allowInternalLibraryAccess = true;
+ }
+ }
+ if (!allowInternalLibraryAccess) {
+ if (importingLibrary != null) {
+ reportError(
+ node,
+ leg.MessageKind.INTERNAL_LIBRARY_FROM,
+ {'resolvedUri': resolvedUri,
+ 'importingUri': importingLibrary.canonicalUri});
+ } else {
+ reportError(
+ node,
+ leg.MessageKind.INTERNAL_LIBRARY,
+ {'resolvedUri': resolvedUri});
+ }
+ }
+ }
+ if (path == null) {
+ reportError(node, leg.MessageKind.LIBRARY_NOT_FOUND,
+ {'resolvedUri': resolvedUri});
+ return null;
+ }
+ if (resolvedUri.path == 'html' ||
+ resolvedUri.path == 'io') {
+ // TODO(ahe): Get rid of mockableLibraryUsed when test.dart
+ // supports this use case better.
+ mockableLibraryUsed = true;
+ }
+ return libraryRoot.resolve(path);
+ }
+
+ Uri resolvePatchUri(String dartLibraryPath) {
+ String patchPath = lookupPatchPath(dartLibraryPath);
+ if (patchPath == null) return null;
+ return libraryRoot.resolve(patchPath);
+ }
+
+ Uri translatePackageUri(leg.Spannable node, Uri uri) {
+ if (packageRoot == null) {
+ reportFatalError(
+ node, leg.MessageKind.PACKAGE_ROOT_NOT_SET, {'uri': uri});
+ }
+ return packageRoot.resolve(uri.path);
+ }
+
+ Future run(Uri uri) {
+ log('Allowed library categories: $allowedLibraryCategories');
+ return super.run(uri).then((bool success) {
+ int cumulated = 0;
+ for (final task in tasks) {
+ cumulated += task.timing;
+ log('${task.name} took ${task.timing}msec');
+ }
+ int total = totalCompileTime.elapsedMilliseconds;
+ log('Total compile-time ${total}msec;'
+ ' unaccounted ${total - cumulated}msec');
+ return success;
+ });
+ }
+
+ void reportDiagnostic(leg.Spannable node,
+ leg.Message message,
+ api.Diagnostic kind) {
+ leg.SourceSpan span = spanFromSpannable(node);
+ if (identical(kind, api.Diagnostic.ERROR)
+ || identical(kind, api.Diagnostic.CRASH)) {
+ compilationFailed = true;
+ }
+ // [:span.uri:] might be [:null:] in case of a [Script] with no [uri]. For
+ // instance in the [Types] constructor in typechecker.dart.
+ if (span == null || span.uri == null) {
+ callUserHandler(null, null, null, '$message', kind);
+ } else {
+ callUserHandler(
+ translateUri(null, span.uri), span.begin, span.end, '$message', kind);
+ }
+ }
+
+ bool get isMockCompilation {
+ return mockableLibraryUsed
+ && (options.indexOf('--allow-mock-compilation') != -1);
+ }
+
+ void callUserHandler(Uri uri, int begin, int end,
+ String message, api.Diagnostic kind) {
+ try {
+ handler(uri, begin, end, message, kind);
+ } catch (ex, s) {
+ diagnoseCrashInUserCode(
+ 'Uncaught exception in diagnostic handler', ex, s);
+ rethrow;
+ }
+ }
+
+ Future callUserProvider(Uri uri) {
+ try {
+ return provider(uri);
+ } catch (ex, s) {
+ diagnoseCrashInUserCode('Uncaught exception in input provider', ex, s);
+ rethrow;
+ }
+ }
+
+ void diagnoseCrashInUserCode(String message, exception, stackTrace) {
+ hasCrashed = true;
+ print('$message: ${tryToString(exception)}');
+ print(tryToString(stackTrace));
+ }
+
+ fromEnvironment(String name) => environment[name];
+}
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/closure.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/closure.dart
new file mode 100644
index 0000000..7b1f02d
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/closure.dart
@@ -0,0 +1,840 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library closureToClassMapper;
+
+import "elements/elements.dart";
+import "dart2jslib.dart";
+import "dart_types.dart";
+import "scanner/scannerlib.dart" show Token;
+import "tree/tree.dart";
+import "util/util.dart";
+import "elements/modelx.dart" show ElementX, FunctionElementX, ClassElementX;
+import "elements/visitor.dart" show ElementVisitor;
+
+class ClosureNamer {
+ String getClosureVariableName(String name, int id) {
+ return "${name}_$id";
+ }
+}
+
+class ClosureTask extends CompilerTask {
+ Map closureMappingCache;
+ ClosureNamer namer;
+ ClosureTask(Compiler compiler, this.namer)
+ : closureMappingCache = new Map(),
+ super(compiler);
+
+ String get name => "Closure Simplifier";
+
+ ClosureClassMap computeClosureToClassMapping(Element element,
+ Node node,
+ TreeElements elements) {
+ return measure(() {
+ ClosureClassMap cached = closureMappingCache[node];
+ if (cached != null) return cached;
+
+ ClosureTranslator translator =
+ new ClosureTranslator(compiler, elements, closureMappingCache, namer);
+
+ // The translator will store the computed closure-mappings inside the
+ // cache. One for given node and one for each nested closure.
+ if (node is FunctionExpression) {
+ translator.translateFunction(element, node);
+ } else if (element.isSynthesized) {
+ return new ClosureClassMap(null, null, null,
+ new ThisElement(element, compiler.types.dynamicType));
+ } else {
+ assert(element.isField());
+ VariableElement field = element;
+ if (field.initializer != null) {
+ // The lazy initializer of a static.
+ translator.translateLazyInitializer(element, node, field.initializer);
+ } else {
+ assert(element.isInstanceMember());
+ closureMappingCache[node] =
+ new ClosureClassMap(null, null, null,
+ new ThisElement(element, compiler.types.dynamicType));
+ }
+ }
+ assert(closureMappingCache[node] != null);
+ return closureMappingCache[node];
+ });
+ }
+
+ ClosureClassMap getMappingForNestedFunction(FunctionExpression node) {
+ return measure(() {
+ ClosureClassMap nestedClosureData = closureMappingCache[node];
+ if (nestedClosureData == null) {
+ compiler.internalError(node, "No closure cache.");
+ }
+ return nestedClosureData;
+ });
+ }
+}
+
+// TODO(ahe): These classes continuously cause problems. We need to
+// move these classes to elements/modelx.dart or see if we can find a
+// more general solution.
+class ClosureFieldElement extends ElementX implements VariableElement {
+ /// The source variable this element refers to.
+ final TypedElement variableElement;
+
+ ClosureFieldElement(String name,
+ this.variableElement,
+ ClassElement enclosing)
+ : super(name, ElementKind.FIELD, enclosing);
+
+ Expression get initializer {
+ throw new SpannableAssertionFailure(
+ variableElement,
+ 'Should not access initializer of ClosureFieldElement.');
+ }
+
+ bool isInstanceMember() => true;
+ bool isAssignable() => false;
+
+ DartType computeType(Compiler compiler) {
+ return variableElement.type;
+ }
+
+ DartType get type => variableElement.type;
+
+ String toString() => "ClosureFieldElement($name)";
+
+ accept(ElementVisitor visitor) => visitor.visitClosureFieldElement(this);
+}
+
+// TODO(ahe): These classes continuously cause problems. We need to
+// move these classes to elements/modelx.dart or see if we can find a
+// more general solution.
+class ClosureClassElement extends ClassElementX {
+ DartType rawType;
+ DartType thisType;
+ FunctionType callType;
+ /// Node that corresponds to this closure, used for source position.
+ final FunctionExpression node;
+
+ ClosureClassElement(this.node,
+ String name,
+ Compiler compiler,
+ this.methodElement,
+ Element enclosingElement)
+ : super(name,
+ enclosingElement,
+ // By assigning a fresh class-id we make sure that the hashcode
+ // is unique, but also emit closure classes after all other
+ // classes (since the emitter sorts classes by their id).
+ compiler.getNextFreeClassId(),
+ STATE_DONE) {
+ ClassElement superclass = methodElement.isInstanceMember()
+ ? compiler.boundClosureClass
+ : compiler.closureClass;
+ superclass.ensureResolved(compiler);
+ supertype = superclass.thisType;
+ interfaces = const Link();
+ thisType = rawType = new InterfaceType(this);
+ allSupertypesAndSelf =
+ superclass.allSupertypesAndSelf.extendClass(thisType);
+ callType = methodElement.type;
+ }
+
+ bool isClosure() => true;
+
+ Token position() => node.getBeginToken();
+
+ Node parseNode(DiagnosticListener listener) => node;
+
+ /**
+ * The most outer method this closure is declared into.
+ */
+ final TypedElement methodElement;
+
+ // A [ClosureClassElement] is nested inside a function or initializer in terms
+ // of [enclosingElement], but still has to be treated as a top-level
+ // element.
+ bool isTopLevel() => true;
+
+ get enclosingElement => methodElement;
+
+ accept(ElementVisitor visitor) => visitor.visitClosureClassElement(this);
+}
+
+// TODO(ahe): These classes continuously cause problems. We need to
+// move these classes to elements/modelx.dart or see if we can find a
+// more general solution.
+class BoxElement extends ElementX implements TypedElement {
+ final DartType type;
+
+ BoxElement(String name, Element enclosingElement, this.type)
+ : super(name, ElementKind.VARIABLE_LIST, enclosingElement);
+
+ DartType computeType(Compiler compiler) => type;
+
+ accept(ElementVisitor visitor) => visitor.visitBoxElement(this);
+}
+
+// TODO(ngeoffray, ahe): These classes continuously cause problems. We need to
+// move these classes to elements/modelx.dart or see if we can find a
+// more general solution.
+class BoxFieldElement extends ElementX implements TypedElement {
+ BoxFieldElement(String name,
+ this.variableElement,
+ BoxElement enclosingBox)
+ : super(name, ElementKind.FIELD, enclosingBox);
+
+ DartType computeType(Compiler compiler) => type;
+
+ DartType get type => variableElement.type;
+
+ final VariableElement variableElement;
+
+ accept(ElementVisitor visitor) => visitor.visitBoxFieldElement(this);
+}
+
+// TODO(ahe): These classes continuously cause problems. We need to
+// move these classes to elements/modelx.dart or see if we can find a
+// more general solution.
+class ThisElement extends ElementX implements TypedElement {
+ final DartType type;
+
+ ThisElement(Element enclosing, this.type)
+ : super('this', ElementKind.PARAMETER, enclosing);
+
+ bool isAssignable() => false;
+
+ DartType computeType(Compiler compiler) => compiler.types.dynamicType;
+
+ // Since there is no declaration corresponding to 'this', use the position of
+ // the enclosing method.
+ Token position() => enclosingElement.position();
+
+ accept(ElementVisitor visitor) => visitor.visitThisElement(this);
+}
+
+// The box-element for a scope, and the captured variables that need to be
+// stored in the box.
+class ClosureScope {
+ Element boxElement;
+ Map capturedVariableMapping;
+ // If the scope is attached to a [For] contains the variables that are
+ // declared in the initializer of the [For] and that need to be boxed.
+ // Otherwise contains the empty List.
+ List boxedLoopVariables;
+
+ ClosureScope(this.boxElement, this.capturedVariableMapping)
+ : boxedLoopVariables = const [];
+
+ bool hasBoxedLoopVariables() => !boxedLoopVariables.isEmpty;
+}
+
+class ClosureClassMap {
+ // The closure's element before any translation. Will be null for methods.
+ final Element closureElement;
+ // The closureClassElement will be null for methods that are not local
+ // closures.
+ final ClassElement closureClassElement;
+ // The callElement will be null for methods that are not local closures.
+ final FunctionElement callElement;
+ // The [thisElement] makes handling 'this' easier by treating it like any
+ // other argument. It is only set for instance-members.
+ final ThisElement thisElement;
+
+ // Maps free locals, arguments and function elements to their captured
+ // copies.
+ final Map freeVariableMapping;
+ // Maps closure-fields to their captured elements. This is somehow the inverse
+ // mapping of [freeVariableMapping], but whereas [freeVariableMapping] does
+ // not deal with boxes, here we map instance-fields (which might represent
+ // boxes) to their boxElement.
+ final Map capturedFieldMapping;
+
+ // Maps scopes ([Loop] and [FunctionExpression] nodes) to their
+ // [ClosureScope] which contains their box and the
+ // captured variables that are stored in the box.
+ // This map will be empty if the method/closure of this [ClosureData] does not
+ // contain any nested closure.
+ final Map capturingScopes;
+
+ final Set usedVariablesInTry;
+
+ ClosureClassMap(this.closureElement,
+ this.closureClassElement,
+ this.callElement,
+ this.thisElement)
+ : this.freeVariableMapping = new Map(),
+ this.capturedFieldMapping = new Map(),
+ this.capturingScopes = new Map(),
+ this.usedVariablesInTry = new Set();
+
+ bool isClosure() => closureElement != null;
+
+ bool capturingScopesBox(Element element) {
+ return capturingScopes.values.any((scope) {
+ return scope.boxedLoopVariables.contains(element);
+ });
+ }
+
+ bool isVariableBoxed(Element element) {
+ Element copy = freeVariableMapping[element];
+ if (copy != null && !copy.isMember()) return true;
+ return capturingScopesBox(element);
+ }
+
+ void forEachCapturedVariable(void f(Element local, Element field)) {
+ freeVariableMapping.forEach((variable, copy) {
+ if (variable is BoxElement) return;
+ f(variable, copy);
+ });
+ capturingScopes.values.forEach((scope) {
+ scope.capturedVariableMapping.forEach(f);
+ });
+ }
+
+ void forEachBoxedVariable(void f(Element local, Element field)) {
+ freeVariableMapping.forEach((variable, copy) {
+ if (!isVariableBoxed(variable)) return;
+ f(variable, copy);
+ });
+ capturingScopes.values.forEach((scope) {
+ scope.capturedVariableMapping.forEach(f);
+ });
+ }
+}
+
+class ClosureTranslator extends Visitor {
+ final Compiler compiler;
+ final TreeElements elements;
+ int closureFieldCounter = 0;
+ int boxedFieldCounter = 0;
+ bool inTryStatement = false;
+ final Map closureMappingCache;
+
+ // Map of captured variables. Initially they will map to themselves. If
+ // a variable needs to be boxed then the scope declaring the variable
+ // will update this mapping.
+ Map capturedVariableMapping;
+ // List of encountered closures.
+ List closures;
+
+ // The variables that have been declared in the current scope.
+ List scopeVariables;
+
+ // Keep track of the mutated variables so that we don't need to box
+ // non-mutated variables.
+ Set mutatedVariables;
+
+ Element outermostElement;
+ Element currentElement;
+
+ // The closureData of the currentFunctionElement.
+ ClosureClassMap closureData;
+
+ ClosureNamer namer;
+
+ bool insideClosure = false;
+
+ ClosureTranslator(this.compiler, this.elements, this.closureMappingCache,
+ this.namer)
+ : capturedVariableMapping = new Map(),
+ closures = [],
+ mutatedVariables = new Set();
+
+ void translateFunction(Element element, FunctionExpression node) {
+ // For constructors the [element] and the [:elements[node]:] may differ.
+ // The [:elements[node]:] always points to the generative-constructor
+ // element, whereas the [element] might be the constructor-body element.
+ visit(node); // [visitFunctionExpression] will call [visitInvokable].
+ // When variables need to be boxed their [capturedVariableMapping] is
+ // updated, but we delay updating the similar freeVariableMapping in the
+ // closure datas that capture these variables.
+ // The closures don't have their fields (in the closure class) set, either.
+ updateClosures();
+ }
+
+ void translateLazyInitializer(VariableElement element,
+ VariableDefinitions node,
+ Expression initializer) {
+ visitInvokable(element, node, () { visit(initializer); });
+ updateClosures();
+ }
+
+ // This function runs through all of the existing closures and updates their
+ // free variables to the boxed value. It also adds the field-elements to the
+ // class representing the closure. At the same time it fills the
+ // [capturedFieldMapping].
+ void updateClosures() {
+ for (Expression closure in closures) {
+ // The captured variables that need to be stored in a field of the closure
+ // class.
+ Set fieldCaptures = new Set();
+ Set boxes = new Set();
+ ClosureClassMap data = closureMappingCache[closure];
+ Map freeVariableMapping = data.freeVariableMapping;
+ // We get a copy of the keys and iterate over it, to avoid modifications
+ // to the map while iterating over it.
+ freeVariableMapping.keys.toList().forEach((Element fromElement) {
+ assert(fromElement == freeVariableMapping[fromElement]);
+ Element updatedElement = capturedVariableMapping[fromElement];
+ assert(updatedElement != null);
+ if (fromElement == updatedElement) {
+ assert(freeVariableMapping[fromElement] == updatedElement);
+ assert(Elements.isLocal(updatedElement)
+ || updatedElement.isTypeVariable());
+ // The variable has not been boxed.
+ fieldCaptures.add(updatedElement);
+ } else {
+ // A boxed element.
+ freeVariableMapping[fromElement] = updatedElement;
+ Element boxElement = updatedElement.enclosingElement;
+ assert(boxElement is BoxElement);
+ boxes.add(boxElement);
+ }
+ });
+ ClassElement closureElement = data.closureClassElement;
+ assert(closureElement != null ||
+ (fieldCaptures.isEmpty && boxes.isEmpty));
+ void addElement(Element element, String name) {
+ Element fieldElement = new ClosureFieldElement(
+ name, element, closureElement);
+ closureElement.addMember(fieldElement, compiler);
+ data.capturedFieldMapping[fieldElement] = element;
+ freeVariableMapping[element] = fieldElement;
+ }
+ // Add the box elements first so we get the same ordering.
+ // TODO(sra): What is the canonical order of multiple boxes?
+ for (Element capturedElement in boxes) {
+ addElement(capturedElement, capturedElement.name);
+ }
+ for (Element capturedElement in
+ Elements.sortedByPosition(fieldCaptures)) {
+ int id = closureFieldCounter++;
+ String name = namer.getClosureVariableName(capturedElement.name, id);
+ addElement(capturedElement, name);
+ }
+ closureElement.reverseBackendMembers();
+ }
+ }
+
+ void useLocal(Element element) {
+ // If the element is not declared in the current function and the element
+ // is not the closure itself we need to mark the element as free variable.
+ // Note that the check on [insideClosure] is not just an
+ // optimization: factories have type parameters as function
+ // parameters, and type parameters are declared in the class, not
+ // the factory.
+ if (insideClosure &&
+ element.enclosingElement != currentElement &&
+ element != currentElement) {
+ assert(closureData.freeVariableMapping[element] == null ||
+ closureData.freeVariableMapping[element] == element);
+ closureData.freeVariableMapping[element] = element;
+ } else if (inTryStatement) {
+ // Don't mark the this-element. This would complicate things in the
+ // builder.
+ if (element != closureData.thisElement) {
+ // TODO(ngeoffray): only do this if the variable is mutated.
+ closureData.usedVariablesInTry.add(element);
+ }
+ }
+ }
+
+ void declareLocal(Element element) {
+ scopeVariables.add(element);
+ }
+
+ void registerNeedsThis() {
+ if (closureData.thisElement != null) {
+ useLocal(closureData.thisElement);
+ }
+ }
+
+ visit(Node node) => node.accept(this);
+
+ visitNode(Node node) => node.visitChildren(this);
+
+ visitVariableDefinitions(VariableDefinitions node) {
+ if (node.type != null) {
+ visit(node.type);
+ }
+ for (Link link = node.definitions.nodes;
+ !link.isEmpty;
+ link = link.tail) {
+ Node definition = link.head;
+ VariableElement element = elements[definition];
+ assert(element != null);
+ declareLocal(element);
+ // We still need to visit the right-hand sides of the init-assignments.
+ // For SendSets don't visit the left again. Otherwise it would be marked
+ // as mutated.
+ if (definition is Send) {
+ Send assignment = definition;
+ Node arguments = assignment.argumentsNode;
+ if (arguments != null) {
+ visit(arguments);
+ }
+ } else {
+ visit(definition);
+ }
+ }
+ }
+
+ visitTypeAnnotation(TypeAnnotation node) {
+ Element member = currentElement.getEnclosingMember();
+ DartType type = elements.getType(node);
+ // TODO(karlklose,johnniwinther): if the type is null, the annotation is
+ // from a parameter which has been analyzed before the method has been
+ // resolved and the result has been thrown away.
+ if (compiler.enableTypeAssertions && type != null &&
+ type.containsTypeVariables) {
+ if (insideClosure && member.isFactoryConstructor()) {
+ // This is a closure in a factory constructor. Since there is no
+ // [:this:], we have to mark the type arguments as free variables to
+ // capture them in the closure.
+ type.forEachTypeVariable((variable) => useLocal(variable.element));
+ }
+ if (member.isInstanceMember() && !member.isField()) {
+ // In checked mode, using a type variable in a type annotation may lead
+ // to a runtime type check that needs to access the type argument and
+ // therefore the closure needs a this-element, if it is not in a field
+ // initializer; field initatializers are evaluated in a context where
+ // the type arguments are available in locals.
+ registerNeedsThis();
+ }
+ }
+ }
+
+ visitIdentifier(Identifier node) {
+ if (node.isThis()) {
+ registerNeedsThis();
+ } else {
+ Element element = elements[node];
+ if (element != null && element.kind == ElementKind.TYPE_VARIABLE) {
+ if (outermostElement.isConstructor()) {
+ useLocal(element);
+ } else {
+ registerNeedsThis();
+ }
+ }
+ }
+ node.visitChildren(this);
+ }
+
+ visitSend(Send node) {
+ Element element = elements[node];
+ if (Elements.isLocal(element)) {
+ useLocal(element);
+ } else if (element != null && element.isTypeVariable()) {
+ TypeVariableElement variable = element;
+ analyzeType(variable.type);
+ } else if (node.receiver == null &&
+ Elements.isInstanceSend(node, elements)) {
+ registerNeedsThis();
+ } else if (node.isSuperCall) {
+ registerNeedsThis();
+ } else if (node.isTypeTest || node.isTypeCast) {
+ TypeAnnotation annotation = node.typeAnnotationFromIsCheckOrCast;
+ DartType type = elements.getType(annotation);
+ analyzeType(type);
+ } else if (node.isTypeTest) {
+ DartType type = elements.getType(node.typeAnnotationFromIsCheckOrCast);
+ analyzeType(type);
+ } else if (node.isTypeCast) {
+ DartType type = elements.getType(node.arguments.head);
+ analyzeType(type);
+ } else if (element == compiler.assertMethod
+ && !compiler.enableUserAssertions) {
+ return;
+ }
+ node.visitChildren(this);
+ }
+
+ visitSendSet(SendSet node) {
+ Element element = elements[node];
+ if (Elements.isLocal(element)) {
+ mutatedVariables.add(element);
+ if (compiler.enableTypeAssertions) {
+ TypedElement typedElement = element;
+ analyzeTypeVariables(typedElement.type);
+ }
+ }
+ super.visitSendSet(node);
+ }
+
+ visitNewExpression(NewExpression node) {
+ DartType type = elements.getType(node);
+ analyzeType(type);
+ node.visitChildren(this);
+ }
+
+ void analyzeTypeVariables(DartType type) {
+ type.forEachTypeVariable((TypeVariableType typeVariable) {
+ // Field initializers are inlined and access the type variable as
+ // normal parameters.
+ if (!outermostElement.isField() &&
+ !outermostElement.isConstructor()) {
+ registerNeedsThis();
+ } else {
+ useLocal(typeVariable.element);
+ }
+ });
+ }
+
+ void analyzeType(DartType type) {
+ // TODO(johnniwinther): Find out why this can be null.
+ if (type == null) return;
+ if (outermostElement.isMember() &&
+ compiler.backend.classNeedsRti(outermostElement.getEnclosingClass())) {
+ if (outermostElement.isConstructor() ||
+ outermostElement.isField()) {
+ analyzeTypeVariables(type);
+ } else if (outermostElement.isInstanceMember()) {
+ if (type.containsTypeVariables) {
+ registerNeedsThis();
+ }
+ }
+ }
+ }
+
+ // If variables that are declared in the [node] scope are captured and need
+ // to be boxed create a box-element and update the [capturingScopes] in the
+ // current [closureData].
+ // The boxed variables are updated in the [capturedVariableMapping].
+ void attachCapturedScopeVariables(Node node) {
+ Element box = null;
+ Map scopeMapping = new Map();
+ for (Element element in scopeVariables) {
+ // No need to box non-assignable elements.
+ if (!element.isAssignable()) continue;
+ if (!mutatedVariables.contains(element)) continue;
+ if (capturedVariableMapping.containsKey(element)) {
+ if (box == null) {
+ // TODO(floitsch): construct better box names.
+ String boxName =
+ namer.getClosureVariableName('box', closureFieldCounter++);
+ box = new BoxElement(
+ boxName, currentElement, compiler.types.dynamicType);
+ }
+ String elementName = element.name;
+ String boxedName =
+ namer.getClosureVariableName(elementName, boxedFieldCounter++);
+ // TODO(kasperl): Should this be a FieldElement instead?
+ Element boxed = new BoxFieldElement(boxedName, element, box);
+ // No need to rename the fields of a box, so we give them a native name
+ // right now.
+ boxed.setFixedBackendName(boxedName);
+ scopeMapping[element] = boxed;
+ capturedVariableMapping[element] = boxed;
+ }
+ }
+ if (!scopeMapping.isEmpty) {
+ ClosureScope scope = new ClosureScope(box, scopeMapping);
+ closureData.capturingScopes[node] = scope;
+ }
+ }
+
+ void inNewScope(Node node, Function action) {
+ List oldScopeVariables = scopeVariables;
+ scopeVariables = new List();
+ action();
+ attachCapturedScopeVariables(node);
+ for (Element element in scopeVariables) {
+ mutatedVariables.remove(element);
+ }
+ scopeVariables = oldScopeVariables;
+ }
+
+ visitLoop(Loop node) {
+ inNewScope(node, () {
+ node.visitChildren(this);
+ });
+ }
+
+ visitFor(For node) {
+ visitLoop(node);
+ // See if we have declared loop variables that need to be boxed.
+ if (node.initializer == null) return;
+ VariableDefinitions definitions = node.initializer.asVariableDefinitions();
+ if (definitions == null) return;
+ ClosureScope scopeData = closureData.capturingScopes[node];
+ if (scopeData == null) return;
+ List result = [];
+ for (Link link = definitions.definitions.nodes;
+ !link.isEmpty;
+ link = link.tail) {
+ Node definition = link.head;
+ Element element = elements[definition];
+ if (capturedVariableMapping.containsKey(element)) {
+ result.add(element);
+ };
+ }
+ scopeData.boxedLoopVariables = result;
+ }
+
+ /** Returns a non-unique name for the given closure element. */
+ String computeClosureName(Element element) {
+ Link parts = const Link();
+ String ownName = element.name;
+ if (ownName == null || ownName == "") {
+ parts = parts.prepend("closure");
+ } else {
+ parts = parts.prepend(ownName);
+ }
+ for (Element enclosingElement = element.enclosingElement;
+ enclosingElement != null &&
+ (enclosingElement.kind == ElementKind.GENERATIVE_CONSTRUCTOR_BODY
+ || enclosingElement.kind == ElementKind.GENERATIVE_CONSTRUCTOR
+ || enclosingElement.kind == ElementKind.CLASS
+ || enclosingElement.kind == ElementKind.FUNCTION
+ || enclosingElement.kind == ElementKind.GETTER
+ || enclosingElement.kind == ElementKind.SETTER);
+ enclosingElement = enclosingElement.enclosingElement) {
+ // TODO(johnniwinther): Simplify computed names.
+ if (enclosingElement.isGenerativeConstructor() ||
+ enclosingElement.isGenerativeConstructorBody() ||
+ enclosingElement.isFactoryConstructor()) {
+ parts = parts.prepend(
+ Elements.reconstructConstructorName(enclosingElement));
+ } else {
+ String surroundingName =
+ Elements.operatorNameToIdentifier(enclosingElement.name);
+ parts = parts.prepend(surroundingName);
+ }
+ // A generative constructors's parent is the class; the class name is
+ // already part of the generative constructor's name.
+ if (enclosingElement.kind == ElementKind.GENERATIVE_CONSTRUCTOR) break;
+ }
+ StringBuffer sb = new StringBuffer();
+ parts.printOn(sb, '_');
+ return sb.toString();
+ }
+
+ ClosureClassMap globalizeClosure(FunctionExpression node,
+ TypedElement element) {
+ String closureName = computeClosureName(element);
+ ClassElement globalizedElement = new ClosureClassElement(
+ node, closureName, compiler, element, element.getCompilationUnit());
+ FunctionElement callElement =
+ new FunctionElementX.from(Compiler.CALL_OPERATOR_NAME,
+ element,
+ globalizedElement);
+ ClosureContainer enclosing = element.enclosingElement;
+ enclosing.nestedClosures.add(callElement);
+ globalizedElement.addMember(callElement, compiler);
+ // The nested function's 'this' is the same as the one for the outer
+ // function. It could be [null] if we are inside a static method.
+ Element thisElement = closureData.thisElement;
+ return new ClosureClassMap(element, globalizedElement,
+ callElement, thisElement);
+ }
+
+ void visitInvokable(TypedElement element, Node node, void visitChildren()) {
+ bool oldInsideClosure = insideClosure;
+ Element oldFunctionElement = currentElement;
+ ClosureClassMap oldClosureData = closureData;
+
+ insideClosure = outermostElement != null;
+ currentElement = element;
+ if (insideClosure) {
+ closures.add(node);
+ closureData = globalizeClosure(node, element);
+ } else {
+ outermostElement = element;
+ Element thisElement = null;
+ if (element.isInstanceMember() || element.isGenerativeConstructor()) {
+ thisElement = new ThisElement(element, compiler.types.dynamicType);
+ }
+ closureData = new ClosureClassMap(null, null, null, thisElement);
+ }
+ closureMappingCache[node] = closureData;
+
+ inNewScope(node, () {
+ // We have to declare the implicit 'this' parameter.
+ if (!insideClosure && closureData.thisElement != null) {
+ declareLocal(closureData.thisElement);
+ }
+ // If we are inside a named closure we have to declare ourselve. For
+ // simplicity we declare the local even if the closure does not have a
+ // name.
+ // It will simply not be used.
+ if (insideClosure) {
+ declareLocal(element);
+ }
+
+ if (currentElement.isFactoryConstructor() &&
+ compiler.backend.classNeedsRti(currentElement.enclosingElement)) {
+ // Declare the type parameters in the scope. Generative
+ // constructors just use 'this'.
+ ClassElement cls = currentElement.enclosingElement;
+ cls.typeVariables.forEach((TypeVariableType typeVariable) {
+ declareLocal(typeVariable.element);
+ });
+ }
+
+ DartType type = element.computeType(compiler);
+ // If the method needs RTI, or checked mode is set, we need to
+ // escape the potential type variables used in that closure.
+ if (element is FunctionElement
+ && (compiler.backend.methodNeedsRti(element) ||
+ compiler.enableTypeAssertions)) {
+ analyzeTypeVariables(type);
+ }
+
+ visitChildren();
+ });
+
+
+ ClosureClassMap savedClosureData = closureData;
+ bool savedInsideClosure = insideClosure;
+
+ // Restore old values.
+ insideClosure = oldInsideClosure;
+ closureData = oldClosureData;
+ currentElement = oldFunctionElement;
+
+ // Mark all free variables as captured and use them in the outer function.
+ Iterable freeVariables = savedClosureData.freeVariableMapping.keys;
+ assert(freeVariables.isEmpty || savedInsideClosure);
+ for (Element freeElement in freeVariables) {
+ if (capturedVariableMapping[freeElement] != null &&
+ capturedVariableMapping[freeElement] != freeElement) {
+ compiler.internalError(node, 'In closure analyzer.');
+ }
+ capturedVariableMapping[freeElement] = freeElement;
+ useLocal(freeElement);
+ }
+ }
+
+ visitFunctionExpression(FunctionExpression node) {
+ Element element = elements[node];
+
+ if (element.isParameter()) {
+ // TODO(ahe): This is a hack. This method should *not* call
+ // visitChildren.
+ return node.name.accept(this);
+ }
+
+ visitInvokable(element, node, () {
+ // TODO(ahe): This is problematic. The backend should not repeat
+ // the work of the resolver. It is the resolver's job to create
+ // parameters, etc. Other phases should only visit statements.
+ if (node.parameters != null) node.parameters.accept(this);
+ if (node.initializers != null) node.initializers.accept(this);
+ if (node.body != null) node.body.accept(this);
+ });
+ }
+
+ visitFunctionDeclaration(FunctionDeclaration node) {
+ node.visitChildren(this);
+ declareLocal(elements[node]);
+ }
+
+ visitTryStatement(TryStatement node) {
+ // TODO(ngeoffray): implement finer grain state.
+ bool oldInTryStatement = inTryStatement;
+ inTryStatement = true;
+ node.visitChildren(this);
+ inTryStatement = oldInTryStatement;
+ }
+}
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/code_buffer.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/code_buffer.dart
new file mode 100644
index 0000000..4662eb7
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/code_buffer.dart
@@ -0,0 +1,126 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of dart2js;
+
+class CodeBuffer implements StringBuffer {
+
+ StringBuffer buffer = new StringBuffer();
+ List markers = new List();
+
+ int lastBufferOffset = 0;
+ int mappedRangeCounter = 0;
+
+ CodeBuffer();
+
+ int get length => buffer.length;
+ bool get isEmpty => buffer.isEmpty;
+ bool get isNotEmpty => buffer.isNotEmpty;
+
+ CodeBuffer add(var object) {
+ write(object);
+ return this;
+ }
+ /**
+ * Converts [object] to a string and adds it to the buffer. If [object] is a
+ * [CodeBuffer], adds its markers to [markers].
+ */
+ CodeBuffer write(var object) {
+ if (object is CodeBuffer) {
+ return addBuffer(object);
+ }
+ if (mappedRangeCounter == 0) setSourceLocation(null);
+ buffer.write(object);
+ return this;
+ }
+
+ CodeBuffer writeAll(Iterable objects, [String separator = ""]) {
+ Iterator iterator = objects.iterator;
+ if (!iterator.moveNext()) return this;
+ if (separator.isEmpty) {
+ do {
+ write(iterator.current);
+ } while (iterator.moveNext());
+ } else {
+ write(iterator.current);
+ while (iterator.moveNext()) {
+ write(separator);
+ write(iterator.current);
+ }
+ }
+ return this;
+ }
+
+ CodeBuffer writeln([var object = ""]) {
+ return write(object).write("\n");
+ }
+
+ CodeBuffer addBuffer(CodeBuffer other) {
+ if (other.markers.length > 0) {
+ CodeBufferMarker firstMarker = other.markers[0];
+ int offsetDelta =
+ buffer.length + firstMarker.offsetDelta - lastBufferOffset;
+ markers.add(new CodeBufferMarker(offsetDelta,
+ firstMarker.sourcePosition));
+ for (int i = 1; i < other.markers.length; ++i) {
+ markers.add(other.markers[i]);
+ }
+ lastBufferOffset = buffer.length + other.lastBufferOffset;
+ }
+ buffer.write(other.getText());
+ return this;
+ }
+
+ CodeBuffer addAll(Iterable iterable) => writeAll(iterable);
+
+ CodeBuffer writeCharCode(int charCode) {
+ buffer.writeCharCode(charCode);
+ return this;
+ }
+
+ CodeBuffer clear() {
+ buffer = new StringBuffer();
+ markers.clear();
+ lastBufferOffset = 0;
+ return this;
+ }
+
+ String toString() {
+ throw "Don't use CodeBuffer.toString() since it drops sourcemap data.";
+ }
+
+ String getText() {
+ return buffer.toString();
+ }
+
+ void beginMappedRange() {
+ ++mappedRangeCounter;
+ }
+
+ void endMappedRange() {
+ assert(mappedRangeCounter > 0);
+ --mappedRangeCounter;
+ }
+
+ void setSourceLocation(var sourcePosition) {
+ int offsetDelta = buffer.length - lastBufferOffset;
+ markers.add(new CodeBufferMarker(offsetDelta, sourcePosition));
+ lastBufferOffset = buffer.length;
+ }
+
+ void forEachSourceLocation(void f(int targetOffset, var sourcePosition)) {
+ int targetOffset = 0;
+ markers.forEach((marker) {
+ targetOffset += marker.offsetDelta;
+ f(targetOffset, marker.sourcePosition);
+ });
+ }
+}
+
+class CodeBufferMarker {
+ final int offsetDelta;
+ final sourcePosition;
+
+ CodeBufferMarker(this.offsetDelta, this.sourcePosition);
+}
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/colors.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/colors.dart
new file mode 100644
index 0000000..0c10085
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/colors.dart
@@ -0,0 +1,29 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library colors;
+
+// See http://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes
+const String RESET = '\u001b[0m';
+
+// See http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
+const String BLACK_COLOR = '\u001b[30m';
+const String RED_COLOR = '\u001b[31m';
+const String GREEN_COLOR = '\u001b[32m';
+const String YELLOW_COLOR = '\u001b[33m';
+const String BLUE_COLOR = '\u001b[34m';
+const String MAGENTA_COLOR = '\u001b[35m';
+const String CYAN_COLOR = '\u001b[36m';
+const String WHITE_COLOR = '\u001b[37m';
+
+String wrap(String string, String color) => "${color}$string${RESET}";
+
+String black(String string) => wrap(string, BLACK_COLOR);
+String red(String string) => wrap(string, RED_COLOR);
+String green(String string) => wrap(string, GREEN_COLOR);
+String yellow(String string) => wrap(string, YELLOW_COLOR);
+String blue(String string) => wrap(string, BLUE_COLOR);
+String magenta(String string) => wrap(string, MAGENTA_COLOR);
+String cyan(String string) => wrap(string, CYAN_COLOR);
+String white(String string) => wrap(string, WHITE_COLOR);
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/common.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/common.dart
new file mode 100644
index 0000000..2826d9e
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/common.dart
@@ -0,0 +1,51 @@
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library dart2js.common;
+
+export 'dart2jslib.dart' show
+ CompilerTask,
+ Compiler,
+ Constant,
+ ConstantHandler,
+ InterceptorConstant,
+ MessageKind,
+ NullConstant,
+ Selector,
+ TreeElements,
+ TypeConstant,
+ invariant;
+
+export 'dart_types.dart' show
+ DartType,
+ FunctionType,
+ InterfaceType,
+ TypeVariableType,
+ Types;
+
+export 'elements/elements.dart' show
+ ClassElement,
+ ClosureFieldElement,
+ Element,
+ Elements,
+ FunctionElement,
+ FunctionSignature,
+ LibraryElement,
+ MetadataAnnotation,
+ MixinApplicationElement,
+ TypedefElement,
+ VariableElement;
+
+export 'tree/tree.dart' show
+ Node;
+
+export 'types/types.dart' show
+ TypeMask;
+
+export 'universe/universe.dart' show
+ SelectorKind;
+
+export 'util/util.dart' show
+ Link,
+ SpannableAssertionFailure;
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/compile_time_constants.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
new file mode 100644
index 0000000..121fe5b
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/compile_time_constants.dart
@@ -0,0 +1,1010 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of dart2js;
+
+/**
+ * The [ConstantHandler] keeps track of compile-time constants,
+ * initializations of global and static fields, and default values of
+ * optional parameters.
+ */
+class ConstantHandler extends CompilerTask {
+ final ConstantSystem constantSystem;
+ final bool isMetadata;
+
+ /**
+ * Contains the initial value of fields. Must contain all static and global
+ * initializations of const fields. May contain eagerly compiled values for
+ * statics and instance fields.
+ *
+ * Invariant: The keys in this map are declarations.
+ */
+ final Map initialVariableValues;
+
+ /** Set of all registered compiled constants. */
+ final Set compiledConstants;
+
+ /** The set of variable elements that are in the process of being computed. */
+ final Set pendingVariables;
+
+ /** Caches the statics where the initial value cannot be eagerly compiled. */
+ final Set lazyStatics;
+
+ ConstantHandler(Compiler compiler, this.constantSystem,
+ { bool this.isMetadata: false })
+ : initialVariableValues = new Map(),
+ compiledConstants = new Set(),
+ pendingVariables = new Set(),
+ lazyStatics = new Set(),
+ super(compiler);
+
+ String get name => 'ConstantHandler';
+
+ void addCompileTimeConstantForEmission(Constant constant) {
+ compiledConstants.add(constant);
+ }
+
+ Constant getConstantForVariable(VariableElement element) {
+ return initialVariableValues[element.declaration];
+ }
+
+ /**
+ * Returns a compile-time constant, or reports an error if the element is not
+ * a compile-time constant.
+ */
+ Constant compileConstant(VariableElement element) {
+ return compileVariable(element, isConst: true);
+ }
+
+ /**
+ * Returns the a compile-time constant if the variable could be compiled
+ * eagerly. Otherwise returns `null`.
+ */
+ Constant compileVariable(VariableElement element, {bool isConst: false}) {
+ return measure(() {
+ if (initialVariableValues.containsKey(element.declaration)) {
+ Constant result = initialVariableValues[element.declaration];
+ return result;
+ }
+ Element currentElement = element;
+ if (element.isParameter()
+ || element.isFieldParameter()
+ || element.isVariable()) {
+ currentElement = element.enclosingElement;
+ }
+ return compiler.withCurrentElement(currentElement, () {
+ TreeElements definitions =
+ compiler.analyzeElement(currentElement.declaration);
+ Constant constant = compileVariableWithDefinitions(
+ element, definitions, isConst: isConst);
+ return constant;
+ });
+ });
+ }
+
+ /**
+ * Returns the a compile-time constant if the variable could be compiled
+ * eagerly. If the variable needs to be initialized lazily returns `null`.
+ * If the variable is `const` but cannot be compiled eagerly reports an
+ * error.
+ */
+ Constant compileVariableWithDefinitions(VariableElement element,
+ TreeElements definitions,
+ {bool isConst: false}) {
+ return measure(() {
+ if (!isConst && lazyStatics.contains(element)) return null;
+
+ Node node = element.parseNode(compiler);
+ if (pendingVariables.contains(element)) {
+ if (isConst) {
+ compiler.reportFatalError(
+ node, MessageKind.CYCLIC_COMPILE_TIME_CONSTANTS);
+ } else {
+ lazyStatics.add(element);
+ return null;
+ }
+ }
+ pendingVariables.add(element);
+
+ Expression initializer = element.initializer;
+ Constant value;
+ if (initializer == null) {
+ // No initial value.
+ value = new NullConstant();
+ } else {
+ value = compileNodeWithDefinitions(
+ initializer, definitions, isConst: isConst);
+ if (compiler.enableTypeAssertions &&
+ value != null &&
+ element.isField()) {
+ DartType elementType = element.type;
+ if (elementType.kind == TypeKind.MALFORMED_TYPE && !value.isNull) {
+ if (isConst) {
+ ErroneousElement element = elementType.element;
+ compiler.reportFatalError(
+ node, element.messageKind, element.messageArguments);
+ } else {
+ // We need to throw an exception at runtime.
+ value = null;
+ }
+ } else {
+ DartType constantType = value.computeType(compiler);
+ if (!constantSystem.isSubtype(compiler,
+ constantType, elementType)) {
+ if (isConst) {
+ compiler.reportFatalError(
+ node, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': constantType, 'toType': elementType});
+ } else {
+ // If the field cannot be lazily initialized, we will throw
+ // the exception at runtime.
+ value = null;
+ }
+ }
+ }
+ }
+ }
+ if (value != null) {
+ initialVariableValues[element.declaration] = value;
+ } else {
+ assert(!isConst);
+ lazyStatics.add(element);
+ }
+ pendingVariables.remove(element);
+ return value;
+ });
+ }
+
+ Constant compileNodeWithDefinitions(Node node,
+ TreeElements definitions,
+ {bool isConst: false}) {
+ return measure(() {
+ assert(node != null);
+ Constant constant = definitions.getConstant(node);
+ if (constant != null) {
+ return constant;
+ }
+ CompileTimeConstantEvaluator evaluator = new CompileTimeConstantEvaluator(
+ this, definitions, compiler, isConst: isConst);
+ constant = evaluator.evaluate(node);
+ if (constant != null) {
+ definitions.setConstant(node, constant);
+ }
+ return constant;
+ });
+ }
+
+ /**
+ * Returns an [Iterable] of static non final fields that need to be
+ * initialized. The fields list must be evaluated in order since they might
+ * depend on each other.
+ */
+ Iterable getStaticNonFinalFieldsForEmission() {
+ return initialVariableValues.keys.where((element) {
+ return element.kind == ElementKind.FIELD
+ && !element.isInstanceMember()
+ && !element.modifiers.isFinal()
+ // The const fields are all either emitted elsewhere or inlined.
+ && !element.modifiers.isConst();
+ });
+ }
+
+ List getLazilyInitializedFieldsForEmission() {
+ return new List.from(lazyStatics);
+ }
+
+ /**
+ * Returns a list of constants topologically sorted so that dependencies
+ * appear before the dependent constant. [preSortCompare] is a comparator
+ * function that gives the constants a consistent order prior to the
+ * topological sort which gives the constants an ordering that is less
+ * sensitive to perturbations in the source code.
+ */
+ List getConstantsForEmission([preSortCompare]) {
+ // We must emit dependencies before their uses.
+ Set seenConstants = new Set();
+ List result = new List();
+
+ void addConstant(Constant constant) {
+ if (!seenConstants.contains(constant)) {
+ constant.getDependencies().forEach(addConstant);
+ assert(!seenConstants.contains(constant));
+ result.add(constant);
+ seenConstants.add(constant);
+ }
+ }
+
+ List sorted = compiledConstants.toList();
+ if (preSortCompare != null) {
+ sorted.sort(preSortCompare);
+ }
+ sorted.forEach(addConstant);
+ return result;
+ }
+
+ Constant getInitialValueFor(VariableElement element) {
+ Constant initialValue = initialVariableValues[element.declaration];
+ if (initialValue == null) {
+ compiler.internalError(element, "No initial value for given element.");
+ }
+ return initialValue;
+ }
+}
+
+class CompileTimeConstantEvaluator extends Visitor {
+ bool isEvaluatingConstant;
+ final ConstantHandler handler;
+ final TreeElements elements;
+ final Compiler compiler;
+
+ CompileTimeConstantEvaluator(this.handler,
+ this.elements,
+ this.compiler,
+ {bool isConst: false})
+ : this.isEvaluatingConstant = isConst;
+
+ ConstantSystem get constantSystem => handler.constantSystem;
+
+ Constant evaluate(Node node) {
+ return node.accept(this);
+ }
+
+ Constant evaluateConstant(Node node) {
+ bool oldIsEvaluatingConstant = isEvaluatingConstant;
+ isEvaluatingConstant = true;
+ Constant result = node.accept(this);
+ isEvaluatingConstant = oldIsEvaluatingConstant;
+ assert(result != null);
+ return result;
+ }
+
+ Constant visitNode(Node node) {
+ return signalNotCompileTimeConstant(node);
+ }
+
+ Constant visitLiteralBool(LiteralBool node) {
+ return constantSystem.createBool(node.value);
+ }
+
+ Constant visitLiteralDouble(LiteralDouble node) {
+ return constantSystem.createDouble(node.value);
+ }
+
+ Constant visitLiteralInt(LiteralInt node) {
+ return constantSystem.createInt(node.value);
+ }
+
+ Constant visitLiteralList(LiteralList node) {
+ if (!node.isConst()) {
+ return signalNotCompileTimeConstant(node);
+ }
+ List arguments = [];
+ for (Link link = node.elements.nodes;
+ !link.isEmpty;
+ link = link.tail) {
+ arguments.add(evaluateConstant(link.head));
+ }
+ DartType type = elements.getType(node);
+ return new ListConstant(type, arguments);
+ }
+
+ Constant visitLiteralMap(LiteralMap node) {
+ if (!node.isConst()) {
+ return signalNotCompileTimeConstant(node);
+ }
+ List keys = [];
+ Map map = new Map();
+ for (Link link = node.entries.nodes;
+ !link.isEmpty;
+ link = link.tail) {
+ LiteralMapEntry entry = link.head;
+ Constant key = evaluateConstant(entry.key);
+ if (!map.containsKey(key)) {
+ keys.add(key);
+ } else {
+ compiler.reportWarning(entry.key, MessageKind.EQUAL_MAP_ENTRY_KEY);
+ }
+ map[key] = evaluateConstant(entry.value);
+ }
+
+ bool onlyStringKeys = true;
+ Constant protoValue = null;
+ for (var key in keys) {
+ if (key.isString) {
+ if (key.value == MapConstant.PROTO_PROPERTY) {
+ protoValue = map[key];
+ }
+ } else {
+ onlyStringKeys = false;
+ // Don't handle __proto__ values specially in the general map case.
+ protoValue = null;
+ break;
+ }
+ }
+
+ bool hasProtoKey = (protoValue != null);
+ List values = map.values.toList();
+ InterfaceType sourceType = elements.getType(node);
+ DartType keysType;
+ if (sourceType.treatAsRaw) {
+ keysType = compiler.listClass.rawType;
+ } else {
+ Link arguments =
+ new Link.fromList([sourceType.typeArguments.head]);
+ keysType = new InterfaceType(compiler.listClass, arguments);
+ }
+ ListConstant keysList = new ListConstant(keysType, keys);
+ String className = onlyStringKeys
+ ? (hasProtoKey ? MapConstant.DART_PROTO_CLASS
+ : MapConstant.DART_STRING_CLASS)
+ : MapConstant.DART_GENERAL_CLASS;
+ ClassElement classElement = compiler.jsHelperLibrary.find(className);
+ classElement.ensureResolved(compiler);
+ Link typeArgument = sourceType.typeArguments;
+ InterfaceType type;
+ if (sourceType.treatAsRaw) {
+ type = classElement.rawType;
+ } else {
+ type = new InterfaceType(classElement, typeArgument);
+ }
+ return new MapConstant(type, keysList, values, protoValue, onlyStringKeys);
+ }
+
+ Constant visitLiteralNull(LiteralNull node) {
+ return constantSystem.createNull();
+ }
+
+ Constant visitLiteralString(LiteralString node) {
+ return constantSystem.createString(node.dartString);
+ }
+
+ Constant visitStringJuxtaposition(StringJuxtaposition node) {
+ StringConstant left = evaluate(node.first);
+ StringConstant right = evaluate(node.second);
+ if (left == null || right == null) return null;
+ return constantSystem.createString(
+ new DartString.concat(left.value, right.value));
+ }
+
+ Constant visitStringInterpolation(StringInterpolation node) {
+ StringConstant initialString = evaluate(node.string);
+ if (initialString == null) return null;
+ DartString accumulator = initialString.value;
+ for (StringInterpolationPart part in node.parts) {
+ Constant expression = evaluate(part.expression);
+ DartString expressionString;
+ if (expression == null) {
+ return signalNotCompileTimeConstant(part.expression);
+ } else if (expression.isNum || expression.isBool) {
+ PrimitiveConstant primitive = expression;
+ expressionString = new DartString.literal(primitive.value.toString());
+ } else if (expression.isString) {
+ PrimitiveConstant primitive = expression;
+ expressionString = primitive.value;
+ } else {
+ return signalNotCompileTimeConstant(part.expression);
+ }
+ accumulator = new DartString.concat(accumulator, expressionString);
+ StringConstant partString = evaluate(part.string);
+ if (partString == null) return null;
+ accumulator = new DartString.concat(accumulator, partString.value);
+ };
+ return constantSystem.createString(accumulator);
+ }
+
+ Constant visitLiteralSymbol(LiteralSymbol node) {
+ InterfaceType type = compiler.symbolClass.rawType;
+ List createArguments(_) {
+ return [constantSystem.createString(
+ new DartString.literal(node.slowNameString))];
+ }
+ return makeConstructedConstant(
+ node, type, compiler.symbolConstructor, createArguments);
+ }
+
+ Constant makeTypeConstant(TypeDeclarationElement element) {
+ DartType elementType = element.rawType;
+ DartType constantType =
+ compiler.backend.typeImplementation.computeType(compiler);
+ return new TypeConstant(elementType, constantType);
+ }
+
+ /// Returns true if the prefix of the send resolves to a deferred import
+ /// prefix.
+ bool isDeferredUse(Send send) {
+ // We handle:
+ // 1. Send(Send(Send(null, Prefix), className), staticName)
+ // 2. Send(Send(Prefix, Classname), staticName)
+ // 3. Send(Send(null, Prefix), staticName | className)
+ // 4. Send(Send(Prefix), staticName | className)
+ // Nodes of the forms 2,4 occur in metadata.
+ if (send == null) return false;
+ while (send.receiver is Send) {
+ send = send.receiver;
+ }
+ Identifier prefixNode;
+ if (send.receiver is Identifier) {
+ prefixNode = send.receiver;
+ } else if (send.receiver == null &&
+ send.selector is Identifier) {
+ prefixNode = send.selector;
+ }
+ if (prefixNode != null) {
+ Element maybePrefix = elements[prefixNode.asIdentifier()];
+ if (maybePrefix != null && maybePrefix.isPrefix() &&
+ (maybePrefix as PrefixElement).isDeferred) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // TODO(floitsch): provide better error-messages.
+ Constant visitSend(Send send) {
+ Element element = elements[send];
+ if (send.isPropertyAccess) {
+ if (isDeferredUse(send)) {
+ return signalNotCompileTimeConstant(send,
+ message: MessageKind.DEFERRED_COMPILE_TIME_CONSTANT);
+ }
+ if (Elements.isStaticOrTopLevelFunction(element)) {
+ return new FunctionConstant(element);
+ } else if (Elements.isStaticOrTopLevelField(element)) {
+ Constant result;
+ if (element.modifiers.isConst()) {
+ result = handler.compileConstant(element);
+ } else if (element.modifiers.isFinal() && !isEvaluatingConstant) {
+ result = handler.compileVariable(element);
+ }
+ if (result != null) return result;
+ } else if (Elements.isClass(element) || Elements.isTypedef(element)) {
+ assert(elements.isTypeLiteral(send));
+ return makeTypeConstant(element);
+ } else if (send.receiver != null) {
+ // Fall through to error handling.
+ } else if (!Elements.isUnresolved(element)
+ && element.isVariable()
+ && element.modifiers.isConst()) {
+ Constant result = handler.compileConstant(element);
+ if (result != null) return result;
+ }
+ return signalNotCompileTimeConstant(send);
+ } else if (send.isCall) {
+ if (identical(element, compiler.identicalFunction)
+ && send.argumentCount() == 2) {
+ Constant left = evaluate(send.argumentsNode.nodes.head);
+ Constant right = evaluate(send.argumentsNode.nodes.tail.head);
+ Constant result = constantSystem.identity.fold(left, right);
+ if (result != null) return result;
+ } else if (Elements.isClass(element) || Elements.isTypedef(element)) {
+ // The node itself is not a constant but we register the selector (the
+ // identifier that refers to the class/typedef) as a constant.
+ Constant typeConstant = makeTypeConstant(element);
+ elements.setConstant(send.selector, typeConstant);
+ }
+ return signalNotCompileTimeConstant(send);
+ } else if (send.isPrefix) {
+ assert(send.isOperator);
+ Constant receiverConstant = evaluate(send.receiver);
+ if (receiverConstant == null) return null;
+ Operator op = send.selector;
+ Constant folded;
+ switch (op.source) {
+ case "!":
+ folded = constantSystem.not.fold(receiverConstant);
+ break;
+ case "-":
+ folded = constantSystem.negate.fold(receiverConstant);
+ break;
+ case "~":
+ folded = constantSystem.bitNot.fold(receiverConstant);
+ break;
+ default:
+ compiler.internalError(op, "Unexpected operator.");
+ break;
+ }
+ if (folded == null) return signalNotCompileTimeConstant(send);
+ return folded;
+ } else if (send.isOperator && !send.isPostfix) {
+ assert(send.argumentCount() == 1);
+ Constant left = evaluate(send.receiver);
+ Constant right = evaluate(send.argumentsNode.nodes.head);
+ if (left == null || right == null) return null;
+ Operator op = send.selector.asOperator();
+ Constant folded = null;
+ switch (op.source) {
+ case "+":
+ folded = constantSystem.add.fold(left, right);
+ break;
+ case "-":
+ folded = constantSystem.subtract.fold(left, right);
+ break;
+ case "*":
+ folded = constantSystem.multiply.fold(left, right);
+ break;
+ case "/":
+ folded = constantSystem.divide.fold(left, right);
+ break;
+ case "%":
+ folded = constantSystem.modulo.fold(left, right);
+ break;
+ case "~/":
+ folded = constantSystem.truncatingDivide.fold(left, right);
+ break;
+ case "|":
+ folded = constantSystem.bitOr.fold(left, right);
+ break;
+ case "&":
+ folded = constantSystem.bitAnd.fold(left, right);
+ break;
+ case "^":
+ folded = constantSystem.bitXor.fold(left, right);
+ break;
+ case "||":
+ folded = constantSystem.booleanOr.fold(left, right);
+ break;
+ case "&&":
+ folded = constantSystem.booleanAnd.fold(left, right);
+ break;
+ case "<<":
+ folded = constantSystem.shiftLeft.fold(left, right);
+ break;
+ case ">>":
+ folded = constantSystem.shiftRight.fold(left, right);
+ break;
+ case "<":
+ folded = constantSystem.less.fold(left, right);
+ break;
+ case "<=":
+ folded = constantSystem.lessEqual.fold(left, right);
+ break;
+ case ">":
+ folded = constantSystem.greater.fold(left, right);
+ break;
+ case ">=":
+ folded = constantSystem.greaterEqual.fold(left, right);
+ break;
+ case "==":
+ if (left.isPrimitive && right.isPrimitive) {
+ folded = constantSystem.equal.fold(left, right);
+ }
+ break;
+ case "===":
+ folded = constantSystem.identity.fold(left, right);
+ break;
+ case "!=":
+ if (left.isPrimitive && right.isPrimitive) {
+ BoolConstant areEquals = constantSystem.equal.fold(left, right);
+ if (areEquals == null) {
+ folded = null;
+ } else {
+ folded = areEquals.negate();
+ }
+ }
+ break;
+ case "!==":
+ BoolConstant areIdentical =
+ constantSystem.identity.fold(left, right);
+ if (areIdentical == null) {
+ folded = null;
+ } else {
+ folded = areIdentical.negate();
+ }
+ break;
+ }
+ if (folded == null) return signalNotCompileTimeConstant(send);
+ return folded;
+ }
+ return signalNotCompileTimeConstant(send);
+ }
+
+ Constant visitConditional(Conditional node) {
+ Constant condition = evaluate(node.condition);
+ if (condition == null) {
+ return null;
+ } else if (!condition.isBool) {
+ DartType conditionType = condition.computeType(compiler);
+ if (isEvaluatingConstant) {
+ compiler.reportFatalError(
+ node.condition, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': conditionType, 'toType': compiler.boolClass.rawType});
+ }
+ return null;
+ }
+ Constant thenExpression = evaluate(node.thenExpression);
+ Constant elseExpression = evaluate(node.elseExpression);
+ BoolConstant boolCondition = condition;
+ return boolCondition.value ? thenExpression : elseExpression;
+ }
+
+ Constant visitSendSet(SendSet node) {
+ return signalNotCompileTimeConstant(node);
+ }
+
+ /**
+ * Returns the list of constants that are passed to the static function.
+ *
+ * Invariant: [target] must be an implementation element.
+ */
+ List evaluateArgumentsToConstructor(Node node,
+ Selector selector,
+ Link arguments,
+ FunctionElement target) {
+ assert(invariant(node, target.isImplementation));
+ List compiledArguments = [];
+
+ Function compileArgument = evaluateConstant;
+ Function compileConstant = handler.compileConstant;
+ bool succeeded = selector.addArgumentsToList(arguments,
+ compiledArguments,
+ target,
+ compileArgument,
+ compileConstant,
+ compiler);
+ if (!succeeded) {
+ compiler.reportFatalError(
+ node,
+ MessageKind.INVALID_ARGUMENTS, {'methodName': target.name});
+ }
+ return compiledArguments;
+ }
+
+ Constant visitNewExpression(NewExpression node) {
+ if (!node.isConst()) {
+ return signalNotCompileTimeConstant(node);
+ }
+
+ Send send = node.send;
+ FunctionElement constructor = elements[send];
+ if (Elements.isUnresolved(constructor)) {
+ return signalNotCompileTimeConstant(node);
+ }
+
+ // Deferred types can not be used in const instance creation expressions.
+ // Check if the constructor comes from a deferred library.
+ if (isDeferredUse(node.send.selector.asSend())) {
+ return signalNotCompileTimeConstant(node,
+ message: MessageKind.DEFERRED_COMPILE_TIME_CONSTANT_CONSTRUCTION);
+ }
+
+ // TODO(ahe): This is nasty: we must eagerly analyze the
+ // constructor to ensure the redirectionTarget has been computed
+ // correctly. Find a way to avoid this.
+ compiler.analyzeElement(constructor.declaration);
+
+ InterfaceType type = elements.getType(node);
+ List evaluateArguments(FunctionElement constructor) {
+ Selector selector = elements.getSelector(send);
+ return evaluateArgumentsToConstructor(
+ node, selector, send.arguments, constructor);
+ }
+
+ if (constructor == compiler.intEnvironment
+ || constructor == compiler.boolEnvironment
+ || constructor == compiler.stringEnvironment) {
+ List arguments = evaluateArguments(constructor.implementation);
+ var firstArgument = arguments[0];
+ Constant defaultValue = arguments[1];
+
+ if (firstArgument is NullConstant) {
+ compiler.reportFatalError(
+ send.arguments.head, MessageKind.NULL_NOT_ALLOWED);
+ }
+
+ if (firstArgument is! StringConstant) {
+ DartType type = defaultValue.computeType(compiler);
+ compiler.reportFatalError(
+ send.arguments.head, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': type, 'toType': compiler.stringClass.rawType});
+ }
+
+ if (constructor == compiler.intEnvironment
+ && !(defaultValue is NullConstant || defaultValue is IntConstant)) {
+ DartType type = defaultValue.computeType(compiler);
+ compiler.reportFatalError(
+ send.arguments.tail.head, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': type, 'toType': compiler.intClass.rawType});
+ }
+
+ if (constructor == compiler.boolEnvironment
+ && !(defaultValue is NullConstant || defaultValue is BoolConstant)) {
+ DartType type = defaultValue.computeType(compiler);
+ compiler.reportFatalError(
+ send.arguments.tail.head, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': type, 'toType': compiler.boolClass.rawType});
+ }
+
+ if (constructor == compiler.stringEnvironment
+ && !(defaultValue is NullConstant
+ || defaultValue is StringConstant)) {
+ DartType type = defaultValue.computeType(compiler);
+ compiler.reportFatalError(
+ send.arguments.tail.head, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': type, 'toType': compiler.stringClass.rawType});
+ }
+
+ String value =
+ compiler.fromEnvironment(firstArgument.value.slowToString());
+
+ if (value == null) {
+ return defaultValue;
+ } else if (constructor == compiler.intEnvironment) {
+ int number = int.parse(value, onError: (_) => null);
+ return (number == null)
+ ? defaultValue
+ : constantSystem.createInt(number);
+ } else if (constructor == compiler.boolEnvironment) {
+ if (value == 'true') {
+ return constantSystem.createBool(true);
+ } else if (value == 'false') {
+ return constantSystem.createBool(false);
+ } else {
+ return defaultValue;
+ }
+ } else {
+ assert(constructor == compiler.stringEnvironment);
+ return constantSystem.createString(new DartString.literal(value));
+ }
+ } else {
+ return makeConstructedConstant(
+ node, type, constructor, evaluateArguments);
+ }
+ }
+
+ Constant makeConstructedConstant(
+ Spannable node, InterfaceType type, FunctionElement constructor,
+ List getArguments(FunctionElement constructor)) {
+ // The redirection chain of this element may not have been resolved through
+ // a post-process action, so we have to make sure it is done here.
+ compiler.resolver.resolveRedirectionChain(constructor, node);
+ InterfaceType constructedType = constructor.computeTargetType(type);
+ constructor = constructor.redirectionTarget;
+ ClassElement classElement = constructor.getEnclosingClass();
+ // The constructor must be an implementation to ensure that field
+ // initializers are handled correctly.
+ constructor = constructor.implementation;
+ assert(invariant(node, constructor.isImplementation));
+
+ List arguments = getArguments(constructor);
+ ConstructorEvaluator evaluator =
+ new ConstructorEvaluator(constructor, handler, compiler);
+ evaluator.evaluateConstructorFieldValues(arguments);
+ List jsNewArguments = evaluator.buildJsNewArguments(classElement);
+
+ return new ConstructedConstant(constructedType, jsNewArguments);
+ }
+
+ Constant visitParenthesizedExpression(ParenthesizedExpression node) {
+ return node.expression.accept(this);
+ }
+
+ error(Node node, MessageKind message) {
+ // TODO(floitsch): get the list of constants that are currently compiled
+ // and present some kind of stack-trace.
+ compiler.reportFatalError(node, message);
+ }
+
+ Constant signalNotCompileTimeConstant(Node node,
+ {MessageKind message: MessageKind.NOT_A_COMPILE_TIME_CONSTANT}) {
+ if (isEvaluatingConstant) {
+ error(node, message);
+ }
+ // Else we don't need to do anything. The final handler is only
+ // optimistically trying to compile constants. So it is normal that we
+ // sometimes see non-compile time constants.
+ // Simply return [:null:] which is used to propagate a failing
+ // compile-time compilation.
+ return null;
+ }
+}
+
+class TryCompileTimeConstantEvaluator extends CompileTimeConstantEvaluator {
+ TryCompileTimeConstantEvaluator(ConstantHandler handler,
+ TreeElements elements,
+ Compiler compiler)
+ : super(handler, elements, compiler, isConst: true);
+
+ error(Node node, MessageKind message) {
+ // Just fail without reporting it anywhere.
+ throw new CompileTimeConstantError(
+ message, const {}, compiler.terseDiagnostics);
+ }
+}
+
+class CompileTimeConstantError {
+ final Message message;
+ CompileTimeConstantError(MessageKind kind, Map arguments, bool terse)
+ : message = new Message(kind, arguments, terse);
+ String toString() => message.toString();
+}
+
+class ConstructorEvaluator extends CompileTimeConstantEvaluator {
+ final FunctionElement constructor;
+ final Map definitions;
+ final Map fieldValues;
+
+ /**
+ * Documentation wanted -- johnniwinther
+ *
+ * Invariant: [constructor] must be an implementation element.
+ */
+ ConstructorEvaluator(FunctionElement constructor,
+ ConstantHandler handler,
+ Compiler compiler)
+ : this.constructor = constructor,
+ this.definitions = new Map(),
+ this.fieldValues = new Map(),
+ super(handler,
+ compiler.resolver.resolveMethodElement(constructor.declaration),
+ compiler,
+ isConst: true) {
+ assert(invariant(constructor, constructor.isImplementation));
+ }
+
+ Constant visitSend(Send send) {
+ Element element = elements[send];
+ if (Elements.isLocal(element)) {
+ Constant constant = definitions[element];
+ if (constant == null) {
+ compiler.internalError(send, "Local variable without value.");
+ }
+ return constant;
+ }
+ return super.visitSend(send);
+ }
+
+ void potentiallyCheckType(Node node,
+ TypedElement element,
+ Constant constant) {
+ if (compiler.enableTypeAssertions) {
+ DartType elementType = element.type;
+ DartType constantType = constant.computeType(compiler);
+ // TODO(ngeoffray): Handle type parameters.
+ if (elementType.element.isTypeVariable()) return;
+ if (!constantSystem.isSubtype(compiler, constantType, elementType)) {
+ compiler.reportFatalError(
+ node, MessageKind.NOT_ASSIGNABLE,
+ {'fromType': elementType, 'toType': constantType});
+ }
+ }
+ }
+
+ void updateFieldValue(Node node, TypedElement element, Constant constant) {
+ potentiallyCheckType(node, element, constant);
+ fieldValues[element] = constant;
+ }
+
+ /**
+ * Given the arguments (a list of constants) assigns them to the parameters,
+ * updating the definitions map. If the constructor has field-initializer
+ * parameters (like [:this.x:]), also updates the [fieldValues] map.
+ */
+ void assignArgumentsToParameters(List arguments) {
+ // Assign arguments to parameters.
+ FunctionSignature parameters = constructor.functionSignature;
+ int index = 0;
+ parameters.orderedForEachParameter((Element parameter) {
+ Constant argument = arguments[index++];
+ Node node = parameter.parseNode(compiler);
+ potentiallyCheckType(node, parameter, argument);
+ definitions[parameter] = argument;
+ if (parameter.kind == ElementKind.FIELD_PARAMETER) {
+ FieldParameterElement fieldParameterElement = parameter;
+ updateFieldValue(node, fieldParameterElement.fieldElement, argument);
+ }
+ });
+ }
+
+ void evaluateSuperOrRedirectSend(List compiledArguments,
+ FunctionElement targetConstructor) {
+ ConstructorEvaluator evaluator = new ConstructorEvaluator(
+ targetConstructor, handler, compiler);
+ evaluator.evaluateConstructorFieldValues(compiledArguments);
+ // Copy over the fieldValues from the super/redirect-constructor.
+ // No need to go through [updateFieldValue] because the
+ // assignments have already been checked in checked mode.
+ evaluator.fieldValues.forEach((key, value) => fieldValues[key] = value);
+ }
+
+ /**
+ * Runs through the initializers of the given [constructor] and updates
+ * the [fieldValues] map.
+ */
+ void evaluateConstructorInitializers() {
+ if (constructor.isSynthesized) {
+ List compiledArguments = [];
+
+ Function compileArgument = (element) => definitions[element];
+ Function compileConstant = handler.compileConstant;
+ FunctionElement target = constructor.targetConstructor.implementation;
+ Selector.addForwardingElementArgumentsToList(constructor,
+ compiledArguments,
+ target,
+ compileArgument,
+ compileConstant,
+ compiler);
+ evaluateSuperOrRedirectSend(compiledArguments, target);
+ return;
+ }
+ FunctionExpression functionNode = constructor.parseNode(compiler);
+ NodeList initializerList = functionNode.initializers;
+
+ bool foundSuperOrRedirect = false;
+
+ if (initializerList != null) {
+ for (Link link = initializerList.nodes;
+ !link.isEmpty;
+ link = link.tail) {
+ assert(link.head is Send);
+ if (link.head is !SendSet) {
+ // A super initializer or constructor redirection.
+ Send call = link.head;
+ FunctionElement target = elements[call];
+ List compiledArguments = evaluateArgumentsToConstructor(
+ call, elements.getSelector(call), call.arguments, target);
+ evaluateSuperOrRedirectSend(compiledArguments, target);
+ foundSuperOrRedirect = true;
+ } else {
+ // A field initializer.
+ SendSet init = link.head;
+ Link initArguments = init.arguments;
+ assert(!initArguments.isEmpty && initArguments.tail.isEmpty);
+ Constant fieldValue = evaluate(initArguments.head);
+ updateFieldValue(init, elements[init], fieldValue);
+ }
+ }
+ }
+
+ if (!foundSuperOrRedirect) {
+ // No super initializer found. Try to find the default constructor if
+ // the class is not Object.
+ ClassElement enclosingClass = constructor.getEnclosingClass();
+ ClassElement superClass = enclosingClass.superclass;
+ if (enclosingClass != compiler.objectClass) {
+ assert(superClass != null);
+ assert(superClass.resolutionState == STATE_DONE);
+
+ Selector selector =
+ new Selector.callDefaultConstructor(enclosingClass.getLibrary());
+
+ FunctionElement targetConstructor =
+ superClass.lookupConstructor(selector);
+ if (targetConstructor == null) {
+ compiler.internalError(functionNode,
+ "No default constructor available.");
+ }
+ List compiledArguments = evaluateArgumentsToConstructor(
+ functionNode, selector, const Link(), targetConstructor);
+ evaluateSuperOrRedirectSend(compiledArguments, targetConstructor);
+ }
+ }
+ }
+
+ /**
+ * Simulates the execution of the [constructor] with the given
+ * [arguments] to obtain the field values that need to be passed to the
+ * native JavaScript constructor.
+ */
+ void evaluateConstructorFieldValues(List arguments) {
+ compiler.withCurrentElement(constructor, () {
+ assignArgumentsToParameters(arguments);
+ evaluateConstructorInitializers();
+ });
+ }
+
+ List buildJsNewArguments(ClassElement classElement) {
+ List jsNewArguments = [];
+ classElement.implementation.forEachInstanceField(
+ (ClassElement enclosing, Element field) {
+ Constant fieldValue = fieldValues[field];
+ if (fieldValue == null) {
+ // Use the default value.
+ fieldValue = handler.compileConstant(field);
+ }
+ jsNewArguments.add(fieldValue);
+ },
+ includeSuperAndInjectedMembers: true);
+ return jsNewArguments;
+ }
+}
diff --git a/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/compiler.dart b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/compiler.dart
new file mode 100644
index 0000000..64c6f71
--- /dev/null
+++ b/Chapter 1/bank_terminal/build/web/packages/$sdk/lib/_internal/compiler/implementation/compiler.dart
@@ -0,0 +1,1790 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+part of dart2js;
+
+/**
+ * If true, print a warning for each method that was resolved, but not
+ * compiled.
+ */
+const bool REPORT_EXCESS_RESOLUTION = false;
+
+/**
+ * Contains backend-specific data that is used throughout the compilation of
+ * one work item.
+ */
+class ItemCompilationContext {
+}
+
+abstract class WorkItem {
+ final ItemCompilationContext compilationContext;
+ /**
+ * Documentation wanted -- johnniwinther
+ *
+ * Invariant: [element] must be a declaration element.
+ */
+ final Element element;
+ TreeElements resolutionTree;
+
+ WorkItem(this.element, this.compilationContext) {
+ assert(invariant(element, element.isDeclaration));
+ }
+
+ void run(Compiler compiler, Enqueuer world);
+}
+
+/// [WorkItem] used exclusively by the [ResolutionEnqueuer].
+class ResolutionWorkItem extends WorkItem {
+ ResolutionWorkItem(Element element,
+ ItemCompilationContext compilationContext)
+ : super(element, compilationContext);
+
+ void run(Compiler compiler, ResolutionEnqueuer world) {
+ resolutionTree = compiler.analyze(this, world);
+ }
+
+ bool isAnalyzed() => resolutionTree != null;
+}
+
+/// [WorkItem] used exclusively by the [CodegenEnqueuer].
+class CodegenWorkItem extends WorkItem {
+ CodegenWorkItem(Element element,
+ ItemCompilationContext compilationContext)
+ : super(element, compilationContext);
+
+ void run(Compiler compiler, CodegenEnqueuer world) {
+ if (world.isProcessed(element)) return;
+ resolutionTree =
+ compiler.enqueuer.resolution.getCachedElements(element);
+ assert(invariant(element, resolutionTree != null,
+ message: 'Resolution tree is null for $element in codegen work item'));
+ compiler.codegen(this, world);
+ }
+}
+
+typedef void DeferredAction();
+
+class DeferredTask {
+ final Element element;
+ final DeferredAction action;
+
+ DeferredTask(this.element, this.action);
+}
+
+abstract class Backend {
+ final Compiler compiler;
+ final ConstantSystem constantSystem;
+
+ Backend(this.compiler,
+ [ConstantSystem constantSystem = DART_CONSTANT_SYSTEM])
+ : this.constantSystem = constantSystem;
+
+ // Given a [FunctionElement], return a buffer with the code generated for it
+ // or null if no code was generated.
+ CodeBuffer codeOf(Element element) => null;
+
+ void initializeHelperClasses() {}
+
+ void enqueueHelpers(ResolutionEnqueuer world, TreeElements elements);
+ void codegen(CodegenWorkItem work);
+
+ // The backend determines the native resolution enqueuer, with a no-op
+ // default, so tools like dart2dart can ignore the native classes.
+ native.NativeEnqueuer nativeResolutionEnqueuer(world) {
+ return new native.NativeEnqueuer();
+ }
+ native.NativeEnqueuer nativeCodegenEnqueuer(world) {
+ return new native.NativeEnqueuer();
+ }
+
+ void assembleProgram();
+ List get tasks;
+
+ void onResolutionComplete() {}
+
+ ItemCompilationContext createItemCompilationContext() {
+ return new ItemCompilationContext();
+ }
+
+ bool classNeedsRti(ClassElement cls);
+ bool methodNeedsRti(FunctionElement function);
+
+
+ /// Called during codegen when [constant] has been used.
+ void registerCompileTimeConstant(Constant constant, TreeElements elements) {}
+
+ /// Called during post-processing when [constant] has been evaluated.
+ void registerMetadataConstant(Constant constant, TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that a class is
+ /// being instantiated.
+ void registerInstantiatedClass(ClassElement cls,
+ Enqueuer enqueuer,
+ TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that the
+ /// program uses string interpolation.
+ void registerStringInterpolation(TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that the
+ /// program has a catch statement.
+ void registerCatchStatement(Enqueuer enqueuer,
+ TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that the
+ /// program explicitly throws an exception.
+ void registerThrowExpression(TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that the
+ /// program has a global variable with a lazy initializer.
+ void registerLazyField(TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that the
+ /// program uses a type variable as an expression.
+ void registerTypeVariableExpression(TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that the
+ /// program uses a type literal.
+ void registerTypeLiteral(Element element,
+ Enqueuer enqueuer,
+ TreeElements elements) {}
+
+ /// Called during resolution to notify to the backend that the
+ /// program has a catch statement with a stack trace.
+ void registerStackTraceInCatch(TreeElements elements) {}
+
+ /// Register an is check to the backend.
+ void registerIsCheck(DartType type,
+ Enqueuer enqueuer,
+ TreeElements elements) {}
+
+ /// Register an as check to the backend.
+ void registerAsCheck(DartType type,
+ Enqueuer enqueuer,
+ TreeElements elements) {}
+
+ /// Register a runtime type variable bound tests between [typeArgument] and
+ /// [bound].
+ void registerTypeVariableBoundsSubtypeCheck(DartType typeArgument,
+ DartType bound) {}
+
+ /// Registers that a type variable bounds check might occur at runtime.
+ void registerTypeVariableBoundCheck(TreeElements elements) {}
+
+ /// Register that the application may throw a [NoSuchMethodError].
+ void registerThrowNoSuchMethod(TreeElements elements) {}
+
+ /// Register that the application may throw a [RuntimeError].
+ void registerThrowRuntimeError(TreeElements elements) {}
+
+ /// Register that the application may throw an
+ /// [AbstractClassInstantiationError].
+ void registerAbstractClassInstantiation(TreeElements elements) {}
+
+ /// Register that the application may throw a [FallThroughError].
+ void registerFallThroughError(TreeElements elements) {}
+
+ /// Register that a super call will end up calling
+ /// [: super.noSuchMethod :].
+ void registerSuperNoSuchMethod(TreeElements elements) {}
+
+ /// Register that the application creates a constant map.
+ void registerConstantMap(TreeElements elements) {}
+
+ /**
+ * Call this to register that an instantiated generic class has a call
+ * method.
+ */
+ void registerGenericCallMethod(Element callMethod,
+ Enqueuer enqueuer,
+ TreeElements elements) {}
+ /**
+ * Call this to register that a getter exists for a function on an
+ * instantiated generic class.
+ */
+ void registerGenericClosure(Element closure,
+ Enqueuer enqueuer,
+ TreeElements elements) {}
+ /**
+ * Call this to register that the [:runtimeType:] property has been accessed.
+ */
+ void registerRuntimeType(Enqueuer enqueuer, TreeElements elements) {}
+
+ /**
+ * Call this method to enable [noSuchMethod] handling in the
+ * backend.
+ */
+ void enableNoSuchMethod(Enqueuer enqueuer) {
+ enqueuer.registerInvocation(compiler.noSuchMethodSelector);
+ }
+
+ void registerRequiredType(DartType type, Element enclosingElement) {}
+ void registerClassUsingVariableExpression(ClassElement cls) {}
+
+ void registerConstSymbol(String name, TreeElements elements) {}
+ void registerNewSymbol(TreeElements elements) {}
+ /// Called when resolving the `Symbol` constructor.
+ void registerSymbolConstructor(TreeElements elements) {}
+
+ bool isNullImplementation(ClassElement cls) {
+ return cls == compiler.nullClass;
+ }
+ ClassElement get intImplementation => compiler.intClass;
+ ClassElement get doubleImplementation => compiler.doubleClass;
+ ClassElement get numImplementation => compiler.numClass;
+ ClassElement get stringImplementation => compiler.stringClass;
+ ClassElement get listImplementation => compiler.listClass;
+ ClassElement get growableListImplementation => compiler.listClass;
+ ClassElement get fixedListImplementation => compiler.listClass;
+ ClassElement get constListImplementation => compiler.listClass;
+ ClassElement get mapImplementation => compiler.mapClass;
+ ClassElement get constMapImplementation => compiler.mapClass;
+ ClassElement get functionImplementation => compiler.functionClass;
+ ClassElement get typeImplementation => compiler.typeClass;
+ ClassElement get boolImplementation => compiler.boolClass;
+ ClassElement get nullImplementation => compiler.nullClass;
+ ClassElement get uint32Implementation => compiler.intClass;
+ ClassElement get uint31Implementation => compiler.intClass;
+ ClassElement get positiveIntImplementation => compiler.intClass;
+
+ ClassElement defaultSuperclass(ClassElement element) => compiler.objectClass;
+
+ bool isDefaultNoSuchMethodImplementation(Element element) {
+ assert(element.name == Compiler.NO_SUCH_METHOD);
+ ClassElement classElement = element.getEnclosingClass();
+ return classElement == compiler.objectClass;
+ }
+
+ bool isInterceptorClass(ClassElement element) => false;
+
+ void registerStaticUse(Element element, Enqueuer enqueuer) {}
+
+ Future onLibraryLoaded(LibraryElement library, Uri uri) {
+ return new Future.value();
+ }
+
+ /// Called by [MirrorUsageAnalyzerTask] after it has merged all @MirrorsUsed
+ /// annotations. The arguments corresponds to the unions of the corresponding
+ /// fields of the annotations.
+ void registerMirrorUsage(Set symbols,
+ Set targets,
+ Set metaTargets) {}
+
+ /// Returns true if this element should be retained for reflection even if it
+ /// would normally be tree-shaken away.
+ bool isNeededForReflection(Element element) => false;
+
+ /// Returns true if global optimizations such as type inferencing
+ /// can apply to this element. One category of elements that do not
+ /// apply is runtime helpers that the backend calls, but the
+ /// optimizations don't see those calls.
+ bool canBeUsedForGlobalOptimizations(Element element) => true;
+
+ /// Called when [enqueuer]'s queue is empty, but before it is closed.
+ /// This is used, for example, by the JS backend to enqueue additional
+ /// elements needed for reflection.
+ void onQueueEmpty(Enqueuer enqueuer) {}
+
+ /// Called after [element] has been resolved.
+ void onElementResolved(Element element, TreeElements elements) {}
+}
+
+/**
+ * Key class used in [TokenMap] in which the hash code for a token is based
+ * on the [charOffset].
+ */
+class TokenKey {
+ final Token token;
+ TokenKey(this.token);
+ int get hashCode => token.charOffset;
+ operator==(other) => other is TokenKey && token == other.token;
+}
+
+/// Map of tokens and the first associated comment.
+/*
+ * This implementation was chosen among several candidates for its space/time
+ * efficiency by empirical tests of running dartdoc on dartdoc itself. Time
+ * measurements for the use of [Compiler.commentMap]:
+ *
+ * 1) Using [TokenKey] as key (this class): ~80 msec
+ * 2) Using [TokenKey] as key + storing a separate map in each script: ~120 msec
+ * 3) Using [Token] as key in a [Map]: ~38000 msec
+ * 4) Storing comments is new field in [Token]: ~20 msec
+ * (Abandoned due to the increased memory usage)
+ * 5) Storing comments in an [Expando]: ~14000 msec
+ * 6) Storing token/comments pairs in a linked list: ~5400 msec
+ */
+class TokenMap {
+ Map comments = new Map();
+
+ Token operator[] (Token key) {
+ if (key == null) return null;
+ return comments[new TokenKey(key)];
+ }
+
+ void operator[]= (Token key, Token value) {
+ if (key == null) return;
+ comments[new TokenKey(key)] = value;
+ }
+}
+
+abstract class Compiler implements DiagnosticListener {
+ final Map libraries =
+ new Map();
+ final Stopwatch totalCompileTime = new Stopwatch();
+ int nextFreeClassId = 0;
+ World world;
+ String assembledCode;
+ Types types;
+
+ /**
+ * Map from token to the first preceeding comment token.
+ */
+ final TokenMap commentMap = new TokenMap();
+
+ /**
+ * Records global dependencies, that is, dependencies that don't
+ * correspond to a particular element.
+ *
+ * We should get rid of this and ensure that all dependencies are
+ * associated with a particular element.
+ */
+ final TreeElements globalDependencies = new TreeElementMapping(null);
+
+ final bool enableMinification;
+ final bool enableTypeAssertions;
+ final bool enableUserAssertions;
+ final bool trustTypeAnnotations;
+ final bool enableConcreteTypeInference;
+ final bool disableTypeInferenceFlag;
+ final bool dumpInfo;
+
+ /**
+ * The maximum size of a concrete type before it widens to dynamic during
+ * concrete type inference.
+ */
+ final int maxConcreteTypeSize;
+ final bool analyzeAllFlag;
+ final bool analyzeOnly;
+ /**
+ * If true, skip analysis of method bodies and field initializers. Implies
+ * [analyzeOnly].
+ */
+ final bool analyzeSignaturesOnly;
+ final bool enableNativeLiveTypeAnalysis;
+ /**
+ * If true, stop compilation after type inference is complete. Used for
+ * debugging and testing purposes only.
+ */
+ bool stopAfterTypeInference = false;
+ /**
+ * If [:true:], comment tokens are collected in [commentMap] during scanning.
+ */
+ final bool preserveComments;
+
+ /**
+ * Is the compiler in verbose mode.
+ */
+ final bool verbose;
+
+ /**
+ * URI of the main source map if the compiler is generating source
+ * maps.
+ */
+ final Uri sourceMapUri;
+
+ /**
+ * URI of the main output if the compiler is generating source maps.
+ */
+ final Uri outputUri;
+
+ /// Emit terse diagnostics without howToFix.
+ final bool terseDiagnostics;
+
+ /// If `true`, warnings and hints not from user code are reported.
+ final bool showPackageWarnings;
+
+ /// `true` if the last diagnostic was filtered, in which case the
+ /// accompanying info message should be filtered as well.
+ bool lastDiagnosticWasFiltered = false;
+
+ /// Map containing information about the warnings and hints that have been
+ /// suppressed for each library.
+ Map suppressedWarnings = {};
+
+ final api.CompilerOutputProvider outputProvider;
+
+ bool disableInlining = false;
+
+ List librariesToAnalyzeWhenRun;
+
+ final Tracer tracer;
+
+ CompilerTask measuredTask;
+ Element _currentElement;
+ LibraryElement coreLibrary;
+ LibraryElement isolateLibrary;
+ LibraryElement isolateHelperLibrary;
+ LibraryElement jsHelperLibrary;
+ LibraryElement interceptorsLibrary;
+ LibraryElement foreignLibrary;
+
+ LibraryElement mainApp;
+ FunctionElement mainFunction;
+
+ /// Initialized when dart:mirrors is loaded.
+ LibraryElement mirrorsLibrary;
+
+ /// Initialized when dart:typed_data is loaded.
+ LibraryElement typedDataLibrary;
+
+ ClassElement objectClass;
+ ClassElement closureClass;
+ ClassElement boundClosureClass;
+ ClassElement dynamicClass;
+ ClassElement boolClass;
+ ClassElement numClass;
+ ClassElement intClass;
+ ClassElement doubleClass;
+ ClassElement stringClass;
+ ClassElement functionClass;
+ ClassElement nullClass;
+ ClassElement listClass;
+ ClassElement typeClass;
+ ClassElement mapClass;
+ ClassElement symbolClass;
+ ClassElement stackTraceClass;
+ ClassElement typedDataClass;
+
+ /// The constant for the [proxy] variable defined in dart:core.
+ Constant proxyConstant;
+
+ // Initialized after symbolClass has been resolved.
+ FunctionElement symbolConstructor;
+
+ // Initialized when dart:mirrors is loaded.
+ ClassElement mirrorSystemClass;
+
+ // Initialized when dart:mirrors is loaded.
+ ClassElement mirrorsUsedClass;
+
+ // Initialized after mirrorSystemClass has been resolved.
+ FunctionElement mirrorSystemGetNameFunction;
+
+ // Initialized when dart:_internal is loaded.
+ ClassElement symbolImplementationClass;
+
+ // Initialized when symbolImplementationClass has been resolved.
+ FunctionElement symbolValidatedConstructor;
+
+ // Initialized when mirrorsUsedClass has been resolved.
+ FunctionElement mirrorsUsedConstructor;
+
+ // Initialized when dart:mirrors is loaded.
+ ClassElement deferredLibraryClass;
+
+ ClassElement jsInvocationMirrorClass;
+ /// Document class from dart:mirrors.
+ ClassElement documentClass;
+ Element assertMethod;
+ Element identicalFunction;
+ Element loadLibraryFunction;
+ Element functionApplyMethod;
+ Element invokeOnMethod;
+ Element intEnvironment;
+ Element boolEnvironment;
+ Element stringEnvironment;
+
+ fromEnvironment(String name) => null;
+
+ Element get currentElement => _currentElement;
+
+ String tryToString(object) {
+ try {
+ return object.toString();
+ } catch (_) {
+ return '';
+ }
+ }
+
+ /**
+ * Perform an operation, [f], returning the return value from [f]. If an
+ * error occurs then report it as having occurred during compilation of
+ * [element]. Can be nested.
+ */
+ withCurrentElement(Element element, f()) {
+ Element old = currentElement;
+ _currentElement = element;
+ try {
+ return f();
+ } on SpannableAssertionFailure catch (ex) {
+ if (!hasCrashed) {
+ reportAssertionFailure(ex);
+ pleaseReportCrash();
+ }
+ hasCrashed = true;
+ rethrow;
+ } on CompilerCancelledException catch (ex) {
+ rethrow;
+ } on StackOverflowError catch (ex) {
+ // We cannot report anything useful in this case, because we
+ // do not have enough stack space.
+ rethrow;
+ } catch (ex) {
+ if (hasCrashed) rethrow;
+ try {
+ unhandledExceptionOnElement(element);
+ } catch (doubleFault) {
+ // Ignoring exceptions in exception handling.
+ }
+ rethrow;
+ } finally {
+ _currentElement = old;
+ }
+ }
+
+ List tasks;
+ ScannerTask scanner;
+ DietParserTask dietParser;
+ ParserTask parser;
+ PatchParserTask patchParser;
+ LibraryLoader libraryLoader;
+ TreeValidatorTask validator;
+ ResolverTask resolver;
+ closureMapping.ClosureTask closureToClassMapper;
+ TypeCheckerTask checker;
+ IrBuilderTask irBuilder;
+ ti.TypesTask typesTask;
+ Backend backend;
+ ConstantHandler constantHandler;
+ EnqueueTask enqueuer;
+ DeferredLoadTask deferredLoadTask;
+ MirrorUsageAnalyzerTask mirrorUsageAnalyzerTask;
+ DumpInfoTask dumpInfoTask;
+ String buildId;
+
+ static const String MAIN = 'main';
+ static const String CALL_OPERATOR_NAME = 'call';
+ static const String NO_SUCH_METHOD = 'noSuchMethod';
+ static const int NO_SUCH_METHOD_ARG_COUNT = 1;
+ static const String CREATE_INVOCATION_MIRROR =
+ 'createInvocationMirror';
+
+ // TODO(ahe): Rename this field and move this logic to backend, similar to how
+ // we disable tree-shaking when seeing disableTreeShaking in js_mirrors.dart.
+ static const String INVOKE_ON =
+ '_getCachedInvocation';
+
+ static const String RUNTIME_TYPE = 'runtimeType';
+ static const String START_ROOT_ISOLATE =
+ 'startRootIsolate';
+
+ static const String UNDETERMINED_BUILD_ID =
+ "build number could not be determined";
+
+ final Selector iteratorSelector =
+ new Selector.getter('iterator', null);
+ final Selector currentSelector =
+ new Selector.getter('current', null);
+ final Selector moveNextSelector =
+ new Selector.call('moveNext', null, 0);
+ final Selector noSuchMethodSelector = new Selector.call(
+ Compiler.NO_SUCH_METHOD, null, Compiler.NO_SUCH_METHOD_ARG_COUNT);
+ final Selector symbolValidatedConstructorSelector = new Selector.call(
+ 'validated', null, 1);
+ final Selector fromEnvironmentSelector = new Selector.callConstructor(
+ 'fromEnvironment', null, 2);
+
+ bool enabledNoSuchMethod = false;
+ bool enabledRuntimeType = false;
+ bool enabledFunctionApply = false;
+ bool enabledInvokeOn = false;
+
+ Stopwatch progress = new Stopwatch()..start();
+
+ static const int PHASE_SCANNING = 0;
+ static const int PHASE_RESOLVING = 1;
+ static const int PHASE_DONE_RESOLVING = 2;
+ static const int PHASE_COMPILING = 3;
+ int phase;
+
+ bool compilationFailed = false;
+
+ bool hasCrashed = false;
+
+ /// Set by the backend if real reflection is detected in use of dart:mirrors.
+ bool disableTypeInferenceForMirrors = false;
+
+ Compiler({this.tracer: const Tracer(),
+ this.enableTypeAssertions: false,
+ this.enableUserAssertions: false,
+ this.trustTypeAnnotations: false,
+ this.enableConcreteTypeInference: false,
+ this.disableTypeInferenceFlag: false,
+ this.maxConcreteTypeSize: 5,
+ this.enableMinification: false,
+ this.enableNativeLiveTypeAnalysis: false,
+ bool emitJavaScript: true,
+ bool generateSourceMap: true,
+ bool analyzeAllFlag: false,
+ bool analyzeOnly: false,
+ bool analyzeSignaturesOnly: false,
+ this.preserveComments: false,
+ this.verbose: false,
+ this.sourceMapUri: null,
+ this.outputUri: null,
+ this.buildId: UNDETERMINED_BUILD_ID,
+ this.terseDiagnostics: false,
+ this.dumpInfo: false,
+ this.showPackageWarnings: false,
+ outputProvider,
+ List strips: const []})
+ : this.analyzeOnly =
+ analyzeOnly || analyzeSignaturesOnly || analyzeAllFlag,
+ this.analyzeSignaturesOnly = analyzeSignaturesOnly,
+ this.analyzeAllFlag = analyzeAllFlag,
+ this.outputProvider = (outputProvider == null)
+ ? NullSink.outputProvider
+ : outputProvider {
+ world = new World(this);
+
+ closureMapping.ClosureNamer closureNamer;
+ if (emitJavaScript) {
+ js_backend.JavaScriptBackend jsBackend =
+ new js_backend.JavaScriptBackend(this, generateSourceMap);
+ closureNamer = jsBackend.namer;
+ backend = jsBackend;
+ } else {
+ closureNamer = new closureMapping.ClosureNamer();
+ backend = new dart_backend.DartBackend(this, strips);
+ }
+
+ // No-op in production mode.
+ validator = new TreeValidatorTask(this);
+
+ tasks = [
+ libraryLoader = new LibraryLoaderTask(this),
+ scanner = new ScannerTask(this),
+ dietParser = new DietParserTask(this),
+ parser = new ParserTask(this),
+ patchParser = new PatchParserTask(this),
+ resolver = new ResolverTask(this),
+ closureToClassMapper = new closureMapping.ClosureTask(this, closureNamer),
+ checker = new TypeCheckerTask(this),
+ irBuilder = new IrBuilderTask(this),
+ typesTask = new ti.TypesTask(this),
+ constantHandler = new ConstantHandler(this, backend.constantSystem),
+ deferredLoadTask = new DeferredLoadTask(this),
+ mirrorUsageAnalyzerTask = new MirrorUsageAnalyzerTask(this),
+ enqueuer = new EnqueueTask(this),
+ dumpInfoTask = new DumpInfoTask(this)];
+
+ tasks.addAll(backend.tasks);
+ }
+
+ Universe get resolverWorld => enqueuer.resolution.universe;
+ Universe get codegenWorld => enqueuer.codegen.universe;
+
+ bool get hasBuildId => buildId != UNDETERMINED_BUILD_ID;
+
+ bool get analyzeAll => analyzeAllFlag || compileAll;
+
+ bool get compileAll => false;
+
+ bool get disableTypeInference => disableTypeInferenceFlag;
+
+ int getNextFreeClassId() => nextFreeClassId++;
+
+ void unimplemented(Spannable spannable, String methodName) {
+ internalError(spannable, "$methodName not implemented.");
+ }
+
+ void internalError(Spannable node, reason) {
+ assembledCode = null; // Compilation failed. Make sure that we
+ // don't return a bogus result.
+ String message = tryToString(reason);
+ reportDiagnosticInternal(
+ node, MessageKind.GENERIC, {'text': message}, api.Diagnostic.CRASH);
+ throw 'Internal Error: $message';
+ }
+
+ void unhandledExceptionOnElement(Element element) {
+ if (hasCrashed) return;
+ hasCrashed = true;
+ reportDiagnostic(element,
+ MessageKind.COMPILER_CRASHED.message(),
+ api.Diagnostic.CRASH);
+ pleaseReportCrash();
+ }
+
+ void pleaseReportCrash() {
+ print(MessageKind.PLEASE_REPORT_THE_CRASH.message({'buildId': buildId}));
+ }
+
+ SourceSpan spanFromSpannable(Spannable node) {
+ // TODO(johnniwinther): Disallow `node == null` ?
+ if (node == null) return null;
+ if (node == CURRENT_ELEMENT_SPANNABLE) {
+ node = currentElement;
+ } else if (node == NO_LOCATION_SPANNABLE) {
+ if (currentElement == null) return null;
+ node = currentElement;
+ }
+ if (node is SourceSpan) {
+ return node;
+ } else if (node is Node) {
+ return spanFromNode(node);
+ } else if (node is Token) {
+ return spanFromTokens(node, node);
+ } else if (node is HInstruction) {
+ return spanFromHInstruction(node);
+ } else if (node is Element) {
+ return spanFromElement(node);
+ } else if (node is MetadataAnnotation) {
+ Uri uri = node.annotatedElement.getCompilationUnit().script.readableUri;
+ return spanFromTokens(node.beginToken, node.endToken, uri);
+ } else {
+ throw 'No error location.';
+ }
+ }
+
+ /// Finds the approximate [Element] for [node]. [currentElement] is used as
+ /// the default value.
+ Element elementFromSpannable(Spannable node) {
+ Element element;
+ if (node is Element) {
+ element = node;
+ } else if (node is HInstruction) {
+ element = node.sourceElement;
+ } else if (node is MetadataAnnotation) {
+ element = node.annotatedElement;
+ }
+ return element != null ? element : currentElement;
+ }
+
+ void log(message) {
+ reportDiagnostic(null,
+ MessageKind.GENERIC.message({'text': '$message'}),
+ api.Diagnostic.VERBOSE_INFO);
+ }
+
+ Future run(Uri uri) {
+ totalCompileTime.start();
+
+ return new Future.sync(() => runCompiler(uri)).catchError((error) {
+ if (error is CompilerCancelledException) {
+ log('Error: $error');
+ return false;
+ }
+
+ try {
+ if (!hasCrashed) {
+ hasCrashed = true;
+ if (error is SpannableAssertionFailure) {
+ reportAssertionFailure(error);
+ } else {
+ reportDiagnostic(new SourceSpan(uri, 0, 0),
+ MessageKind.COMPILER_CRASHED.message(),
+ api.Diagnostic.CRASH);
+ }
+ pleaseReportCrash();
+ }
+ } catch (doubleFault) {
+ // Ignoring exceptions in exception handling.
+ }
+ throw error;
+ }).whenComplete(() {
+ tracer.close();
+ totalCompileTime.stop();
+ }).then((_) {
+ return !compilationFailed;
+ });
+ }
+
+ bool hasIsolateSupport() => isolateLibrary != null;
+
+ /**
+ * This method is called before [library] import and export scopes have been
+ * set up.
+ */
+ Future onLibraryLoaded(LibraryElement library, Uri uri) {
+ if (dynamicClass != null) {
+ // When loading the built-in libraries, dynamicClass is null. We
+ // take advantage of this as core imports js_helper and sees [dynamic]
+ // this way.
+ withCurrentElement(dynamicClass, () {
+ library.addToScope(dynamicClass, this);
+ });
+ }
+ if (uri == new Uri(scheme: 'dart', path: 'mirrors')) {
+ mirrorsLibrary = library;
+ mirrorSystemClass =
+ findRequiredElement(library, 'MirrorSystem');
+ mirrorsUsedClass =
+ findRequiredElement(library, 'MirrorsUsed');
+ } else if (uri == new Uri(scheme: 'dart', path: '_native_typed_data')) {
+ typedDataLibrary = library;
+ typedDataClass =
+ findRequiredElement(library, 'NativeTypedData');
+ } else if (uri == new Uri(scheme: 'dart', path: '_internal')) {
+ symbolImplementationClass =
+ findRequiredElement(library, 'Symbol');
+ } else if (uri == new Uri(scheme: 'dart', path: 'async')) {
+ deferredLibraryClass =
+ findRequiredElement(library, 'DeferredLibrary');
+ } else if (isolateHelperLibrary == null
+ && (uri == new Uri(scheme: 'dart', path: '_isolate_helper'))) {
+ isolateHelperLibrary = library;
+ } else if (foreignLibrary == null
+ && (uri == new Uri(scheme: 'dart', path: '_foreign_helper'))) {
+ foreignLibrary = library;
+ }
+ return backend.onLibraryLoaded(library, uri);
+ }
+
+ Element findRequiredElement(LibraryElement library, String name) {
+ var element = library.find(name);
+ if (element == null) {
+ internalError(library,
+ "The library '${library.canonicalUri}' does not contain required "
+ "element: '$name'.");
+ }
+ return element;
+ }
+
+ void onClassResolved(ClassElement cls) {
+ if (mirrorSystemClass == cls) {
+ mirrorSystemGetNameFunction =
+ cls.lookupLocalMember('getName');
+ } else if (symbolClass == cls) {
+ symbolConstructor = cls.constructors.head;
+ } else if (symbolImplementationClass == cls) {
+ symbolValidatedConstructor = symbolImplementationClass.lookupConstructor(
+ symbolValidatedConstructorSelector);
+ } else if (mirrorsUsedClass == cls) {
+ mirrorsUsedConstructor = cls.constructors.head;
+ } else if (intClass == cls) {
+ intEnvironment = intClass.lookupConstructor(fromEnvironmentSelector);
+ } else if (stringClass == cls) {
+ stringEnvironment =
+ stringClass.lookupConstructor(fromEnvironmentSelector);
+ } else if (boolClass == cls) {
+ boolEnvironment = boolClass.lookupConstructor(fromEnvironmentSelector);
+ }
+ }
+
+ Future scanBuiltinLibrary(String filename);
+
+ void initializeSpecialClasses() {
+ final List missingCoreClasses = [];
+ ClassElement lookupCoreClass(String name) {
+ ClassElement result = coreLibrary.find(name);
+ if (result == null) {
+ missingCoreClasses.add(name);
+ }
+ return result;
+ }
+ objectClass = lookupCoreClass('Object');
+ boolClass = lookupCoreClass('bool');
+ numClass = lookupCoreClass('num');
+ intClass = lookupCoreClass('int');
+ doubleClass = lookupCoreClass('double');
+ stringClass = lookupCoreClass('String');
+ functionClass = lookupCoreClass('Function');
+ listClass = lookupCoreClass('List');
+ typeClass = lookupCoreClass('Type');
+ mapClass = lookupCoreClass('Map');
+ nullClass = lookupCoreClass('Null');
+ stackTraceClass = lookupCoreClass('StackTrace');
+ if (!missingCoreClasses.isEmpty) {
+ internalError(coreLibrary,
+ 'dart:core library does not contain required classes: '
+ '$missingCoreClasses');
+ }
+
+ // The Symbol class may not exist during unit testing.
+ // TODO(ahe): It is possible that we have to require the presence
+ // of Symbol as we change how we implement noSuchMethod.
+ symbolClass = lookupCoreClass('Symbol');
+
+ final List missingHelperClasses = [];
+ ClassElement lookupHelperClass(String name) {
+ ClassElement result = jsHelperLibrary.find(name);
+ if (result == null) {
+ missingHelperClasses.add(name);
+ }
+ return result;
+ }
+ jsInvocationMirrorClass = lookupHelperClass('JSInvocationMirror');
+ boundClosureClass = lookupHelperClass('BoundClosure');
+ closureClass = lookupHelperClass('Closure');
+ dynamicClass = lookupHelperClass('Dynamic_');
+ if (!missingHelperClasses.isEmpty) {
+ internalError(jsHelperLibrary,
+ 'dart:_js_helper library does not contain required classes: '
+ '$missingHelperClasses');
+ }
+
+ if (types == null) {
+ types = new Types(this, dynamicClass);
+ }
+ backend.initializeHelperClasses();
+
+ dynamicClass.ensureResolved(this);
+
+ proxyConstant = constantHandler.compileVariable(
+ coreLibrary.find('proxy'), isConst: true);
+ }
+
+ Element _unnamedListConstructor;
+ Element get unnamedListConstructor {
+ if (_unnamedListConstructor != null) return _unnamedListConstructor;
+ Selector callConstructor = new Selector.callConstructor(
+ "", listClass.getLibrary());
+ return _unnamedListConstructor =
+ listClass.lookupConstructor(callConstructor);
+ }
+
+ Element _filledListConstructor;
+ Element get filledListConstructor {
+ if (_filledListConstructor != null) return _filledListConstructor;
+ Selector callConstructor = new Selector.callConstructor(
+ "filled", listClass.getLibrary());
+ return _filledListConstructor =
+ listClass.lookupConstructor(callConstructor);
+ }
+
+ Future scanBuiltinLibraries() {
+ return scanBuiltinLibrary('_js_helper').then((LibraryElement library) {
+ jsHelperLibrary = library;
+ return scanBuiltinLibrary('_interceptors');
+ }).then((LibraryElement library) {
+ interceptorsLibrary = library;
+
+ assertMethod = jsHelperLibrary.find('assertHelper');
+ identicalFunction = coreLibrary.find('identical');
+
+ initializeSpecialClasses();
+
+ functionClass.ensureResolved(this);
+ functionApplyMethod =
+ functionClass.lookupLocalMember('apply');
+ jsInvocationMirrorClass.ensureResolved(this);
+ invokeOnMethod = jsInvocationMirrorClass.lookupLocalMember(INVOKE_ON);
+
+ if (preserveComments) {
+ var uri = new Uri(scheme: 'dart', path: 'mirrors');
+ return libraryLoader.loadLibrary(uri, null, uri).then(
+ (LibraryElement libraryElement) {
+ documentClass = libraryElement.find('Comment');
+ });
+ }
+ });
+ }
+
+ void importHelperLibrary(LibraryElement library) {
+ if (jsHelperLibrary != null) {
+ libraryLoader.importLibrary(library, jsHelperLibrary, null);
+ }
+ }
+
+ /**
+ * Get an [Uri] pointing to a patch for the dart: library with
+ * the given path. Returns null if there is no patch.
+ */
+ Uri resolvePatchUri(String dartLibraryPath);
+
+ Future runCompiler(Uri uri) {
+ // TODO(ahe): This prevents memory leaks when invoking the compiler
+ // multiple times. Implement a better mechanism where we can store
+ // such caches in the compiler and get access to them through a
+ // suitably maintained static reference to the current compiler.
+ StringToken.canonicalizedSubstrings.clear();
+ Selector.canonicalizedValues.clear();
+ TypedSelector.canonicalizedValues.clear();
+
+ assert(uri != null || analyzeOnly);
+ return scanBuiltinLibraries().then((_) {
+ if (librariesToAnalyzeWhenRun != null) {
+ return Future.forEach(librariesToAnalyzeWhenRun, (libraryUri) {
+ log('Analyzing $libraryUri ($buildId)');
+ return libraryLoader.loadLibrary(libraryUri, null, libraryUri);
+ });
+ }
+ }).then((_) {
+ if (uri != null) {
+ if (analyzeOnly) {
+ log('Analyzing $uri ($buildId)');
+ } else {
+ log('Compiling $uri ($buildId)');
+ }
+ return libraryLoader.loadLibrary(uri, null, uri)
+ .then((LibraryElement library) {
+ mainApp = library;
+ });
+ }
+ }).then((_) {
+ compileLoadedLibraries();
+ });
+ }
+
+ /// Performs the compilation when all libraries have been loaded.
+ void compileLoadedLibraries() {
+ Element main = null;
+ if (mainApp != null) {
+ main = mainApp.findExported(MAIN);
+ if (main == null) {
+ if (!analyzeOnly) {
+ // Allow analyze only of libraries with no main.
+ reportFatalError(
+ mainApp,
+ MessageKind.GENERIC,
+ {'text': "Could not find '$MAIN'."});
+ } else if (!analyzeAll) {
+ reportFatalError(mainApp, MessageKind.GENERIC,
+ {'text': "Could not find '$MAIN'. "
+ "No source will be analyzed. "
+ "Use '--analyze-all' to analyze all code in the "
+ "library."});
+ }
+ } else {
+ if (main.isErroneous()) {
+ reportFatalError(main, MessageKind.GENERIC,
+ {'text': "Cannot determine which '$MAIN' to use."});
+ } else if (!main.isFunction()) {
+ reportFatalError(main, MessageKind.GENERIC,
+ {'text': "'$MAIN' is not a function."});
+ }
+ mainFunction = main;
+ FunctionSignature parameters = mainFunction.computeSignature(this);
+ if (parameters.parameterCount > 2) {
+ int index = 0;
+ parameters.forEachParameter((Element parameter) {
+ if (index++ < 2) return;
+ reportError(parameter, MessageKind.GENERIC,
+ {'text': "'$MAIN' cannot have more than two parameters."});
+ });
+ }
+ }
+
+ mirrorUsageAnalyzerTask.analyzeUsage(mainApp);
+
+ // In order to see if a library is deferred, we must compute the
+ // compile-time constants that are metadata. This means adding
+ // something to the resolution queue. So we cannot wait with
+ // this until after the resolution queue is processed.
+ deferredLoadTask.ensureMetadataResolved(this);
+ }
+
+ log('Resolving...');
+ phase = PHASE_RESOLVING;
+ if (analyzeAll) {
+ libraries.forEach(
+ (_, lib) => fullyEnqueueLibrary(lib, enqueuer.resolution));
+ }
+ // Elements required by enqueueHelpers are global dependencies
+ // that are not pulled in by a particular element.
+ backend.enqueueHelpers(enqueuer.resolution, globalDependencies);
+ resolveLibraryMetadata();
+ processQueue(enqueuer.resolution, main);
+ enqueuer.resolution.logSummary(log);
+
+ if (compilationFailed) return;
+ if (!showPackageWarnings) {
+ suppressedWarnings.forEach((Uri uri, SuppressionInfo info) {
+ MessageKind kind = MessageKind.HIDDEN_WARNINGS_HINTS;
+ if (info.warnings == 0) {
+ kind = MessageKind.HIDDEN_HINTS;
+ } else if (info.hints == 0) {
+ kind = MessageKind.HIDDEN_WARNINGS;
+ }
+ reportDiagnostic(null,
+ kind.message({'warnings': info.warnings,
+ 'hints': info.hints,
+ 'uri': uri},
+ terseDiagnostics),
+ api.Diagnostic.HINT);
+ });
+ }
+ if (analyzeOnly) {
+ if (!analyzeAll) {
+ // No point in reporting unused code when [analyzeAll] is true: all
+ // code is artificially used.
+ reportUnusedCode();
+ }
+ return;
+ }
+ assert(main != null);
+ phase = PHASE_DONE_RESOLVING;
+
+ // TODO(ahe): Remove this line. Eventually, enqueuer.resolution
+ // should know this.
+ world.populate();
+ // Compute whole-program-knowledge that the backend needs. (This might
+ // require the information computed in [world.populate].)
+ backend.onResolutionComplete();
+
+ deferredLoadTask.onResolutionComplete(main);
+
+ log('Building IR...');
+ irBuilder.buildNodes();
+
+ log('Inferring types...');
+ typesTask.onResolutionComplete(main);
+
+ if(stopAfterTypeInference) return;
+
+ log('Compiling...');
+ phase = PHASE_COMPILING;
+ // TODO(johnniwinther): Move these to [CodegenEnqueuer].
+ if (hasIsolateSupport()) {
+ enqueuer.codegen.addToWorkList(
+ isolateHelperLibrary.find(Compiler.START_ROOT_ISOLATE));
+ enqueuer.codegen.registerGetOfStaticFunction(main);
+ }
+ if (enabledNoSuchMethod) {
+ backend.enableNoSuchMethod(enqueuer.codegen);
+ }
+ if (compileAll) {
+ libraries.forEach((_, lib) => fullyEnqueueLibrary(lib,
+ enqueuer.codegen));
+ }
+ processQueue(enqueuer.codegen, main);
+ enqueuer.codegen.logSummary(log);
+
+ if (compilationFailed) return;
+
+ backend.assembleProgram();
+
+ if (dumpInfo) {
+ dumpInfoTask.dumpInfo();
+ }
+
+ checkQueues();
+
+ if (compilationFailed) {
+ assembledCode = null; // Signals failure.
+ }
+ }
+
+ void fullyEnqueueLibrary(LibraryElement library, Enqueuer world) {
+ void enqueueAll(Element element) {
+ fullyEnqueueTopLevelElement(element, world);
+ }
+ library.implementation.forEachLocalMember(enqueueAll);
+ }
+
+ void fullyEnqueueTopLevelElement(Element element, Enqueuer world) {
+ if (element.isClass()) {
+ ClassElement cls = element;
+ cls.ensureResolved(this);
+ cls.forEachLocalMember(enqueuer.resolution.addToWorkList);
+ world.registerInstantiatedClass(element, globalDependencies);
+ } else {
+ world.addToWorkList(element);
+ }
+ }
+
+ // Resolves metadata on library elements. This is necessary in order to
+ // resolve metadata classes referenced only from metadata on library tags.
+ // TODO(ahe): Figure out how to do this lazily.
+ void resolveLibraryMetadata() {
+ for (LibraryElement library in libraries.values) {
+ if (library.metadata != null) {
+ for (MetadataAnnotation metadata in library.metadata) {
+ metadata.ensureResolved(this);
+ }
+ }
+ }
+ }
+
+ void processQueue(Enqueuer world, Element main) {
+ world.nativeEnqueuer.processNativeClasses(libraries.values);
+ if (main != null) {
+ FunctionElement mainMethod = main;
+ if (mainMethod.computeSignature(this).parameterCount != 0) {
+ // TODO(ngeoffray, floitsch): we should also ensure that the
+ // class IsolateMessage is instantiated. Currently, just enabling
+ // isolate support works.
+ world.enableIsolateSupport(main.getLibrary());
+ world.registerInstantiatedClass(listClass, globalDependencies);
+ world.registerInstantiatedClass(stringClass, globalDependencies);
+ }
+ world.addToWorkList(main);
+ }
+ progress.reset();
+ world.forEach((WorkItem work) {
+ withCurrentElement(work.element, () => work.run(this, world));
+ });
+ world.queueIsClosed = true;
+ if (compilationFailed) return;
+ assert(world.checkNoEnqueuedInvokedInstanceMethods());
+ }
+
+ /**
+ * Perform various checks of the queues. This includes checking that
+ * the queues are empty (nothing was added after we stopped
+ * processing the queues). Also compute the number of methods that
+ * were resolved, but not compiled (aka excess resolution).
+ */
+ checkQueues() {
+ for (Enqueuer world in [enqueuer.resolution, enqueuer.codegen]) {
+ world.forEach((WorkItem work) {
+ internalError(work.element, "Work list is not empty.");
+ });
+ }
+ if (!REPORT_EXCESS_RESOLUTION) return;
+ var resolved = new Set.from(enqueuer.resolution.resolvedElements.keys);
+ for (Element e in enqueuer.codegen.generatedCode.keys) {
+ resolved.remove(e);
+ }
+ for (Element e in new Set.from(resolved)) {
+ if (e.isClass() ||
+ e.isField() ||
+ e.isTypeVariable() ||
+ e.isTypedef() ||
+ identical(e.kind, ElementKind.ABSTRACT_FIELD)) {
+ resolved.remove(e);
+ }
+ if (identical(e.kind, ElementKind.GENERATIVE_CONSTRUCTOR)) {
+ ClassElement enclosingClass = e.getEnclosingClass();
+ resolved.remove(e);
+
+ }
+ if (identical(e.getLibrary(), jsHelperLibrary)) {
+ resolved.remove(e);
+ }
+ if (identical(e.getLibrary(), interceptorsLibrary)) {
+ resolved.remove(e);
+ }
+ }
+ log('Excess resolution work: ${resolved.length}.');
+ for (Element e in resolved) {
+ reportWarning(e,
+ MessageKind.GENERIC,
+ {'text': 'Warning: $e resolved but not compiled.'});
+ }
+ }
+
+ TreeElements analyzeElement(Element element) {
+ assert(invariant(element,
+ element.impliesType() ||
+ element.isField() ||
+ element.isFunction() ||
+ element.isGenerativeConstructor() ||
+ element.isGetter() ||
+ element.isSetter(),
+ message: 'Unexpected element kind: ${element.kind}'));
+ assert(invariant(element, element is AnalyzableElement,
+ message: 'Element $element is not analyzable.'));
+ assert(invariant(element, element.isDeclaration));
+ ResolutionEnqueuer world = enqueuer.resolution;
+ TreeElements elements = world.getCachedElements(element);
+ if (elements != null) return elements;
+ assert(parser != null);
+ Node tree = parser.parse(element);
+ assert(invariant(element, !element.isSynthesized || tree == null));
+ if (tree != null) validator.validate(tree);
+ elements = resolver.resolve(element);
+ if (tree != null && elements != null && !analyzeSignaturesOnly) {
+ // Only analyze nodes with a corresponding [TreeElements].
+ checker.check(elements);
+ }
+ world.resolvedElements[element] = elements;
+ return elements;
+ }
+
+ TreeElements analyze(ResolutionWorkItem work, ResolutionEnqueuer world) {
+ assert(invariant(work.element, identical(world, enqueuer.resolution)));
+ assert(invariant(work.element, !work.isAnalyzed(),
+ message: 'Element ${work.element} has already been analyzed'));
+ if (progress.elapsedMilliseconds > 500) {
+ // TODO(ahe): Add structured diagnostics to the compiler API and
+ // use it to separate this from the --verbose option.
+ if (phase == PHASE_RESOLVING) {
+ log('Resolved ${enqueuer.resolution.resolvedElements.length} '
+ 'elements.');
+ progress.reset();
+ }
+ }
+ Element element = work.element;
+ TreeElements result = world.getCachedElements(element);
+ if (result != null) return result;
+ result = analyzeElement(element);
+ backend.onElementResolved(element, result);
+ return result;
+ }
+
+ void codegen(CodegenWorkItem work, CodegenEnqueuer world) {
+ assert(invariant(work.element, identical(world, enqueuer.codegen)));
+ if (progress.elapsedMilliseconds > 500) {
+ // TODO(ahe): Add structured diagnostics to the compiler API and
+ // use it to separate this from the --verbose option.
+ log('Compiled ${enqueuer.codegen.generatedCode.length} methods.');
+ progress.reset();
+ }
+ backend.codegen(work);
+ }
+
+ FunctionSignature resolveSignature(FunctionElement element) {
+ return withCurrentElement(element,
+ () => resolver.resolveSignature(element));
+ }
+
+ void resolveTypedef(TypedefElement element) {
+ withCurrentElement(element,
+ () => resolver.resolve(element));
+ }
+
+ void reportError(Spannable node,
+ MessageKind messageKind,
+ [Map arguments = const {}]) {
+ reportDiagnosticInternal(
+ node, messageKind, arguments, api.Diagnostic.ERROR);
+ }
+
+ void reportFatalError(Spannable node, MessageKind messageKind,
+ [Map arguments = const {}]) {
+ reportError(node, messageKind, arguments);
+ // TODO(ahe): Make this only abort the current method.
+ throw new CompilerCancelledException(
+ 'Error: Cannot continue due to previous error.');
+ }
+
+ void reportWarning(Spannable node, MessageKind messageKind,
+ [Map arguments = const {}]) {
+ // TODO(ahe): Don't suppress these warning when the type checker
+ // is more complete.
+ if (messageKind == MessageKind.MISSING_RETURN) return;
+ if (messageKind == MessageKind.MAYBE_MISSING_RETURN) return;
+ reportDiagnosticInternal(
+ node, messageKind, arguments, api.Diagnostic.WARNING);
+ }
+
+ void reportInfo(Spannable node, MessageKind messageKind,
+ [Map arguments = const {}]) {
+ reportDiagnosticInternal(node, messageKind, arguments, api.Diagnostic.INFO);
+ }
+
+ void reportHint(Spannable node, MessageKind messageKind,
+ [Map arguments = const {}]) {
+ reportDiagnosticInternal(node, messageKind, arguments, api.Diagnostic.HINT);
+ }
+
+ /// For debugging only, print a message with a source location.
+ void reportHere(Spannable node, String debugMessage) {
+ reportInfo(node, MessageKind.GENERIC, {'text': 'HERE: $debugMessage'});
+ }
+
+ void reportDiagnosticInternal(Spannable node,
+ MessageKind messageKind,
+ Map arguments,
+ api.Diagnostic kind) {
+ if (!showPackageWarnings) {
+ switch (kind) {
+ case api.Diagnostic.WARNING:
+ case api.Diagnostic.HINT:
+ Element element = elementFromSpannable(node);
+ if (!inUserCode(element)) {
+ Uri uri = getCanonicalUri(element);
+ SuppressionInfo info =
+ suppressedWarnings.putIfAbsent(uri, () => new SuppressionInfo());
+ if (kind == api.Diagnostic.WARNING) {
+ info.warnings++;
+ } else {
+ info.hints++;
+ }
+ lastDiagnosticWasFiltered = true;
+ return;
+ }
+ break;
+ case api.Diagnostic.INFO:
+ if (lastDiagnosticWasFiltered) {
+ return;
+ }
+ break;
+ }
+ }
+ lastDiagnosticWasFiltered = false;
+ reportDiagnostic(
+ node, messageKind.message(arguments, terseDiagnostics), kind);
+ }
+
+ void reportDiagnostic(Spannable span,
+ Message message,
+ api.Diagnostic kind);
+
+ void reportAssertionFailure(SpannableAssertionFailure ex) {
+ String message = (ex.message != null) ? tryToString(ex.message)
+ : tryToString(ex);
+ SourceSpan span = spanFromSpannable(ex.node);
+ reportDiagnosticInternal(
+ ex.node, MessageKind.GENERIC, {'text': message}, api.Diagnostic.CRASH);
+ }
+
+ SourceSpan spanFromTokens(Token begin, Token end, [Uri uri]) {
+ if (begin == null || end == null) {
+ // TODO(ahe): We can almost always do better. Often it is only
+ // end that is null. Otherwise, we probably know the current
+ // URI.
+ throw 'Cannot find tokens to produce error message.';
+ }
+ if (uri == null && currentElement != null) {
+ uri = currentElement.getCompilationUnit().script.readableUri;
+ }
+ return SourceSpan.withCharacterOffsets(begin, end,
+ (beginOffset, endOffset) => new SourceSpan(uri, beginOffset, endOffset));
+ }
+
+ SourceSpan spanFromNode(Node node) {
+ return spanFromTokens(node.getBeginToken(), node.getEndToken());
+ }
+
+ SourceSpan spanFromElement(Element element) {
+ if (Elements.isErroneousElement(element)) {
+ element = element.enclosingElement;
+ }
+ if (element.position() == null &&
+ !element.isLibrary() &&
+ !element.isCompilationUnit()) {
+ // Sometimes, the backend fakes up elements that have no
+ // position. So we use the enclosing element instead. It is
+ // not a good error location, but cancel really is "internal
+ // error" or "not implemented yet", so the vicinity is good
+ // enough for now.
+ element = element.enclosingElement;
+ // TODO(ahe): I plan to overhaul this infrastructure anyways.
+ }
+ if (element == null) {
+ element = currentElement;
+ }
+ Token position = element.position();
+ Uri uri = element.getCompilationUnit().script.readableUri;
+ return (position == null)
+ ? new SourceSpan(uri, 0, 0)
+ : spanFromTokens(position, position, uri);
+ }
+
+ SourceSpan spanFromHInstruction(HInstruction instruction) {
+ Element element = instruction.sourceElement;
+ if (element == null) element = currentElement;
+ var position = instruction.sourcePosition;
+ if (position == null) return spanFromElement(element);
+ Token token = position.token;
+ if (token == null) return spanFromElement(element);
+ Uri uri = element.getCompilationUnit().script.readableUri;
+ return spanFromTokens(token, token, uri);
+ }
+
+ /**
+ * Translates the [resolvedUri] into a readable URI.
+ *
+ * The [importingLibrary] holds the library importing [resolvedUri] or
+ * [:null:] if [resolvedUri] is loaded as the main library. The
+ * [importingLibrary] is used to grant access to internal libraries from
+ * platform libraries and patch libraries.
+ *
+ * If the [resolvedUri] is not accessible from [importingLibrary], this method
+ * is responsible for reporting errors.
+ *
+ * See [LibraryLoader] for terminology on URIs.
+ */
+ Uri translateResolvedUri(LibraryElement importingLibrary,
+ Uri resolvedUri, Node node) {
+ unimplemented(importingLibrary, 'Compiler.translateResolvedUri');
+ return null;
+ }
+
+ /**
+ * Reads the script specified by the [readableUri].
+ *
+ * See [LibraryLoader] for terminology on URIs.
+ */
+ Future
+