(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory();
	else if(typeof define === 'function' && define.amd)
		define([], factory);
	else {
		var a = factory();
		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
	}
})(window, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 68);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
  return it && it.Math == Math && it;
};

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
  // eslint-disable-next-line no-undef
  check(typeof globalThis == 'object' && globalThis) ||
  check(typeof window == 'object' && window) ||
  check(typeof self == 'object' && self) ||
  check(typeof global == 'object' && global) ||
  // eslint-disable-next-line no-new-func
  Function('return this')();

/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(36)))

/***/ }),
/* 1 */
/***/ (function(module, exports) {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (error) {
    return true;
  }
};


/***/ }),
/* 2 */
/***/ (function(module, exports) {

var hasOwnProperty = {}.hasOwnProperty;

module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {

var DESCRIPTORS = __webpack_require__(5);
var definePropertyModule = __webpack_require__(13);
var createPropertyDescriptor = __webpack_require__(22);

module.exports = DESCRIPTORS ? function (object, key, value) {
  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(6);

module.exports = function (it) {
  if (!isObject(it)) {
    throw TypeError(String(it) + ' is not an object');
  } return it;
};


/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

var fails = __webpack_require__(1);

// Thank's IE8 for his funny defineProperty
module.exports = !fails(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 6 */
/***/ (function(module, exports) {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),
/* 7 */
/***/ (function(module, exports) {

// `RequireObjectCoercible` abstract operation
// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on " + it);
  return it;
};


/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {

var IS_PURE = __webpack_require__(38);
var store = __webpack_require__(39);

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: '3.4.2',
  mode: IS_PURE ? 'pure' : 'global',
  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});


/***/ }),
/* 9 */
/***/ (function(module, exports) {

var ceil = Math.ceil;
var floor = Math.floor;

// `ToInteger` abstract operation
// https://tc39.github.io/ecma262/#sec-tointeger
module.exports = function (argument) {
  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};


/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var getOwnPropertyDescriptor = __webpack_require__(21).f;
var createNonEnumerableProperty = __webpack_require__(3);
var redefine = __webpack_require__(27);
var setGlobal = __webpack_require__(14);
var copyConstructorProperties = __webpack_require__(42);
var isForced = __webpack_require__(49);

/*
  options.target      - name of the target object
  options.global      - target is the global object
  options.stat        - export as static methods of target
  options.proto       - export as prototype methods of target
  options.real        - real prototype method for the `pure` version
  options.forced      - export even if the native feature is available
  options.bind        - bind methods to the target, required for the `pure` version
  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
  options.sham        - add a flag to not completely full polyfills
  options.enumerable  - export as enumerable property
  options.noTargetGet - prevent calling a getter on target
*/
module.exports = function (options, source) {
  var TARGET = options.target;
  var GLOBAL = options.global;
  var STATIC = options.stat;
  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
  if (GLOBAL) {
    target = global;
  } else if (STATIC) {
    target = global[TARGET] || setGlobal(TARGET, {});
  } else {
    target = (global[TARGET] || {}).prototype;
  }
  if (target) for (key in source) {
    sourceProperty = source[key];
    if (options.noTargetGet) {
      descriptor = getOwnPropertyDescriptor(target, key);
      targetProperty = descriptor && descriptor.value;
    } else targetProperty = target[key];
    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
    // contained in target
    if (!FORCED && targetProperty !== undefined) {
      if (typeof sourceProperty === typeof targetProperty) continue;
      copyConstructorProperties(sourceProperty, targetProperty);
    }
    // add a flag to not completely full polyfills
    if (options.sham || (targetProperty && targetProperty.sham)) {
      createNonEnumerableProperty(sourceProperty, 'sham', true);
    }
    // extend global
    redefine(target, key, sourceProperty, options);
  }
};


/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {

// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(23);
var requireObjectCoercible = __webpack_require__(7);

module.exports = function (it) {
  return IndexedObject(requireObjectCoercible(it));
};


/***/ }),
/* 12 */
/***/ (function(module, exports) {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {

var DESCRIPTORS = __webpack_require__(5);
var IE8_DOM_DEFINE = __webpack_require__(25);
var anObject = __webpack_require__(4);
var toPrimitive = __webpack_require__(24);

var nativeDefineProperty = Object.defineProperty;

// `Object.defineProperty` method
// https://tc39.github.io/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return nativeDefineProperty(O, P, Attributes);
  } catch (error) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var createNonEnumerableProperty = __webpack_require__(3);

module.exports = function (key, value) {
  try {
    createNonEnumerableProperty(global, key, value);
  } catch (error) {
    global[key] = value;
  } return value;
};


/***/ }),
/* 15 */
/***/ (function(module, exports) {

module.exports = {};


/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(9);

var min = Math.min;

// `ToLength` abstract operation
// https://tc39.github.io/ecma262/#sec-tolength
module.exports = function (argument) {
  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};


/***/ }),
/* 17 */
/***/ (function(module, exports) {

// IE8- don't enum bug keys
module.exports = [
  'constructor',
  'hasOwnProperty',
  'isPrototypeOf',
  'propertyIsEnumerable',
  'toLocaleString',
  'toString',
  'valueOf'
];


/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {

var requireObjectCoercible = __webpack_require__(7);

// `ToObject` abstract operation
// https://tc39.github.io/ecma262/#sec-toobject
module.exports = function (argument) {
  return Object(requireObjectCoercible(argument));
};


/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var shared = __webpack_require__(8);
var has = __webpack_require__(2);
var uid = __webpack_require__(30);
var NATIVE_SYMBOL = __webpack_require__(33);
var USE_SYMBOL_AS_UID = __webpack_require__(55);

var WellKnownSymbolsStore = shared('wks');
var Symbol = global.Symbol;
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : uid;

module.exports = function (name) {
  if (!has(WellKnownSymbolsStore, name)) {
    if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];
    else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
  } return WellKnownSymbolsStore[name];
};


/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var regexpFlags = __webpack_require__(62);

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/;
  var re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1.lastIndex !== 0 || re2.lastIndex !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {

var DESCRIPTORS = __webpack_require__(5);
var propertyIsEnumerableModule = __webpack_require__(37);
var createPropertyDescriptor = __webpack_require__(22);
var toIndexedObject = __webpack_require__(11);
var toPrimitive = __webpack_require__(24);
var has = __webpack_require__(2);
var IE8_DOM_DEFINE = __webpack_require__(25);

var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;

// `Object.getOwnPropertyDescriptor` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
  O = toIndexedObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return nativeGetOwnPropertyDescriptor(O, P);
  } catch (error) { /* empty */ }
  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
};


/***/ }),
/* 22 */
/***/ (function(module, exports) {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {

var fails = __webpack_require__(1);
var classof = __webpack_require__(12);

var split = ''.split;

// fallback for non-array-like ES3 and non-enumerable old V8 strings
module.exports = fails(function () {
  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
  // eslint-disable-next-line no-prototype-builtins
  return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
  return classof(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;


/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(6);

// `ToPrimitive` abstract operation
// https://tc39.github.io/ecma262/#sec-toprimitive
// 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 (input, PREFERRED_STRING) {
  if (!isObject(input)) return input;
  var fn, val;
  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

var DESCRIPTORS = __webpack_require__(5);
var fails = __webpack_require__(1);
var createElement = __webpack_require__(26);

// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
  return Object.defineProperty(createElement('div'), 'a', {
    get: function () { return 7; }
  }).a != 7;
});


/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var isObject = __webpack_require__(6);

var document = global.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);

module.exports = function (it) {
  return EXISTS ? document.createElement(it) : {};
};


/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var shared = __webpack_require__(8);
var createNonEnumerableProperty = __webpack_require__(3);
var has = __webpack_require__(2);
var setGlobal = __webpack_require__(14);
var nativeFunctionToString = __webpack_require__(28);
var InternalStateModule = __webpack_require__(40);

var getInternalState = InternalStateModule.get;
var enforceInternalState = InternalStateModule.enforce;
var TEMPLATE = String(nativeFunctionToString).split('toString');

shared('inspectSource', function (it) {
  return nativeFunctionToString.call(it);
});

(module.exports = function (O, key, value, options) {
  var unsafe = options ? !!options.unsafe : false;
  var simple = options ? !!options.enumerable : false;
  var noTargetGet = options ? !!options.noTargetGet : false;
  if (typeof value == 'function') {
    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);
    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
  }
  if (O === global) {
    if (simple) O[key] = value;
    else setGlobal(key, value);
    return;
  } else if (!unsafe) {
    delete O[key];
  } else if (!noTargetGet && O[key]) {
    simple = true;
  }
  if (simple) O[key] = value;
  else createNonEnumerableProperty(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
  return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
});


/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {

var shared = __webpack_require__(8);

module.exports = shared('native-function-to-string', Function.toString);


/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {

var shared = __webpack_require__(8);
var uid = __webpack_require__(30);

var keys = shared('keys');

module.exports = function (key) {
  return keys[key] || (keys[key] = uid(key));
};


/***/ }),
/* 30 */
/***/ (function(module, exports) {

var id = 0;
var postfix = Math.random();

module.exports = function (key) {
  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
};


/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {

var path = __webpack_require__(44);
var global = __webpack_require__(0);

var aFunction = function (variable) {
  return typeof variable == 'function' ? variable : undefined;
};

module.exports = function (namespace, method) {
  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
};


/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {

var has = __webpack_require__(2);
var toIndexedObject = __webpack_require__(11);
var indexOf = __webpack_require__(46).indexOf;
var hiddenKeys = __webpack_require__(15);

module.exports = function (object, names) {
  var O = toIndexedObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~indexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {

var fails = __webpack_require__(1);

module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
  // Chrome 38 Symbol has incorrect toString conversion
  // eslint-disable-next-line no-undef
  return !String(Symbol());
});


/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {

var internalObjectKeys = __webpack_require__(32);
var enumBugKeys = __webpack_require__(17);

// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
module.exports = Object.keys || function keys(O) {
  return internalObjectKeys(O, enumBugKeys);
};


/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $ = __webpack_require__(10);
var $find = __webpack_require__(50).find;
var addToUnscopables = __webpack_require__(56);

var FIND = 'find';
var SKIPS_HOLES = true;

// Shouldn't skip holes
if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });

// `Array.prototype.find` method
// https://tc39.github.io/ecma262/#sec-array.prototype.find
$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});

// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables(FIND);


/***/ }),
/* 36 */
/***/ (function(module, exports) {

var g;

// This works in non-strict mode
g = (function() {
	return this;
})();

try {
	// This works if eval is allowed (see CSP)
	g = g || new Function("return this")();
} catch (e) {
	// This works if the window reference is available
	if (typeof window === "object") g = window;
}

// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}

module.exports = g;


/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;

// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);

// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
  var descriptor = getOwnPropertyDescriptor(this, V);
  return !!descriptor && descriptor.enumerable;
} : nativePropertyIsEnumerable;


/***/ }),
/* 38 */
/***/ (function(module, exports) {

module.exports = false;


/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var setGlobal = __webpack_require__(14);

var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});

module.exports = store;


/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {

var NATIVE_WEAK_MAP = __webpack_require__(41);
var global = __webpack_require__(0);
var isObject = __webpack_require__(6);
var createNonEnumerableProperty = __webpack_require__(3);
var objectHas = __webpack_require__(2);
var sharedKey = __webpack_require__(29);
var hiddenKeys = __webpack_require__(15);

var WeakMap = global.WeakMap;
var set, get, has;

var enforce = function (it) {
  return has(it) ? get(it) : set(it, {});
};

var getterFor = function (TYPE) {
  return function (it) {
    var state;
    if (!isObject(it) || (state = get(it)).type !== TYPE) {
      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
    } return state;
  };
};

if (NATIVE_WEAK_MAP) {
  var store = new WeakMap();
  var wmget = store.get;
  var wmhas = store.has;
  var wmset = store.set;
  set = function (it, metadata) {
    wmset.call(store, it, metadata);
    return metadata;
  };
  get = function (it) {
    return wmget.call(store, it) || {};
  };
  has = function (it) {
    return wmhas.call(store, it);
  };
} else {
  var STATE = sharedKey('state');
  hiddenKeys[STATE] = true;
  set = function (it, metadata) {
    createNonEnumerableProperty(it, STATE, metadata);
    return metadata;
  };
  get = function (it) {
    return objectHas(it, STATE) ? it[STATE] : {};
  };
  has = function (it) {
    return objectHas(it, STATE);
  };
}

module.exports = {
  set: set,
  get: get,
  has: has,
  enforce: enforce,
  getterFor: getterFor
};


/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var nativeFunctionToString = __webpack_require__(28);

var WeakMap = global.WeakMap;

module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));


/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {

var has = __webpack_require__(2);
var ownKeys = __webpack_require__(43);
var getOwnPropertyDescriptorModule = __webpack_require__(21);
var definePropertyModule = __webpack_require__(13);

module.exports = function (target, source) {
  var keys = ownKeys(source);
  var defineProperty = definePropertyModule.f;
  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
  for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
  }
};


/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {

var getBuiltIn = __webpack_require__(31);
var getOwnPropertyNamesModule = __webpack_require__(45);
var getOwnPropertySymbolsModule = __webpack_require__(48);
var anObject = __webpack_require__(4);

// all object keys, includes non-enumerable and symbols
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
  var keys = getOwnPropertyNamesModule.f(anObject(it));
  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
};


/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(0);


/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {

var internalObjectKeys = __webpack_require__(32);
var enumBugKeys = __webpack_require__(17);

var hiddenKeys = enumBugKeys.concat('length', 'prototype');

// `Object.getOwnPropertyNames` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return internalObjectKeys(O, hiddenKeys);
};


/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {

var toIndexedObject = __webpack_require__(11);
var toLength = __webpack_require__(16);
var toAbsoluteIndex = __webpack_require__(47);

// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIndexedObject($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) && O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};

module.exports = {
  // `Array.prototype.includes` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.includes
  includes: createMethod(true),
  // `Array.prototype.indexOf` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
  indexOf: createMethod(false)
};


/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(9);

var max = Math.max;
var min = Math.min;

// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
module.exports = function (index, length) {
  var integer = toInteger(index);
  return integer < 0 ? max(integer + length, 0) : min(integer, length);
};


/***/ }),
/* 48 */
/***/ (function(module, exports) {

exports.f = Object.getOwnPropertySymbols;


/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {

var fails = __webpack_require__(1);

var replacement = /#|\.prototype\./;

var isForced = function (feature, detection) {
  var value = data[normalize(feature)];
  return value == POLYFILL ? true
    : value == NATIVE ? false
    : typeof detection == 'function' ? fails(detection)
    : !!detection;
};

var normalize = isForced.normalize = function (string) {
  return String(string).replace(replacement, '.').toLowerCase();
};

var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';

module.exports = isForced;


/***/ }),
/* 50 */
/***/ (function(module, exports, __webpack_require__) {

var bind = __webpack_require__(51);
var IndexedObject = __webpack_require__(23);
var toObject = __webpack_require__(18);
var toLength = __webpack_require__(16);
var arraySpeciesCreate = __webpack_require__(53);

var push = [].push;

// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation
var createMethod = function (TYPE) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  return function ($this, callbackfn, that, specificCreate) {
    var O = toObject($this);
    var self = IndexedObject(O);
    var boundFunction = bind(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var create = specificCreate || arraySpeciesCreate;
    var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var value, result;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      value = self[index];
      result = boundFunction(value, index, O);
      if (TYPE) {
        if (IS_MAP) target[index] = result; // map
        else if (result) switch (TYPE) {
          case 3: return true;              // some
          case 5: return value;             // find
          case 6: return index;             // findIndex
          case 2: push.call(target, value); // filter
        } else if (IS_EVERY) return false;  // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
  };
};

module.exports = {
  // `Array.prototype.forEach` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach
  forEach: createMethod(0),
  // `Array.prototype.map` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.map
  map: createMethod(1),
  // `Array.prototype.filter` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.filter
  filter: createMethod(2),
  // `Array.prototype.some` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.some
  some: createMethod(3),
  // `Array.prototype.every` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.every
  every: createMethod(4),
  // `Array.prototype.find` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.find
  find: createMethod(5),
  // `Array.prototype.findIndex` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
  findIndex: createMethod(6)
};


/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {

var aFunction = __webpack_require__(52);

// optional / simple context binding
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 0: return function () {
      return fn.call(that);
    };
    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);
  };
};


/***/ }),
/* 52 */
/***/ (function(module, exports) {

module.exports = function (it) {
  if (typeof it != 'function') {
    throw TypeError(String(it) + ' is not a function');
  } return it;
};


/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(6);
var isArray = __webpack_require__(54);
var wellKnownSymbol = __webpack_require__(19);

var SPECIES = wellKnownSymbol('species');

// `ArraySpeciesCreate` abstract operation
// https://tc39.github.io/ecma262/#sec-arrayspeciescreate
module.exports = function (originalArray, length) {
  var C;
  if (isArray(originalArray)) {
    C = originalArray.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    else if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
};


/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {

var classof = __webpack_require__(12);

// `IsArray` abstract operation
// https://tc39.github.io/ecma262/#sec-isarray
module.exports = Array.isArray || function isArray(arg) {
  return classof(arg) == 'Array';
};


/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {

var NATIVE_SYMBOL = __webpack_require__(33);

module.exports = NATIVE_SYMBOL
  // eslint-disable-next-line no-undef
  && !Symbol.sham
  // eslint-disable-next-line no-undef
  && typeof Symbol() == 'symbol';


/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {

var wellKnownSymbol = __webpack_require__(19);
var create = __webpack_require__(57);
var createNonEnumerableProperty = __webpack_require__(3);

var UNSCOPABLES = wellKnownSymbol('unscopables');
var ArrayPrototype = Array.prototype;

// Array.prototype[@@unscopables]
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
if (ArrayPrototype[UNSCOPABLES] == undefined) {
  createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));
}

// add a key to Array.prototype[@@unscopables]
module.exports = function (key) {
  ArrayPrototype[UNSCOPABLES][key] = true;
};


/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(4);
var defineProperties = __webpack_require__(58);
var enumBugKeys = __webpack_require__(17);
var hiddenKeys = __webpack_require__(15);
var html = __webpack_require__(59);
var documentCreateElement = __webpack_require__(26);
var sharedKey = __webpack_require__(29);
var IE_PROTO = sharedKey('IE_PROTO');

var PROTOTYPE = 'prototype';
var Empty = function () { /* empty */ };

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = documentCreateElement('iframe');
  var length = enumBugKeys.length;
  var lt = '<';
  var script = 'script';
  var gt = '>';
  var js = 'java' + script + ':';
  var iframeDocument;
  iframe.style.display = 'none';
  html.appendChild(iframe);
  iframe.src = String(js);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
  return createDict();
};

// `Object.create` method
// https://tc39.github.io/ecma262/#sec-object.create
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 : defineProperties(result, Properties);
};

hiddenKeys[IE_PROTO] = true;


/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {

var DESCRIPTORS = __webpack_require__(5);
var definePropertyModule = __webpack_require__(13);
var anObject = __webpack_require__(4);
var objectKeys = __webpack_require__(34);

// `Object.defineProperties` method
// https://tc39.github.io/ecma262/#sec-object.defineproperties
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = objectKeys(Properties);
  var length = keys.length;
  var index = 0;
  var key;
  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
  return O;
};


/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {

var getBuiltIn = __webpack_require__(31);

module.exports = getBuiltIn('document', 'documentElement');


/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {

var $ = __webpack_require__(10);
var toObject = __webpack_require__(18);
var nativeKeys = __webpack_require__(34);
var fails = __webpack_require__(1);

var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });

// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
  keys: function keys(it) {
    return nativeKeys(toObject(it));
  }
});


/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $ = __webpack_require__(10);
var exec = __webpack_require__(20);

$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
  exec: exec
});


/***/ }),
/* 62 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var anObject = __webpack_require__(4);

// `RegExp.prototype.flags` getter implementation
// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.dotAll) result += 's';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var fixRegExpWellKnownSymbolLogic = __webpack_require__(64);
var anObject = __webpack_require__(4);
var toObject = __webpack_require__(18);
var toLength = __webpack_require__(16);
var toInteger = __webpack_require__(9);
var requireObjectCoercible = __webpack_require__(7);
var advanceStringIndex = __webpack_require__(65);
var regExpExec = __webpack_require__(67);

var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = requireObjectCoercible(this);
      var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
      return replacer !== undefined
        ? replacer.call(searchValue, O, replaceValue)
        : nativeReplace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);

      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);

      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;

        results.push(result);
        if (!global) break;

        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }

      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];

        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

  // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return nativeReplace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var createNonEnumerableProperty = __webpack_require__(3);
var redefine = __webpack_require__(27);
var fails = __webpack_require__(1);
var wellKnownSymbol = __webpack_require__(19);
var regexpExec = __webpack_require__(20);

var SPECIES = wellKnownSymbol('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
});

module.exports = function (KEY, length, exec, sham) {
  var SYMBOL = wellKnownSymbol(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;

    if (KEY === 'split') {
      // We can't use real regex here since it causes deoptimization
      // and serious performance degradation in V8
      // https://github.com/zloirock/core-js/issues/306
      re = {};
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
      re.flags = '';
      re[SYMBOL] = /./[SYMBOL];
    }

    re.exec = function () { execCalled = true; return null; };

    re[SYMBOL]('');
    return !execCalled;
  });

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
      if (regexp.exec === regexpExec) {
        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
          // The native String method already delegates to @@method (this
          // polyfilled function), leasing to infinite recursion.
          // We avoid it by directly calling the native @@method method.
          return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
        }
        return { done: true, value: nativeMethod.call(str, regexp, arg2) };
      }
      return { done: false };
    });
    var stringMethod = methods[0];
    var regexMethod = methods[1];

    redefine(String.prototype, KEY, stringMethod);
    redefine(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return regexMethod.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return regexMethod.call(string, this); }
    );
    if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);
  }
};


/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var charAt = __webpack_require__(66).charAt;

// `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? charAt(S, index).length : 1);
};


/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(9);
var requireObjectCoercible = __webpack_require__(7);

// `String.prototype.{ codePointAt, at }` methods implementation
var createMethod = function (CONVERT_TO_STRING) {
  return function ($this, pos) {
    var S = String(requireObjectCoercible($this));
    var position = toInteger(pos);
    var size = S.length;
    var first, second;
    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
    first = S.charCodeAt(position);
    return first < 0xD800 || first > 0xDBFF || position + 1 === size
      || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
        ? CONVERT_TO_STRING ? S.charAt(position) : first
        : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
  };
};

module.exports = {
  // `String.prototype.codePointAt` method
  // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
  codeAt: createMethod(false),
  // `String.prototype.at` method
  // https://github.com/mathiasbynens/String.prototype.at
  charAt: createMethod(true)
};


/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {

var classof = __webpack_require__(12);
var regexpExec = __webpack_require__(20);

// `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }

  if (classof(R) !== 'RegExp') {
    throw TypeError('RegExp#exec called on incompatible receiver');
  }

  return regexpExec.call(R, S);
};



/***/ }),
/* 68 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);

// CONCATENATED MODULE: ./controllers/GuideModal.ts
// 功能向导提示框
var defaults = {
    title: '标题',
    content: {
        img: '',
        summary: '',
        html: ''
    },
    spacing: { x: 0, y: 0 },
    buttons: {
        next: {
            text: '带我体验一遍流程',
            className: 'large basic orange',
            action: function (app) {
                app.next();
            }
        },
        skip: {
            text: '我知道了',
            className: 'large orange',
            action: function (app) {
                app.skip();
            }
        }
    }
};
var GuideModalController = /** @class */ (function () {
    function GuideModalController(app, options) {
        this.opts = $.extend(true, {}, defaults, options);
        this.app = app;
        this.$el = $(this.render());
        this.$modal = this.$el.find('.ui.modal');
        this.mount();
    }
    GuideModalController.prototype.render = function () {
        var opts = this.opts;
        var _a = opts.buttons, next = _a.next, skip = _a.skip;
        return "\n    <div class=\"gitee-intro__modal gitee-intro__guide-modal " + this.app.name + (opts.id ? "-" + opts.id : '') + "-modal\">\n      <div class=\"ui modal\">\n        <div class=\"content\">\n          <div class=\"header mt-1 mb-2\">\n            " + opts.title + "\n          </div>\n          " + (opts.content.summary ? "<p class=\"summary\">" + opts.content.summary + "</p>" : '') + "\n          " + (opts.content.img ? "\n            <div class=\"ui image\">\n              <img src=\"" + opts.content.img + "\" alt=\"preview\">\n            </div>" : '') + "\n          " + (opts.content.html ? opts.content.html : '') + "\n        </div>\n        <div class=\"actions\">\n          " + (next ?
            "<div class=\"gitee-guide-modal__next ui button btn-next " + (next.className || '') + "\">\n              " + next.text + "\n            </div>"
            : '') + "\n          " + (skip ?
            "<div class=\"gitee-guide-modal__skip ui button btn-skip " + (skip.className || '') + "\">\n              " + skip.text + "\n            </div>"
            : '') + "\n        </div>\n      </div>\n    </div>\n    ";
    };
    GuideModalController.prototype.renderDescription = function () {
        var summary = this.opts.content.summary;
        if (!summary) {
            return '';
        }
        return "<div class=\"description\">\n      <p class=\"summary\">" + summary + "</p>\n    </div>";
    };
    GuideModalController.prototype.mount = function () {
        var _this = this;
        var _a = this.opts.buttons, skip = _a.skip, next = _a.next;
        this.app.$overlay.append(this.$el);
        if (skip) {
            this.$modal.on('click', '.btn-skip', function () {
                if (skip.action) {
                    skip.action(_this.app);
                }
                else {
                    _this.app.skip();
                }
            });
        }
        if (next) {
            this.$modal.on('click', '.btn-next', function () {
                if (next.action) {
                    next.action(_this.app);
                }
                else {
                    _this.app.next();
                }
            });
        }
    };
    GuideModalController.prototype.enter = function () {
        var $box = this.$modal.find('.box');
        this.$modal.show();
        this.$el.show();
        var height = 10 + (this.$modal.outerHeight() || 0) - ($box.outerHeight() || 0);
        $box.css({
            'max-height': "calc(100vh - " + height + "px)",
            'overflow-y': 'auto',
            'min-height': '100px'
        });
    };
    GuideModalController.prototype.leave = function () {
        this.$el.hide();
    };
    GuideModalController.prototype.destroy = function () {
        this.$el.remove();
    };
    return GuideModalController;
}());
/* harmony default export */ var GuideModal = (GuideModalController);

