/**
* Kakao SDK for JavaScript - v1.43.0
*
* Copyright 2017 Kakao Corp.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
* OSS Notice | KakaoSDK-Javascript
*
* This application is Copyright © Kakao Corp. All rights reserved.
* The following sets forth attribution notices for third party software that may be contained in this application.
* If you have any questions or concerns, please contact us at opensource@kakaocorp.com
*
*
* crypto-js
*
* https://github.com/brix/crypto-js
*
* Copyright 2009-2013 Jeff Mott
* Copyright 2013-2016 Evan Vosberg
*
* MIT License
*
*
* easyXDM
*
* https://github.com/oyvindkinsey/easyXDM/
*
* Copyright 2009-2011 Øyvind Sean Kinsey, oyvind@kinsey.no
*
* MIT License
*
*
* ES6-Promise
*
* https://github.com/stefanpenner/es6-promise
*
* Copyright 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors
*
* MIT License
*
*
* Kakao Web2App Library
*
* https://github.com/kakao/web2app
*
* Copyright 2015 Kakao Corp. http://www.kakaocorp.com
*
* MIT License
*
*
* lodash
*
* https://github.com/lodash/lodash
*
* Copyright JS Foundation and other contributors
*
* MIT License
*
*
* ua_parser
*
* https://github.com/html5crew/ua_parser
*
* Copyright HTML5 Tech. Team in Daum Communications Corp.
*
* MIT License
*
*
* ``````````
* MIT License
*
* Copyright (c)
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* 'Software'), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ``````````
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Kakao = global.Kakao || {}));
})(this, (function (exports) { 'use strict';
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
var freeGlobal$1 = freeGlobal;
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
var root = freeGlobal$1 || freeSelf || Function('return this')();
var root$1 = root;
var Symbol$1 = root$1.Symbol;
var Symbol$2 = Symbol$1;
var objectProto$a = Object.prototype;
var hasOwnProperty$8 = objectProto$a.hasOwnProperty;
var nativeObjectToString$1 = objectProto$a.toString;
var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : undefined;
function getRawTag(value) {
var isOwn = hasOwnProperty$8.call(value, symToStringTag$1),
tag = value[symToStringTag$1];
try {
value[symToStringTag$1] = undefined;
var unmasked = true;
} catch (e) {}
var result = nativeObjectToString$1.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag$1] = tag;
} else {
delete value[symToStringTag$1];
}
}
return result;
}
var objectProto$9 = Object.prototype;
var nativeObjectToString = objectProto$9.toString;
function objectToString(value) {
return nativeObjectToString.call(value);
}
var nullTag = '[object Null]',
undefinedTag = '[object Undefined]';
var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : undefined;
function baseGetTag(value) {
if (value == null) {
return value === undefined ? undefinedTag : nullTag;
}
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
}
function isObjectLike(value) {
return value != null && typeof value == 'object';
}
var symbolTag = '[object Symbol]';
function isSymbol(value) {
return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;
}
var isArray = Array.isArray;
var isArray$1 = isArray;
var reWhitespace = /\s/;
function trimmedEndIndex(string) {
var index = string.length;
while (index-- && reWhitespace.test(string.charAt(index))) {}
return index;
}
var reTrimStart = /^\s+/;
function baseTrim(string) {
return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string;
}
function isObject(value) {
var type = typeof value;
return value != null && (type == 'object' || type == 'function');
}
var NAN = 0 / 0;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsOctal = /^0o[0-7]+$/i;
var freeParseInt = parseInt;
function toNumber(value) {
if (typeof value == 'number') {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject(value)) {
var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
value = isObject(other) ? other + '' : other;
}
if (typeof value != 'string') {
return value === 0 ? value : +value;
}
value = baseTrim(value);
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
var INFINITY = 1 / 0,
MAX_INTEGER = 1.7976931348623157e+308;
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber(value);
if (value === INFINITY || value === -INFINITY) {
var sign = value < 0 ? -1 : 1;
return sign * MAX_INTEGER;
}
return value === value ? value : 0;
}
function toInteger(value) {
var result = toFinite(value),
remainder = result % 1;
return result === result ? remainder ? result - remainder : result : 0;
}
function identity(value) {
return value;
}
var asyncTag = '[object AsyncFunction]',
funcTag$1 = '[object Function]',
genTag = '[object GeneratorFunction]',
proxyTag = '[object Proxy]';
function isFunction(value) {
if (!isObject(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;
}
var coreJsData = root$1['__core-js_shared__'];
var coreJsData$1 = coreJsData;
var maskSrcKey = function () {
var uid = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.keys.IE_PROTO || '');
return uid ? 'Symbol(src)_1.' + uid : '';
}();
function isMasked(func) {
return !!maskSrcKey && maskSrcKey in func;
}
var funcProto$2 = Function.prototype;
var funcToString$2 = funcProto$2.toString;
function toSource(func) {
if (func != null) {
try {
return funcToString$2.call(func);
} catch (e) {}
try {
return func + '';
} catch (e) {}
}
return '';
}
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var funcProto$1 = Function.prototype,
objectProto$8 = Object.prototype;
var funcToString$1 = funcProto$1.toString;
var hasOwnProperty$7 = objectProto$8.hasOwnProperty;
var reIsNative = RegExp('^' + funcToString$1.call(hasOwnProperty$7).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
function baseIsNative(value) {
if (!isObject(value) || isMasked(value)) {
return false;
}
var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
return pattern.test(toSource(value));
}
function getValue(object, key) {
return object == null ? undefined : object[key];
}
function getNative(object, key) {
var value = getValue(object, key);
return baseIsNative(value) ? value : undefined;
}
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
var HOT_COUNT = 800,
HOT_SPAN = 16;
var nativeNow = Date.now;
function shortOut(func) {
var count = 0,
lastCalled = 0;
return function () {
var stamp = nativeNow(),
remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
if (++count >= HOT_COUNT) {
return arguments[0];
}
} else {
count = 0;
}
return func.apply(undefined, arguments);
};
}
function constant(value) {
return function () {
return value;
};
}
var defineProperty = function () {
try {
var func = getNative(Object, 'defineProperty');
func({}, '', {});
return func;
} catch (e) {}
}();
var defineProperty$1 = defineProperty;
var baseSetToString = !defineProperty$1 ? identity : function (func, string) {
return defineProperty$1(func, 'toString', {
'configurable': true,
'enumerable': false,
'value': constant(string),
'writable': true
});
};
var baseSetToString$1 = baseSetToString;
var setToString = shortOut(baseSetToString$1);
var setToString$1 = setToString;
function arrayEach(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
break;
}
}
return array;
}
var MAX_SAFE_INTEGER$1 = 9007199254740991;
var reIsUint = /^(?:0|[1-9]\d*)$/;
function isIndex(value, length) {
var type = typeof value;
length = length == null ? MAX_SAFE_INTEGER$1 : length;
return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
}
function baseAssignValue(object, key, value) {
if (key == '__proto__' && defineProperty$1) {
defineProperty$1(object, key, {
'configurable': true,
'enumerable': true,
'value': value,
'writable': true
});
} else {
object[key] = value;
}
}
function eq(value, other) {
return value === other || value !== value && other !== other;
}
var objectProto$7 = Object.prototype;
var hasOwnProperty$6 = objectProto$7.hasOwnProperty;
function assignValue(object, key, value) {
var objValue = object[key];
if (!(hasOwnProperty$6.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {
baseAssignValue(object, key, value);
}
}
function copyObject(source, props, object, customizer) {
var isNew = !object;
object || (object = {});
var index = -1,
length = props.length;
while (++index < length) {
var key = props[index];
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;
if (newValue === undefined) {
newValue = source[key];
}
if (isNew) {
baseAssignValue(object, key, newValue);
} else {
assignValue(object, key, newValue);
}
}
return object;
}
var nativeMax = Math.max;
function overRest(func, start, transform) {
start = nativeMax(start === undefined ? func.length - 1 : start, 0);
return function () {
var args = arguments,
index = -1,
length = nativeMax(args.length - start, 0),
array = Array(length);
while (++index < length) {
array[index] = args[start + index];
}
index = -1;
var otherArgs = Array(start + 1);
while (++index < start) {
otherArgs[index] = args[index];
}
otherArgs[start] = transform(array);
return apply(func, this, otherArgs);
};
}
function baseRest(func, start) {
return setToString$1(overRest(func, start, identity), func + '');
}
var MAX_SAFE_INTEGER = 9007199254740991;
function isLength(value) {
return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
function isIterateeCall(value, index, object) {
if (!isObject(object)) {
return false;
}
var type = typeof index;
if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {
return eq(object[index], value);
}
return false;
}
function createAssigner(assigner) {
return baseRest(function (object, sources) {
var index = -1,
length = sources.length,
customizer = length > 1 ? sources[length - 1] : undefined,
guard = length > 2 ? sources[2] : undefined;
customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
customizer = length < 3 ? undefined : customizer;
length = 1;
}
object = Object(object);
while (++index < length) {
var source = sources[index];
if (source) {
assigner(object, source, index, customizer);
}
}
return object;
});
}
var objectProto$6 = Object.prototype;
function isPrototype(value) {
var Ctor = value && value.constructor,
proto = typeof Ctor == 'function' && Ctor.prototype || objectProto$6;
return value === proto;
}
function baseTimes(n, iteratee) {
var index = -1,
result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
var argsTag$1 = '[object Arguments]';
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag$1;
}
var objectProto$5 = Object.prototype;
var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
var propertyIsEnumerable = objectProto$5.propertyIsEnumerable;
var isArguments = baseIsArguments(function () {
return arguments;
}()) ? baseIsArguments : function (value) {
return isObjectLike(value) && hasOwnProperty$5.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
};
var isArguments$1 = isArguments;
function stubFalse() {
return false;
}
var freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports;
var freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module;
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
var Buffer = moduleExports$1 ? root$1.Buffer : undefined;
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
var isBuffer = nativeIsBuffer || stubFalse;
var isBuffer$1 = isBuffer;
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
boolTag$1 = '[object Boolean]',
dateTag = '[object Date]',
errorTag = '[object Error]',
funcTag = '[object Function]',
mapTag = '[object Map]',
numberTag$1 = '[object Number]',
objectTag$1 = '[object Object]',
regexpTag = '[object RegExp]',
setTag = '[object Set]',
stringTag$1 = '[object String]',
weakMapTag = '[object WeakMap]';
var arrayBufferTag = '[object ArrayBuffer]',
dataViewTag = '[object DataView]',
float32Tag = '[object Float32Array]',
float64Tag = '[object Float64Array]',
int8Tag = '[object Int8Array]',
int16Tag = '[object Int16Array]',
int32Tag = '[object Int32Array]',
uint8Tag = '[object Uint8Array]',
uint8ClampedTag = '[object Uint8ClampedArray]',
uint16Tag = '[object Uint16Array]',
uint32Tag = '[object Uint32Array]';
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$1] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag] = false;
function baseIsTypedArray(value) {
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseUnary(func) {
return function (value) {
return func(value);
};
}
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
var moduleExports = freeModule && freeModule.exports === freeExports;
var freeProcess = moduleExports && freeGlobal$1.process;
var nodeUtil = function () {
try {
var types = freeModule && freeModule.require && freeModule.require('util').types;
if (types) {
return types;
}
return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {}
}();
var nodeUtil$1 = nodeUtil;
var nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.isTypedArray;
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
var isTypedArray$1 = isTypedArray;
var objectProto$4 = Object.prototype;
var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
function arrayLikeKeys(value, inherited) {
var isArr = isArray$1(value),
isArg = !isArr && isArguments$1(value),
isBuff = !isArr && !isArg && isBuffer$1(value),
isType = !isArr && !isArg && !isBuff && isTypedArray$1(value),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? baseTimes(value.length, String) : [],
length = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty$4.call(value, key)) && !(skipIndexes && (
key == 'length' ||
isBuff && (key == 'offset' || key == 'parent') ||
isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||
isIndex(key, length)))) {
result.push(key);
}
}
return result;
}
function overArg(func, transform) {
return function (arg) {
return func(transform(arg));
};
}
var nativeKeys = overArg(Object.keys, Object);
var nativeKeys$1 = nativeKeys;
var objectProto$3 = Object.prototype;
var hasOwnProperty$3 = objectProto$3.hasOwnProperty;
function baseKeys(object) {
if (!isPrototype(object)) {
return nativeKeys$1(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty$3.call(object, key) && key != 'constructor') {
result.push(key);
}
}
return result;
}
function keys$1(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
function nativeKeysIn(object) {
var result = [];
if (object != null) {
for (var key in Object(object)) {
result.push(key);
}
}
return result;
}
var objectProto$2 = Object.prototype;
var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
function baseKeysIn(object) {
if (!isObject(object)) {
return nativeKeysIn(object);
}
var isProto = isPrototype(object),
result = [];
for (var key in object) {
if (!(key == 'constructor' && (isProto || !hasOwnProperty$2.call(object, key)))) {
result.push(key);
}
}
return result;
}
function keysIn(object) {
return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
}
var assignIn = createAssigner(function (object, source) {
copyObject(source, keysIn(source), object);
});
var extend = assignIn;
var getPrototype = overArg(Object.getPrototypeOf, Object);
var getPrototype$1 = getPrototype;
var objectTag = '[object Object]';
var funcProto = Function.prototype,
objectProto$1 = Object.prototype;
var funcToString = funcProto.toString;
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
var objectCtorString = funcToString.call(Object);
function isPlainObject(value) {
if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
return false;
}
var proto = getPrototype$1(value);
if (proto === null) {
return true;
}
var Ctor = hasOwnProperty$1.call(proto, 'constructor') && proto.constructor;
return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
}
function createBaseFor(fromRight) {
return function (object, iteratee, keysFunc) {
var index = -1,
iterable = Object(object),
props = keysFunc(object),
length = props.length;
while (length--) {
var key = props[fromRight ? length : ++index];
if (iteratee(iterable[key], key, iterable) === false) {
break;
}
}
return object;
};
}
var baseFor = createBaseFor();
var baseFor$1 = baseFor;
function baseForOwn(object, iteratee) {
return object && baseFor$1(object, iteratee, keys$1);
}
function createBaseEach(eachFunc, fromRight) {
return function (collection, iteratee) {
if (collection == null) {
return collection;
}
if (!isArrayLike(collection)) {
return eachFunc(collection, iteratee);
}
var length = collection.length,
index = fromRight ? length : -1,
iterable = Object(collection);
while (fromRight ? index-- : ++index < length) {
if (iteratee(iterable[index], index, iterable) === false) {
break;
}
}
return collection;
};
}
var baseEach = createBaseEach(baseForOwn);
var baseEach$1 = baseEach;
var objectProto = Object.prototype;
var hasOwnProperty = objectProto.hasOwnProperty;
var defaults = baseRest(function (object, sources) {
object = Object(object);
var index = -1;
var length = sources.length;
var guard = length > 2 ? sources[2] : undefined;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
length = 1;
}
while (++index < length) {
var source = sources[index];
var props = keysIn(source);
var propsIndex = -1;
var propsLength = props.length;
while (++propsIndex < propsLength) {
var key = props[propsIndex];
var value = object[key];
if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {
object[key] = source[key];
}
}
}
return object;
});
var defaults$1 = defaults;
function castFunction(value) {
return typeof value == 'function' ? value : identity;
}
function forEach(collection, iteratee) {
var func = isArray$1(collection) ? arrayEach : baseEach$1;
return func(collection, castFunction(iteratee));
}
var stringTag = '[object String]';
function isString(value) {
return typeof value == 'string' || !isArray$1(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
}
var boolTag = '[object Boolean]';
function isBoolean(value) {
return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
}
function isElement(value) {
return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
}
function isInteger(value) {
return typeof value == 'number' && value == toInteger(value);
}
var numberTag = '[object Number]';
function isNumber(value) {
return typeof value == 'number' || isObjectLike(value) && baseGetTag(value) == numberTag;
}
function checkObjType(type) {
return function (e) {
return Object.prototype.toString.call(e) === "[object ".concat(type, "]");
};
}
function isBlob(b) {
return checkObjType('Blob')(b);
}
function isFile(f) {
return checkObjType('File')(f);
}
function isFileList(fl) {
return checkObjType('FileList')(fl);
}
function isURL(u) {
var urlRegex = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;
return urlRegex.test(u);
}
function isJSONString(s) {
try {
JSON.parse(s);
} catch (e) {
return false;
}
return true;
}
function map(arr, fn) {
return Array.prototype.slice.call(arr).map(fn);
}
function every(arr, fn) {
return Array.prototype.slice.call(arr).every(fn);
}
function difference(a0, a1) {
var arrays = [a0, a1];
return arrays.reduce(function (a, b) {
return a.filter(function (c) {
return b.indexOf(c) === -1;
});
});
}
function keys(e) {
return Object.keys(e || {});
}
function emptyFunc() {
}
function getRandomString() {
return Math.random().toString(36).slice(2);
}
function getElement(e) {
if (isElement(e)) {
return e;
} else if (isString(e)) {
return document.querySelector(e);
} else {
return null;
}
}
function addEvent(target, type, callback) {
if (target.addEventListener) {
target.addEventListener(type, callback, false);
}
}
function removeEvent(target, type, callback) {
if (target.removeEventListener) {
target.removeEventListener(type, callback, false);
}
}
function buildQueryString(params) {
var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var esc = encode ? encodeURIComponent : function (e) {
return e;
};
var ret = map(keys(params), function (k) {
var v = params[k];
return esc(k) + '=' + esc(isObjectLike(v) ? JSON.stringify(v) : v);
});
return ret.join('&');
}
function ab2str(buf) {
var bytes = Array.prototype.slice.call(new Uint8Array(buf));
return bytes.reduce(function (acc, b) {
return acc + String.fromCharCode.apply(null, [b]);
}, '');
}
function isOneOf(elements) {
if (!isArray$1(elements)) {
throw new Error('elements should be an Array');
}
return function (e) {
return elements.indexOf(e) > -1;
};
}
function passesOneOf(validators) {
if (!isArray$1(validators)) {
throw new Error('validators should be an Array');
}
return function (e) {
return validators.some(function (v) {
return v(e);
});
};
}
var localStorage = function () {
var polyfill = {
_data: {},
setItem: function setItem(id, val) {
return this._data[id] = String(val);
},
getItem: function getItem(id) {
return this._data.hasOwnProperty(id) ? this._data[id] : null;
},
removeItem: function removeItem(id) {
return delete this._data[id];
},
clear: function clear() {
return this._data = {};
}
};
try {
if ('localStorage' in window && window['localStorage'] !== null) {
window.localStorage.setItem('store', '');
window.localStorage.removeItem('store');
return window.localStorage;
} else {
return polyfill;
}
} catch (e) {
return polyfill;
}
}();
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
}, _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
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);
Object.defineProperty(Constructor, "prototype", {
writable: false
});
return Constructor;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
Object.defineProperty(subClass, "prototype", {
writable: false
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
function _isNativeReflectConstruct() {
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
if (Reflect.construct.sham) return false;
if (typeof Proxy === "function") return true;
try {
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
return true;
} catch (e) {
return false;
}
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _possibleConstructorReturn(self, call) {
if (call && (typeof call === "object" || typeof call === "function")) {
return call;
} else if (call !== void 0) {
throw new TypeError("Derived constructors may only return object or undefined");
}
return _assertThisInitialized(self);
}
function _createSuper(Derived) {
var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function _createSuperInternal() {
var Super = _getPrototypeOf(Derived),
result;
if (hasNativeReflectConstruct) {
var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget);
} else {
result = Super.apply(this, arguments);
}
return _possibleConstructorReturn(this, result);
};
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_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;
}
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);
}
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;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
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.");
}
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
var ua_parser = function () {
if (!Array.isArray) {
Array.isArray = function (arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
function checkUserAgent(ua) {
var browser = {};
var match = /(dolfin)[ \/]([\w.]+)/.exec(ua) || /(edge)[ \/]([\w.]+)/.exec(ua) || /(chrome)[ \/]([\w.]+)/.exec(ua) || /(tizen)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version)?[ \/]([\w.]+)/.exec(ua) || /(webkit)(?:.*version)?[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(ua) || ["", "unknown"];
if (match[1] === "webkit") {
match = /(iphone|ipad|ipod)[\S\s]*os ([\w._\-]+) like/.exec(ua) || /(android)[ \/]([\w._\-]+);/.exec(ua) || [match[0], "safari", match[2]];
} else if (match[1] === "mozilla") {
if (/trident/.test(ua)) {
match[1] = "msie";
} else {
match[1] = "firefox";
}
} else if (/polaris|natebrowser|([010|011|016|017|018|019]{3}\d{3,4}\d{4}$)/.test(ua)) {
match[1] = "polaris";
}
browser[match[1]] = true;
browser.name = match[1];
browser.version = setVersion(match[2]);
return browser;
}
function setVersion(versionString) {
var version = {};
var versions = versionString ? versionString.split(/\.|-|_/) : ["0", "0", "0"];
version.info = versions.join(".");
version.major = versions[0] || "0";
version.minor = versions[1] || "0";
version.patch = versions[2] || "0";
return version;
}
function checkPlatform(ua) {
if (isTablet(ua)) {
return "tablet";
} else if (isPc(ua)) {
return "pc";
} else if (isMobile(ua)) {
return "mobile";
} else {
return "";
}
}
function isPc(ua) {
if (ua.match(/linux|windows (nt|98)|macintosh|cros/) && !ua.match(/android|mobile|polaris|lgtelecom|uzard|natebrowser|ktf;|skt;/)) {
return true;
}
return false;
}
function isTablet(ua) {
if (ua.match(/ipad/) || ua.match(/android/) && !ua.match(/mobi|mini|fennec/) || ua.match(/macintosh/) && window.navigator.maxTouchPoints > 1) {
return true;
}
return false;
}
function isMobile(ua) {
if (!!ua.match(/ip(hone|od)|android.+mobile|windows (ce|phone)|blackberry|bb10|symbian|webos|firefox.+fennec|opera m(ob|in)i|tizen.+mobile|polaris|iemobile|lgtelecom|nokia|sonyericsson|dolfin|uzard|natebrowser|ktf;|skt;/)) {
return true;
} else {
return false;
}
}
function checkOs(ua) {
var os = {},
match = /(iphone|ipad|ipod)[\S\s]*os ([\w._\-]+) like/.exec(ua) || (/polaris|natebrowser|([010|011|016|017|018|019]{3}\d{3,4}\d{4}$)/.test(ua) ? ["", "polaris", "0.0.0"] : false) || /(windows)(?: nt | phone(?: os){0,1} | )([\w._\-]+)/.exec(ua) || /(android)[ \/]([\w._\-]+);/.exec(ua) || (/android/.test(ua) ? ["", "android", "0.0.0"] : false) || (/(windows)/.test(ua) ? ["", "windows", "0.0.0"] : false) || /(mac) os x ([\w._\-]+)/.exec(ua) || /(tizen)[ \/]([\w._\-]+);/.exec(ua) || (/(linux)/.test(ua) ? ["", "linux", "0.0.0"] : false) || (/webos/.test(ua) ? ["", "webos", "0.0.0"] : false) || /(cros)(?:\s[\w]+\s)([\d._\-]+)/.exec(ua) || /(bada)[ \/]([\w._\-]+)/.exec(ua) || (/bada/.test(ua) ? ["", "bada", "0.0.0"] : false) || (/(rim|blackberry|bb10)/.test(ua) ? ["", "blackberry", "0.0.0"] : false) || ["", "unknown", "0.0.0"];
if (match[1] === "iphone" || match[1] === "ipad" || match[1] === "ipod") {
match[1] = "ios";
} else if (match[1] === "windows" && match[2] === "98") {
match[2] = "0.98.0";
}
if (match[1] === "mac" && typeof window !== 'undefined' && window.navigator.maxTouchPoints > 1) {
match[1] = "ios";
}
if (match[1] === 'cros') {
match[1] = "chrome";
}
os[match[1]] = true;
os.name = match[1];
os.version = setVersion(match[2]);
return os;
}
var baseAppList = ['crios', 'fxios', 'daumapps'];
function checkApp(ua, customAppList) {
var app = {},
match = null,
checkAppList = baseAppList;
if (Array.isArray(customAppList)) {
checkAppList = baseAppList.concat(customAppList);
} else if (typeof customAppList === 'string') {
checkAppList = baseAppList.concat([customAppList]);
}
for (var i = 0, len = checkAppList.length; i < len; i += 1) {
var appname = checkAppList[i];
var regex = new RegExp('(' + appname + ')[ \\/]([\\w._\\-]+)');
match = regex.exec(ua);
if (match) {
break;
}
}
if (!match) {
match = ["", ""];
}
if (match[1]) {
app.isApp = true;
app.name = match[1];
app.version = setVersion(match[2]);
} else {
app.isApp = false;
}
return app;
}
function getLowerUserAgent(ua) {
var lowerUa = '';
if (!ua) {
if (typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgent === 'string') {
lowerUa = window.navigator.userAgent.toLowerCase();
} else {
lowerUa = '';
}
} else {
lowerUa = ua.toLowerCase();
}
return lowerUa;
}
var userAgent = function userAgent(ua, customAppList) {
var lowerUa = getLowerUserAgent(ua);
return {
ua: lowerUa,
browser: checkUserAgent(lowerUa),
platform: checkPlatform(lowerUa),
os: checkOs(lowerUa),
app: checkApp(lowerUa, customAppList)
};
};
return userAgent;
}();
var ua_parser$1 = ua_parser;
var UA$1 = ua_parser$1();
function getOrigin() {
var _location = location,
protocol = _location.protocol,
hostname = _location.hostname,
port = _location.port;
return "".concat(protocol, "//").concat(hostname).concat(port ? ':' + port : '');
}
function getNavigator() {
return navigator;
}
function getUA() {
return UA$1;
}
var ACCOUNT = "https://accounts.kakao.com";
var AUTH = "https://kauth.kakao.com";
var API$2 = "https://kapi.kakao.com";
var SHARER_DOMAIN = "https://sharer.kakao.com";
var PICKER_DOMAIN = "https://friend-picker.kakao.com";
var APPS_DOMAIN = "https://apps.kakao.com";
var CHANNEL = "https://pf.kakao.com";
var STORY = "https://story.kakao.com";
var STORY_POST_SCHEME = "storylink://posting";
var REDIRECT_URI = "JS-SDK";
var UNIVERSAL_LINK = "https://talk-apps.kakao.com";
var TALK_LOGIN_SCHEME = "kakaokompassauth://authorize";
var TALK_LOGIN_REDIRECT_URI = "https://kapi.kakao.com/cors/afterlogin.html";
var TALK_INAPP_SCHEME = "kakaotalk://inappbrowser";
var TALK_SYNCPLUGIN_SCHEME = "kakaotalk://bizplugin?plugin_id=6011263b74fc2b49c73a7298";
var TALK_LINK_SCHEME = "kakaolink://send";
var TALK_ANDROID_PACKAGE = "com.kakao.talk";
var NAVI_SCHEME = "kakaonavi-sdk://navigate";
var NAVI_FALLBACK_URL = "https://kakaonavi.kakao.com/launch/index.do";
var DEVELOPERS = "https://developers.kakao.com";
var origin = getOrigin();
var UA = getUA();
var isTalkWebview = /KAKAOTALK/i.test(UA.ua);
var VERSION = "1.43.0".concat('');
var navigator$1 = getNavigator();
var KAKAO_AGENT = ["sdk/".concat(VERSION), 'os/javascript', 'sdk_type/javascript', "lang/".concat(navigator$1.userLanguage || navigator$1.language), "device/".concat(navigator$1.platform.replace(/ /g, '_')), "origin/".concat(encodeURIComponent(origin))].join(' ');
var URL = {
accountDomain: ACCOUNT,
authDomain: AUTH,
authorize: "".concat(AUTH, "/oauth/authorize"),
loginWidget: "".concat(AUTH, "/public/widget/login/kakaoLoginWidget.html"),
redirectUri: REDIRECT_URI,
universalKakaoLink: "".concat(UNIVERSAL_LINK, "/scheme/"),
talkLoginScheme: TALK_LOGIN_SCHEME,
talkLoginRedirectUri: TALK_LOGIN_REDIRECT_URI,
talkInappScheme: TALK_INAPP_SCHEME,
talkSyncpluginScheme: TALK_SYNCPLUGIN_SCHEME,
apiRemote: "".concat(API$2, "/cors/"),
sharerDomain: SHARER_DOMAIN,
pickerDomain: PICKER_DOMAIN,
appsDomain: APPS_DOMAIN,
talkLinkScheme: TALK_LINK_SCHEME,
talkAndroidPackage: TALK_ANDROID_PACKAGE,
channel: CHANNEL,
channelIcon: "".concat(DEVELOPERS, "/assets/img/about/logos"),
storyShare: "".concat(STORY, "/s/share"),
storyChannelFollow: "".concat(STORY, "/s/follow"),
storyIcon: "".concat(DEVELOPERS, "/sdk/js/resources/story/icon_small.png"),
storyPostScheme: STORY_POST_SCHEME,
naviScheme: NAVI_SCHEME,
naviFallback: NAVI_FALLBACK_URL
};
var appKey$1 = null;
function getAppKey$1() {
return appKey$1;
}
function setAppKey(_appKey) {
appKey$1 = _appKey;
}
function KakaoError(message) {
Error.prototype.constructor.apply(this, arguments);
this.name = 'KakaoError';
this.message = message;
}
KakaoError.prototype = new Error();
function logDebug(obj) {
}
function makeModule(subModules) {
var module = extend.apply(void 0, [{
cleanup: function cleanup() {
forEach(subModules, function (e) {
return e.cleanup && e.cleanup();
});
}
}].concat(_toConsumableArray(subModules)));
return module;
}
function emptyCleanups(cleanups) {
forEach(cleanups, function (fn) {
fn();
});
cleanups.length = 0;
}
function validate(target, validator, callerMsg) {
if (validator(target) === false) {
throw new KakaoError("Illegal argument for ".concat(callerMsg));
}
}
function processRules() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var rules = arguments.length > 1 ? arguments[1] : undefined;
var callerMsg = arguments.length > 2 ? arguments[2] : undefined;
if (!isObjectLike(params)) {
throw new Error('params should be an Object');
}
if (isFunction(rules.before)) {
rules.before(params);
}
if (isFunction(rules.defaults)) {
defaults$1(params, rules.defaults(params));
} else {
defaults$1(params, rules.defaults);
}
var _rules$required = rules.required,
required = _rules$required === void 0 ? {} : _rules$required,
_rules$optional = rules.optional,
optional = _rules$optional === void 0 ? {} : _rules$optional;
var missingRequiredKeys = difference(keys(required), keys(params));
if (missingRequiredKeys.length > 0) {
throw new KakaoError("Missing required keys: ".concat(missingRequiredKeys.join(','), " at ").concat(callerMsg));
}
var allowed = extend({}, required, optional);
var invalidKeys = difference(keys(params), keys(allowed));
if (invalidKeys.length > 0) {
throw new KakaoError("Invalid parameter keys: ".concat(invalidKeys.join(','), " at ").concat(callerMsg));
}
forEach(params, function (value, key) {
validate(value, allowed[key], "\"".concat(key, "\" in ").concat(callerMsg));
});
if (isFunction(rules.after)) {
rules.after(params);
}
return params;
}
function generateTxId() {
var tranId = Math.random().toString(36).slice(2) + getAppKey$1() + Date.now().toString(36);
return tranId.slice(0, 60);
}
function getInstallUrl(androidAppId, iOSAppId) {
if (UA.os.android) {
var referrer = JSON.stringify({
appKey: appKey$1,
KA: KAKAO_AGENT
});
return "market://details?id=".concat(androidAppId, "&referrer=").concat(referrer);
} else if (UA.os.ios) {
return "https://itunes.apple.com/app/id".concat(iOSAppId);
} else {
return location.href;
}
}
function guardCreateEasyXDM(createEasyXDM) {
try {
return createEasyXDM();
} catch (e) {
if (e instanceof TypeError) {
throw new KakaoError('kakao.js should be loaded from a web server');
} else {
throw new KakaoError("EasyXDM - ".concat(e.message));
}
}
}
var popupWindows = {};
function windowOpen(url, name, feature) {
var popupWindow = popupWindows[name];
if (popupWindow && popupWindow.close && !popupWindow.closed) {
popupWindow.close();
}
popupWindows[name] = window.open(url, name, feature);
return popupWindows[name];
}
function applyAttributes(settings, container$, mapper) {
forEach(mapper, function (value, key) {
var attr = container$.getAttribute(value);
if (attr !== null) {
settings[key] = attr === 'true' || attr === 'false' ? attr === 'true' : attr;
}
});
}
function createHiddenIframe(id, src, cleanups) {
var iframe = document.createElement('iframe');
iframe.id = iframe.name = id;
iframe.src = src;
iframe.setAttribute('style', 'border:none; width:0; height:0; display:none; overflow:hidden;');
document.body.appendChild(iframe);
cleanups.push(function () {
document.body.removeChild(iframe);
});
}
function addMessageEvent(settings, requestDomain, cleanups) {
var callback = function callback(_ref) {
var data = _ref.data,
origin = _ref.origin;
if (data && origin === requestDomain) {
var resp = JSON.parse(data);
if (resp.code) {
settings.fail(resp);
} else {
settings.success(resp);
}
settings.always(resp);
removeEvent(window, 'message', callback);
}
};
addEvent(window, 'message', callback);
cleanups.push(function () {
removeEvent(window, 'message', callback);
});
}
function openPopupAndSubmitForm(params, popupParams) {
var url = popupParams.url,
popupName = popupParams.popupName,
popupFeatures = popupParams.popupFeatures;
var popup = UA.browser.msie ? {} : windowOpen('', popupName, popupFeatures);
if (popup.focus) {
popup.focus();
}
createAndSubmitForm(params, url, popupName);
return popup;
}
function createAndSubmitForm(params, url) {
var popupName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var form = document.createElement('form');
form.setAttribute('accept-charset', 'utf-8');
form.setAttribute('method', 'post');
form.setAttribute('action', url);
form.setAttribute('target', popupName);
form.setAttribute('style', 'display:none');
forEach(params, function (value, key) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = key;
input.value = isString(value) ? value : JSON.stringify(value);
form.appendChild(input);
});
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
var eventObserverMap = {};
function subscribe(eventName, observer) {
eventObserverMap[eventName] = eventObserverMap[eventName] || [];
eventObserverMap[eventName].push(observer);
}
function unsubscribe(eventName, observer) {
var observers = eventObserverMap[eventName];
for (var i = 0; i < observers.length; i++) {
if (observers[i] === observer) {
observers.splice(i, 1);
return;
}
}
}
function dispatch(eventName) {
forEach(eventObserverMap[eventName], function (observer) {
observer();
});
}
var eventObserver = {
subscribe: subscribe,
unsubscribe: unsubscribe,
dispatch: dispatch
};
var Poller = function () {
function Poller(interval, maxCount) {
_classCallCheck(this, Poller);
this._interval = interval;
this._maxCount = maxCount;
this._count = 0;
this._stopped = false;
this._timeout = null;
}
_createClass(Poller, [{
key: "start",
value: function start(pollFunc, failFunc) {
if (this._timeout !== null) {
this.stop();
}
this._count = 0;
this._stopped = false;
this._doPolling(pollFunc, failFunc);
}
}, {
key: "_doPolling",
value: function _doPolling(pollFunc, failFunc) {
var _this = this;
if (this._stopped) return;
this._timeout = setTimeout(function () {
if (++_this._count > _this._maxCount) {
failFunc();
} else {
pollFunc();
_this._doPolling(pollFunc, failFunc);
}
}, this._interval);
}
}, {
key: "stop",
value: function stop() {
this._stopped = true;
clearTimeout(this._timeout);
this._timeout = null;
}
}]);
return Poller;
}();
var defaultCallbacks = {
success: emptyFunc,
fail: emptyFunc,
always: emptyFunc
};
var loginDefaultSettings = _objectSpread2({
throughTalk: true,
persistAccessToken: true,
persistRefreshToken: false
}, defaultCallbacks);
var loginCommonSettings = {
success: isFunction,
fail: isFunction,
always: isFunction,
persistAccessToken: isBoolean,
persistRefreshToken: isBoolean,
approvalType: isOneOf(['project']),
scope: isString,
throughTalk: isBoolean,
plusFriendPublicId: isString,
channelPublicId: isString,
serviceTerms: isString,
redirectUri: isString,
state: isString,
deviceType: isOneOf(['watch', 'tv']),
nonce: isString
};
var shippingAddressSettings = {
optional: {
success: isFunction,
fail: isFunction,
always: isFunction,
close: isFunction,
returnUrl: isString,
forceMobileLayout: isBoolean,
enableBackButton: isBoolean
},
defaults: _objectSpread2(_objectSpread2({}, defaultCallbacks), {}, {
close: emptyFunc,
forceMobileLayout: false,
enableBackButton: true
})
};
var rules$8 = {
createLoginButton: {
required: {
container: passesOneOf([isElement, isString])
},
optional: _objectSpread2({
lang: isOneOf(['en', 'kr']),
size: isOneOf(['small', 'medium', 'large'])
}, loginCommonSettings),
defaults: _objectSpread2({
lang: 'kr',
size: 'medium'
}, loginDefaultSettings)
},
login: {
optional: loginCommonSettings,
defaults: loginDefaultSettings
},
authorize: {
optional: {
redirectUri: isString,
approvalType: isOneOf(['project']),
scope: isString,
throughTalk: isBoolean,
plusFriendPublicId: isString,
channelPublicId: isString,
serviceTerms: isString,
isPopup: isBoolean,
state: isString,
autoLogin: isBoolean,
deviceType: isOneOf(['watch', 'tv']),
prompts: isString,
reauthenticate: isBoolean,
throughSyncplugin: isBoolean,
loginHint: isString,
nonce: isString,
success: isFunction,
fail: isFunction,
always: isFunction
},
defaults: _objectSpread2({
throughTalk: true,
isPopup: false,
reauthenticate: false,
throughSyncplugin: true
}, defaultCallbacks)
},
autoLogin: {
optional: {
success: isFunction,
fail: isFunction,
always: isFunction
},
defaults: defaultCallbacks
},
issueAccessToken: {
required: {
code: isString,
redirectUri: isString
},
optional: {
success: isFunction,
fail: isFunction,
always: isFunction
},
defaults: defaultCallbacks
},
selectShippingAddress: shippingAddressSettings,
createShippingAddress: shippingAddressSettings,
updateShippingAddress: _objectSpread2({
required: {
addressId: isInteger
}
}, shippingAddressSettings)
};
function openLoginPopup(url) {
var LOGIN_POPUP_NAME = '_blank';
return windowOpen(url, LOGIN_POPUP_NAME, getLoginPopupFeatures());
}
function getLoginPopupFeatures() {
var popupWidth = 480;
var popupHeight = 700;
var sLeft = window.screenLeft ? window.screenLeft : window.screenX ? window.screenX : 0;
var sTop = window.screenTop ? window.screenTop : window.screenY ? window.screenY : 0;
var popupLeft = screen.width / 2 - popupWidth / 2 + sLeft;
var popupTop = screen.height / 2 - popupHeight / 2 + sTop;
return ["width=".concat(popupWidth), "height=".concat(popupHeight), "left=".concat(popupLeft), "top=".concat(popupTop), 'scrollbars=yes', 'resizable=1'].join(',');
}
function makeAuthUrl(params) {
return "".concat(URL.authorize, "?").concat(buildQueryString(params));
}
function makeAuthParams(settings) {
var params = {
client_id: getAppKey$1()
};
if (settings.approvalType) {
params['approval_type'] = settings.approvalType;
}
if (settings.scope) {
params['scope'] = settings.scope;
}
if (settings.state) {
params['state'] = settings.state;
}
return params;
}
function makeAuthExtraParams(settings) {
var params = {};
if (settings.plusFriendPublicId) {
params['extra.plus_friend_public_id'] = settings.plusFriendPublicId;
}
if (settings.channelPublicId) {
params['channel_public_id'] = settings.channelPublicId;
}
if (settings.serviceTerms) {
params['extra.service_terms'] = settings.serviceTerms;
}
if (settings.autoLogin) {
params['prompt'] = 'none';
}
if (settings.reauthenticate) {
params['prompt'] = 'login';
}
if (settings.prompts) {
params['prompt'] = settings.prompts;
}
if (settings.deviceType) {
params['device_type'] = settings.deviceType;
}
if (settings.loginHint) {
params['login_hint'] = settings.loginHint;
}
if (settings.nonce) {
params['nonce'] = settings.nonce;
}
return params;
}
function makeBaseAuthParams(settings) {
return _objectSpread2(_objectSpread2(_objectSpread2({}, makeAuthParams(settings)), makeAuthExtraParams(settings)), {}, {
redirect_uri: settings.redirectUri || URL.redirectUri,
response_type: 'code',
auth_tran_id: generateTxId()
});
}
function makeWebAuthParams(settings, baseAuthParams) {
return _objectSpread2(_objectSpread2({}, baseAuthParams), {}, {
ka: KAKAO_AGENT,
is_popup: settings.isPopup
});
}
function makeCodeUrl(authTranId) {
var params = buildQueryString({
client_id: getAppKey$1(),
auth_tran_id: authTranId,
ka: KAKAO_AGENT
});
return "".concat(URL.authDomain, "/apiweb/code.json?").concat(params);
}
function runAuthCallback(settings, resp) {
if (resp.error) {
settings.fail(resp);
} else {
settings.success(resp);
}
settings.always(resp);
}
function checkAuthorize(url, onResponse) {
request$7({
method: 'GET',
url: url
}, onResponse);
}
function request$7(req, onResponse) {
var url = req.url,
method = req.method,
data = req.data;
var xhr = new XMLHttpRequest();
if (typeof xhr.withCredentials !== 'undefined') {
xhr.open(method, url);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
onResponse(xhr);
}
};
xhr.send(data);
} else {
var xdr = new XDomainRequest();
xdr.open(method.toLowerCase(), url);
xdr.onload = function () {
onResponse({
status: xdr.responseText ? 200 : 'error',
response: xdr.responseText
});
};
setTimeout(function () {
xdr.send(data);
}, 0);
}
}
var poller$2 = new Poller(1000, 600);
function authorize(settings) {
settings = processRules(settings, rules$8.authorize, 'Auth.authorize');
if ((settings.autoLogin || includePrompts(settings.prompts, 'none')) && !isTalkWebview) {
handleResponse(settings, {
error: 'auto_login',
error_description: 'NOT_SUPPORTED_BROWSER'
});
return false;
}
if (isTalkChannelHome(settings) && isSupportImplicitLogin(settings)) {
implicitLogin(settings).then(function (isNeedRetry) {
if (isNeedRetry) {
doAuthorize(settings);
}
});
} else {
doAuthorize(settings);
}
eventObserver.dispatch('LOGIN_START');
}
function doAuthorize(settings) {
var baseAuthParams = makeBaseAuthParams(settings);
var webAuthParams = makeWebAuthParams(settings, baseAuthParams);
var isEasyLogin = isSupportEasyLogin(settings);
var isSupportSyncplugin = isTalkChannelHome(settings);
var webAuthUrl = makeAuthUrl(webAuthParams);
var loginUrl = isEasyLogin ? makeEasyLoginUrl(settings, baseAuthParams, webAuthUrl) : webAuthUrl;
var popup = null;
if (isSupportSyncplugin) {
executeSyncpluginScheme(webAuthParams);
} else if (settings.isPopup) {
popup = openLoginPopup(loginUrl);
} else {
location.href = loginUrl;
}
if (isEasyLogin || isSupportSyncplugin || settings.isPopup) {
var codeUrl = makeCodeUrl(baseAuthParams.auth_tran_id);
poller$2.start(function () {
checkAuthorize(codeUrl, function (httpResp) {
var isValidResp = onResponse(settings, httpResp);
if (isValidResp) {
poller$2.stop();
popup && popup.close && popup.close();
}
if (!isEasyLogin && popup && popup.closed) {
poller$2.stop();
}
});
}, function () {
handleResponse(settings, {
error: 'timeout',
error_description: 'LOGIN_TIMEOUT'
});
});
}
}
function isSupportEasyLogin(settings) {
var isNotInAppBrowser = UA.os.ios || UA.os.android ? !isTalkWebview : false;
var isAccountLogin = settings.reauthenticate === true || includePrompts(settings.prompts, 'login');
var isAutoLogin = settings.autoLogin === true || includePrompts(settings.prompts, 'none');
return !(UA.os.android && /instagram|fb_iab/g.test(UA.ua)) && isNotInAppBrowser && !isAccountLogin && settings.throughTalk === true && !isAutoLogin;
}
function includePrompts(prompts, option) {
return !!(prompts && prompts.indexOf(option) > -1);
}
function onResponse(settings, httpResp) {
if (httpResp.status === 200 && httpResp.response) {
var resp = JSON.parse(httpResp.response);
if (resp.status === 'ok' && resp.code) {
handleResponse(settings, {
code: resp.code
});
return true;
} else if (resp.status === 'error' && resp.error_code && resp.error_code !== '300') {
handleResponse(settings, {
error: resp.error,
error_description: resp.error_description
});
if (resp.error_code === '700') {
location.href = "".concat(URL.authDomain, "/error/network");
}
return true;
}
}
return false;
}
function handleResponse(settings, respObj) {
if (settings.state) {
respObj.state = settings.state;
}
if (settings.redirectUri) {
var delimiter = settings.redirectUri.indexOf('?') > -1 ? '&' : '?';
location.href = settings.redirectUri + delimiter + buildQueryString(respObj);
} else {
runAuthCallback(settings, respObj);
}
}
function makeEasyLoginUrl(settings, baseAuthParams, fallbackUrl) {
var easyLoginAuthParams = _objectSpread2(_objectSpread2({}, baseAuthParams), {}, {
is_popup: true
});
var getAndroidLoginIntent = function getAndroidLoginIntent() {
return ['intent:#Intent', 'action=com.kakao.talk.intent.action.CAPRI_LOGGED_IN_ACTIVITY', 'launchFlags=0x08880000', "S.com.kakao.sdk.talk.appKey=".concat(getAppKey$1()), "S.com.kakao.sdk.talk.redirectUri=".concat(easyLoginAuthParams.redirect_uri), "S.com.kakao.sdk.talk.kaHeader=".concat(KAKAO_AGENT), "S.com.kakao.sdk.talk.extraparams=".concat(encodeURIComponent(JSON.stringify(easyLoginAuthParams)))].concat(_toConsumableArray(settings.state ? ["S.com.kakao.sdk.talk.state=".concat(settings.state)] : []), ["S.browser_fallback_url=".concat(encodeURIComponent(fallbackUrl)), 'end;']).join(';');
};
var getIosLoginUniversalLink = function getIosLoginUniversalLink() {
var iosLoginUrl = makeAuthUrl(easyLoginAuthParams);
var iosFallbackUrl = settings.isPopup ? iosLoginUrl : fallbackUrl;
var iosEasyLoginUrl = "".concat(iosLoginUrl, "&ka=").concat(encodeURIComponent(KAKAO_AGENT));
var talkWebviewUrl = "".concat(URL.talkInappScheme, "?url=").concat(encodeURIComponent(iosEasyLoginUrl));
return "".concat(URL.universalKakaoLink).concat(encodeURIComponent(talkWebviewUrl), "&web=").concat(encodeURIComponent(iosFallbackUrl));
};
return UA.os.android ? getAndroidLoginIntent() : getIosLoginUniversalLink();
}
function isTalkChannelHome(settings) {
return settings.throughSyncplugin && isTalkWebview && /ch-home/i.test(UA.ua);
}
function executeSyncpluginScheme(webAuthParams) {
var bizpluginParams = _objectSpread2(_objectSpread2({}, webAuthParams), {}, {
is_popup: true,
approval_window_type: 'v4_bizplugin'
});
var query = encodeURIComponent(buildQueryString(bizpluginParams));
location.href = "".concat(URL.talkSyncpluginScheme, "&query=").concat(query);
}
function isSupportImplicitLogin(settings) {
return settings.isPopup === false && !includePrompts(settings.prompts, 'cert') && window.kakaoweb && typeof window.kakaoweb.reqSignInLocation === 'function';
}
function implicitLogin(settings) {
var baseAuthParams = makeBaseAuthParams(settings);
var webAuthParams = makeWebAuthParams(settings, baseAuthParams);
var implicitLoginParams = buildQueryString(_objectSpread2(_objectSpread2({}, webAuthParams), {}, {
is_popup: false,
prompt: 'none'
}));
return kakaoweb.reqSignInLocation(implicitLoginParams).then(function (location) {
var parsed = Object.fromEntries(new window.URL(location).searchParams);
if (parsed.error === 'consent_required' && !includePrompts(settings.prompts, 'none') || parsed.error === 'interaction_required') {
return true;
}
handleResponse(settings, _objectSpread2(_objectSpread2({}, parsed.code && {
code: parsed.code
}), parsed.error && {
error: parsed.error,
error_description: parsed.error_description
}));
return false;
})["catch"](function (error) {
return false;
});
}
var oauth = /*#__PURE__*/Object.freeze({
__proto__: null,
authorize: authorize
});
function isAndroidWebView() {
return UA.os.android && (olderAndroidWebView() || oldAndroidWebView() || newerAndroidWebView());
}
function olderAndroidWebView() {
return UA.os.version.major == 2 && /Version\/\d+.\d+|/i.test(UA.ua);
}
function oldAndroidWebView() {
return UA.os.version.major == 4 && UA.os.version.minor < 4 && /Version\/\d+.\d+|/i.test(UA.ua);
}
function newerAndroidWebView() {
return /Version\/\d+\.\d+/i.test(UA.ua) && (/Chrome\/\d+\.\d+\.\d+\.\d+ Mobile/i.test(UA.ua) || /; wv\)/i.test(UA.ua));
}
function isIOSKakaoTalkWebView() {
return UA.os.ios && isTalkWebview;
}
function isAndroidKakaoTalkWebView() {
return UA.os.android && isTalkWebview;
}
function isNewerAndroidKakaoTalkWebView() {
return UA.os.android && isTalkWebview && UA.browser.chrome && UA.browser.version.major >= 71;
}
function commonjsRequire(path) {
throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
}
var es6Promise = {exports: {}};
(function (module, exports) {
(function (global, factory) {
module.exports = factory() ;
})(commonjsGlobal, function () {
function objectOrFunction(x) {
var type = typeof x;
return x !== null && (type === 'object' || type === 'function');
}
function isFunction(x) {
return typeof x === 'function';
}
var _isArray = void 0;
if (Array.isArray) {
_isArray = Array.isArray;
} else {
_isArray = function (x) {
return Object.prototype.toString.call(x) === '[object Array]';
};
}
var isArray = _isArray;
var len = 0;
var vertxNext = void 0;
var customSchedulerFn = void 0;
var asap = function asap(callback, arg) {
queue[len] = callback;
queue[len + 1] = arg;
len += 2;
if (len === 2) {
if (customSchedulerFn) {
customSchedulerFn(flush);
} else {
scheduleFlush();
}
}
};
function setScheduler(scheduleFn) {
customSchedulerFn = scheduleFn;
}
function setAsap(asapFn) {
asap = asapFn;
}
var browserWindow = typeof window !== 'undefined' ? window : undefined;
var browserGlobal = browserWindow || {};
var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
function useNextTick() {
return function () {
return process.nextTick(flush);
};
}
function useVertxTimer() {
if (typeof vertxNext !== 'undefined') {
return function () {
vertxNext(flush);
};
}
return useSetTimeout();
}
function useMutationObserver() {
var iterations = 0;
var observer = new BrowserMutationObserver(flush);
var node = document.createTextNode('');
observer.observe(node, {
characterData: true
});
return function () {
node.data = iterations = ++iterations % 2;
};
}
function useMessageChannel() {
var channel = new MessageChannel();
channel.port1.onmessage = flush;
return function () {
return channel.port2.postMessage(0);
};
}
function useSetTimeout() {
var globalSetTimeout = setTimeout;
return function () {
return globalSetTimeout(flush, 1);
};
}
var queue = new Array(1000);
function flush() {
for (var i = 0; i < len; i += 2) {
var callback = queue[i];
var arg = queue[i + 1];
callback(arg);
queue[i] = undefined;
queue[i + 1] = undefined;
}
len = 0;
}
function attemptVertx() {
try {
var vertx = Function('return this')().require('vertx');
vertxNext = vertx.runOnLoop || vertx.runOnContext;
return useVertxTimer();
} catch (e) {
return useSetTimeout();
}
}
var scheduleFlush = void 0;
if (isNode) {
scheduleFlush = useNextTick();
} else if (BrowserMutationObserver) {
scheduleFlush = useMutationObserver();
} else if (isWorker) {
scheduleFlush = useMessageChannel();
} else if (browserWindow === undefined && typeof commonjsRequire === 'function') {
scheduleFlush = attemptVertx();
} else {
scheduleFlush = useSetTimeout();
}
function then(onFulfillment, onRejection) {
var parent = this;
var child = new this.constructor(noop);
if (child[PROMISE_ID] === undefined) {
makePromise(child);
}
var _state = parent._state;
if (_state) {
var callback = arguments[_state - 1];
asap(function () {
return invokeCallback(_state, child, callback, parent._result);
});
} else {
subscribe(parent, child, onFulfillment, onRejection);
}
return child;
}
function resolve$1(object) {
var Constructor = this;
if (object && typeof object === 'object' && object.constructor === Constructor) {
return object;
}
var promise = new Constructor(noop);
resolve(promise, object);
return promise;
}
var PROMISE_ID = Math.random().toString(36).substring(2);
function noop() {}
var PENDING = void 0;
var FULFILLED = 1;
var REJECTED = 2;
function selfFulfillment() {
return new TypeError("You cannot resolve a promise with itself");
}
function cannotReturnOwn() {
return new TypeError('A promises callback cannot return that same promise.');
}
function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
try {
then$$1.call(value, fulfillmentHandler, rejectionHandler);
} catch (e) {
return e;
}
}
function handleForeignThenable(promise, thenable, then$$1) {
asap(function (promise) {
var sealed = false;
var error = tryThen(then$$1, thenable, function (value) {
if (sealed) {
return;
}
sealed = true;
if (thenable !== value) {
resolve(promise, value);
} else {
fulfill(promise, value);
}
}, function (reason) {
if (sealed) {
return;
}
sealed = true;
reject(promise, reason);
}, 'Settle: ' + (promise._label || ' unknown promise'));
if (!sealed && error) {
sealed = true;
reject(promise, error);
}
}, promise);
}
function handleOwnThenable(promise, thenable) {
if (thenable._state === FULFILLED) {
fulfill(promise, thenable._result);
} else if (thenable._state === REJECTED) {
reject(promise, thenable._result);
} else {
subscribe(thenable, undefined, function (value) {
return resolve(promise, value);
}, function (reason) {
return reject(promise, reason);
});
}
}
function handleMaybeThenable(promise, maybeThenable, then$$1) {
if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
handleOwnThenable(promise, maybeThenable);
} else {
if (then$$1 === undefined) {
fulfill(promise, maybeThenable);
} else if (isFunction(then$$1)) {
handleForeignThenable(promise, maybeThenable, then$$1);
} else {
fulfill(promise, maybeThenable);
}
}
}
function resolve(promise, value) {
if (promise === value) {
reject(promise, selfFulfillment());
} else if (objectOrFunction(value)) {
var then$$1 = void 0;
try {
then$$1 = value.then;
} catch (error) {
reject(promise, error);
return;
}
handleMaybeThenable(promise, value, then$$1);
} else {
fulfill(promise, value);
}
}
function publishRejection(promise) {
if (promise._onerror) {
promise._onerror(promise._result);
}
publish(promise);
}
function fulfill(promise, value) {
if (promise._state !== PENDING) {
return;
}
promise._result = value;
promise._state = FULFILLED;
if (promise._subscribers.length !== 0) {
asap(publish, promise);
}
}
function reject(promise, reason) {
if (promise._state !== PENDING) {
return;
}
promise._state = REJECTED;
promise._result = reason;
asap(publishRejection, promise);
}
function subscribe(parent, child, onFulfillment, onRejection) {
var _subscribers = parent._subscribers;
var length = _subscribers.length;
parent._onerror = null;
_subscribers[length] = child;
_subscribers[length + FULFILLED] = onFulfillment;
_subscribers[length + REJECTED] = onRejection;
if (length === 0 && parent._state) {
asap(publish, parent);
}
}
function publish(promise) {
var subscribers = promise._subscribers;
var settled = promise._state;
if (subscribers.length === 0) {
return;
}
var child = void 0,
callback = void 0,
detail = promise._result;
for (var i = 0; i < subscribers.length; i += 3) {
child = subscribers[i];
callback = subscribers[i + settled];
if (child) {
invokeCallback(settled, child, callback, detail);
} else {
callback(detail);
}
}
promise._subscribers.length = 0;
}
function invokeCallback(settled, promise, callback, detail) {
var hasCallback = isFunction(callback),
value = void 0,
error = void 0,
succeeded = true;
if (hasCallback) {
try {
value = callback(detail);
} catch (e) {
succeeded = false;
error = e;
}
if (promise === value) {
reject(promise, cannotReturnOwn());
return;
}
} else {
value = detail;
}
if (promise._state !== PENDING) ; else if (hasCallback && succeeded) {
resolve(promise, value);
} else if (succeeded === false) {
reject(promise, error);
} else if (settled === FULFILLED) {
fulfill(promise, value);
} else if (settled === REJECTED) {
reject(promise, value);
}
}
function initializePromise(promise, resolver) {
try {
resolver(function resolvePromise(value) {
resolve(promise, value);
}, function rejectPromise(reason) {
reject(promise, reason);
});
} catch (e) {
reject(promise, e);
}
}
var id = 0;
function nextId() {
return id++;
}
function makePromise(promise) {
promise[PROMISE_ID] = id++;
promise._state = undefined;
promise._result = undefined;
promise._subscribers = [];
}
function validationError() {
return new Error('Array Methods must be provided an Array');
}
var Enumerator = function () {
function Enumerator(Constructor, input) {
this._instanceConstructor = Constructor;
this.promise = new Constructor(noop);
if (!this.promise[PROMISE_ID]) {
makePromise(this.promise);
}
if (isArray(input)) {
this.length = input.length;
this._remaining = input.length;
this._result = new Array(this.length);
if (this.length === 0) {
fulfill(this.promise, this._result);
} else {
this.length = this.length || 0;
this._enumerate(input);
if (this._remaining === 0) {
fulfill(this.promise, this._result);
}
}
} else {
reject(this.promise, validationError());
}
}
Enumerator.prototype._enumerate = function _enumerate(input) {
for (var i = 0; this._state === PENDING && i < input.length; i++) {
this._eachEntry(input[i], i);
}
};
Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
var c = this._instanceConstructor;
var resolve$$1 = c.resolve;
if (resolve$$1 === resolve$1) {
var _then = void 0;
var error = void 0;
var didError = false;
try {
_then = entry.then;
} catch (e) {
didError = true;
error = e;
}
if (_then === then && entry._state !== PENDING) {
this._settledAt(entry._state, i, entry._result);
} else if (typeof _then !== 'function') {
this._remaining--;
this._result[i] = entry;
} else if (c === Promise$1) {
var promise = new c(noop);
if (didError) {
reject(promise, error);
} else {
handleMaybeThenable(promise, entry, _then);
}
this._willSettleAt(promise, i);
} else {
this._willSettleAt(new c(function (resolve$$1) {
return resolve$$1(entry);
}), i);
}
} else {
this._willSettleAt(resolve$$1(entry), i);
}
};
Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
var promise = this.promise;
if (promise._state === PENDING) {
this._remaining--;
if (state === REJECTED) {
reject(promise, value);
} else {
this._result[i] = value;
}
}
if (this._remaining === 0) {
fulfill(promise, this._result);
}
};
Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
var enumerator = this;
subscribe(promise, undefined, function (value) {
return enumerator._settledAt(FULFILLED, i, value);
}, function (reason) {
return enumerator._settledAt(REJECTED, i, reason);
});
};
return Enumerator;
}();
function all(entries) {
return new Enumerator(this, entries).promise;
}
function race(entries) {
var Constructor = this;
if (!isArray(entries)) {
return new Constructor(function (_, reject) {
return reject(new TypeError('You must pass an array to race.'));
});
} else {
return new Constructor(function (resolve, reject) {
var length = entries.length;
for (var i = 0; i < length; i++) {
Constructor.resolve(entries[i]).then(resolve, reject);
}
});
}
}
function reject$1(reason) {
var Constructor = this;
var promise = new Constructor(noop);
reject(promise, reason);
return promise;
}
function needsResolver() {
throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
}
function needsNew() {
throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
}
var Promise$1 = function () {
function Promise(resolver) {
this[PROMISE_ID] = nextId();
this._result = this._state = undefined;
this._subscribers = [];
if (noop !== resolver) {
typeof resolver !== 'function' && needsResolver();
this instanceof Promise ? initializePromise(this, resolver) : needsNew();
}
}
Promise.prototype.catch = function _catch(onRejection) {
return this.then(null, onRejection);
};
Promise.prototype.finally = function _finally(callback) {
var promise = this;
var constructor = promise.constructor;
if (isFunction(callback)) {
return promise.then(function (value) {
return constructor.resolve(callback()).then(function () {
return value;
});
}, function (reason) {
return constructor.resolve(callback()).then(function () {
throw reason;
});
});
}
return promise.then(callback, callback);
};
return Promise;
}();
Promise$1.prototype.then = then;
Promise$1.all = all;
Promise$1.race = race;
Promise$1.resolve = resolve$1;
Promise$1.reject = reject$1;
Promise$1._setScheduler = setScheduler;
Promise$1._setAsap = setAsap;
Promise$1._asap = asap;
function polyfill() {
var local = void 0;
if (typeof commonjsGlobal !== 'undefined') {
local = commonjsGlobal;
} else if (typeof self !== 'undefined') {
local = self;
} else {
try {
local = Function('return this')();
} catch (e) {
throw new Error('polyfill failed because global object is unavailable in this environment');
}
}
var P = local.Promise;
if (P) {
var promiseToString = null;
try {
promiseToString = Object.prototype.toString.call(P.resolve());
} catch (e) {
}
if (promiseToString === '[object Promise]' && !P.cast) {
return;
}
}
local.Promise = Promise$1;
}
Promise$1.polyfill = polyfill;
Promise$1.Promise = Promise$1;
return Promise$1;
});
})(es6Promise);
var easyXDM_1 = function () {
(function (O, d, q, L, l, I) {
var b = this || O;
var o = Math.floor(Math.random() * 10000);
var r = Function.prototype;
var R = /^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/;
var S = /[\-\w]+\/\.\.\//;
var G = /([^:])\/\//g;
var J = "";
var p = {};
var N = O.easyXDM;
var V = "easyXDM_";
var F;
var z = false;
var j;
var i;
function D(Y, aa) {
var Z = _typeof(Y[aa]);
return Z == "function" || !!(Z == "object" && Y[aa]) || Z == "unknown";
}
function v(Y, Z) {
return !!(_typeof(Y[Z]) == "object" && Y[Z]);
}
function s(Y) {
return Object.prototype.toString.call(Y) === "[object Array]";
}
function c() {
var aa = "Shockwave Flash",
ae = "application/x-shockwave-flash";
if (!u(navigator.plugins) && _typeof(navigator.plugins[aa]) == "object") {
var ac = navigator.plugins[aa].description;
if (ac && !u(navigator.mimeTypes) && navigator.mimeTypes[ae] && navigator.mimeTypes[ae].enabledPlugin) {
j = ac.match(/\d+/g);
}
}
if (!j) {
var Z;
try {
Z = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
j = Array.prototype.slice.call(Z.GetVariable("$version").match(/(\d+),(\d+),(\d+),(\d+)/), 1);
Z = null;
} catch (ad) {}
}
if (!j) {
return false;
}
var Y = parseInt(j[0], 10),
ab = parseInt(j[1], 10);
i = Y > 9 && ab > 0;
return true;
}
var w, y;
if (D(O, "addEventListener")) {
w = function w(aa, Y, Z) {
aa.addEventListener(Y, Z, false);
};
y = function y(aa, Y, Z) {
aa.removeEventListener(Y, Z, false);
};
} else {
if (D(O, "attachEvent")) {
w = function w(Y, aa, Z) {
Y.attachEvent("on" + aa, Z);
};
y = function y(Y, aa, Z) {
Y.detachEvent("on" + aa, Z);
};
} else {
throw new Error("Browser not supported");
}
}
var X = false,
K = [],
M;
if ("readyState" in d) {
M = d.readyState;
X = M == "complete" || ~navigator.userAgent.indexOf("AppleWebKit/") && (M == "loaded" || M == "interactive");
} else {
X = !!d.body;
}
function t() {
if (X) {
return;
}
X = true;
for (var Y = 0; Y < K.length; Y++) {
K[Y]();
}
K.length = 0;
}
if (!X) {
if (D(O, "addEventListener")) {
w(d, "DOMContentLoaded", t);
} else {
w(d, "readystatechange", function () {
if (d.readyState == "complete") {
t();
}
});
if (d.documentElement.doScroll && O === top) {
var h = function h() {
if (X) {
return;
}
try {
d.documentElement.doScroll("left");
} catch (Y) {
L(h, 1);
return;
}
t();
};
h();
}
}
w(O, "load", t);
}
function H(Z, Y) {
if (X) {
Z.call(Y);
return;
}
K.push(function () {
Z.call(Y);
});
}
function n() {
var aa = parent;
if (J !== "") {
for (var Y = 0, Z = J.split("."); Y < Z.length; Y++) {
aa = aa[Z[Y]];
}
}
return aa.easyXDM;
}
function f(Y) {
O.easyXDM = N;
J = Y;
if (J) {
V = "easyXDM_" + J.replace(".", "_") + "_";
}
return p;
}
function A(Y) {
return Y.match(R)[3];
}
function g(Y) {
return Y.match(R)[4] || "";
}
function k(aa) {
if (aa.indexOf("file://") >= 0) {
return "file://";
}
var Y = aa.toLowerCase().match(R);
if (!Y) {
return "";
}
var ab = Y[2],
ac = Y[3],
Z = Y[4] || "";
if (ab == "http:" && Z == ":80" || ab == "https:" && Z == ":443") {
Z = "";
}
return ab + "//" + ac + Z;
}
function C(Y) {
Y = Y.replace(G, "$1/");
if (!Y.match(/^(http||https):\/\//)) {
var Z = Y.substring(0, 1) === "/" ? "" : q.pathname;
if (Z.substring(Z.length - 1) !== "/") {
Z = Z.substring(0, Z.lastIndexOf("/") + 1);
}
Y = q.protocol + "//" + q.host + Z + Y;
}
while (S.test(Y)) {
Y = Y.replace(S, "");
}
return Y;
}
function Q(Y, ab) {
var ad = "",
aa = Y.indexOf("#");
if (aa !== -1) {
ad = Y.substring(aa);
Y = Y.substring(0, aa);
}
var ac = [];
for (var Z in ab) {
if (ab.hasOwnProperty(Z)) {
ac.push(Z + "=" + I(ab[Z]));
}
}
return Y + (z ? "#" : Y.indexOf("?") == -1 ? "?" : "&") + ac.join("&") + ad;
}
var T = function (Y) {
Y = Y.substring(1).split("&");
var aa = {},
ab,
Z = Y.length;
while (Z--) {
ab = Y[Z].split("=");
aa[ab[0]] = l(ab[1]);
}
return aa;
}(/xdm_e=/.test(q.search) ? q.search : q.hash);
function u(Y) {
return typeof Y === "undefined";
}
var _P = function P() {
var Z = {};
var aa = {
a: [1, 2, 3]
},
Y = '{"a":[1,2,3]}';
if (typeof JSON != "undefined" && typeof JSON.stringify === "function" && JSON.stringify(aa).replace(/\s/g, "") === Y) {
return JSON;
}
if (Object.toJSON) {
if (Object.toJSON(aa).replace(/\s/g, "") === Y) {
Z.stringify = Object.toJSON;
}
}
if (typeof String.prototype.evalJSON === "function") {
aa = Y.evalJSON();
if (aa.a && aa.a.length === 3 && aa.a[2] === 3) {
Z.parse = function (ab) {
return ab.evalJSON();
};
}
}
if (Z.stringify && Z.parse) {
_P = function P() {
return Z;
};
return Z;
}
return null;
};
function U(Y, Z, aa) {
var ac;
for (var ab in Z) {
if (Z.hasOwnProperty(ab)) {
if (ab in Y) {
ac = Z[ab];
if (_typeof(ac) === "object") {
U(Y[ab], ac, aa);
} else {
if (!aa) {
Y[ab] = Z[ab];
}
}
} else {
Y[ab] = Z[ab];
}
}
}
return Y;
}
function a() {
var Z = d.body.appendChild(d.createElement("form")),
Y = Z.appendChild(d.createElement("input"));
Y.name = V + "TEST" + o;
F = Y !== Z.elements[Y.name];
d.body.removeChild(Z);
}
function B(Z) {
if (u(F)) {
a();
}
var ad;
if (F) {
ad = d.createElement('');
} else {
ad = d.createElement("IFRAME");
ad.name = Z.props.name;
}
ad.id = ad.name = Z.props.name;
delete Z.props.name;
if (typeof Z.container == "string") {
Z.container = d.getElementById(Z.container);
}
if (!Z.container) {
U(ad.style, {
position: "absolute",
top: "-2000px",
left: "0px"
});
Z.container = d.body;
}
var ac = Z.props.src;
Z.props.src = "javascript:false";
U(ad, Z.props);
ad.border = ad.frameBorder = 0;
ad.allowTransparency = true;
Z.container.appendChild(ad);
if (Z.onLoad) {
w(ad, "load", Z.onLoad);
}
if (Z.usePost) {
var ab = Z.container.appendChild(d.createElement("form")),
Y;
ab.target = ad.name;
ab.action = ac;
ab.method = "POST";
if (_typeof(Z.usePost) === "object") {
for (var aa in Z.usePost) {
if (Z.usePost.hasOwnProperty(aa)) {
if (F) {
Y = d.createElement('');
} else {
Y = d.createElement("INPUT");
Y.name = aa;
}
Y.value = Z.usePost[aa];
ab.appendChild(Y);
}
}
}
ab.submit();
ab.parentNode.removeChild(ab);
} else {
ad.src = ac;
}
Z.props.src = ac;
return ad;
}
function e(Y) {
return Y.replace(/[-[\]/{}()+.\^$|]/g, "\\$&").replace(/(\*)/g, ".$1").replace(/\?/g, ".");
}
function W(ac, aa) {
if (typeof ac == "string") {
ac = [ac];
}
var Z,
Y = ac.length;
while (Y--) {
var ab = ac[Y].substr(0, 1) === "^" && ac[Y].substr(ac[Y].length - 1, 1) === "$";
Z = ab ? ac[Y] : "^" + e(ac[Y]) + "$";
Z = new RegExp(Z);
if (Z.test(aa)) {
return true;
}
}
return false;
}
function m(aa) {
var af = aa.protocol,
Z;
aa.isHost = aa.isHost || u(T.xdm_p);
z = aa.hash || false;
if (!aa.props) {
aa.props = {};
}
if (!aa.isHost) {
aa.channel = T.xdm_c.replace(/["'<>\\]/g, "");
aa.secret = T.xdm_s;
aa.remote = T.xdm_e.replace(/["'<>\\]/g, "");
af = T.xdm_p;
if (aa.acl && !W(aa.acl, aa.remote)) {
throw new Error("Access denied for " + aa.remote);
}
} else {
aa.remote = C(aa.remote);
aa.channel = aa.channel || "default" + o++;
aa.secret = Math.random().toString(16).substring(2);
if (u(af)) {
if (k(q.href) == k(aa.remote)) {
af = "4";
} else {
if (D(O, "postMessage") || D(d, "postMessage")) {
af = "1";
} else {
if (aa.swf && D(O, "ActiveXObject") && c()) {
af = "6";
} else {
if (navigator.product === "Gecko" && "frameElement" in O && navigator.userAgent.indexOf("WebKit") == -1) {
af = "5";
} else {
if (aa.remoteHelper) {
af = "2";
} else {
af = "0";
}
}
}
}
}
}
}
aa.protocol = af;
switch (af) {
case "0":
U(aa, {
interval: 100,
delay: 2000,
useResize: true,
useParent: false,
usePolling: false
}, true);
if (aa.isHost) {
if (!aa.local) {
var ad = q.protocol + "//" + q.host,
Y = d.body.getElementsByTagName("img"),
ae;
var ab = Y.length;
while (ab--) {
ae = Y[ab];
if (ae.src.substring(0, ad.length) === ad) {
aa.local = ae.src;
break;
}
}
if (!aa.local) {
aa.local = O;
}
}
var ac = {
xdm_c: aa.channel,
xdm_p: 0
};
if (aa.local === O) {
aa.usePolling = true;
aa.useParent = true;
aa.local = q.protocol + "//" + q.host + q.pathname + q.search;
ac.xdm_e = aa.local;
ac.xdm_pa = 1;
} else {
ac.xdm_e = C(aa.local);
}
if (aa.container) {
aa.useResize = false;
ac.xdm_po = 1;
}
aa.remote = Q(aa.remote, ac);
} else {
U(aa, {
useParent: !u(T.xdm_pa),
usePolling: !u(T.xdm_po),
useResize: aa.useParent ? false : aa.useResize
});
}
Z = [new p.stack.HashTransport(aa), new p.stack.ReliableBehavior({}), new p.stack.QueueBehavior({
encode: true,
maxLength: 4000 - aa.remote.length
}), new p.stack.VerifyBehavior({
initiate: aa.isHost
})];
break;
case "1":
Z = [new p.stack.PostMessageTransport(aa)];
break;
case "2":
if (aa.isHost) {
aa.remoteHelper = C(aa.remoteHelper);
}
Z = [new p.stack.NameTransport(aa), new p.stack.QueueBehavior(), new p.stack.VerifyBehavior({
initiate: aa.isHost
})];
break;
case "3":
Z = [new p.stack.NixTransport(aa)];
break;
case "4":
Z = [new p.stack.SameOriginTransport(aa)];
break;
case "5":
Z = [new p.stack.FrameElementTransport(aa)];
break;
case "6":
if (!j) {
c();
}
Z = [new p.stack.FlashTransport(aa)];
break;
}
Z.push(new p.stack.QueueBehavior({
lazy: aa.lazy,
remove: true
}));
return Z;
}
function E(ab) {
var ac,
aa = {
incoming: function incoming(ae, ad) {
this.up.incoming(ae, ad);
},
outgoing: function outgoing(ad, ae) {
this.down.outgoing(ad, ae);
},
callback: function callback(ad) {
this.up.callback(ad);
},
init: function init() {
this.down.init();
},
destroy: function destroy() {
this.down.destroy();
}
};
for (var Z = 0, Y = ab.length; Z < Y; Z++) {
ac = ab[Z];
U(ac, aa, true);
if (Z !== 0) {
ac.down = ab[Z - 1];
}
if (Z !== Y - 1) {
ac.up = ab[Z + 1];
}
}
return ac;
}
function x(Y) {
Y.up.down = Y.down;
Y.down.up = Y.up;
Y.up = Y.down = null;
}
U(p, {
version: "2.5.00.1",
query: T,
stack: {},
apply: U,
getJSONObject: _P,
whenReady: H,
noConflict: f
});
p.DomHelper = {
on: w,
un: y,
requiresJSON: function requiresJSON(Y) {
if (!v(O, "JSON")) {
d.write('