FridaSwiftDump
4 views
2acc93ab...
Description
FridaSwiftDump a Frida tool for retriving the Swift Object info from an running app.
How to Use
Download the script and run it with Frida CLI:
Download ScriptThen run with Frida:
frida -U -f YOUR_PACKAGE_NAME -l fridaswiftdump.js
Replace YOUR_PACKAGE_NAME with the target app's package name.
Source Code
JavaScript
/*
FridaSwiftDump a Frida tool for retriving the Swift Object info from an running app.
It's the Frida version of my Mac OS command-line tool [SwiftDump](https://github.com/neil-wu/SwiftDump/).
You can either use`SwiftDump` for a Mach-O file or `FridaSwiftDump` for a foreground running app.
Check [SwiftDump](https://github.com/neil-wu/SwiftDump/) for more details.
*/
(function() {
function r(e, n, t) {
function o(i, f) {
if (!n[i]) {
if (!e[i]) {
var c = "function" == typeof require && require;
if (!f && c) return c(i, !0);
if (u) return u(i, !0);
var a = new Error("Cannot find module '" + i + "'");
throw a.code = "MODULE_NOT_FOUND", a
}
var p = n[i] = {
exports: {}
};
e[i][0].call(p.exports, function(r) {
var n = e[i][1][r];
return o(n || r)
}, p, p.exports, r, e, n, t)
}
return n[i].exports
}
for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) o(t[i]);
return o
}
return r
})()({
1: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
exports.ESection = exports.ESegment = void 0;
var ESegment;
(function(ESegment) {
ESegment["TEXT"] = "__TEXT";
ESegment["DATA"] = "__DATA";
ESegment["DATA_CONST"] = "__DATA_CONST";
})(ESegment = exports.ESegment || (exports.ESegment = {}));
var ESection;
(function(ESection) {
ESection["swift5types"] = "__swift5_types";
ESection["swift5proto"] = "__swift5_proto";
ESection["swift5protos"] = "__swift5_protos";
ESection["swift5filemd"] = "__swift5_fieldmd";
ESection["objc_classlist"] = "__objc_classlist";
})(ESection = exports.ESection || (exports.ESection = {}));
}, {
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21
}],
2: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
var _create = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/create"));
var __createBinding = void 0 && (void 0).__createBinding || (_create["default"] ? function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
(0, _defineProperty["default"])(o, k2, {
enumerable: true,
get: function get() {
return m[k];
}
});
} : function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (_create["default"] ? function(o, v) {
(0, _defineProperty["default"])(o, "default", {
enumerable: true,
value: v
});
} : function(o, v) {
o["default"] = v;
});
var __importStar = void 0 && (void 0).__importStar || function(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod) {
if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
};
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
exports.getSectionData = exports.swift_demangle = exports.initHook = exports.isSwiftAvailable = void 0;
var logger_1 = require("./logger");
var Util = __importStar(require("./Util"));
var size_t = Process.pointerSize === 8 ? 'uint64' : Process.pointerSize === 4 ? 'uint32' : "unsupported platform";
var _swift_demangle;
var _free;
var _getsectiondata; // https://github.com/maltek/swift-frida/blob/495eed2a5acc365e0b741995901f3cba6927b239/runtime-api.js
function isSwiftAvailable() {
var tmp = Module.findBaseAddress("libswiftCore.dylib");
return tmp != null;
}
exports.isSwiftAvailable = isSwiftAvailable;
function initHook() {
logger_1.log('[Runtime] initHook...'); //1. swift_demangle
if (isSwiftAvailable()) {
var addr_swift_demangle = Module.getExportByName("libswiftCore.dylib", "swift_demangle");
_swift_demangle = new NativeFunction(addr_swift_demangle, "pointer", ["pointer", size_t, "pointer", "pointer", 'int32']);
logger_1.log("[Runtime] hook swift_demangle ".concat(addr_swift_demangle, " -> ").concat(_swift_demangle));
} else {
logger_1.log("[Runtime] fail to find swift_demangle, swift is not avaliable");
} //2. free
var addr_free = Module.getExportByName("libsystem_malloc.dylib", "free");
_free = new NativeFunction(addr_free, "void", ["pointer"]);
logger_1.log("[Runtime] hook free ".concat(addr_free, " -> ").concat(_free)); //3.
var addr_getsectiondata = Module.getExportByName("libmacho.dylib", "getsectiondata");
_getsectiondata = new NativeFunction(addr_getsectiondata, "pointer", ["pointer", "pointer", "pointer", "pointer"]);
logger_1.log("addr_getsectiondata ".concat(addr_getsectiondata, " -> ").concat(_getsectiondata));
}
exports.initHook = initHook;
function swift_demangle(name) {
if (!_swift_demangle) {
return name;
}
var fixname = name;
if (name.startsWith("$s") || name.startsWith("_T")) {
fixname = name;
} else if (name.startsWith("So")) {
fixname = "$s" + name;
} else if (Util.isPrintableString(name)) {
fixname = "$s" + name;
} else {
return name;
}
var cStr = Memory.allocUtf8String(fixname);
var demangled = _swift_demangle(cStr, fixname.length, ptr(0), ptr(0), 0);
var res = null;
if (demangled) {
res = demangled.readUtf8String();
_free(demangled);
}
if (res && res != fixname) {
return res;
}
return name; // original string
}
exports.swift_demangle = swift_demangle;
function getSectionData(module, sect, seg) {
var segName = Memory.allocUtf8String(seg);
var sectName = Memory.allocUtf8String(sect);
var sizeAlloc = Memory.alloc(8);
var ptrSection = _getsectiondata(module.base, segName, sectName, sizeAlloc);
var sectionSize = sizeAlloc.readULong(); // [string, number]
return [ptrSection, sectionSize];
}
exports.getSectionData = getSectionData; //api.free(demangled);
}, {
"./Util": 6,
"./logger": 8,
"@babel/runtime-corejs2/core-js/object/create": 13,
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21
}],
3: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
exports.getKindDesc = exports.SDContextDescriptorFlags = exports.SDContextDescriptorKind = void 0;
var SDContextDescriptorKind;
(function(SDContextDescriptorKind) {
/// This context descriptor represents a module.
SDContextDescriptorKind[SDContextDescriptorKind["Module"] = 0] = "Module"; /// This context descriptor represents an extension.
SDContextDescriptorKind[SDContextDescriptorKind["Extension"] = 1] = "Extension"; /// This context descriptor represents an anonymous possibly-generic context
/// such as a function body.
SDContextDescriptorKind[SDContextDescriptorKind["Anonymous"] = 2] = "Anonymous"; /// This context descriptor represents a protocol context.
SDContextDescriptorKind[SDContextDescriptorKind["SwiftProtocol"] = 3] = "SwiftProtocol"; /// This context descriptor represents an opaque type alias.
SDContextDescriptorKind[SDContextDescriptorKind["OpaqueType"] = 4] = "OpaqueType"; /// First kind that represents a type of any sort.
//Type_First = 16,
/// This context descriptor represents a class.
SDContextDescriptorKind[SDContextDescriptorKind["Class"] = 16] = "Class"; /// This context descriptor represents a struct.
SDContextDescriptorKind[SDContextDescriptorKind["Struct"] = 17] = "Struct"; /// This context descriptor represents an enum.
SDContextDescriptorKind[SDContextDescriptorKind["Enum"] = 18] = "Enum"; /// Last kind that represents a type of any sort.
SDContextDescriptorKind[SDContextDescriptorKind["Type_Last"] = 31] = "Type_Last";
SDContextDescriptorKind[SDContextDescriptorKind["Unknow"] = 255] = "Unknow"; // It's not in swift source, this value only used for dump
})(SDContextDescriptorKind = exports.SDContextDescriptorKind || (exports.SDContextDescriptorKind = {}));
var SDContextDescriptorFlags = /*#__PURE__*/ function() {
function SDContextDescriptorFlags(val) {
(0, _classCallCheck2["default"])(this, SDContextDescriptorFlags);
this.value = val;
} /// The kind of context this descriptor describes.
(0, _createClass2["default"])(SDContextDescriptorFlags, [{
key: "getKind",
value: function getKind() {
// SDContextDescriptorKind
var tmp = this.value & 0x1F;
switch (tmp) {
case SDContextDescriptorKind.Module:
return SDContextDescriptorKind.Module;
case SDContextDescriptorKind.Extension:
return SDContextDescriptorKind.Extension;
case SDContextDescriptorKind.Anonymous:
return SDContextDescriptorKind.Anonymous;
case SDContextDescriptorKind.SwiftProtocol:
return SDContextDescriptorKind.SwiftProtocol;
case SDContextDescriptorKind.OpaqueType:
return SDContextDescriptorKind.OpaqueType;
case SDContextDescriptorKind.Class:
return SDContextDescriptorKind.Class;
case SDContextDescriptorKind.Struct:
return SDContextDescriptorKind.Struct;
case SDContextDescriptorKind.Enum:
return SDContextDescriptorKind.Enum;
}
return SDContextDescriptorKind.Unknow;
} /// Whether the context being described is generic.
}, {
key: "isGeneric",
value: function isGeneric() {
return (this.value & 0x80) != 0;
} /// Whether this is a unique record describing the referenced context.
}, {
key: "isUnique",
value: function isUnique() {
return (this.value & 0x40) != 0;
} /// The format version of the descriptor. Higher version numbers may have
/// additional fields that aren't present in older versions.
}, {
key: "getVersion",
value: function getVersion() {
return this.value >> 8 & 0xFF;
} /// The most significant two bytes of the flags word, which can have
/// kind-specific meaning.
}, {
key: "getKindSpecificFlags",
value: function getKindSpecificFlags() {
return this.value >> 16 & 0xFFFF;
}
}]);
return SDContextDescriptorFlags;
}();
exports.SDContextDescriptorFlags = SDContextDescriptorFlags;
function getKindDesc(kind) {
switch (kind) {
case SDContextDescriptorKind.Module:
return "module";
case SDContextDescriptorKind.Extension:
return "extension";
case SDContextDescriptorKind.Anonymous:
return "anonymous";
case SDContextDescriptorKind.SwiftProtocol:
return "protocol";
case SDContextDescriptorKind.OpaqueType:
return "opaqueType";
case SDContextDescriptorKind.Class:
return "class";
case SDContextDescriptorKind.Struct:
return "struct";
case SDContextDescriptorKind.Enum:
return "enum";
}
return "unknow";
}
exports.getKindDesc = getKindDesc;
}, {
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/helpers/classCallCheck": 19,
"@babel/runtime-corejs2/helpers/createClass": 20,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21
}],
4: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
exports.SDNominalObj = exports.SDNominalObjField = void 0;
var SDContextDescriptorFlags_1 = require("./SDContextDescriptorFlags");
var SDNominalObjField = function SDNominalObjField() {
(0, _classCallCheck2["default"])(this, SDNominalObjField);
this.name = "";
this.type = "";
this.typePtr = new NativePointer(0);
};
exports.SDNominalObjField = SDNominalObjField;
var SDNominalObj = /*#__PURE__*/ function() {
function SDNominalObj() {
(0, _classCallCheck2["default"])(this, SDNominalObj);
this.contextDescriptorFlag = null;
this.typeName = "";
this.fields = [];
this.nominalOffset = 0;
this.mangledTypeName = "";
this.superClassName = "";
this.protocols = [];
}
(0, _createClass2["default"])(SDNominalObj, [{
key: "getKindDesc",
value: function getKindDesc() {
var kind = SDContextDescriptorFlags_1.SDContextDescriptorKind.Unknow;
if (this.contextDescriptorFlag) {
kind = this.contextDescriptorFlag.getKind();
}
return SDContextDescriptorFlags_1.getKindDesc(kind);
}
}, {
key: "dumpDefine",
value: function dumpDefine() {
var intent = " ";
var str = "";
var kind = SDContextDescriptorFlags_1.SDContextDescriptorKind.Unknow;
if (this.contextDescriptorFlag) {
kind = this.contextDescriptorFlag.getKind();
}
var kindDesc = this.getKindDesc();
str += "".concat(kindDesc, " ") + this.typeName;
if (this.superClassName.length > 0) {
str += " : " + this.superClassName;
}
if (this.protocols.length > 0) {
var superStr = this.protocols.join(",");
var tmp = this.superClassName.length <= 0 ? " : " : "";
str += tmp + superStr;
}
str += " {\n"; //str += intent + "\n";//+ `//${contextDescriptorFlag}\n`;
for (var i = 0; i < this.fields.length; i++) {
var field = this.fields[i];
var fs = intent;
if (kind == SDContextDescriptorFlags_1.SDContextDescriptorKind.Enum) {
fs += "case ".concat(field.name, "\n");
} else {
fs += "let ".concat(field.name, ": ").concat(field.type, ";\n");
}
str += fs;
}
str += "}\n";
return str;
}
}]);
return SDNominalObj;
}();
exports.SDNominalObj = SDNominalObj;
}, {
"./SDContextDescriptorFlags": 3,
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/helpers/classCallCheck": 19,
"@babel/runtime-corejs2/helpers/createClass": 20,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21
}],
5: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
var _create = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/create"));
var __createBinding = void 0 && (void 0).__createBinding || (_create["default"] ? function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
(0, _defineProperty["default"])(o, k2, {
enumerable: true,
get: function get() {
return m[k];
}
});
} : function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (_create["default"] ? function(o, v) {
(0, _defineProperty["default"])(o, "default", {
enumerable: true,
value: v
});
} : function(o, v) {
o["default"] = v;
});
var __importStar = void 0 && (void 0).__importStar || function(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod) {
if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
};
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
exports.SDParser = void 0;
var logger_1 = require("./logger");
var Runtime = __importStar(require("./Runtime"));
var SDContextDescriptorFlags_1 = require("./SDContextDescriptorFlags");
var SDNominalObj_1 = require("./SDNominalObj");
var Consts_1 = require("./Consts");
var Util = __importStar(require("./Util"));
var SDParser = /*#__PURE__*/ function() {
function SDParser(module) {
(0, _classCallCheck2["default"])(this, SDParser);
this.cacheNominalAddressMap = {}; // address_str -> NameString
this.mangledNameMap = {}; // MangledName : TypeName
this.nominalObjs = [];
this.targetModule = module;
this.mangledNameMap = {
"0x02f36d": "Int32",
"0x02cd6d": "Int16",
"0x027b6e": "UInt16",
"0x022b6c": "UInt32",
"0x02b98502": "Int64",
"0x02418a02": "UInt64",
"0x02958802": "CGFloat"
};
}
(0, _createClass2["default"])(SDParser, [{
key: "parseSwiftType",
value: function parseSwiftType() {
var _Runtime$getSectionDa = Runtime.getSectionData(this.targetModule, Consts_1.ESection.swift5types, Consts_1.ESegment.TEXT),
_Runtime$getSectionDa2 = (0, _slicedToArray2["default"])(_Runtime$getSectionDa, 2),
ptrSection = _Runtime$getSectionDa2[0],
sectionSize = _Runtime$getSectionDa2[1];
logger_1.log("ptrSection ".concat(ptrSection, ", sectionSize ").concat(sectionSize));
var UniqueNominalTypeDescriptor = 4; // __swift5_types is 4 bytes
for (var index = 0; index < sectionSize; index = index + 4) {
var ptr = ptrSection.add(index);
var nominalArchOffset = ptr.readS32();
var nominalPtr = ptr.add(nominalArchOffset); // ref: https://knight.sc/reverse%20engineering/2019/07/17/swift-metadata.html
var flags = nominalPtr.readU32();
var sdfObj = new SDContextDescriptorFlags_1.SDContextDescriptorFlags(flags);
var type = sdfObj.getKind(); // SDContextDescriptorFlags
var parentVal = nominalPtr.add(4).readS32();
var namePtr = readMove(nominalPtr.add(8));
var nameStr = namePtr.readUtf8String(); //let accessFunctionVal = nominalPtr.add(12).readS32();
var obj = new SDNominalObj_1.SDNominalObj();
obj.typeName = nameStr !== null && nameStr !== void 0 ? nameStr : "";
obj.contextDescriptorFlag = sdfObj;
obj.nominalOffset = nominalArchOffset;
this.nominalObjs.push(obj);
if (nameStr) {
var addressStr = '0x' + nominalPtr.toString(16);
this.cacheNominalAddressMap[addressStr] = nameStr;
} // in swift5_filedmd
//let fieldDescriptorPtr = readMove(nominalPtr.add(4 * 4));
var fdp1 = nominalPtr.add(4 * 4);
var fdp1Buf = fdp1.readByteArray(64);
var fdp1_val = fdp1.readS32();
var fieldDescriptorPtr = fdp1.add(fdp1_val);
var mangledTypeName = Util.readUCharHexString(fieldDescriptorPtr); // readCString will fail!!!
if (mangledTypeName && mangledTypeName.length > 0) {
obj.mangledTypeName = mangledTypeName;
this.mangledNameMap[obj.mangledTypeName] = obj.typeName;
}
/*
if (nameStr) {
if (nameStr.startsWith('Test')) {
log(`${index}. ${ptr}, nominalArchOffset ${nominalArchOffset}, ${nominalPtr}, flags ${flags}, ${getKindDesc(type)}, name ${nameStr}, field ${fieldDescriptorPtr}, mangledTypeName ${ mangledTypeName } }`);
//log(hexdump(fieldDescriptorPtr.readByteArray(32) as ArrayBuffer, { ansi: true }));
} else {
continue;
}
}*/
//log(`${index} -> ${ptr} , offset ${offset}, ${nominalPtr}, flags ${flags}, ${type}, name ${nameStr}`);
var fields = dumpFieldDescriptor(fieldDescriptorPtr, mangledTypeName.length == 0);
obj.fields = fields;
}
}
}, {
key: "dumpAll",
value: function dumpAll() {
var statistics = {};
for (var i = 0; i < this.nominalObjs.length; i++) {
var obj = this.nominalObjs[i];
obj.typeName = Runtime.swift_demangle(obj.typeName);
var kindDesc = obj.getKindDesc();
var kindNum = statistics[kindDesc];
if (kindNum) {
statistics[kindDesc] = kindNum + 1;
} else {
statistics[kindDesc] = 1;
}
/*
if (obj.typeName != 'Test') {
continue;
}
*/
// resole field type name
for (var k = 0; k < obj.fields.length; k++) {
var field = obj.fields[k];
var ft = field.type;
if (ft.startsWith('0x')) {
var fixName = this.mangledNameMap[ft];
if (fixName && fixName.length > 0) {
field.type = fixName;
} else {
field.type = this.fixMangledName(ft, field.typePtr);
}
} else {
var checkName = "$s" + ft;
var tmp = Runtime.swift_demangle(checkName);
if (tmp != checkName) {
field.type = tmp;
}
}
}
logger_1.log("".concat(obj.dumpDefine()));
}
logger_1.log("\n[statistics]:");
for (var key in statistics) {
logger_1.log("".concat(key, " ").concat(statistics[key]));
}
}
}, {
key: "fixMangledName",
value: function fixMangledName(typeName, startPtr) {
if (!typeName.startsWith('0x')) {
return typeName;
}
var typeNameArray = Util.hexStrToUIntArray(typeName); //log(`[fixMangledName] ${typeName} -> ${ typeNameArray }`)
var mangledName = "";
var i = 0;
while (i < typeNameArray.length) {
var val = typeNameArray[i];
var valStr = String.fromCharCode(val);
if (val == 0x01) {
var fromIdx = i + 1;
var toIdx = i + 5;
if (toIdx > typeNameArray.length) {
mangledName = mangledName + valStr;
i = i + 1;
continue;
}
var offsetArray = typeNameArray.slice(fromIdx, toIdx);
var tmpPtr = startPtr.add(fromIdx);
var result = this.resoleSymbolicRefDirectly(offsetArray, tmpPtr);
if (i == 0 && toIdx >= typeNameArray.length) {
mangledName = mangledName + result; // use original result
} else {
var fixName = this.makeDemangledTypeName(result, "");
mangledName = mangledName + fixName;
}
i = i + 5;
} else if (val == 0x02) {
//indirectly
var _fromIdx = i + 1; // ignore 0x02
var _toIdx = i + 4 > typeNameArray.length ? i + (typeNameArray.length - i) : i + 4; // 4 bytes
var _offsetArray = typeNameArray.slice(_fromIdx, _toIdx);
var _tmpPtr = startPtr.add(_fromIdx);
var _result = this.resoleSymbolicRefIndirectly(_offsetArray, _tmpPtr);
if (i == 0 && _toIdx >= typeNameArray.length) {
mangledName = mangledName + _result;
} else {
var _fixName = this.makeDemangledTypeName(_result, mangledName);
mangledName = mangledName + _fixName;
}
i = _toIdx + 1;
} else {
//check next
mangledName = mangledName + valStr;
i = i + 1;
}
}
var retName = Runtime.swift_demangle(mangledName); //log(`[fixMangledName] result: ${mangledName} -> ${ retName }`)
return retName;
}
}, {
key: "makeDemangledTypeName",
value: function makeDemangledTypeName(type, header) {
var isArray = header.indexOf("Say") >= 0 || header.indexOf("SDy") >= 0;
var suffix = isArray ? "G" : "";
var fixName = "So".concat(type.length).concat(type, "C") + suffix;
return fixName;
}
}, {
key: "resoleSymbolicRefDirectly",
value: function resoleSymbolicRefDirectly(offsetArray, ptr) {
//4 bytes
var hexStr = Util.uintArrayToHexStr(offsetArray.reverse());
var address = (0, _parseInt2["default"])(hexStr);
var nominalArchPtr = overflowAdd(ptr, address);
var addressStr = '0x' + nominalArchPtr.toString(16); //log(`resoleSymbolicRefDirectly input ${offsetArray}, ptr ${ptr}, ${hexStr} -> address ${address}, ${nominalArchPtr} -> ${valstr}`)
var nominalName = this.cacheNominalAddressMap[addressStr];
if (nominalName && nominalName.length > 0) {
//log(`resoleSymbolicRefDirectly input ${offsetArray}, ptr ${ptr}, ${hexStr}, ${nominalName}`);
return nominalName;
} else {
return Util.uintArrayToHexStr(offsetArray);
}
}
}, {
key: "resoleSymbolicRefIndirectly",
value: function resoleSymbolicRefIndirectly(offsetArray, ptr) {
var hexStr = Util.uintArrayToHexStr(offsetArray.reverse());
var address = (0, _parseInt2["default"])(hexStr);
var addrPtr = overflowAdd(ptr, address);
var addrVal = addrPtr.readU64();
var addrValStr = '0x' + addrVal.toString(16); //log(`resoleSymbolicRefIndirectly input ${offsetArray}, ptr ${ptr}, ${hexStr}, addrPtr ${addrPtr}, val=${addrValStr}`);
var nominalName = this.cacheNominalAddressMap[addrValStr];
if (nominalName && nominalName.length > 0) {
return nominalName;
} else {
return Util.uintArrayToHexStr(offsetArray);
}
}
}]);
return SDParser;
}(); // end SDParser
exports.SDParser = SDParser;
function overflowAdd(ptr, add) {
var mask = 0xFFFFFFFF;
var low32Ptr = ptr.and(mask);
var highPtr = ptr.sub(low32Ptr);
var tmp = low32Ptr.add(add).and(mask);
return tmp.add(highPtr);
}
function emptyfunc() {
/*
if (type.startsWith("Struct")){
//dumpStuct(nominalPtr, fieldDescriptorPtr);
} else if (type.startsWith("Enum")){
log(`${index} -> ${ptr} , offset ${offset}, ${nominalPtr}, flags ${type}, name ${nameStr}`);
let numPayloadCases = nominalPtr.add(4 * 5).readU32(); //NumPayloadCasesAndPayloadSizeOffset
let numEmptyCases = nominalPtr.add(4 * 6).readU32();
log(` numPayload ${numPayloadCases}, numEmptyCases ${numEmptyCases}`)
dumpStuct(nominalPtr, fieldDescriptorPtr); // same as Struct
} else if (type.startsWith("Class")){
if (nameStr !== "MappingPropertyHandler") {
//continue;
}
log(`${index} -> ${ptr} , offset ${offset}, ${nominalPtr}, flags ${type}, name ${nameStr}`);
let superclassType = nominalPtr.add(4 * 5).readS32();
let metadataNegativeSizeInWords = nominalPtr.add(4 * 6).readU32();
let metadataPositiveSizeInWords = nominalPtr.add(4 * 7).readU32();
let numImmediateMembers = nominalPtr.add(4 * 8).readU32();
let numFields = nominalPtr.add(4 * 9).readU32();
log(` superclassType ${superclassType}`);
log(` metadataNegativeSizeInWords ${metadataNegativeSizeInWords}`);
log(` metadataPositiveSizeInWords ${metadataPositiveSizeInWords}`);
log(` numImmediateMembers ${numImmediateMembers}`);
log(` numFields ${numFields}`);
dumpFieldDescriptor(fieldDescriptorPtr);
} else {
continue;
}
*/
}
function dumpFieldDescriptor(fieldDescriptorPtr, ignoreMangledTypeName) {
//swift5_filedmd, FieldDescriptor
var startOffset = 4; //ignoreMangledTypeName ? 0 : 4;
var numFields = fieldDescriptorPtr.add(startOffset + 4 + 2 + 2).readU32();
if (0 === numFields) {
return [];
}
if (numFields > 1000) {
logger_1.log("[dumpFieldDescriptor] ".concat(numFields, " too many fields, may be unhandled format"));
return [];
}
var ret = []; //log(` numFields ${numFields}`);
var fieldStart = fieldDescriptorPtr.add(startOffset + 4 + 2 + 2 + 4);
for (var i = 0; i < numFields; i++) {
var _fieldName, _typeName;
var filedAddr = fieldStart.add(i * (4 * 3));
var typePtr = readMove(filedAddr.add(4));
var typeName = "";
try {
var _typePtr$readCString;
typeName = (_typePtr$readCString = typePtr.readCString()) !== null && _typePtr$readCString !== void 0 ? _typePtr$readCString : "";
} catch (error) {} //log(` ${i} fail to get typeName, error ${error}, typePtr = ${typePtr}`);
//log(hexdump(typePtr.readByteArray(32) as ArrayBuffer, { ansi: true }));
//log(` field ${i}, ${typeName}, ${typePtr}`);
if (!Util.isPrintableString(typeName)) {
typeName = Util.readUCharHexString(typePtr);
}
var fieldPtr = readMove(filedAddr.add(8));
var fieldName = "";
try {
var _fieldPtr$readCString;
fieldName = (_fieldPtr$readCString = fieldPtr.readCString()) !== null && _fieldPtr$readCString !== void 0 ? _fieldPtr$readCString : "";
} catch (error) {} //log(` ${i} error ${error}`);
//log(` field ${i}, ${typeName}, ${fieldName}`);
var obj = new SDNominalObj_1.SDNominalObjField();
obj.name = (_fieldName = fieldName) !== null && _fieldName !== void 0 ? _fieldName : "";
obj.type = (_typeName = typeName) !== null && _typeName !== void 0 ? _typeName : "";
obj.typePtr = typePtr;
ret.push(obj);
}
return ret;
}
function readMove(ptr) {
return ptr.add(ptr.readS32());
}
}, {
"./Consts": 1,
"./Runtime": 2,
"./SDContextDescriptorFlags": 3,
"./SDNominalObj": 4,
"./Util": 6,
"./logger": 8,
"@babel/runtime-corejs2/core-js/object/create": 13,
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/core-js/parse-int": 15,
"@babel/runtime-corejs2/helpers/classCallCheck": 19,
"@babel/runtime-corejs2/helpers/createClass": 20,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21,
"@babel/runtime-corejs2/helpers/slicedToArray": 24
}],
6: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
exports.uintArrayToHexStr = exports.hexStrToUIntArray = exports.readUCharHexString = exports.swapInt32 = exports.swapInt16 = exports.hexString = exports.isPrintableString = exports.isPrintableChar = void 0;
function isPrintableChar(val) {
// [A-Za-z0-9_$ ]
//0-9 0x30-0x39
//A-Z 0x41-0x5a
//a-z 97-122
//0x5f 0x24 0x20
var isNumber = val >= 0x30 && val <= 0x39;
var isUpper = val >= 0x41 && val <= 0x5a;
var isLower = val >= 0x61 && val <= 0x7a;
var isSpecial = val == 0x5f || val == 0x24 || val == 0x20;
return isNumber || isUpper || isLower || isSpecial;
}
exports.isPrintableChar = isPrintableChar;
function isPrintableString(str) {
for (var i = 0; i < str.length; i++) {
var val = str.charCodeAt(i);
if (!isPrintableChar(val)) {
return false;
}
}
return true;
}
exports.isPrintableString = isPrintableString;
function hexString(str) {
var ret = "0x";
for (var i = 0; i < str.length; i++) {
var val = str.charCodeAt(i);
var valstr = val.toString(16);
if (valstr.length == 1) {
valstr = '0' + valstr;
}
ret = ret + valstr;
}
return ret;
}
exports.hexString = hexString;
function readUCharHexString(ptr) {
var maxlen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 128;
var idx = 0;
var hexStr = "";
while (true) {
var val = ptr.add(idx).readU8();
if (val == 0) {
break;
}
var valstr = val.toString(16);
if (valstr.length == 1) {
valstr = '0' + valstr;
}
hexStr += valstr;
idx++;
if (idx >= maxlen) {
break;
}
}
if (hexStr.length > 0) {
hexStr = "0x" + hexStr;
}
return hexStr;
}
exports.readUCharHexString = readUCharHexString;
function swapInt16(val) {
return (val & 0xff) << 8 | val >> 8 & 0xff;
}
exports.swapInt16 = swapInt16;
function swapInt32(val) {
return (val & 0xff) << 24 | (val & 0xff00) << 8 | (val & 0xff0000) >> 8 | val >> 24 & 0xff;
}
exports.swapInt32 = swapInt32;
function hexStrToUIntArray(inputStr) {
var str = inputStr;
if (str.startsWith('0x')) {
str = str.substr(2);
}
var hex = str.toString();
var result = [];
for (var n = 0; n < hex.length; n += 2) {
result.push((0, _parseInt2["default"])(hex.substr(n, 2), 16));
}
return result;
}
exports.hexStrToUIntArray = hexStrToUIntArray;
function uintArrayToHexStr(array) {
var str = "";
for (var n = 0; n < array.length; n += 1) {
var val = array[n];
var valstr = array[n].toString(16);
if (valstr.length == 1) {
valstr = '0' + valstr;
}
str += valstr;
}
if (str.length > 0) {
str = "0x" + str;
}
return str;
}
exports.uintArrayToHexStr = uintArrayToHexStr;
}, {
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/core-js/parse-int": 15,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21
}],
7: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
var _create = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/create"));
var __createBinding = void 0 && (void 0).__createBinding || (_create["default"] ? function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
(0, _defineProperty["default"])(o, k2, {
enumerable: true,
get: function get() {
return m[k];
}
});
} : function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (_create["default"] ? function(o, v) {
(0, _defineProperty["default"])(o, "default", {
enumerable: true,
value: v
});
} : function(o, v) {
o["default"] = v;
});
var __importStar = void 0 && (void 0).__importStar || function(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod) {
if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
}
__setModuleDefault(result, mod);
return result;
};
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
var logger_1 = require("./logger");
var Runtime = __importStar(require("./Runtime"));
var SDParser_1 = require("./SDParser");
/*
const header = Memory.alloc(16);
header
.writeU32(0xdeadbeef).add(4)
.writeU32(0xd00ff00d).add(4)
.writeU64(uint64("0x1122334455667788"));
log(hexdump(header.readByteArray(16) as ArrayBuffer, { ansi: true }));
Process.getModuleByName("libSystem.B.dylib")
.enumerateExports()
.slice(0, 16)
.forEach((exp, index) => {
log(`export ${index}: ${exp.name}`);
});
Interceptor.attach(Module.getExportByName(null, "open"), {
onEnter(args) {
const path = args[0].readUtf8String();
log(`open() path="${path}"`);
}
});
*/
logger_1.log("--- loaded ---");
Runtime.initHook();
/*
const mainExe = Module.findBaseAddress('TestSwiftRuntime');
log('mainExe ' + mainExe)
// hook Swift function: func testStruct(_ info: XInfo)
Interceptor.attach(mainExe!.add(0x00030FFC), {
onEnter(args) {
const ptr = args[0]; // pointer to XInfo instance
const typeAddrPtr = ptr.add(-24); // x64=0x18=24, arm=0x40=64
const typeAddr = typeAddrPtr.readPointer();
log(
`[Hook Func] arg ptr=${ptr}, typeAddrPtr=${typeAddrPtr}, typeAddr=${typeAddr}`
);
console.log("arg ptr->", hexdump(ptr, { offset: 0, length: 64 }));
log("")
//const mypt = typeAddr.add(-24);
//log(`mypt ${mypt}`)
console.log("typeAddrPtr->", hexdump(typeAddrPtr, { offset: 0, length: 64 }));
console.log("typeAddr->", hexdump(typeAddr, { offset: 0, length: 64 }));
},
});
*/
function getMainModule() {
var exePath = ObjC.classes.NSBundle.mainBundle().executablePath();
var modules = Process.enumerateModules();
for (var i = 0; i < modules.length; i++) {
var oneModule = modules[i];
if (oneModule.path == exePath) {
return oneModule;
}
}
return null;
}
var mainModule = getMainModule();
if (mainModule) {
logger_1.log('main module path ' + mainModule.path);
logger_1.log('main module base ' + mainModule.base);
if (Runtime.isSwiftAvailable()) {
var parser = new SDParser_1.SDParser(mainModule);
parser.parseSwiftType();
parser.dumpAll();
} else {
logger_1.log('swift is NOT available');
}
} else {
logger_1.log('fail to find main module');
}
}, {
"./Runtime": 2,
"./SDParser": 5,
"./logger": 8,
"@babel/runtime-corejs2/core-js/object/create": 13,
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21
}],
8: [function(require, module, exports) {
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property"));
(0, _defineProperty["default"])(exports, "__esModule", {
value: true
});
exports.log = void 0;
function log(message) {
console.log(message);
}
exports.log = log;
}, {
"@babel/runtime-corejs2/core-js/object/define-property": 14,
"@babel/runtime-corejs2/helpers/interopRequireDefault": 21
}],
9: [function(require, module, exports) {
module.exports = require("core-js/library/fn/array/from");
}, {
"core-js/library/fn/array/from": 26
}],
10: [function(require, module, exports) {
module.exports = require("core-js/library/fn/array/is-array");
}, {
"core-js/library/fn/array/is-array": 27
}],
11: [function(require, module, exports) {
module.exports = require("core-js/library/fn/get-iterator");
}, {
"core-js/library/fn/get-iterator": 28
}],
12: [function(require, module, exports) {
module.exports = require("core-js/library/fn/is-iterable");
}, {
"core-js/library/fn/is-iterable": 29
}],
13: [function(require, module, exports) {
module.exports = require("core-js/library/fn/object/create");
}, {
"core-js/library/fn/object/create": 30
}],
14: [function(require, module, exports) {
module.exports = require("core-js/library/fn/object/define-property");
}, {
"core-js/library/fn/object/define-property": 31
}],
15: [function(require, module, exports) {
module.exports = require("core-js/library/fn/parse-int");
}, {
"core-js/library/fn/parse-int": 32
}],
16: [function(require, module, exports) {
module.exports = require("core-js/library/fn/symbol");
}, {
"core-js/library/fn/symbol": 33
}],
17: [function(require, module, exports) {
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i];
}
return arr2;
}
module.exports = _arrayLikeToArray;
}, {}],
18: [function(require, module, exports) {
var _Array$isArray = require("../core-js/array/is-array");
function _arrayWithHoles(arr) {
if (_Array$isArray(arr)) return arr;
}
module.exports = _arrayWithHoles;
}, {
"../core-js/array/is-array": 10
}],
19: [function(require, module, exports) {
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
module.exports = _classCallCheck;
}, {}],
20: [function(require, module, exports) {
var _Object$defineProperty = require("../core-js/object/define-property");
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
_Object$defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
module.exports = _createClass;
}, {
"../core-js/object/define-property": 14
}],
21: [function(require, module, exports) {
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
};
}
module.exports = _interopRequireDefault;
}, {}],
22: [function(require, module, exports) {
var _getIterator = require("../core-js/get-iterator");
var _isIterable = require("../core-js/is-iterable");
var _Symbol = require("../core-js/symbol");
function _iterableToArrayLimit(arr, i) {
if (typeof _Symbol === "undefined" || !_isIterable(Object(arr))) return;
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
module.exports = _iterableToArrayLimit;
}, {
"../core-js/get-iterator": 11,
"../core-js/is-iterable": 12,
"../core-js/symbol": 16
}],
23: [function(require, module, exports) {
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
module.exports = _nonIterableRest;
}, {}],
24: [function(require, module, exports) {
var arrayWithHoles = require("./arrayWithHoles");
var iterableToArrayLimit = require("./iterableToArrayLimit");
var unsupportedIterableToArray = require("./unsupportedIterableToArray");
var nonIterableRest = require("./nonIterableRest");
function _slicedToArray(arr, i) {
return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}
module.exports = _slicedToArray;
}, {
"./arrayWithHoles": 18,
"./iterableToArrayLimit": 22,
"./nonIterableRest": 23,
"./unsupportedIterableToArray": 25
}],
25: [function(require, module, exports) {
var _Array$from = require("../core-js/array/from");
var arrayLikeToArray = require("./arrayLikeToArray");
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return _Array$from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}
module.exports = _unsupportedIterableToArray;
}, {
"../core-js/array/from": 9,
"./arrayLikeToArray": 17
}],
26: [function(require, module, exports) {
require('../../modules/es6.string.iterator');
require('../../modules/es6.array.from');
module.exports = require('../../modules/_core').Array.from;
}, {
"../../modules/_core": 40,
"../../modules/es6.array.from": 100,
"../../modules/es6.string.iterator": 107
}],
27: [function(require, module, exports) {
require('../../modules/es6.array.is-array');
module.exports = require('../../modules/_core').Array.isArray;
}, {
"../../modules/_core": 40,
"../../modules/es6.array.is-array": 101
}],
28: [function(require, module, exports) {
require('../modules/web.dom.iterable');
require('../modules/es6.string.iterator');
module.exports = require('../modules/core.get-iterator');
}, {
"../modules/core.get-iterator": 98,
"../modules/es6.string.iterator": 107,
"../modules/web.dom.iterable": 111
}],
29: [function(require, module, exports) {
require('../modules/web.dom.iterable');
require('../modules/es6.string.iterator');
module.exports = require('../modules/core.is-iterable');
}, {
"../modules/core.is-iterable": 99,
"../modules/es6.string.iterator": 107,
"../modules/web.dom.iterable": 111
}],
30: [function(require, module, exports) {
require('../../modules/es6.object.create');
var $Object = require('../../modules/_core').Object;
module.exports = function create(P, D) {
return $Object.create(P, D);
};
}, {
"../../modules/_core": 40,
"../../modules/es6.object.create": 103
}],
31: [function(require, module, exports) {
require('../../modules/es6.object.define-property');
var $Object = require('../../modules/_core').Object;
module.exports = function defineProperty(it, key, desc) {
return $Object.defineProperty(it, key, desc);
};
}, {
"../../modules/_core": 40,
"../../modules/es6.object.define-property": 104
}],
32: [function(require, module, exports) {
require('../modules/es6.parse-int');
module.exports = require('../modules/_core').parseInt;
}, {
"../modules/_core": 40,
"../modules/es6.parse-int": 106
}],
33: [function(require, module, exports) {
require('../../modules/es6.symbol');
require('../../modules/es6.object.to-string');
require('../../modules/es7.symbol.async-iterator');
require('../../modules/es7.symbol.observable');
module.exports = require('../../modules/_core').Symbol;
}, {
"../../modules/_core": 40,
"../../modules/es6.object.to-string": 105,
"../../modules/es6.symbol": 108,
"../../modules/es7.symbol.async-iterator": 109,
"../../modules/es7.symbol.observable": 110
}],
34: [function(require, module, exports) {
module.exports = function(it) {
if (typeof it != 'function') throw TypeError(it + ' is not a function!');
return it;
};
}, {}],
35: [function(require, module, exports) {
module.exports = function() { /* empty */ };
}, {}],
36: [function(require, module, exports) {
var isObject = require('./_is-object');
module.exports = function(it) {
if (!isObject(it)) throw TypeError(it + ' is not an object!');
return it;
};
}, {
"./_is-object": 58
}],
37: [function(require, module, exports) {
// false -> Array#indexOf
// true -> Array#includes
var toIObject = require('./_to-iobject');
var toLength = require('./_to-length');
var toAbsoluteIndex = require('./_to-absolute-index');
module.exports = function(IS_INCLUDES) {
return function($this, el, fromIndex) {
var O = toIObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el)
while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else
for (; length > index; index++)
if (IS_INCLUDES || index in O) {
if (O[index] === el) return IS_INCLUDES || index || 0;
}
return !IS_INCLUDES && -1;
};
};
}, {
"./_to-absolute-index": 87,
"./_to-iobject": 89,
"./_to-length": 90
}],
38: [function(require, module, exports) {
// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = require('./_cof');
var TAG = require('./_wks')('toStringTag');
// ES3 wrong here
var ARG = cof(function() {
return arguments;
}()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function(it, key) {
try {
return it[key];
} catch (e) { /* empty */ }
};
module.exports = function(it) {
var O, T, B;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
:
typeof(T = tryGet(O = Object(it), TAG)) == 'string' ? T
// builtinTag case
:
ARG ? cof(O)
// ES3 arguments fallback
:
(B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};
}, {
"./_cof": 39,
"./_wks": 96
}],
39: [function(require, module, exports) {
var toString = {}.toString;
module.exports = function(it) {
return toString.call(it).slice(8, -1);
};
}, {}],
40: [function(require, module, exports) {
var core = module.exports = {
version: '2.6.11'
};
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
}, {}],
41: [function(require, module, exports) {
'use strict';
var $defineProperty = require('./_object-dp');
var createDesc = require('./_property-desc');
module.exports = function(object, index, value) {
if (index in object) $defineProperty.f(object, index, createDesc(0, value));
else object[index] = value;
};
}, {
"./_object-dp": 68,
"./_property-desc": 79
}],
42: [function(require, module, exports) {
// optional / simple context binding
var aFunction = require('./_a-function');
module.exports = function(fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 1:
return function(a) {
return fn.call(that, a);
};
case 2:
return function(a, b) {
return fn.call(that, a, b);
};
case 3:
return function(a, b, c) {
return fn.call(that, a, b, c);
};
}
return function( /* ...args */ ) {
return fn.apply(that, arguments);
};
};
}, {
"./_a-function": 34
}],
43: [function(require, module, exports) {
// 7.2.1 RequireObjectCoercible(argument)
module.exports = function(it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
}, {}],
44: [function(require, module, exports) {
// Thank's IE8 for his funny defineProperty
module.exports = !require('./_fails')(function() {
return Object.defineProperty({}, 'a', {
get: function() {
return 7;
}
}).a != 7;
});
}, {
"./_fails": 49
}],
45: [function(require, module, exports) {
var isObject = require('./_is-object');
var document = require('./_global').document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function(it) {
return is ? document.createElement(it) : {};
};
}, {
"./_global": 50,
"./_is-object": 58
}],
46: [function(require, module, exports) {
// IE 8- don't enum bug keys
module.exports = (
'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');
}, {}],
47: [function(require, module, exports) {
// all enumerable object keys, includes symbols
var getKeys = require('./_object-keys');
var gOPS = require('./_object-gops');
var pIE = require('./_object-pie');
module.exports = function(it) {
var result = getKeys(it);
var getSymbols = gOPS.f;
if (getSymbols) {
var symbols = getSymbols(it);
var isEnum = pIE.f;
var i = 0;
var key;
while (symbols.length > i)
if (isEnum.call(it, key = symbols[i++])) result.push(key);
}
return result;
};
}, {
"./_object-gops": 73,
"./_object-keys": 76,
"./_object-pie": 77
}],
48: [function(require, module, exports) {
var global = require('./_global');
var core = require('./_core');
var ctx = require('./_ctx');
var hide = require('./_hide');
var has = require('./_has');
var PROTOTYPE = 'prototype';
var $export = function(type, name, source) {
var IS_FORCED = type & $export.F;
var IS_GLOBAL = type & $export.G;
var IS_STATIC = type & $export.S;
var IS_PROTO = type & $export.P;
var IS_BIND = type & $export.B;
var IS_WRAP = type & $export.W;
var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
var expProto = exports[PROTOTYPE];
var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
var key, own, out;
if (IS_GLOBAL) source = name;
for (key in source) {
// contains in native
own = !IS_FORCED && target && target[key] !== undefined;
if (own && has(exports, key)) continue;
// export native or passed
out = own ? target[key] : source[key];
// prevent global pollution for namespaces
exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
// bind timers to global for call from export context
:
IS_BIND && own ? ctx(out, global)
// wrap global constructors for prevent change them in library
:
IS_WRAP && target[key] == out ? (function(C) {
var F = function(a, b, c) {
if (this instanceof C) {
switch (arguments.length) {
case 0:
return new C();
case 1:
return new C(a);
case 2:
return new C(a, b);
}
return new C(a, b, c);
}
return C.apply(this, arguments);
};
F[PROTOTYPE] = C[PROTOTYPE];
return F;
// make static versions for prototype methods
})(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
// export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
if (IS_PROTO) {
(exports.virtual || (exports.virtual = {}))[key] = out;
// export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
}
}
};
// type bitmap
$export.F = 1; // forced
$export.G = 2; // global
$export.S = 4; // static
$export.P = 8; // proto
$export.B = 16; // bind
$export.W = 32; // wrap
$export.U = 64; // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;
}, {
"./_core": 40,
"./_ctx": 42,
"./_global": 50,
"./_has": 51,
"./_hide": 52
}],
49: [function(require, module, exports) {
module.exports = function(exec) {
try {
return !!exec();
} catch (e) {
return true;
}
};
}, {}],
50: [function(require, module, exports) {
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math ?
window : typeof self != 'undefined' && self.Math == Math ? self
// eslint-disable-next-line no-new-func
:
Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
}, {}],
51: [function(require, module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function(it, key) {
return hasOwnProperty.call(it, key);
};
}, {}],
52: [function(require, module, exports) {
var dP = require('./_object-dp');
var createDesc = require('./_property-desc');
module.exports = require('./_descriptors') ? function(object, key, value) {
return dP.f(object, key, createDesc(1, value));
} : function(object, key, value) {
object[key] = value;
return object;
};
}, {
"./_descriptors": 44,
"./_object-dp": 68,
"./_property-desc": 79
}],
53: [function(require, module, exports) {
var document = require('./_global').document;
module.exports = document && document.documentElement;
}, {
"./_global": 50
}],
54: [function(require, module, exports) {
module.exports = !require('./_descriptors') && !require('./_fails')(function() {
return Object.defineProperty(require('./_dom-create')('div'), 'a', {
get: function() {
return 7;
}
}).a != 7;
});
}, {
"./_descriptors": 44,
"./_dom-create": 45,
"./_fails": 49
}],
55: [function(require, module, exports) {
// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = require('./_cof');
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it) {
return cof(it) == 'String' ? it.split('') : Object(it);
};
}, {
"./_cof": 39
}],
56: [function(require, module, exports) {
// check on default Array iterator
var Iterators = require('./_iterators');
var ITERATOR = require('./_wks')('iterator');
var ArrayProto = Array.prototype;
module.exports = function(it) {
return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};
}, {
"./_iterators": 64,
"./_wks": 96
}],
57: [function(require, module, exports) {
// 7.2.2 IsArray(argument)
var cof = require('./_cof');
module.exports = Array.isArray || function isArray(arg) {
return cof(arg) == 'Array';
};
}, {
"./_cof": 39
}],
58: [function(require, module, exports) {
module.exports = function(it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
}, {}],
59: [function(require, module, exports) {
// call something on iterator step with safe closing on error
var anObject = require('./_an-object');
module.exports = function(iterator, fn, value, entries) {
try {
return entries ? fn(anObject(value)[0], value[1]) : fn(value);
// 7.4.6 IteratorClose(iterator, completion)
} catch (e) {
var ret = iterator['return'];
if (ret !== undefined) anObject(ret.call(iterator));
throw e;
}
};
}, {
"./_an-object": 36
}],
60: [function(require, module, exports) {
'use strict';
var create = require('./_object-create');
var descriptor = require('./_property-desc');
var setToStringTag = require('./_set-to-string-tag');
var IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function() {
return this;
});
module.exports = function(Constructor, NAME, next) {
Constructor.prototype = create(IteratorPrototype, {
next: descriptor(1, next)
});
setToStringTag(Constructor, NAME + ' Iterator');
};
}, {
"./_hide": 52,
"./_object-create": 67,
"./_property-desc": 79,
"./_set-to-string-tag": 81,
"./_wks": 96
}],
61: [function(require, module, exports) {
'use strict';
var LIBRARY = require('./_library');
var $export = require('./_export');
var redefine = require('./_redefine');
var hide = require('./_hide');
var Iterators = require('./_iterators');
var $iterCreate = require('./_iter-create');
var setToStringTag = require('./_set-to-string-tag');
var getPrototypeOf = require('./_object-gpo');
var ITERATOR = require('./_wks')('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';
var returnThis = function() {
return this;
};
module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
$iterCreate(Constructor, NAME, next);
var getMethod = function(kind) {
if (!BUGGY && kind in proto) return proto[kind];
switch (kind) {
case KEYS:
return function keys() {
return new Constructor(this, kind);
};
case VALUES:
return function values() {
return new Constructor(this, kind);
};
}
return function entries() {
return new Constructor(this, kind);
};
};
var TAG = NAME + ' Iterator';
var DEF_VALUES = DEFAULT == VALUES;
var VALUES_BUG = false;
var proto = Base.prototype;
var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
var $default = $native || getMethod(DEFAULT);
var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
var methods, key, IteratorPrototype;
// Fix native
if ($anyNative) {
IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
// Set @@toStringTag to native iterators
setToStringTag(IteratorPrototype, TAG, true);
// fix for some old engines
if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEF_VALUES && $native && $native.name !== VALUES) {
VALUES_BUG = true;
$default = function values() {
return $native.call(this);
};
}
// Define iterator
if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
hide(proto, ITERATOR, $default);
}
// Plug for library
Iterators[NAME] = $default;
Iterators[TAG] = returnThis;
if (DEFAULT) {
methods = {
values: DEF_VALUES ? $default : getMethod(VALUES),
keys: IS_SET ? $default : getMethod(KEYS),
entries: $entries
};
if (FORCED)
for (key in methods) {
if (!(key in proto)) redefine(proto, key, methods[key]);
} else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
}
return methods;
};
}, {
"./_export": 48,
"./_hide": 52,
"./_iter-create": 60,
"./_iterators": 64,
"./_library": 65,
"./_object-gpo": 74,
"./_redefine": 80,
"./_set-to-string-tag": 81,
"./_wks": 96
}],
62: [function(require, module, exports) {
var ITERATOR = require('./_wks')('iterator');
var SAFE_CLOSING = false;
try {
var riter = [7][ITERATOR]();
riter['return'] = function() {
SAFE_CLOSING = true;
};
// eslint-disable-next-line no-throw-literal
Array.from(riter, function() {
throw 2;
});
} catch (e) { /* empty */ }
module.exports = function(exec, skipClosing) {
if (!skipClosing && !SAFE_CLOSING) return false;
var safe = false;
try {
var arr = [7];
var iter = arr[ITERATOR]();
iter.next = function() {
return {
done: safe = true
};
};
arr[ITERATOR] = function() {
return iter;
};
exec(arr);
} catch (e) { /* empty */ }
return safe;
};
}, {
"./_wks": 96
}],
63: [function(require, module, exports) {
module.exports = function(done, value) {
return {
value: value,
done: !!done
};
};
}, {}],
64: [function(require, module, exports) {
module.exports = {};
}, {}],
65: [function(require, module, exports) {
module.exports = true;
}, {}],
66: [function(require, module, exports) {
var META = require('./_uid')('meta');
var isObject = require('./_is-object');
var has = require('./_has');
var setDesc = require('./_object-dp').f;
var id = 0;
var isExtensible = Object.isExtensible || function() {
return true;
};
var FREEZE = !require('./_fails')(function() {
return isExtensible(Object.preventExtensions({}));
});
var setMeta = function(it) {
setDesc(it, META, {
value: {
i: 'O' + ++id, // object ID
w: {} // weak collections IDs
}
});
};
var fastKey = function(it, create) {
// return primitive with prefix
if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
if (!has(it, META)) {
// can't set metadata to uncaught frozen object
if (!isExtensible(it)) return 'F';
// not necessary to add metadata
if (!create) return 'E';
// add missing metadata
setMeta(it);
// return object ID
}
return it[META].i;
};
var getWeak = function(it, create) {
if (!has(it, META)) {
// can't set metadata to uncaught frozen object
if (!isExtensible(it)) return true;
// not necessary to add metadata
if (!create) return false;
// add missing metadata
setMeta(it);
// return hash weak collections IDs
}
return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function(it) {
if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
return it;
};
var meta = module.exports = {
KEY: META,
NEED: false,
fastKey: fastKey,
getWeak: getWeak,
onFreeze: onFreeze
};
}, {
"./_fails": 49,
"./_has": 51,
"./_is-object": 58,
"./_object-dp": 68,
"./_uid": 93
}],
67: [function(require, module, exports) {
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = require('./_an-object');
var dPs = require('./_object-dps');
var enumBugKeys = require('./_enum-bug-keys');
var IE_PROTO = require('./_shared-key')('IE_PROTO');
var Empty = function() { /* empty */ };
var PROTOTYPE = 'prototype';
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function() {
// Thrash, waste and sodomy: IE GC bug
var iframe = require('./_dom-create')('iframe');
var i = enumBugKeys.length;
var lt = '<';
var gt = '>';
var iframeDocument;
iframe.style.display = 'none';
require('./_html').appendChild(iframe);
iframe.src = 'javascript:'; // eslint-disable-line no-script-url
// createDict = iframe.contentWindow.Object;
// html.removeChild(iframe);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
iframeDocument.close();
createDict = iframeDocument.F;
while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
return createDict();
};
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
Empty[PROTOTYPE] = anObject(O);
result = new Empty();
Empty[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = createDict();
return Properties === undefined ? result : dPs(result, Properties);
};
}, {
"./_an-object": 36,
"./_dom-create": 45,
"./_enum-bug-keys": 46,
"./_html": 53,
"./_object-dps": 69,
"./_shared-key": 82
}],
68: [function(require, module, exports) {
var anObject = require('./_an-object');
var IE8_DOM_DEFINE = require('./_ie8-dom-define');
var toPrimitive = require('./_to-primitive');
var dP = Object.defineProperty;
exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return dP(O, P, Attributes);
} catch (e) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
}, {
"./_an-object": 36,
"./_descriptors": 44,
"./_ie8-dom-define": 54,
"./_to-primitive": 92
}],
69: [function(require, module, exports) {
var dP = require('./_object-dp');
var anObject = require('./_an-object');
var getKeys = require('./_object-keys');
module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = getKeys(Properties);
var length = keys.length;
var i = 0;
var P;
while (length > i) dP.f(O, P = keys[i++], Properties[P]);
return O;
};
}, {
"./_an-object": 36,
"./_descriptors": 44,
"./_object-dp": 68,
"./_object-keys": 76
}],
70: [function(require, module, exports) {
var pIE = require('./_object-pie');
var createDesc = require('./_property-desc');
var toIObject = require('./_to-iobject');
var toPrimitive = require('./_to-primitive');
var has = require('./_has');
var IE8_DOM_DEFINE = require('./_ie8-dom-define');
var gOPD = Object.getOwnPropertyDescriptor;
exports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {
O = toIObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return gOPD(O, P);
} catch (e) { /* empty */ }
if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};
}, {
"./_descriptors": 44,
"./_has": 51,
"./_ie8-dom-define": 54,
"./_object-pie": 77,
"./_property-desc": 79,
"./_to-iobject": 89,
"./_to-primitive": 92
}],
71: [function(require, module, exports) {
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = require('./_to-iobject');
var gOPN = require('./_object-gopn').f;
var toString = {}.toString;
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ?
Object.getOwnPropertyNames(window) : [];
var getWindowNames = function(it) {
try {
return gOPN(it);
} catch (e) {
return windowNames.slice();
}
};
module.exports.f = function getOwnPropertyNames(it) {
return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};
}, {
"./_object-gopn": 72,
"./_to-iobject": 89
}],
72: [function(require, module, exports) {
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = require('./_object-keys-internal');
var hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return $keys(O, hiddenKeys);
};
}, {
"./_enum-bug-keys": 46,
"./_object-keys-internal": 75
}],
73: [function(require, module, exports) {
exports.f = Object.getOwnPropertySymbols;
}, {}],
74: [function(require, module, exports) {
// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = require('./_has');
var toObject = require('./_to-object');
var IE_PROTO = require('./_shared-key')('IE_PROTO');
var ObjectProto = Object.prototype;
module.exports = Object.getPrototypeOf || function(O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
}
return O instanceof Object ? ObjectProto : null;
};
}, {
"./_has": 51,
"./_shared-key": 82,
"./_to-object": 91
}],
75: [function(require, module, exports) {
var has = require('./_has');
var toIObject = require('./_to-iobject');
var arrayIndexOf = require('./_array-includes')(false);
var IE_PROTO = require('./_shared-key')('IE_PROTO');
module.exports = function(object, names) {
var O = toIObject(object);
var i = 0;
var result = [];
var key;
for (key in O)
if (key != IE_PROTO) has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i)
if (has(O, key = names[i++])) {
~arrayIndexOf(result, key) || result.push(key);
}
return result;
};
}, {
"./_array-includes": 37,
"./_has": 51,
"./_shared-key": 82,
"./_to-iobject": 89
}],
76: [function(require, module, exports) {
// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = require('./_object-keys-internal');
var enumBugKeys = require('./_enum-bug-keys');
module.exports = Object.keys || function keys(O) {
return $keys(O, enumBugKeys);
};
}, {
"./_enum-bug-keys": 46,
"./_object-keys-internal": 75
}],
77: [function(require, module, exports) {
exports.f = {}.propertyIsEnumerable;
}, {}],
78: [function(require, module, exports) {
var $parseInt = require('./_global').parseInt;
var $trim = require('./_string-trim').trim;
var ws = require('./_string-ws');
var hex = /^[-+]?0[xX]/;
module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
var string = $trim(String(str), 3);
return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
} : $parseInt;
}, {
"./_global": 50,
"./_string-trim": 85,
"./_string-ws": 86
}],
79: [function(require, module, exports) {
module.exports = function(bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
}, {}],
80: [function(require, module, exports) {
module.exports = require('./_hide');
}, {
"./_hide": 52
}],
81: [function(require, module, exports) {
var def = require('./_object-dp').f;
var has = require('./_has');
var TAG = require('./_wks')('toStringTag');
module.exports = function(it, tag, stat) {
if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {
configurable: true,
value: tag
});
};
}, {
"./_has": 51,
"./_object-dp": 68,
"./_wks": 96
}],
82: [function(require, module, exports) {
var shared = require('./_shared')('keys');
var uid = require('./_uid');
module.exports = function(key) {
return shared[key] || (shared[key] = uid(key));
};
}, {
"./_shared": 83,
"./_uid": 93
}],
83: [function(require, module, exports) {
var core = require('./_core');
var global = require('./_global');
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});
(module.exports = function(key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: core.version,
mode: require('./_library') ? 'pure' : 'global',
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});
}, {
"./_core": 40,
"./_global": 50,
"./_library": 65
}],
84: [function(require, module, exports) {
var toInteger = require('./_to-integer');
var defined = require('./_defined');
// true -> String#at
// false -> String#codePointAt
module.exports = function(TO_STRING) {
return function(that, pos) {
var s = String(defined(that));
var i = toInteger(pos);
var l = s.length;
var a, b;
if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
a = s.charCodeAt(i);
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ?
TO_STRING ? s.charAt(i) : a :
TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
};
};
}, {
"./_defined": 43,
"./_to-integer": 88
}],
85: [function(require, module, exports) {
var $export = require('./_export');
var defined = require('./_defined');
var fails = require('./_fails');
var spaces = require('./_string-ws');
var space = '[' + spaces + ']';
var non = '\u200b\u0085';
var ltrim = RegExp('^' + space + space + '*');
var rtrim = RegExp(space + space + '*$');
var exporter = function(KEY, exec, ALIAS) {
var exp = {};
var FORCE = fails(function() {
return !!spaces[KEY]() || non[KEY]() != non;
});
var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
if (ALIAS) exp[ALIAS] = fn;
$export($export.P + $export.F * FORCE, 'String', exp);
};
// 1 -> String#trimLeft
// 2 -> String#trimRight
// 3 -> String#trim
var trim = exporter.trim = function(string, TYPE) {
string = String(defined(string));
if (TYPE & 1) string = string.replace(ltrim, '');
if (TYPE & 2) string = string.replace(rtrim, '');
return string;
};
module.exports = exporter;
}, {
"./_defined": 43,
"./_export": 48,
"./_fails": 49,
"./_string-ws": 86
}],
86: [function(require, module, exports) {
module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
'\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
}, {}],
87: [function(require, module, exports) {
var toInteger = require('./_to-integer');
var max = Math.max;
var min = Math.min;
module.exports = function(index, length) {
index = toInteger(index);
return index < 0 ? max(index + length, 0) : min(index, length);
};
}, {
"./_to-integer": 88
}],
88: [function(require, module, exports) {
// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function(it) {
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};
}, {}],
89: [function(require, module, exports) {
// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = require('./_iobject');
var defined = require('./_defined');
module.exports = function(it) {
return IObject(defined(it));
};
}, {
"./_defined": 43,
"./_iobject": 55
}],
90: [function(require, module, exports) {
// 7.1.15 ToLength
var toInteger = require('./_to-integer');
var min = Math.min;
module.exports = function(it) {
return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};
}, {
"./_to-integer": 88
}],
91: [function(require, module, exports) {
// 7.1.13 ToObject(argument)
var defined = require('./_defined');
module.exports = function(it) {
return Object(defined(it));
};
}, {
"./_defined": 43
}],
92: [function(require, module, exports) {
// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = require('./_is-object');
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function(it, S) {
if (!isObject(it)) return it;
var fn, val;
if (S && typeof(fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
if (typeof(fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
if (!S && typeof(fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
throw TypeError("Can't convert object to primitive value");
};
}, {
"./_is-object": 58
}],
93: [function(require, module, exports) {
var id = 0;
var px = Math.random();
module.exports = function(key) {
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};
}, {}],
94: [function(require, module, exports) {
var global = require('./_global');
var core = require('./_core');
var LIBRARY = require('./_library');
var wksExt = require('./_wks-ext');
var defineProperty = require('./_object-dp').f;
module.exports = function(name) {
var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, {
value: wksExt.f(name)
});
};
}, {
"./_core": 40,
"./_global": 50,
"./_library": 65,
"./_object-dp": 68,
"./_wks-ext": 95
}],
95: [function(require, module, exports) {
exports.f = require('./_wks');
}, {
"./_wks": 96
}],
96: [function(require, module, exports) {
var store = require('./_shared')('wks');
var uid = require('./_uid');
var Symbol = require('./_global').Symbol;
var USE_SYMBOL = typeof Symbol == 'function';
var $exports = module.exports = function(name) {
return store[name] || (store[name] =
USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};
$exports.store = store;
}, {
"./_global": 50,
"./_shared": 83,
"./_uid": 93
}],
97: [function(require, module, exports) {
var classof = require('./_classof');
var ITERATOR = require('./_wks')('iterator');
var Iterators = require('./_iterators');
module.exports = require('./_core').getIteratorMethod = function(it) {
if (it != undefined) return it[ITERATOR] ||
it['@@iterator'] ||
Iterators[classof(it)];
};
}, {
"./_classof": 38,
"./_core": 40,
"./_iterators": 64,
"./_wks": 96
}],
98: [function(require, module, exports) {
var anObject = require('./_an-object');
var get = require('./core.get-iterator-method');
module.exports = require('./_core').getIterator = function(it) {
var iterFn = get(it);
if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
return anObject(iterFn.call(it));
};
}, {
"./_an-object": 36,
"./_core": 40,
"./core.get-iterator-method": 97
}],
99: [function(require, module, exports) {
var classof = require('./_classof');
var ITERATOR = require('./_wks')('iterator');
var Iterators = require('./_iterators');
module.exports = require('./_core').isIterable = function(it) {
var O = Object(it);
return O[ITERATOR] !== undefined ||
'@@iterator' in O
// eslint-disable-next-line no-prototype-builtins
||
Iterators.hasOwnProperty(classof(O));
};
}, {
"./_classof": 38,
"./_core": 40,
"./_iterators": 64,
"./_wks": 96
}],
100: [function(require, module, exports) {
'use strict';
var ctx = require('./_ctx');
var $export = require('./_export');
var toObject = require('./_to-object');
var call = require('./_iter-call');
var isArrayIter = require('./_is-array-iter');
var toLength = require('./_to-length');
var createProperty = require('./_create-property');
var getIterFn = require('./core.get-iterator-method');
$export($export.S + $export.F * !require('./_iter-detect')(function(iter) {
Array.from(iter);
}), 'Array', {
// 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */ ) {
var O = toObject(arrayLike);
var C = typeof this == 'function' ? this : Array;
var aLen = arguments.length;
var mapfn = aLen > 1 ? arguments[1] : undefined;
var mapping = mapfn !== undefined;
var index = 0;
var iterFn = getIterFn(O);
var length, result, step, iterator;
if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
// if object isn't iterable or it's array with default iterator - use simple case
if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
}
} else {
length = toLength(O.length);
for (result = new C(length); length > index; index++) {
createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
}
}
result.length = index;
return result;
}
});
}, {
"./_create-property": 41,
"./_ctx": 42,
"./_export": 48,
"./_is-array-iter": 56,
"./_iter-call": 59,
"./_iter-detect": 62,
"./_to-length": 90,
"./_to-object": 91,
"./core.get-iterator-method": 97
}],
101: [function(require, module, exports) {
// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = require('./_export');
$export($export.S, 'Array', {
isArray: require('./_is-array')
});
}, {
"./_export": 48,
"./_is-array": 57
}],
102: [function(require, module, exports) {
'use strict';
var addToUnscopables = require('./_add-to-unscopables');
var step = require('./_iter-step');
var Iterators = require('./_iterators');
var toIObject = require('./_to-iobject');
// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind) {
this._t = toIObject(iterated); // target
this._i = 0; // next index
this._k = kind; // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function() {
var O = this._t;
var kind = this._k;
var index = this._i++;
if (!O || index >= O.length) {
this._t = undefined;
return step(1);
}
if (kind == 'keys') return step(0, index);
if (kind == 'values') return step(0, O[index]);
return step(0, [index, O[index]]);
}, 'values');
// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
}, {
"./_add-to-unscopables": 35,
"./_iter-define": 61,
"./_iter-step": 63,
"./_iterators": 64,
"./_to-iobject": 89
}],
103: [function(require, module, exports) {
var $export = require('./_export');
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', {
create: require('./_object-create')
});
}, {
"./_export": 48,
"./_object-create": 67
}],
104: [function(require, module, exports) {
var $export = require('./_export');
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !require('./_descriptors'), 'Object', {
defineProperty: require('./_object-dp').f
});
}, {
"./_descriptors": 44,
"./_export": 48,
"./_object-dp": 68
}],
105: [function(require, module, exports) {
}, {}],
106: [function(require, module, exports) {
var $export = require('./_export');
var $parseInt = require('./_parse-int');
// 18.2.5 parseInt(string, radix)
$export($export.G + $export.F * (parseInt != $parseInt), {
parseInt: $parseInt
});
}, {
"./_export": 48,
"./_parse-int": 78
}],
107: [function(require, module, exports) {
'use strict';
var $at = require('./_string-at')(true);
// 21.1.3.27 String.prototype[@@iterator]()
require('./_iter-define')(String, 'String', function(iterated) {
this._t = String(iterated); // target
this._i = 0; // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function() {
var O = this._t;
var index = this._i;
var point;
if (index >= O.length) return {
value: undefined,
done: true
};
point = $at(O, index);
this._i += point.length;
return {
value: point,
done: false
};
});
}, {
"./_iter-define": 61,
"./_string-at": 84
}],
108: [function(require, module, exports) {
'use strict';
// ECMAScript 6 symbols shim
var global = require('./_global');
var has = require('./_has');
var DESCRIPTORS = require('./_descriptors');
var $export = require('./_export');
var redefine = require('./_redefine');
var META = require('./_meta').KEY;
var $fails = require('./_fails');
var shared = require('./_shared');
var setToStringTag = require('./_set-to-string-tag');
var uid = require('./_uid');
var wks = require('./_wks');
var wksExt = require('./_wks-ext');
var wksDefine = require('./_wks-define');
var enumKeys = require('./_enum-keys');
var isArray = require('./_is-array');
var anObject = require('./_an-object');
var isObject = require('./_is-object');
var toObject = require('./_to-object');
var toIObject = require('./_to-iobject');
var toPrimitive = require('./_to-primitive');
var createDesc = require('./_property-desc');
var _create = require('./_object-create');
var gOPNExt = require('./_object-gopn-ext');
var $GOPD = require('./_object-gopd');
var $GOPS = require('./_object-gops');
var $DP = require('./_object-dp');
var $keys = require('./_object-keys');
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function() {
return _create(dP({}, 'a', {
get: function() {
return dP(this, 'a', {
value: 7
}).a;
}
})).a != 7;
}) ? function(it, key, D) {
var protoDesc = gOPD(ObjectProto, key);
if (protoDesc) delete ObjectProto[key];
dP(it, key, D);
if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;
var wrap = function(tag) {
var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
sym._k = tag;
return sym;
};
var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it) {
return typeof it == 'symbol';
} : function(it) {
return it instanceof $Symbol;
};
var $defineProperty = function defineProperty(it, key, D) {
if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
anObject(it);
key = toPrimitive(key, true);
anObject(D);
if (has(AllSymbols, key)) {
if (!D.enumerable) {
if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
it[HIDDEN][key] = true;
} else {
if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
D = _create(D, {
enumerable: createDesc(0, false)
});
}
return setSymbolDesc(it, key, D);
}
return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
anObject(it);
var keys = enumKeys(P = toIObject(P));
var i = 0;
var l = keys.length;
var key;
while (l > i) $defineProperty(it, key = keys[i++], P[key]);
return it;
};
var $create = function create(it, P) {
return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
var E = isEnum.call(this, key = toPrimitive(key, true));
if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
it = toIObject(it);
key = toPrimitive(key, true);
if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
var D = gOPD(it, key);
if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
var names = gOPN(toIObject(it));
var result = [];
var i = 0;
var key;
while (names.length > i) {
if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
}
return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
var IS_OP = it === ObjectProto;
var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
var result = [];
var i = 0;
var key;
while (names.length > i) {
if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
}
return result;
};
// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
$Symbol = function Symbol() {
if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
var $set = function(value) {
if (this === ObjectProto) $set.call(OPSymbols, value);
if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
setSymbolDesc(this, tag, createDesc(1, value));
};
if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {
configurable: true,
set: $set
});
return wrap(tag);
};
redefine($Symbol[PROTOTYPE], 'toString', function toString() {
return this._k;
});
$GOPD.f = $getOwnPropertyDescriptor;
$DP.f = $defineProperty;
require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;
require('./_object-pie').f = $propertyIsEnumerable;
$GOPS.f = $getOwnPropertySymbols;
if (DESCRIPTORS && !require('./_library')) {
redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
}
wksExt.f = function(name) {
return wrap(wks(name));
};
}
$export($export.G + $export.W + $export.F * !USE_NATIVE, {
Symbol: $Symbol
});
for (var es6Symbols = (
// 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;) wks(es6Symbols[j++]);
for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
// 19.4.2.1 Symbol.for(key)
'for': function(key) {
return has(SymbolRegistry, key += '') ?
SymbolRegistry[key] :
SymbolRegistry[key] = $Symbol(key);
},
// 19.4.2.5 Symbol.keyFor(sym)
keyFor: function keyFor(sym) {
if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
for (var key in SymbolRegistry)
if (SymbolRegistry[key] === sym) return key;
},
useSetter: function() {
setter = true;
},
useSimple: function() {
setter = false;
}
});
$export($export.S + $export.F * !USE_NATIVE, 'Object', {
// 19.1.2.2 Object.create(O [, Properties])
create: $create,
// 19.1.2.4 Object.defineProperty(O, P, Attributes)
defineProperty: $defineProperty,
// 19.1.2.3 Object.defineProperties(O, Properties)
defineProperties: $defineProperties,
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
// 19.1.2.7 Object.getOwnPropertyNames(O)
getOwnPropertyNames: $getOwnPropertyNames,
// 19.1.2.8 Object.getOwnPropertySymbols(O)
getOwnPropertySymbols: $getOwnPropertySymbols
});
// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function() {
$GOPS.f(1);
});
$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
getOwnPropertySymbols: function getOwnPropertySymbols(it) {
return $GOPS.f(toObject(it));
}
});
// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function() {
var S = $Symbol();
// MS Edge converts symbol values to JSON as {}
// WebKit converts symbol values to JSON as null
// V8 throws on boxed symbols
return _stringify([S]) != '[null]' || _stringify({
a: S
}) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
stringify: function stringify(it) {
var args = [it];
var i = 1;
var replacer, $replacer;
while (arguments.length > i) args.push(arguments[i++]);
$replacer = replacer = args[1];
if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
if (!isArray(replacer)) replacer = function(key, value) {
if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
if (!isSymbol(value)) return value;
};
args[1] = replacer;
return _stringify.apply($JSON, args);
}
});
// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);
}, {
"./_an-object": 36,
"./_descriptors": 44,
"./_enum-keys": 47,
"./_export": 48,
"./_fails": 49,
"./_global": 50,
"./_has": 51,
"./_hide": 52,
"./_is-array": 57,
"./_is-object": 58,
"./_library": 65,
"./_meta": 66,
"./_object-create": 67,
"./_object-dp": 68,
"./_object-gopd": 70,
"./_object-gopn": 72,
"./_object-gopn-ext": 71,
"./_object-gops": 73,
"./_object-keys": 76,
"./_object-pie": 77,
"./_property-desc": 79,
"./_redefine": 80,
"./_set-to-string-tag": 81,
"./_shared": 83,
"./_to-iobject": 89,
"./_to-object": 91,
"./_to-primitive": 92,
"./_uid": 93,
"./_wks": 96,
"./_wks-define": 94,
"./_wks-ext": 95
}],
109: [function(require, module, exports) {
require('./_wks-define')('asyncIterator');
}, {
"./_wks-define": 94
}],
110: [function(require, module, exports) {
require('./_wks-define')('observable');
}, {
"./_wks-define": 94
}],
111: [function(require, module, exports) {
require('./es6.array.iterator');
var global = require('./_global');
var hide = require('./_hide');
var Iterators = require('./_iterators');
var TO_STRING_TAG = require('./_wks')('toStringTag');
var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
'TextTrackList,TouchList').split(',');
for (var i = 0; i < DOMIterables.length; i++) {
var NAME = DOMIterables[i];
var Collection = global[NAME];
var proto = Collection && Collection.prototype;
if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
Iterators[NAME] = Iterators.Array;
}
}, {
"./_global": 50,
"./_hide": 52,
"./_iterators": 64,
"./_wks": 96,
"./es6.array.iterator": 102
}]
}, {}, [7])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJhZ2VudC9Db25zdHMudHMiLCJhZ2VudC9SdW50aW1lLnRzIiwiYWdlbnQvU0RDb250ZXh0RGVzY3JpcHRvckZsYWdzLnRzIiwiYWdlbnQvU0ROb21pbmFsT2JqLnRzIiwiYWdlbnQvU0RQYXJzZXIudHMiLCJhZ2VudC9VdGlsLnRzIiwiYWdlbnQvaW5kZXgudHMiLCJhZ2VudC9sb2dnZXIudHMiLCJub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL2FycmF5L2Zyb20uanMiLCJub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL2FycmF5L2lzLWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9nZXQtaXRlcmF0b3IuanMiLCJub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL2lzLWl0ZXJhYmxlLmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvY29yZS1qcy9wYXJzZS1pbnQuanMiLCJub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9jb3JlLWpzL3N5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvYXJyYXlXaXRoSG9sZXMuanMiLCJub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMi9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIm5vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIm5vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMyL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwibm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczIvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vYXJyYXkvZnJvbS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vYXJyYXkvaXMtYXJyYXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vaXMtaXRlcmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3BhcnNlLWludC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWtleXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19odG1sLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcGFyc2UtaW50LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctdHJpbS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLXdzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZGVmaW5lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuaXMtaXRlcmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5LmZyb20uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5LmlzLWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucGFyc2UtaW50LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztBQ0NBLElBQVksUUFBWjs7QUFBQSxDQUFBLFVBQVksUUFBWixFQUFvQjtBQUNoQixFQUFBLFFBQUEsQ0FBQSxNQUFBLENBQUEsR0FBQSxRQUFBO0FBQ0EsRUFBQSxRQUFBLENBQUEsTUFBQSxDQUFBLEdBQUEsUUFBQTtBQUNBLEVBQUEsUUFBQSxDQUFBLFlBQUEsQ0FBQSxHQUFBLGNBQUE7QUFFSCxDQUxELEVBQVksUUFBUSxHQUFSLE9BQUEsQ0FBQSxRQUFBLEtBQUEsT0FBQSxDQUFBLFFBQUEsR0FBUSxFQUFSLENBQVo7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QTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBOztBQ0RBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBOztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5QkE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBOztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RQQTtBQUNBOztBQ0RBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIn0=
Comments