// EXTERNAL MODULE: ../node_modules/core-js/modules/es.array.find.js
var es_array_find = __webpack_require__(35);

// EXTERNAL MODULE: ../node_modules/core-js/modules/es.object.keys.js
var es_object_keys = __webpack_require__(60);

// EXTERNAL MODULE: ../node_modules/core-js/modules/es.regexp.exec.js
var es_regexp_exec = __webpack_require__(61);

// EXTERNAL MODULE: ../node_modules/core-js/modules/es.string.replace.js
var es_string_replace = __webpack_require__(63);

// CONCATENATED MODULE: ./utils.js




var arrows = {
  'left': {
    x: 100,
    y: 25
  },
  'left top': {
    x: 55,
    y: 100
  },
  'left bottom': {
    x: 55,
    y: -120
  },
  'right': {
    x: 105,
    y: 28
  }
};
function attachArrow($el, arrow) {
  if (arrow in arrows) {
    $el.addClass("attach-arrow-".concat(arrow.replace(' ', '-')));
  }
}
function attachArrowOffset(spacing, arrow) {
  var offset = {
    x: 0,
    y: 0
  };

  if (arrow in arrows) {
    offset = arrows[arrow];
  }

  return {
    x: offset.x + spacing.x,
    y: offset.y + spacing.y
  };
}
function preloadImage(src) {
  if (!src) {
    return null;
  }

  var img = new Image();
  img.src = src;
  return img;
}
function resolvePosition($target, introSize) {
  var position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'auto';
  var spacing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
    x: 0,
    y: 0
  };
  var targetOffset = $target.offset();
  var targetSize = {
    width: $target.outerWidth(),
    height: $target.outerHeight()
  };
  var windowSize = {
    width: $(window).width(),
    height: $(window).height()
  };

  var checkOverflow = function checkOverflow(_ref) {
    var top = _ref.top,
        left = _ref.left;
    return top < 0 || left < 0 || left + introSize.width > windowSize.width || top + introSize.height > windowSize.height;
  };

  var methods = {
    'top': function top() {
      return {
        left: targetOffset.left - (introSize.width - targetSize.width) / 2 + spacing.x,
        top: targetOffset.top - introSize.height - spacing.y
      };
    },
    'bottom': function bottom() {
      return {
        left: targetOffset.left - (introSize.width - targetSize.width) / 2 + spacing.x,
        top: targetOffset.top + targetSize.height + spacing.y
      };
    },
    'right': function right() {
      return {
        left: targetOffset.left + targetSize.width + spacing.x,
        top: targetOffset.top + (introSize.height - targetSize.height) / 2 + spacing.y
      };
    },
    'right top': function rightTop() {
      return {
        left: targetOffset.left + targetSize.width + spacing.x,
        top: targetOffset.top - introSize.height + spacing.y
      };
    },
    'right bottom': function rightBottom() {
      return {
        left: targetOffset.left + targetSize.width + spacing.x,
        top: targetOffset.top + targetSize.height + spacing.y
      };
    },
    'left': function left() {
      return {
        left: targetOffset.left - introSize.width - spacing.x,
        top: targetOffset.top - (introSize.height - targetSize.height) / 2 + spacing.y
      };
    },
    'left top': function leftTop() {
      return {
        left: targetOffset.left - introSize.width - spacing.x,
        top: targetOffset.top - introSize.height + spacing.y
      };
    },
    'left bottom': function leftBottom() {
      return {
        left: targetOffset.left - introSize.width - spacing.x,
        top: targetOffset.top + targetSize.height + spacing.y
      };
    }
  };

  if (position === 'auto') {
    position = Object.keys(methods).find(function (key) {
      return !checkOverflow(methods[key]());
    });

    if (position) {
      return methods[position]();
    }

    console.warn('cannot resolve position');
    return {
      left: 0,
      top: 0
    };
  }

  if (methods[position]) {
    return methods[position]();
  }

  console.warn("cannot resolve position: ".concat(position));
  return methods.left();
}
// CONCATENATED MODULE: ./controllers/Intro.ts

var Intro_defaults = {
    el: '',
    id: '',
    content: '这里',
    position: 'auto',
    spacing: { x: 0, y: 0 },
    attachArrow: null,
    clickEvent: 'jQuery',
    clickToContinue: false,
    showProgress: true,
    targetWaitTimeout: 3000,
    onClickTarget: function () { },
    onEnter: function () { },
    onLeave: function () { },
    buttons: {
        next: {
            text: '下一个',
            className: '',
            action: function (app) { app.next(); }
        },
        skip: {
            text: '跳过',
            className: '',
            action: function (app) { app.skip(); }
        }
    }
};
var Intro_IntroTipController = /** @class */ (function () {
    function IntroTipController(app, options) {
        this.app = app;
        this.timeout = 0;
        this.opts = $.extend(true, {}, Intro_defaults, options);
        this.$el = $(this.render());
        this.app.$overlay.append(this.$el);
        this.onClickToContinue = this.onClickToContinue.bind(this);
        this.mount();
    }
    IntroTipController.prototype.render = function () {
        var _a = this.opts.buttons, skip = _a.skip, next = _a.next;
        return "<div class=\"gitee-intro__intro\" data-id=\"" + this.opts.id + "\">\n      <div class=\"content\">\n        " + this.opts.content + "\n      </div>\n      <div class=\"footer\">\n        <div class=\"status\">\n          <span class=\"current\">1</span>\n          /\n          <span class=\"total\">1</span>\n        </div>\n        " + (skip ? "<div class=\"ui blank button ml-auto mr-1 btn-skip " + (skip.className || '') + "\">" + skip.text + "</div>" : '') + "\n        " + (next ? "<div class=\"ui orange button btn-next " + (next.className || '') + "\">" + next.text + "</div>" : '') + "\n      </div>\n    </div>";
    };
    IntroTipController.prototype.onClickToContinue = function () {
        this.opts.onClickTarget(this.app);
        this.app.next();
    };
    IntroTipController.prototype.mount = function () {
        var _this = this;
        attachArrow(this.$el, this.opts.attachArrow);
        this.$el.on('click', '.btn-next', function () {
            if (_this.opts.buttons.next) {
                _this.opts.buttons.next.action(_this.app);
            }
        });
        this.$el.on('click', '.btn-skip', function () {
            if (_this.opts.buttons.skip) {
                _this.opts.buttons.skip.action(_this.app);
            }
        });
    };
    IntroTipController.prototype.update = function () {
        if (this.opts.clickToContinue) {
            this.$el.find('.footer .btn-next').remove();
        }
        this.$el.find('.current').text(this.app.stepIndex + 1);
        this.$el.find('.total').text(this.app.steps.length);
    };
    IntroTipController.prototype.waitTarget = function (callback) {
        var _this = this;
        if (this.opts.targetWaitTimeout
            && this.timeout < this.opts.targetWaitTimeout
            && $(this.opts.el).length < 1) {
            setTimeout(function () { _this.waitTarget(callback); }, 1000);
            this.timeout += 1000;
            return;
        }
        callback();
    };
    IntroTipController.prototype.enter = function () {
        var _this = this;
        this.waitTarget(function () {
            _this.update();
            _this.$el.show();
            _this.$el.css(_this.app.focus(_this.opts.el, {
                width: _this.$el.outerWidth(),
                height: _this.$el.outerHeight()
            }, _this.opts.position, attachArrowOffset(_this.opts.spacing, _this.opts.attachArrow)));
            _this.opts.onEnter(_this.app);
            if (_this.opts.showProgress) {
                _this.$el.find('.status').show();
            }
            else {
                _this.$el.find('.status').hide();
            }
            if (_this.opts.clickToContinue) {
                if (_this.app.$target) {
                    _this.app.$target
                        .on('click', _this.onClickToContinue)
                        .data('clickEvent', _this.opts.clickEvent);
                }
                _this.app.$container.addClass('gitee-intro--clickable');
                _this.app.setTargetInteraction(true);
            }
        });
    };
    IntroTipController.prototype.leave = function () {
        this.opts.onLeave();
        this.$el.hide();
        if (this.opts.clickToContinue) {
            if (this.app.$target) {
                this.app.$target.data('clickEvent', '');
                this.app.$target.off('click', this.onClickToContinue);
            }
            this.app.$container.removeClass('gitee-intro--clickable');
        }
        this.app.setTargetInteraction(false);
        this.app.focus();
    };
    IntroTipController.prototype.destroy = function () {
        this.$el.remove();
    };
    return IntroTipController;
}());
/* harmony default export */ var Intro = (Intro_IntroTipController);

// CONCATENATED MODULE: ./controllers/Modal.ts

var Modal_defaults = {
    title: '标题',
    content: {
        img: '',
        summary: '',
        features: []
    },
    attachArrow: null,
    position: 'auto',
    spacing: { x: 0, y: 0 },
    buttons: {
        next: {
            text: '下一步',
            className: 'orange',
            action: function (app) {
                app.next();
            }
        },
        skip: {
            text: '跳过',
            className: 'blank',
            action: function (app) {
                app.finish();
            }
        }
    }
};
var Modal_ModalController = /** @class */ (function () {
    function ModalController(app, options) {
        this.opts = $.extend(true, {}, Modal_defaults, options);
        this.app = app;
        this.$el = $(this.render());
        this.$modal = this.$el.find('.ui.modal');
        this.mount();
        preloadImage(this.opts.content.img);
    }
    ModalController.prototype.render = function () {
        var opts = this.opts;
        var _a = opts.buttons, next = _a.next, skip = _a.skip;
        return "\n    <div class=\"gitee-intro__modal " + this.app.name + (opts.id ? "-" + opts.id : '') + "-modal\">\n      <div class=\"ui modal\">\n        <div class=\"content\">\n          <div class=\"header mt-1 mb-4\">\n            " + opts.title + "\n          </div>\n          <div class=\"box\">\n            <div class=\"ui image\">\n              <img src=\"" + opts.content.img + "\">\n            </div>\n            " + this.renderDescription() + "\n          </div>\n        </div>\n        <div class=\"actions\">\n          " + (skip ?
            "<div class=\"ui button btn-skip " + (skip.className || '') + "\">\n              " + skip.text + "\n            </div>"
            : '') + "\n          " + (next ?
            "<div class=\"ui button btn-next " + (next.className || '') + "\">\n              " + next.text + "\n            </div>"
            : '') + "\n        </div>\n      </div>\n    </div>\n    ";
    };
    ModalController.prototype.renderDescription = function () {
        var _a = this.opts.content, summary = _a.summary, features = _a.features;
        if (!summary && (!features || features.length < 1)) {
            return '';
        }
        return "<div class=\"description\">\n      <p class=\"summary\">" + summary + "</p>\n      " + (features ? "\n        <ul class=\"features\">\n          " + features.map(function (feature) { return "<li>" + feature + "</li>"; }).join('') + "\n        </ul>" : '') + "\n    </div>";
    };
    ModalController.prototype.mount = function () {
        var _this = this;
        var _a = this.opts.buttons, skip = _a.skip, next = _a.next;
        this.app.$overlay.append(this.$el);
        attachArrow(this.$modal, this.opts.attachArrow);
        if (skip) {
            this.$modal.on('click', '.btn-skip', function () {
                if (skip.action) {
                    skip.action(_this.app);
                }
                else {
                    _this.app.skip();
                }
            });
        }
        if (next) {
            this.$modal.on('click', '.btn-next', function () {
                if (next.action) {
                    next.action(_this.app);
                }
                else {
                    _this.app.next();
                }
            });
        }
    };
    ModalController.prototype.enter = function () {
        var size = {
            width: this.$modal.outerWidth(),
            height: this.$modal.outerHeight()
        };
        var $box = this.$modal.find('.box');
        this.$modal.show();
        this.$el.show();
        if (!this.opts.el) {
            return;
        }
        var style = this.app.focus(this.opts.el, size, this.opts.position, attachArrowOffset(this.opts.spacing, this.opts.attachArrow));
        var height = 10 + style.top + size.height - ($box.outerHeight() || 0);
        $box.css({
            'max-height': "calc(100vh - " + height + "px)",
            'overflow-y': 'auto',
            'min-height': '100px'
        });
        this.$modal.css(style);
    };
    ModalController.prototype.leave = function () {
        this.$el.hide();
    };
    ModalController.prototype.destroy = function () {
        this.$el.remove();
    };
    return ModalController;
}());
/* harmony default export */ var Modal = (Modal_ModalController);

// CONCATENATED MODULE: ./controllers/PopupGroup.ts
// 基于 Semantic UI 的 Popup 组件实现：https://semantic-ui.com/modules/popup.html#/settings
var PopupGroup_defaults = {
    body: [
        {
            el: '',
            content: '',
            position: 'top left'
        }
    ]
};
var PopupGroupController = /** @class */ (function () {
    function PopupGroupController(app, options) {
        var _this = this;
        this.app = app;
        this.opts = $.extend(true, {}, PopupGroup_defaults, options);
        this.opts.body = this.opts.body.map(function (item) { return $.extend(true, {}, PopupGroup_defaults.body[0], item); });
        this.onClickBody = function () {
            _this.app.next();
        };
    }
    PopupGroupController.prototype.enter = function () {
        var _this = this;
        this.opts.body.forEach(function (item) {
            $(item.el).popup({
                className: {
                    popup: 'ui popup gitee-intro__popup'
                },
                content: item.content,
                position: item.position
            }).popup('show');
        });
        this.app.hide();
        setTimeout(function () {
            $(document).off('click', _this.onClickBody).on('click', _this.onClickBody);
        });
    };
    PopupGroupController.prototype.leave = function () {
        $(document).off('click', this.onClickBody);
        this.app.show();
        this.destroy();
    };
    PopupGroupController.prototype.destroy = function () {
        this.opts.body.forEach(function (item) {
            $(item.el).popup('destroy');
        });
    };
    return PopupGroupController;
}());
/* harmony default export */ var PopupGroup = (PopupGroupController);

// CONCATENATED MODULE: ./controllers/StepsModal.ts

var bodyDefaults = {
    title: '标题',
    content: {
        summary: '',
        features: [
            {
                title: '概览',
                content: {
                    img: '/logo.svg'
                }
            }
        ]
    },
    buttons: {}
};
var StepsModal_defaults = {
    body: [bodyDefaults],
    buttons: {
        skip: {
            className: 'blank',
            text: '跳过引导',
            action: function (app) {
                app.skip();
            }
        },
        prev: {
            className: 'blank',
            text: '上一步',
            action: function (app) {
                app.prev();
            }
        },
        next: {
            className: 'large orange',
            text: '下一步',
            action: function (app) {
                app.next();
            }
        }
    }
};
var StepsModal_StepsModalController = /** @class */ (function () {
    function StepsModalController(app, data) {
        var _this = this;
        this.visible = false;
        this.stepIndex = 0;
        this.featureIndex = 0;
        this.$currentStep = null;
        this.app = app;
        this.opts = $.extend({}, StepsModal_defaults, data);
        this.steps = this.opts.body.map(function (step) {
            return $.extend(true, { type: 'StepsModal' }, bodyDefaults, { buttons: _this.opts.buttons }, step);
        });
        this.timer = setInterval(function () { return _this.switchFeature(); }, 3000);
        this.$el = $(this.render());
        this.$modal = this.$el.find('.ui.modal');
        this.$progress = this.$el.find('.gitee-intro__steps-modal-progress');
        this.mount();
        this.activeStep(0);
        this.opts.body.forEach(function (step) {
            step.content.features.forEach(function (feature) {
                preloadImage(feature.content.img);
            });
        });
    }
    Object.defineProperty(StepsModalController.prototype, "currentStep", {
        get: function () {
            return this.steps[this.stepIndex];
        },
        enumerable: true,
        configurable: true
    });
    StepsModalController.prototype.render = function () {
        var _this = this;
        return "\n    <div class=\"gitee-intro__modal gitee-intro__steps-modal " + this.app.name + (this.opts.id ? "-" + this.opts.id : '') + "-modal\">\n      <div class=\"ui modal\">\n        <div class=\"content\">\n          " + this.renderProgress() + "\n          " + this.steps.map(function (step) { return _this.renderStep(step); }).join('') + "\n        </div>\n      </div>\n    </div>\n    ";
    };
    StepsModalController.prototype.renderStep = function (step) {
        var _a = step.buttons, skip = _a.skip, prev = _a.prev, next = _a.next;
        return "\n    <div class=\"gitee-intro__steps-modal-content\">\n      <div class=\"content\">\n        <div class=\"ui image\">\n          " + this.renderFeatureImages(step.content.features) + "\n        </div>\n        <div class=\"description\">\n          <div class=\"header\">" + step.title + "</div>\n          <p class=\"text-muted\">" + step.content.summary + "</p>\n          " + this.renderFeatures(step.content.features) + "\n        </div>\n      </div>\n      <div class=\"actions\">\n        " + (skip ?
            "<div class=\"ui button btn-skip " + (skip.className || '') + "\">\n            " + skip.text + "\n          </div>"
            : '') + "\n        " + (prev ?
            "<div class=\"ui button btn-prev " + (prev.className || '') + "\">\n            " + prev.text + "\n          </div>"
            : '') + "\n        " + (next ?
            "<div class=\"ui button btn-next " + (next.className || '') + "\">\n            " + next.text + "\n          </div>"
            : '') + "\n      </div>\n    </div>\n    ";
    };
    StepsModalController.prototype.renderFeatures = function (features) {
        var body = features.map(function (feature, index) {
            return "<li class=\"feature\" data-index=\"" + index + "\">\n        <a>" + feature.title + "</a>\n      </li>";
        }).join('');
        return "<ul class=\"features\">" + body + "</ul>";
    };
    StepsModalController.prototype.renderFeatureImages = function (features) {
        return features.map(function (feature) { return ("\n      <img class=\"feature-img\" src=\"" + feature.content.img + "\" alt=\"" + feature.title + "\">\n    "); }).join('');
    };
    StepsModalController.prototype.renderProgress = function () {
        return "<div class=\"gitee-intro__steps-modal-progress\">\n      <div class=\"divider\" />\n      <div class=\"completed divider\" />\n      " + this.steps.map(function () { return "<div class=\"step\" />"; }).join('') + "\n    </div>";
    };
    StepsModalController.prototype.updateProgress = function () {
        var _this = this;
        var percent = 100 * this.stepIndex / (this.steps.length - 1);
        this.$progress.find('.completed.divider').css('width', percent + "%");
        this.$progress.find('.step').each(function (index, el) {
            if (index < _this.stepIndex) {
                $(el).addClass('completed').removeClass('current');
            }
            else if (index === _this.stepIndex) {
                $(el).addClass('current').removeClass('completed');
            }
            else {
                $(el).removeClass('current completed');
            }
        });
    };
    StepsModalController.prototype.startFeatureWheel = function () {
        var _this = this;
        this.stopFeatureWheel();
        this.timer = this.timer = setInterval(function () { return _this.switchFeature(); }, 3000);
    };
    StepsModalController.prototype.stopFeatureWheel = function () {
        if (this.timer) {
            clearInterval(this.timer);
            this.timer = 0;
        }
    };
    StepsModalController.prototype.activeFeature = function (index) {
        if (!this.$currentStep) {
            return;
        }
        var $feature = this.$currentStep.find('.feature').eq(index);
        var $img = this.$currentStep.find('.feature-img').eq(index);
        $feature.addClass('active').siblings().removeClass('active');
        $img.addClass('active').siblings().removeClass('active');
        this.featureIndex = index;
    };
    StepsModalController.prototype.switchFeature = function () {
        var step = this.steps[this.stepIndex];
        if (this.featureIndex < step.content.features.length - 1) {
            this.activeFeature(this.featureIndex + 1);
        }
        else {
            this.activeFeature(0);
        }
    };
    StepsModalController.prototype.activeStep = function (index) {
        var $step = this.$el.find(".gitee-intro__steps-modal-content").eq(index);
        $step.addClass('active').siblings().removeClass('active');
        this.$currentStep = $step;
        this.stepIndex = index;
        if (this.visible && this.currentStep) {
            this.app.focus(this.currentStep.el);
        }
        else {
            this.app.focus();
        }
        this.activeFeature(0);
        this.updateProgress();
    };
    StepsModalController.prototype.mount = function () {
        var _this = this;
        var that = this;
        var activeFeature = this.activeFeature.bind(this);
        this.$el.on('mouseover', '.feature', function () {
            activeFeature($(this).data('index'));
            that.stopFeatureWheel();
        });
        this.$el.on('mouseleave', '.feature', function () {
            that.startFeatureWheel();
        });
        this.app.$overlay.append(this.$el);
        this.$modal.on('click', '.btn-skip', function () {
            var skip = _this.currentStep.buttons.skip;
            if (skip) {
                skip.action(_this.app);
            }
        });
        this.$modal.on('click', '.btn-prev', function () {
            var prev = _this.currentStep.buttons.prev;
            if (prev) {
                prev.action(_this.app);
            }
        });
        this.$modal.on('click', '.btn-next', function () {
            var next = _this.currentStep.buttons.next;
            if (next) {
                next.action(_this.app);
            }
        });
    };
    StepsModalController.prototype.enter = function (step) {
        var _this = this;
        this.visible = true;
        this.steps.some(function (s, index) {
            if (s === step) {
                _this.activeStep(index);
                return true;
            }
            return false;
        });
        this.$modal.show();
    };
    StepsModalController.prototype.leave = function () {
        this.visible = false;
        this.$modal.hide();
    };
    StepsModalController.prototype.destroy = function () {
        this.visible = false;
        this.$el.remove();
    };
    return StepsModalController;
}());
/* harmony default export */ var StepsModal = (StepsModal_StepsModalController);

// CONCATENATED MODULE: ./index.ts
var __extends = (undefined && undefined.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var __assign = (undefined && undefined.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};






var controllerMap = {
    Modal: Modal,
    GuideModal: GuideModal,
    StepsModal: StepsModal,
    PopupGroup: PopupGroup,
    Intro: Intro
};
var index_Application = /** @class */ (function () {
    function Application(_a) {
        var _this = this;
        var _b = _a.name, name = _b === void 0 ? 'intro' : _b, _c = _a.steps, steps = _c === void 0 ? [] : _c, _d = _a.hooks, hooks = _d === void 0 ? {} : _d;
        this.active = true;
        this.steps = [];
        this.stepsKeyMap = {};
        this.stepIndex = -1;
        this.controllers = [];
        this.hooks = {};
        this.$target = null;
        this.name = name;
        this.$container = $('body');
        this.$hole = $('<div class="gitee-intro__hole" />');
        this.$overlay = $('<div class="gitee-intro__overlay" />');
        this.$targetCover = $('<div class="gitee-intro__target-cover" />');
        this.$container.addClass('gitee-intro');
        this.$container.append(this.$overlay, this.$hole, this.$targetCover);
        this.onWindowResize = this.onWindowResize.bind(this);
        this.addHooks(hooks);
        this.onTargetCoverClick = function () {
            if (_this.$target) {
                if (_this.$target.data('clickEvent') === 'native') {
                    _this.$target[0].click();
                }
                else {
                    _this.$target.trigger('click');
                }
            }
        };
        this.onTargetCoverMouseOver = function () {
            if (_this.$target) {
                _this.$target.addClass('gitee-intro__target--hover');
            }
        };
        this.onTargetCoverMouseLeave = function () {
            if (_this.$target) {
                _this.$target.removeClass('gitee-intro__target--hover gitee-intro__target--active');
            }
        };
        this.onTargetCoverMouseDown = function () {
            if (_this.$target) {
                _this.$target.addClass('gitee-intro__target--active');
            }
        };
        this.onTargetCoverMouseUp = function () {
            if (_this.$target) {
                _this.$target.removeClass('gitee-intro__target--active');
            }
        };
        $(window).on('resize', this.onWindowResize);
        steps.forEach(function (data) {
            var ControllerClass = controllerMap[data.type];
            if (ControllerClass) {
                var controller_1 = new ControllerClass(_this, data);
                _this.controllers.push(controller_1);
                if (controller_1.steps) {
                    controller_1.steps.forEach(function (step) {
                        _this.appendStep(controller_1, step);
                    });
                }
                else {
                    _this.appendStep(controller_1, data);
                }
            }
            else {
                console.warn("ignore " + data.type);
            }
        });
    }
    Object.defineProperty(Application.prototype, "currentStep", {
        get: function () {
            return this.steps[this.stepIndex];
        },
        enumerable: true,
        configurable: true
    });
    Application.prototype.onWindowResize = function () {
        if (this.currentStep) {
            this.currentStep.controller.enter(this.currentStep.data);
        }
    };
    Application.prototype.appendStep = function (controller, data) {
        var step = { controller: controller, data: data };
        this.steps.push(step);
        if (data.id) {
            this.stepsKeyMap[data.id] = this.steps.length - 1;
        }
        return step;
    };
    Application.prototype.setTargetInteraction = function (enabled) {
        if (enabled) {
            this.$targetCover.on('click', this.onTargetCoverClick);
            this.$targetCover.on('mouseover', this.onTargetCoverMouseOver);
            this.$targetCover.on('mouseleave', this.onTargetCoverMouseLeave);
            this.$targetCover.on('mousedown', this.onTargetCoverMouseDown);
            this.$targetCover.on('mouseup', this.onTargetCoverMouseUp);
        }
        else {
            this.$targetCover.off('click', this.onTargetCoverClick);
            this.$targetCover.off('mouseover', this.onTargetCoverMouseOver);
            this.$targetCover.off('mouseleave', this.onTargetCoverMouseLeave);
            this.$targetCover.off('mousedown', this.onTargetCoverMouseDown);
            this.$targetCover.off('mouseup', this.onTargetCoverMouseUp);
            if (this.$target) {
                this.$target.removeClass('gitee-intro__target gitee-intro__target--active gitee-intro__target--hover');
            }
        }
    };
    Application.prototype.addHooks = function (hooks) {
        var _this = this;
        if (!hooks) {
            return;
        }
        Object.keys(hooks).forEach(function (name) {
            if (_this.hooks[name] instanceof Array) {
                _this.hooks[name].push(hooks[name]);
            }
            else {
                _this.hooks[name] = [hooks[name]];
            }
        });
    };
    Application.prototype.callHooks = function (name) {
        var args = [];
        for (var _i = 1; _i < arguments.length; _i++) {
            args[_i - 1] = arguments[_i];
        }
        var hooks = this.hooks[name];
        if (hooks instanceof Array) {
            hooks.forEach(function (hook) { return hook.apply(void 0, args); });
        }
    };
    Application.prototype.focus = function (el, introSize, position, spacing) {
        if (el === void 0) { el = ''; }
        if (introSize === void 0) { introSize = { width: 0, height: 0 }; }
        if (position === void 0) { position = 'auto'; }
        if (spacing === void 0) { spacing = { x: 0, y: 0 }; }
        if (!el) {
            if (this.$target) {
                this.$target.removeClass('gitee-intro__target');
                this.$targetCover.hide();
                this.$target = null;
            }
            this.$container.addClass('gitee-intro--no-hole');
            return { left: 0, top: 0 };
        }
        var $target = $(el);
        var style = __assign(__assign({}, $target.offset()), { width: $target.outerWidth(), height: $target.outerHeight() });
        if ($target.length < 1) {
            this.crash();
            return { left: 0, top: 0 };
        }
        this.$hole.css(style);
        this.$targetCover.css(style);
        this.$target = $target;
        this.$targetCover.show();
        this.$target.addClass('gitee-intro__target');
        this.$container.removeClass('gitee-intro--no-hole');
        return resolvePosition($target, introSize, position, spacing);
    };
    Application.prototype.skip = function () {
        this.finish();
    };
    Application.prototype.next = function () {
        if (!this.active) {
            return;
        }
        if (this.stepIndex < this.steps.length - 1) {
            this.goto(this.stepIndex + 1);
        }
        else {
            this.finish();
        }
    };
    Application.prototype.prev = function () {
        if (this.stepIndex > 0) {
            this.goto(this.stepIndex - 1);
        }
    };
    Application.prototype.goto = function (id) {
        var _this = this;
        var step;
        var index;
        var resolve = function () {
            _this.focus();
            _this.stepIndex = index;
            _this.callHooks('update', index);
            step.controller.enter(step.data, index, _this.steps.length);
        };
        var reject = function (showMMessage) {
            if (showMMessage === void 0) { showMMessage = true; }
            _this.crash(showMMessage);
        };
        if (typeof id === 'number') {
            index = id;
        }
        else {
            index = this.stepsKeyMap[id];
        }
        step = this.steps[index];
        if (this.stepIndex >= 0) {
            if (this.currentStep.controller !== step.controller) {
                this.currentStep.controller.leave();
            }
        }
        if (step.data.beforeEnter) {
            try {
                step.data.beforeEnter(resolve, reject);
            }
            catch (_err) {
                reject();
            }
        }
        else {
            resolve();
        }
    };
    Application.prototype.hide = function () {
        this.$hole.hide();
        this.$overlay.hide();
        this.$targetCover.hide();
    };
    Application.prototype.show = function () {
        this.$hole.show();
        this.$overlay.show();
        this.$targetCover.show();
    };
    Application.prototype.crash = function (showMMessage) {
        if (showMMessage === void 0) { showMMessage = true; }
        this.finish();
        if (showMMessage) {
            var helper = new window.GiteeModalHelper({ okText: '好的' });
            helper.alert('提示', '此页面的功能向导无法继续，可能是受到网络状态或浏览器插件的影响。');
        }
    };
    Application.prototype.start = function (index) {
        if (index === void 0) { index = 0; }
        this.goto(index);
    };
    Application.prototype.finish = function () {
        this.active = false;
        if (this.currentStep) {
            this.currentStep.controller.leave();
        }
        $(window).off('resize', this.onWindowResize);
        this.setTargetInteraction(false);
        this.controllers.forEach(function (controller) { return controller.destroy(); });
        this.$targetCover.remove();
        this.$overlay.remove();
        this.$hole.remove();
        this.callHooks('finish');
    };
    return Application;
}());
var GiteeIntro = /** @class */ (function (_super) {
    __extends(GiteeIntro, _super);
    function GiteeIntro() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    return GiteeIntro;
}(index_Application));
/* harmony default export */ var index = __webpack_exports__["default"] = (GiteeIntro);


/***/ })
/******/ ])["default"];
});