// source --> https://emmanuelle-le-pogam.melanyneveur.com/wp-content/plugins/quotes-collection/js/quotes-collection.js?ver=2.5.2 
var quotescollectionInstances = [];

function quotescollectionRefresh(args) {
	if(args.ajaxRefresh && !args.autoRefresh)
		jQuery("#"+args.instanceID+" .nav-next").html(quotescollectionAjax.loading);
	jQuery.ajax({
		type: "POST",
		url: quotescollectionAjax.ajaxUrl,
		data: "action=quotescollection&_ajax_nonce="+quotescollectionAjax.nonce+"&current="+args.currQuoteID+"&char_limit="+args.charLimit+"&tags="+args.tags+"&orderby="+args.orderBy,
		success: function(response) {
			if(response == '-1' || !response) {
				if(args.ajaxRefresh && args.autoRefresh)
					quotescollectionTimer(args);
				else if(args.ajaxRefresh && !args.autoRefresh)
					jQuery("#"+args.instanceID+" .nav-next").html('<a class=\"next-quote-link\" style=\"cursor:pointer;\" onclick=\"quotescollectionRefreshInstance(\''+args.instanceID+'\')\">'+quotescollectionAjax.nextQuote+'</a>');
			}
			else {
				if(args.dynamicFetch) {
					args.dynamicFetch = 0;
				}
				args.currQuoteID = response.quote_id;
				quotescollectionInstances[args.instanceID] = args;
				display = quotescollectionDisplayFormat(response, args);
				jQuery("#"+args.instanceID).hide();
				jQuery("#"+args.instanceID).html(display, args);
				jQuery("#"+args.instanceID).fadeIn('slow');
				if(args.ajaxRefresh && args.autoRefresh)
					quotescollectionTimer(args);
			}
		},
		error: function(xhr, textStatus, errorThrown) {
			console.log(textStatus+' '+xhr.status+': '+errorThrown);
			if(args.ajaxRefresh && !args.autoRefresh) {
				jQuery("#"+args.instanceID+" .nav-next").html('<a class=\"next-quote-link\" style=\"cursor:pointer;\" onclick=\"quotescollectionRefreshInstance(\''+args.instanceID+'\')\">'+quotescollectionAjax.nextQuote+';</a>');
			}
		}
	});

}

function quotescollectionDisplayFormat(quoteData, args) {
	var display = "";
	var attribution = "";

	display += '<p>' + quoteData.quote + '</p>';
	if( args.showAuthor && quoteData.author && quoteData.author != 'null' ) {
		attribution = '<cite class=\"author\">' + quoteData.author + '</cite>';
	}
	if( args.showSource && quoteData.source && quoteData.source != 'null' ) {
		if(attribution) attribution += ', ';
		attribution += '<cite class=\"source title\">' + quoteData.source + '</cite>';
	}
	if(attribution) {
		display += quotescollectionHtmlDecode(args.beforeAttribution) + attribution + quotescollectionHtmlDecode(args.afterAttribution);
	}
	display = quotescollectionHtmlDecode(args.before) + display + quotescollectionHtmlDecode(args.after);
	if(args.ajaxRefresh && !args.autoRefresh)
		display += '<div class=\"navigation\"><div class=\"nav-next\"><a class=\"next-quote-link\" style=\"cursor:pointer;\" onclick=\"quotescollectionRefreshInstance(\''+args.instanceID+'\')\">'+quotescollectionAjax.nextQuote+'</a></div></div>';
	return display;
}

function quotescollectionRefreshInstance(instanceID) {
	quotescollectionRefresh(quotescollectionInstances[instanceID]);
}

function quotescollectionTimer(args) {
	var timeInterval = args.autoRefresh * 1000;
	var autoRefreshMax = Number(quotescollectionAjax.autoRefreshMax);
	var autoRefreshCount = Number(quotescollectionAjax.autoRefreshCount);
	if(!quotescollectionInstances[args.instanceID])
		quotescollectionInstances[args.instanceID] = args;
	if( (autoRefreshMax == 0) || (autoRefreshCount < autoRefreshMax) ) {
		setTimeout("quotescollectionRefreshInstance('"+args.instanceID+"')", timeInterval);
		quotescollectionAjax.autoRefreshCount = ++autoRefreshCount;
	}
}

/* Thanks https://stackoverflow.com/a/34064434 */
function quotescollectionHtmlDecode(input) {
	var doc = new DOMParser().parseFromString(input, "text/html");
	return doc.documentElement.textContent;
};
// source --> https://emmanuelle-le-pogam.melanyneveur.com/wp-content/themes/oceanwp-child-melanyneveur/simplebar/simplebar.js?ver=6.9.4 
/**
 * SimpleBar.js - v4.2.3
 * Scrollbars, simpler.
 * https://grsmto.github.io/simplebar/
 *
 * Made by Adrien Denat from a fork by Jonathan Nicol
 * Under MIT License
 */

(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  typeof define === 'function' && define.amd ? define(factory) :
  (global = global || self, global.SimpleBar = factory());
}(this, function () { 'use strict';

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

  // optional / simple context binding
  var bindContext = 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);
    };
  };

  var fails = function (exec) {
    try {
      return !!exec();
    } catch (error) {
      return true;
    }
  };

  var toString = {}.toString;

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

  // fallback for non-array-like ES3 and non-enumerable old V8 strings


  var split = ''.split;

  var indexedObject = 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 classofRaw(it) == 'String' ? split.call(it, '') : Object(it);
  } : Object;

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

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

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

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

  var min = Math.min;

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

  var isObject = function (it) {
    return typeof it === 'object' ? it !== null : typeof it === 'function';
  };

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

  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};

  function createCommonjsModule(fn, module) {
  	return module = { exports: {} }, fn(module, module.exports), module.exports;
  }

  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
  var global$1 = typeof window == 'object' && window && window.Math == Math ? window
    : typeof self == 'object' && self && self.Math == Math ? self
    // eslint-disable-next-line no-new-func
    : Function('return this')();

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

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

  var documentCreateElement = function (it) {
    return exist ? document$1.createElement(it) : {};
  };

  // Thank's IE8 for his funny defineProperty
  var ie8DomDefine = !descriptors && !fails(function () {
    return Object.defineProperty(documentCreateElement('div'), 'a', {
      get: function () { return 7; }
    }).a != 7;
  });

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

  // 7.1.1 ToPrimitive(input [, PreferredType])

  // instead of the ES6 spec version, we didn't implement @@toPrimitive case
  // and the second argument - flag - preferred type is a string
  var toPrimitive = function (it, S) {
    if (!isObject(it)) return it;
    var fn, val;
    if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
    if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
    if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
    throw TypeError("Can't convert object to primitive value");
  };

  var nativeDefineProperty = Object.defineProperty;

  var f = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
    anObject(O);
    P = toPrimitive(P, true);
    anObject(Attributes);
    if (ie8DomDefine) 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;
  };

  var objectDefineProperty = {
  	f: f
  };

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

  var hide = descriptors ? function (object, key, value) {
    return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));
  } : function (object, key, value) {
    object[key] = value;
    return object;
  };

  var setGlobal = function (key, value) {
    try {
      hide(global$1, key, value);
    } catch (error) {
      global$1[key] = value;
    } return value;
  };

  var shared = createCommonjsModule(function (module) {
  var SHARED = '__core-js_shared__';
  var store = global$1[SHARED] || setGlobal(SHARED, {});

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

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

  var uid = function (key) {
    return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));
  };

  // Chrome 38 Symbol has incorrect toString conversion
  var nativeSymbol = !fails(function () {
    // eslint-disable-next-line no-undef
    return !String(Symbol());
  });

  var store = shared('wks');

  var Symbol$1 = global$1.Symbol;


  var wellKnownSymbol = function (name) {
    return store[name] || (store[name] = nativeSymbol && Symbol$1[name]
      || (nativeSymbol ? Symbol$1 : uid)('Symbol.' + name));
  };

  var SPECIES = wellKnownSymbol('species');

  // `ArraySpeciesCreate` abstract operation
  // https://tc39.github.io/ecma262/#sec-arrayspeciescreate
  var arraySpeciesCreate = 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);
  };

  // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation
  // 0 -> Array#forEach
  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach
  // 1 -> Array#map
  // https://tc39.github.io/ecma262/#sec-array.prototype.map
  // 2 -> Array#filter
  // https://tc39.github.io/ecma262/#sec-array.prototype.filter
  // 3 -> Array#some
  // https://tc39.github.io/ecma262/#sec-array.prototype.some
  // 4 -> Array#every
  // https://tc39.github.io/ecma262/#sec-array.prototype.every
  // 5 -> Array#find
  // https://tc39.github.io/ecma262/#sec-array.prototype.find
  // 6 -> Array#findIndex
  // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
  var arrayMethods = function (TYPE, specificCreate) {
    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;
    var create = specificCreate || arraySpeciesCreate;
    return function ($this, callbackfn, that) {
      var O = toObject($this);
      var self = indexedObject(O);
      var boundFunction = bindContext(callbackfn, that, 3);
      var length = toLength(self.length);
      var index = 0;
      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: target.push(value);       // filter
          } else if (IS_EVERY) return false;  // every
        }
      }
      return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
    };
  };

  var SPECIES$1 = wellKnownSymbol('species');

  var arrayMethodHasSpeciesSupport = function (METHOD_NAME) {
    return !fails(function () {
      var array = [];
      var constructor = array.constructor = {};
      constructor[SPECIES$1] = function () {
        return { foo: 1 };
      };
      return array[METHOD_NAME](Boolean).foo !== 1;
    });
  };

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

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

  var f$1 = NASHORN_BUG ? function propertyIsEnumerable(V) {
    var descriptor = nativeGetOwnPropertyDescriptor(this, V);
    return !!descriptor && descriptor.enumerable;
  } : nativePropertyIsEnumerable;

  var objectPropertyIsEnumerable = {
  	f: f$1
  };

  // toObject with fallback for non-array-like ES3 strings



  var toIndexedObject = function (it) {
    return indexedObject(requireObjectCoercible(it));
  };

  var hasOwnProperty = {}.hasOwnProperty;

  var has = function (it, key) {
    return hasOwnProperty.call(it, key);
  };

  var nativeGetOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;

  var f$2 = descriptors ? nativeGetOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O, P) {
    O = toIndexedObject(O);
    P = toPrimitive(P, true);
    if (ie8DomDefine) try {
      return nativeGetOwnPropertyDescriptor$1(O, P);
    } catch (error) { /* empty */ }
    if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);
  };

  var objectGetOwnPropertyDescriptor = {
  	f: f$2
  };

  var functionToString = shared('native-function-to-string', Function.toString);

  var WeakMap$1 = global$1.WeakMap;

  var nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(functionToString.call(WeakMap$1));

  var shared$1 = shared('keys');


  var sharedKey = function (key) {
    return shared$1[key] || (shared$1[key] = uid(key));
  };

  var hiddenKeys = {};

  var WeakMap$2 = global$1.WeakMap;
  var set, get, has$1;

  var enforce = function (it) {
    return has$1(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 (nativeWeakMap) {
    var store$1 = new WeakMap$2();
    var wmget = store$1.get;
    var wmhas = store$1.has;
    var wmset = store$1.set;
    set = function (it, metadata) {
      wmset.call(store$1, it, metadata);
      return metadata;
    };
    get = function (it) {
      return wmget.call(store$1, it) || {};
    };
    has$1 = function (it) {
      return wmhas.call(store$1, it);
    };
  } else {
    var STATE = sharedKey('state');
    hiddenKeys[STATE] = true;
    set = function (it, metadata) {
      hide(it, STATE, metadata);
      return metadata;
    };
    get = function (it) {
      return has(it, STATE) ? it[STATE] : {};
    };
    has$1 = function (it) {
      return has(it, STATE);
    };
  }

  var internalState = {
    set: set,
    get: get,
    has: has$1,
    enforce: enforce,
    getterFor: getterFor
  };

  var redefine = createCommonjsModule(function (module) {
  var getInternalState = internalState.get;
  var enforceInternalState = internalState.enforce;
  var TEMPLATE = String(functionToString).split('toString');

  shared('inspectSource', function (it) {
    return functionToString.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')) hide(value, 'name', key);
      enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
    }
    if (O === global$1) {
      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 hide(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 || functionToString.call(this);
  });
  });

  var max = Math.max;
  var min$1 = 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(length, length).
  var toAbsoluteIndex = function (index, length) {
    var integer = toInteger(index);
    return integer < 0 ? max(integer + length, 0) : min$1(integer, length);
  };

  // `Array.prototype.{ indexOf, includes }` methods implementation
  // false -> Array#indexOf
  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
  // true  -> Array#includes
  // https://tc39.github.io/ecma262/#sec-array.prototype.includes
  var arrayIncludes = 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) {
        if (O[index] === el) return IS_INCLUDES || index || 0;
      } return !IS_INCLUDES && -1;
    };
  };

  var arrayIndexOf = arrayIncludes(false);


  var objectKeysInternal = 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++])) {
      ~arrayIndexOf(result, key) || result.push(key);
    }
    return result;
  };

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

  // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)

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

  var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
    return objectKeysInternal(O, hiddenKeys$1);
  };

  var objectGetOwnPropertyNames = {
  	f: f$3
  };

  var f$4 = Object.getOwnPropertySymbols;

  var objectGetOwnPropertySymbols = {
  	f: f$4
  };

  var Reflect = global$1.Reflect;

  // all object keys, includes non-enumerable and symbols
  var ownKeys = Reflect && Reflect.ownKeys || function ownKeys(it) {
    var keys = objectGetOwnPropertyNames.f(anObject(it));
    var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
    return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
  };

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

  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';

  var isForced_1 = isForced;

  var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;






  /*
    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
  */
  var _export = 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$1;
    } else if (STATIC) {
      target = global$1[TARGET] || setGlobal(TARGET, {});
    } else {
      target = (global$1[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_1(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)) {
        hide(sourceProperty, 'sham', true);
      }
      // extend global
      redefine(target, key, sourceProperty, options);
    }
  };

  var internalFilter = arrayMethods(2);

  var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');

  // `Array.prototype.filter` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.filter
  // with adding support of @@species
  _export({ target: 'Array', proto: true, forced: !SPECIES_SUPPORT }, {
    filter: function filter(callbackfn /* , thisArg */) {
      return internalFilter(this, callbackfn, arguments[1]);
    }
  });

  var sloppyArrayMethod = function (METHOD_NAME, argument) {
    var method = [][METHOD_NAME];
    return !method || !fails(function () {
      // eslint-disable-next-line no-useless-call,no-throw-literal
      method.call(null, argument || function () { throw 1; }, 1);
    });
  };

  var nativeForEach = [].forEach;
  var internalForEach = arrayMethods(0);

  var SLOPPY_METHOD = sloppyArrayMethod('forEach');

  // `Array.prototype.forEach` method implementation
  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach
  var arrayForEach = SLOPPY_METHOD ? function forEach(callbackfn /* , thisArg */) {
    return internalForEach(this, callbackfn, arguments[1]);
  } : nativeForEach;

  // `Array.prototype.forEach` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.foreach
  _export({ target: 'Array', proto: true, forced: [].forEach != arrayForEach }, { forEach: arrayForEach });

  // `Array.prototype.{ reduce, reduceRight }` methods implementation
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduce
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright
  var arrayReduce = function (that, callbackfn, argumentsLength, memo, isRight) {
    aFunction(callbackfn);
    var O = toObject(that);
    var self = indexedObject(O);
    var length = toLength(O.length);
    var index = isRight ? length - 1 : 0;
    var i = isRight ? -1 : 1;
    if (argumentsLength < 2) while (true) {
      if (index in self) {
        memo = self[index];
        index += i;
        break;
      }
      index += i;
      if (isRight ? index < 0 : length <= index) {
        throw TypeError('Reduce of empty array with no initial value');
      }
    }
    for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {
      memo = callbackfn(memo, self[index], index, O);
    }
    return memo;
  };

  var SLOPPY_METHOD$1 = sloppyArrayMethod('reduce');

  // `Array.prototype.reduce` method
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduce
  _export({ target: 'Array', proto: true, forced: SLOPPY_METHOD$1 }, {
    reduce: function reduce(callbackfn /* , initialValue */) {
      return arrayReduce(this, callbackfn, arguments.length, arguments[1], false);
    }
  });

  var defineProperty = objectDefineProperty.f;
  var FunctionPrototype = Function.prototype;
  var FunctionPrototypeToString = FunctionPrototype.toString;
  var nameRE = /^\s*function ([^ (]*)/;
  var NAME = 'name';

  // Function instances `.name` property
  // https://tc39.github.io/ecma262/#sec-function-instances-name
  if (descriptors && !(NAME in FunctionPrototype)) {
    defineProperty(FunctionPrototype, NAME, {
      configurable: true,
      get: function () {
        try {
          return FunctionPrototypeToString.call(this).match(nameRE)[1];
        } catch (error) {
          return '';
        }
      }
    });
  }

  // 19.1.2.14 / 15.2.3.14 Object.keys(O)



  var objectKeys = Object.keys || function keys(O) {
    return objectKeysInternal(O, enumBugKeys);
  };

  // 19.1.2.1 Object.assign(target, source, ...)





  var nativeAssign = Object.assign;

  // should work with symbols and should have deterministic property order (V8 bug)
  var objectAssign = !nativeAssign || fails(function () {
    var A = {};
    var B = {};
    // eslint-disable-next-line no-undef
    var symbol = Symbol();
    var alphabet = 'abcdefghijklmnopqrst';
    A[symbol] = 7;
    alphabet.split('').forEach(function (chr) { B[chr] = chr; });
    return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;
  }) ? function assign(target, source) { // eslint-disable-line no-unused-vars
    var T = toObject(target);
    var argumentsLength = arguments.length;
    var index = 1;
    var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
    var propertyIsEnumerable = objectPropertyIsEnumerable.f;
    while (argumentsLength > index) {
      var S = indexedObject(arguments[index++]);
      var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);
      var length = keys.length;
      var j = 0;
      var key;
      while (length > j) if (propertyIsEnumerable.call(S, key = keys[j++])) T[key] = S[key];
    } return T;
  } : nativeAssign;

  // `Object.assign` method
  // https://tc39.github.io/ecma262/#sec-object.assign
  _export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, { assign: objectAssign });

  // a string of all valid unicode whitespaces
  // eslint-disable-next-line max-len
  var whitespaces = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';

  var whitespace = '[' + whitespaces + ']';
  var ltrim = RegExp('^' + whitespace + whitespace + '*');
  var rtrim = RegExp(whitespace + whitespace + '*$');

  // 1 -> String#trimStart
  // 2 -> String#trimEnd
  // 3 -> String#trim
  var stringTrim = function (string, TYPE) {
    string = String(requireObjectCoercible(string));
    if (TYPE & 1) string = string.replace(ltrim, '');
    if (TYPE & 2) string = string.replace(rtrim, '');
    return string;
  };

  var nativeParseInt = global$1.parseInt;


  var hex = /^[-+]?0[xX]/;
  var FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;

  var _parseInt = FORCED ? function parseInt(str, radix) {
    var string = stringTrim(String(str), 3);
    return nativeParseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
  } : nativeParseInt;

  // `parseInt` method
  // https://tc39.github.io/ecma262/#sec-parseint-string-radix
  _export({ global: true, forced: parseInt != _parseInt }, {
    parseInt: _parseInt
  });

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

  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;
    };
  }

  var regexpExec = patchedExec;

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

  // CONVERT_TO_STRING: true  -> String#at
  // CONVERT_TO_STRING: false -> String#codePointAt
  var stringAt = function (that, pos, CONVERT_TO_STRING) {
    var S = String(requireObjectCoercible(that));
    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;
  };

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

  // `RegExpExec` abstract operation
  // https://tc39.github.io/ecma262/#sec-regexpexec
  var regexpExecAbstract = 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 (classofRaw(R) !== 'RegExp') {
      throw TypeError('RegExp#exec called on incompatible receiver');
    }

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

  var SPECIES$2 = 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';
  });

  var fixRegexpWellKnownSymbolLogic = 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/;
      re.exec = function () { execCalled = true; return null; };

      if (KEY === 'split') {
        // 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$2] = function () { return re; };
      }

      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) hide(RegExp.prototype[SYMBOL], 'sham', true);
    }
  };

  // @@match logic
  fixRegexpWellKnownSymbolLogic(
    'match',
    1,
    function (MATCH, nativeMatch, maybeCallNative) {
      return [
        // `String.prototype.match` method
        // https://tc39.github.io/ecma262/#sec-string.prototype.match
        function match(regexp) {
          var O = requireObjectCoercible(this);
          var matcher = regexp == undefined ? undefined : regexp[MATCH];
          return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
        },
        // `RegExp.prototype[@@match]` method
        // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
        function (regexp) {
          var res = maybeCallNative(nativeMatch, regexp, this);
          if (res.done) return res.value;

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

          if (!rx.global) return regexpExecAbstract(rx, S);

          var fullUnicode = rx.unicode;
          rx.lastIndex = 0;
          var A = [];
          var n = 0;
          var result;
          while ((result = regexpExecAbstract(rx, S)) !== null) {
            var matchStr = String(result[0]);
            A[n] = matchStr;
            if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
            n++;
          }
          return n === 0 ? null : A;
        }
      ];
    }
  );

  var max$1 = Math.max;
  var min$2 = Math.min;
  var floor$1 = 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 = regexpExecAbstract(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$1(min$2(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$1(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;
        });
      }
    }
  );

  // iterable DOM collections
  // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
  var domIterables = {
    CSSRuleList: 0,
    CSSStyleDeclaration: 0,
    CSSValueList: 0,
    ClientRectList: 0,
    DOMRectList: 0,
    DOMStringList: 0,
    DOMTokenList: 1,
    DataTransferItemList: 0,
    FileList: 0,
    HTMLAllCollection: 0,
    HTMLCollection: 0,
    HTMLFormElement: 0,
    HTMLSelectElement: 0,
    MediaList: 0,
    MimeTypeArray: 0,
    NamedNodeMap: 0,
    NodeList: 1,
    PaintRequestList: 0,
    Plugin: 0,
    PluginArray: 0,
    SVGLengthList: 0,
    SVGNumberList: 0,
    SVGPathSegList: 0,
    SVGPointList: 0,
    SVGStringList: 0,
    SVGTransformList: 0,
    SourceBufferList: 0,
    StyleSheetList: 0,
    TextTrackCueList: 0,
    TextTrackList: 0,
    TouchList: 0
  };

  for (var COLLECTION_NAME in domIterables) {
    var Collection = global$1[COLLECTION_NAME];
    var CollectionPrototype = Collection && Collection.prototype;
    // some Chrome versions have non-configurable methods on DOMTokenList
    if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try {
      hide(CollectionPrototype, 'forEach', arrayForEach);
    } catch (error) {
      CollectionPrototype.forEach = arrayForEach;
    }
  }

  /**
   * lodash (Custom Build) <https://lodash.com/>
   * Build: `lodash modularize exports="npm" -o ./`
   * Copyright jQuery Foundation and other contributors <https://jquery.org/>
   * Released under MIT license <https://lodash.com/license>
   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
   */

  /** Used as the `TypeError` message for "Functions" methods. */
  var FUNC_ERROR_TEXT = 'Expected a function';

  /** Used as references for various `Number` constants. */
  var NAN = 0 / 0;

  /** `Object#toString` result references. */
  var symbolTag = '[object Symbol]';

  /** Used to match leading and trailing whitespace. */
  var reTrim = /^\s+|\s+$/g;

  /** Used to detect bad signed hexadecimal string values. */
  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;

  /** Used to detect binary string values. */
  var reIsBinary = /^0b[01]+$/i;

  /** Used to detect octal string values. */
  var reIsOctal = /^0o[0-7]+$/i;

  /** Built-in method references without a dependency on `root`. */
  var freeParseInt = parseInt;

  /** Detect free variable `global` from Node.js. */
  var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;

  /** Detect free variable `self`. */
  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;

  /** Used as a reference to the global object. */
  var root = freeGlobal || freeSelf || Function('return this')();

  /** Used for built-in method references. */
  var objectProto = Object.prototype;

  /**
   * Used to resolve the
   * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
   * of values.
   */
  var objectToString = objectProto.toString;

  /* Built-in method references for those with the same name as other `lodash` methods. */
  var nativeMax = Math.max,
      nativeMin = Math.min;

  /**
   * Gets the timestamp of the number of milliseconds that have elapsed since
   * the Unix epoch (1 January 1970 00:00:00 UTC).
   *
   * @static
   * @memberOf _
   * @since 2.4.0
   * @category Date
   * @returns {number} Returns the timestamp.
   * @example
   *
   * _.defer(function(stamp) {
   *   console.log(_.now() - stamp);
   * }, _.now());
   * // => Logs the number of milliseconds it took for the deferred invocation.
   */
  var now = function() {
    return root.Date.now();
  };

  /**
   * Creates a debounced function that delays invoking `func` until after `wait`
   * milliseconds have elapsed since the last time the debounced function was
   * invoked. The debounced function comes with a `cancel` method to cancel
   * delayed `func` invocations and a `flush` method to immediately invoke them.
   * Provide `options` to indicate whether `func` should be invoked on the
   * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
   * with the last arguments provided to the debounced function. Subsequent
   * calls to the debounced function return the result of the last `func`
   * invocation.
   *
   * **Note:** If `leading` and `trailing` options are `true`, `func` is
   * invoked on the trailing edge of the timeout only if the debounced function
   * is invoked more than once during the `wait` timeout.
   *
   * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
   * until to the next tick, similar to `setTimeout` with a timeout of `0`.
   *
   * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
   * for details over the differences between `_.debounce` and `_.throttle`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to debounce.
   * @param {number} [wait=0] The number of milliseconds to delay.
   * @param {Object} [options={}] The options object.
   * @param {boolean} [options.leading=false]
   *  Specify invoking on the leading edge of the timeout.
   * @param {number} [options.maxWait]
   *  The maximum time `func` is allowed to be delayed before it's invoked.
   * @param {boolean} [options.trailing=true]
   *  Specify invoking on the trailing edge of the timeout.
   * @returns {Function} Returns the new debounced function.
   * @example
   *
   * // Avoid costly calculations while the window size is in flux.
   * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
   *
   * // Invoke `sendMail` when clicked, debouncing subsequent calls.
   * jQuery(element).on('click', _.debounce(sendMail, 300, {
   *   'leading': true,
   *   'trailing': false
   * }));
   *
   * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
   * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
   * var source = new EventSource('/stream');
   * jQuery(source).on('message', debounced);
   *
   * // Cancel the trailing debounced invocation.
   * jQuery(window).on('popstate', debounced.cancel);
   */
  function debounce(func, wait, options) {
    var lastArgs,
        lastThis,
        maxWait,
        result,
        timerId,
        lastCallTime,
        lastInvokeTime = 0,
        leading = false,
        maxing = false,
        trailing = true;

    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    wait = toNumber(wait) || 0;
    if (isObject$1(options)) {
      leading = !!options.leading;
      maxing = 'maxWait' in options;
      maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
      trailing = 'trailing' in options ? !!options.trailing : trailing;
    }

    function invokeFunc(time) {
      var args = lastArgs,
          thisArg = lastThis;

      lastArgs = lastThis = undefined;
      lastInvokeTime = time;
      result = func.apply(thisArg, args);
      return result;
    }

    function leadingEdge(time) {
      // Reset any `maxWait` timer.
      lastInvokeTime = time;
      // Start the timer for the trailing edge.
      timerId = setTimeout(timerExpired, wait);
      // Invoke the leading edge.
      return leading ? invokeFunc(time) : result;
    }

    function remainingWait(time) {
      var timeSinceLastCall = time - lastCallTime,
          timeSinceLastInvoke = time - lastInvokeTime,
          result = wait - timeSinceLastCall;

      return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;
    }

    function shouldInvoke(time) {
      var timeSinceLastCall = time - lastCallTime,
          timeSinceLastInvoke = time - lastInvokeTime;

      // Either this is the first call, activity has stopped and we're at the
      // trailing edge, the system time has gone backwards and we're treating
      // it as the trailing edge, or we've hit the `maxWait` limit.
      return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
        (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
    }

    function timerExpired() {
      var time = now();
      if (shouldInvoke(time)) {
        return trailingEdge(time);
      }
      // Restart the timer.
      timerId = setTimeout(timerExpired, remainingWait(time));
    }

    function trailingEdge(time) {
      timerId = undefined;

      // Only invoke if we have `lastArgs` which means `func` has been
      // debounced at least once.
      if (trailing && lastArgs) {
        return invokeFunc(time);
      }
      lastArgs = lastThis = undefined;
      return result;
    }

    function cancel() {
      if (timerId !== undefined) {
        clearTimeout(timerId);
      }
      lastInvokeTime = 0;
      lastArgs = lastCallTime = lastThis = timerId = undefined;
    }

    function flush() {
      return timerId === undefined ? result : trailingEdge(now());
    }

    function debounced() {
      var time = now(),
          isInvoking = shouldInvoke(time);

      lastArgs = arguments;
      lastThis = this;
      lastCallTime = time;

      if (isInvoking) {
        if (timerId === undefined) {
          return leadingEdge(lastCallTime);
        }
        if (maxing) {
          // Handle invocations in a tight loop.
          timerId = setTimeout(timerExpired, wait);
          return invokeFunc(lastCallTime);
        }
      }
      if (timerId === undefined) {
        timerId = setTimeout(timerExpired, wait);
      }
      return result;
    }
    debounced.cancel = cancel;
    debounced.flush = flush;
    return debounced;
  }

  /**
   * Creates a throttled function that only invokes `func` at most once per
   * every `wait` milliseconds. The throttled function comes with a `cancel`
   * method to cancel delayed `func` invocations and a `flush` method to
   * immediately invoke them. Provide `options` to indicate whether `func`
   * should be invoked on the leading and/or trailing edge of the `wait`
   * timeout. The `func` is invoked with the last arguments provided to the
   * throttled function. Subsequent calls to the throttled function return the
   * result of the last `func` invocation.
   *
   * **Note:** If `leading` and `trailing` options are `true`, `func` is
   * invoked on the trailing edge of the timeout only if the throttled function
   * is invoked more than once during the `wait` timeout.
   *
   * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
   * until to the next tick, similar to `setTimeout` with a timeout of `0`.
   *
   * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
   * for details over the differences between `_.throttle` and `_.debounce`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to throttle.
   * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
   * @param {Object} [options={}] The options object.
   * @param {boolean} [options.leading=true]
   *  Specify invoking on the leading edge of the timeout.
   * @param {boolean} [options.trailing=true]
   *  Specify invoking on the trailing edge of the timeout.
   * @returns {Function} Returns the new throttled function.
   * @example
   *
   * // Avoid excessively updating the position while scrolling.
   * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
   *
   * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
   * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
   * jQuery(element).on('click', throttled);
   *
   * // Cancel the trailing throttled invocation.
   * jQuery(window).on('popstate', throttled.cancel);
   */
  function throttle(func, wait, options) {
    var leading = true,
        trailing = true;

    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    if (isObject$1(options)) {
      leading = 'leading' in options ? !!options.leading : leading;
      trailing = 'trailing' in options ? !!options.trailing : trailing;
    }
    return debounce(func, wait, {
      'leading': leading,
      'maxWait': wait,
      'trailing': trailing
    });
  }

  /**
   * Checks if `value` is the
   * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
   * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an object, else `false`.
   * @example
   *
   * _.isObject({});
   * // => true
   *
   * _.isObject([1, 2, 3]);
   * // => true
   *
   * _.isObject(_.noop);
   * // => true
   *
   * _.isObject(null);
   * // => false
   */
  function isObject$1(value) {
    var type = typeof value;
    return !!value && (type == 'object' || type == 'function');
  }

  /**
   * Checks if `value` is object-like. A value is object-like if it's not `null`
   * and has a `typeof` result of "object".
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
   * @example
   *
   * _.isObjectLike({});
   * // => true
   *
   * _.isObjectLike([1, 2, 3]);
   * // => true
   *
   * _.isObjectLike(_.noop);
   * // => false
   *
   * _.isObjectLike(null);
   * // => false
   */
  function isObjectLike(value) {
    return !!value && typeof value == 'object';
  }

  /**
   * Checks if `value` is classified as a `Symbol` primitive or object.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
   * @example
   *
   * _.isSymbol(Symbol.iterator);
   * // => true
   *
   * _.isSymbol('abc');
   * // => false
   */
  function isSymbol(value) {
    return typeof value == 'symbol' ||
      (isObjectLike(value) && objectToString.call(value) == symbolTag);
  }

  /**
   * Converts `value` to a number.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to process.
   * @returns {number} Returns the number.
   * @example
   *
   * _.toNumber(3.2);
   * // => 3.2
   *
   * _.toNumber(Number.MIN_VALUE);
   * // => 5e-324
   *
   * _.toNumber(Infinity);
   * // => Infinity
   *
   * _.toNumber('3.2');
   * // => 3.2
   */
  function toNumber(value) {
    if (typeof value == 'number') {
      return value;
    }
    if (isSymbol(value)) {
      return NAN;
    }
    if (isObject$1(value)) {
      var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
      value = isObject$1(other) ? (other + '') : other;
    }
    if (typeof value != 'string') {
      return value === 0 ? value : +value;
    }
    value = value.replace(reTrim, '');
    var isBinary = reIsBinary.test(value);
    return (isBinary || reIsOctal.test(value))
      ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
      : (reIsBadHex.test(value) ? NAN : +value);
  }

  var lodash_throttle = throttle;

  /**
   * lodash (Custom Build) <https://lodash.com/>
   * Build: `lodash modularize exports="npm" -o ./`
   * Copyright jQuery Foundation and other contributors <https://jquery.org/>
   * Released under MIT license <https://lodash.com/license>
   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
   */

  /** Used as the `TypeError` message for "Functions" methods. */
  var FUNC_ERROR_TEXT$1 = 'Expected a function';

  /** Used as references for various `Number` constants. */
  var NAN$1 = 0 / 0;

  /** `Object#toString` result references. */
  var symbolTag$1 = '[object Symbol]';

  /** Used to match leading and trailing whitespace. */
  var reTrim$1 = /^\s+|\s+$/g;

  /** Used to detect bad signed hexadecimal string values. */
  var reIsBadHex$1 = /^[-+]0x[0-9a-f]+$/i;

  /** Used to detect binary string values. */
  var reIsBinary$1 = /^0b[01]+$/i;

  /** Used to detect octal string values. */
  var reIsOctal$1 = /^0o[0-7]+$/i;

  /** Built-in method references without a dependency on `root`. */
  var freeParseInt$1 = parseInt;

  /** Detect free variable `global` from Node.js. */
  var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;

  /** Detect free variable `self`. */
  var freeSelf$1 = typeof self == 'object' && self && self.Object === Object && self;

  /** Used as a reference to the global object. */
  var root$1 = freeGlobal$1 || freeSelf$1 || Function('return this')();

  /** Used for built-in method references. */
  var objectProto$1 = Object.prototype;

  /**
   * Used to resolve the
   * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
   * of values.
   */
  var objectToString$1 = objectProto$1.toString;

  /* Built-in method references for those with the same name as other `lodash` methods. */
  var nativeMax$1 = Math.max,
      nativeMin$1 = Math.min;

  /**
   * Gets the timestamp of the number of milliseconds that have elapsed since
   * the Unix epoch (1 January 1970 00:00:00 UTC).
   *
   * @static
   * @memberOf _
   * @since 2.4.0
   * @category Date
   * @returns {number} Returns the timestamp.
   * @example
   *
   * _.defer(function(stamp) {
   *   console.log(_.now() - stamp);
   * }, _.now());
   * // => Logs the number of milliseconds it took for the deferred invocation.
   */
  var now$1 = function() {
    return root$1.Date.now();
  };

  /**
   * Creates a debounced function that delays invoking `func` until after `wait`
   * milliseconds have elapsed since the last time the debounced function was
   * invoked. The debounced function comes with a `cancel` method to cancel
   * delayed `func` invocations and a `flush` method to immediately invoke them.
   * Provide `options` to indicate whether `func` should be invoked on the
   * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
   * with the last arguments provided to the debounced function. Subsequent
   * calls to the debounced function return the result of the last `func`
   * invocation.
   *
   * **Note:** If `leading` and `trailing` options are `true`, `func` is
   * invoked on the trailing edge of the timeout only if the debounced function
   * is invoked more than once during the `wait` timeout.
   *
   * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
   * until to the next tick, similar to `setTimeout` with a timeout of `0`.
   *
   * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
   * for details over the differences between `_.debounce` and `_.throttle`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to debounce.
   * @param {number} [wait=0] The number of milliseconds to delay.
   * @param {Object} [options={}] The options object.
   * @param {boolean} [options.leading=false]
   *  Specify invoking on the leading edge of the timeout.
   * @param {number} [options.maxWait]
   *  The maximum time `func` is allowed to be delayed before it's invoked.
   * @param {boolean} [options.trailing=true]
   *  Specify invoking on the trailing edge of the timeout.
   * @returns {Function} Returns the new debounced function.
   * @example
   *
   * // Avoid costly calculations while the window size is in flux.
   * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
   *
   * // Invoke `sendMail` when clicked, debouncing subsequent calls.
   * jQuery(element).on('click', _.debounce(sendMail, 300, {
   *   'leading': true,
   *   'trailing': false
   * }));
   *
   * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
   * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
   * var source = new EventSource('/stream');
   * jQuery(source).on('message', debounced);
   *
   * // Cancel the trailing debounced invocation.
   * jQuery(window).on('popstate', debounced.cancel);
   */
  function debounce$1(func, wait, options) {
    var lastArgs,
        lastThis,
        maxWait,
        result,
        timerId,
        lastCallTime,
        lastInvokeTime = 0,
        leading = false,
        maxing = false,
        trailing = true;

    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT$1);
    }
    wait = toNumber$1(wait) || 0;
    if (isObject$2(options)) {
      leading = !!options.leading;
      maxing = 'maxWait' in options;
      maxWait = maxing ? nativeMax$1(toNumber$1(options.maxWait) || 0, wait) : maxWait;
      trailing = 'trailing' in options ? !!options.trailing : trailing;
    }

    function invokeFunc(time) {
      var args = lastArgs,
          thisArg = lastThis;

      lastArgs = lastThis = undefined;
      lastInvokeTime = time;
      result = func.apply(thisArg, args);
      return result;
    }

    function leadingEdge(time) {
      // Reset any `maxWait` timer.
      lastInvokeTime = time;
      // Start the timer for the trailing edge.
      timerId = setTimeout(timerExpired, wait);
      // Invoke the leading edge.
      return leading ? invokeFunc(time) : result;
    }

    function remainingWait(time) {
      var timeSinceLastCall = time - lastCallTime,
          timeSinceLastInvoke = time - lastInvokeTime,
          result = wait - timeSinceLastCall;

      return maxing ? nativeMin$1(result, maxWait - timeSinceLastInvoke) : result;
    }

    function shouldInvoke(time) {
      var timeSinceLastCall = time - lastCallTime,
          timeSinceLastInvoke = time - lastInvokeTime;

      // Either this is the first call, activity has stopped and we're at the
      // trailing edge, the system time has gone backwards and we're treating
      // it as the trailing edge, or we've hit the `maxWait` limit.
      return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
        (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
    }

    function timerExpired() {
      var time = now$1();
      if (shouldInvoke(time)) {
        return trailingEdge(time);
      }
      // Restart the timer.
      timerId = setTimeout(timerExpired, remainingWait(time));
    }

    function trailingEdge(time) {
      timerId = undefined;

      // Only invoke if we have `lastArgs` which means `func` has been
      // debounced at least once.
      if (trailing && lastArgs) {
        return invokeFunc(time);
      }
      lastArgs = lastThis = undefined;
      return result;
    }

    function cancel() {
      if (timerId !== undefined) {
        clearTimeout(timerId);
      }
      lastInvokeTime = 0;
      lastArgs = lastCallTime = lastThis = timerId = undefined;
    }

    function flush() {
      return timerId === undefined ? result : trailingEdge(now$1());
    }

    function debounced() {
      var time = now$1(),
          isInvoking = shouldInvoke(time);

      lastArgs = arguments;
      lastThis = this;
      lastCallTime = time;

      if (isInvoking) {
        if (timerId === undefined) {
          return leadingEdge(lastCallTime);
        }
        if (maxing) {
          // Handle invocations in a tight loop.
          timerId = setTimeout(timerExpired, wait);
          return invokeFunc(lastCallTime);
        }
      }
      if (timerId === undefined) {
        timerId = setTimeout(timerExpired, wait);
      }
      return result;
    }
    debounced.cancel = cancel;
    debounced.flush = flush;
    return debounced;
  }

  /**
   * Checks if `value` is the
   * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
   * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an object, else `false`.
   * @example
   *
   * _.isObject({});
   * // => true
   *
   * _.isObject([1, 2, 3]);
   * // => true
   *
   * _.isObject(_.noop);
   * // => true
   *
   * _.isObject(null);
   * // => false
   */
  function isObject$2(value) {
    var type = typeof value;
    return !!value && (type == 'object' || type == 'function');
  }

  /**
   * Checks if `value` is object-like. A value is object-like if it's not `null`
   * and has a `typeof` result of "object".
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
   * @example
   *
   * _.isObjectLike({});
   * // => true
   *
   * _.isObjectLike([1, 2, 3]);
   * // => true
   *
   * _.isObjectLike(_.noop);
   * // => false
   *
   * _.isObjectLike(null);
   * // => false
   */
  function isObjectLike$1(value) {
    return !!value && typeof value == 'object';
  }

  /**
   * Checks if `value` is classified as a `Symbol` primitive or object.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
   * @example
   *
   * _.isSymbol(Symbol.iterator);
   * // => true
   *
   * _.isSymbol('abc');
   * // => false
   */
  function isSymbol$1(value) {
    return typeof value == 'symbol' ||
      (isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$1);
  }

  /**
   * Converts `value` to a number.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to process.
   * @returns {number} Returns the number.
   * @example
   *
   * _.toNumber(3.2);
   * // => 3.2
   *
   * _.toNumber(Number.MIN_VALUE);
   * // => 5e-324
   *
   * _.toNumber(Infinity);
   * // => Infinity
   *
   * _.toNumber('3.2');
   * // => 3.2
   */
  function toNumber$1(value) {
    if (typeof value == 'number') {
      return value;
    }
    if (isSymbol$1(value)) {
      return NAN$1;
    }
    if (isObject$2(value)) {
      var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
      value = isObject$2(other) ? (other + '') : other;
    }
    if (typeof value != 'string') {
      return value === 0 ? value : +value;
    }
    value = value.replace(reTrim$1, '');
    var isBinary = reIsBinary$1.test(value);
    return (isBinary || reIsOctal$1.test(value))
      ? freeParseInt$1(value.slice(2), isBinary ? 2 : 8)
      : (reIsBadHex$1.test(value) ? NAN$1 : +value);
  }

  var lodash_debounce = debounce$1;

  /**
   * lodash (Custom Build) <https://lodash.com/>
   * Build: `lodash modularize exports="npm" -o ./`
   * Copyright jQuery Foundation and other contributors <https://jquery.org/>
   * Released under MIT license <https://lodash.com/license>
   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
   */

  /** Used as the `TypeError` message for "Functions" methods. */
  var FUNC_ERROR_TEXT$2 = 'Expected a function';

  /** Used to stand-in for `undefined` hash values. */
  var HASH_UNDEFINED = '__lodash_hash_undefined__';

  /** `Object#toString` result references. */
  var funcTag = '[object Function]',
      genTag = '[object GeneratorFunction]';

  /**
   * Used to match `RegExp`
   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
   */
  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;

  /** Used to detect host constructors (Safari). */
  var reIsHostCtor = /^\[object .+?Constructor\]$/;

  /** Detect free variable `global` from Node.js. */
  var freeGlobal$2 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;

  /** Detect free variable `self`. */
  var freeSelf$2 = typeof self == 'object' && self && self.Object === Object && self;

  /** Used as a reference to the global object. */
  var root$2 = freeGlobal$2 || freeSelf$2 || Function('return this')();

  /**
   * Gets the value at `key` of `object`.
   *
   * @private
   * @param {Object} [object] The object to query.
   * @param {string} key The key of the property to get.
   * @returns {*} Returns the property value.
   */
  function getValue(object, key) {
    return object == null ? undefined : object[key];
  }

  /**
   * Checks if `value` is a host object in IE < 9.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
   */
  function isHostObject(value) {
    // Many host objects are `Object` objects that can coerce to strings
    // despite having improperly defined `toString` methods.
    var result = false;
    if (value != null && typeof value.toString != 'function') {
      try {
        result = !!(value + '');
      } catch (e) {}
    }
    return result;
  }

  /** Used for built-in method references. */
  var arrayProto = Array.prototype,
      funcProto = Function.prototype,
      objectProto$2 = Object.prototype;

  /** Used to detect overreaching core-js shims. */
  var coreJsData = root$2['__core-js_shared__'];

  /** Used to detect methods masquerading as native. */
  var maskSrcKey = (function() {
    var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
    return uid ? ('Symbol(src)_1.' + uid) : '';
  }());

  /** Used to resolve the decompiled source of functions. */
  var funcToString = funcProto.toString;

  /** Used to check objects for own properties. */
  var hasOwnProperty$1 = objectProto$2.hasOwnProperty;

  /**
   * Used to resolve the
   * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
   * of values.
   */
  var objectToString$2 = objectProto$2.toString;

  /** Used to detect if a method is native. */
  var reIsNative = RegExp('^' +
    funcToString.call(hasOwnProperty$1).replace(reRegExpChar, '\\$&')
    .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  );

  /** Built-in value references. */
  var splice = arrayProto.splice;

  /* Built-in method references that are verified to be native. */
  var Map$1 = getNative(root$2, 'Map'),
      nativeCreate = getNative(Object, 'create');

  /**
   * Creates a hash object.
   *
   * @private
   * @constructor
   * @param {Array} [entries] The key-value pairs to cache.
   */
  function Hash(entries) {
    var index = -1,
        length = entries ? entries.length : 0;

    this.clear();
    while (++index < length) {
      var entry = entries[index];
      this.set(entry[0], entry[1]);
    }
  }

  /**
   * Removes all key-value entries from the hash.
   *
   * @private
   * @name clear
   * @memberOf Hash
   */
  function hashClear() {
    this.__data__ = nativeCreate ? nativeCreate(null) : {};
  }

  /**
   * Removes `key` and its value from the hash.
   *
   * @private
   * @name delete
   * @memberOf Hash
   * @param {Object} hash The hash to modify.
   * @param {string} key The key of the value to remove.
   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
   */
  function hashDelete(key) {
    return this.has(key) && delete this.__data__[key];
  }

  /**
   * Gets the hash value for `key`.
   *
   * @private
   * @name get
   * @memberOf Hash
   * @param {string} key The key of the value to get.
   * @returns {*} Returns the entry value.
   */
  function hashGet(key) {
    var data = this.__data__;
    if (nativeCreate) {
      var result = data[key];
      return result === HASH_UNDEFINED ? undefined : result;
    }
    return hasOwnProperty$1.call(data, key) ? data[key] : undefined;
  }

  /**
   * Checks if a hash value for `key` exists.
   *
   * @private
   * @name has
   * @memberOf Hash
   * @param {string} key The key of the entry to check.
   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
   */
  function hashHas(key) {
    var data = this.__data__;
    return nativeCreate ? data[key] !== undefined : hasOwnProperty$1.call(data, key);
  }

  /**
   * Sets the hash `key` to `value`.
   *
   * @private
   * @name set
   * @memberOf Hash
   * @param {string} key The key of the value to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns the hash instance.
   */
  function hashSet(key, value) {
    var data = this.__data__;
    data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
    return this;
  }

  // Add methods to `Hash`.
  Hash.prototype.clear = hashClear;
  Hash.prototype['delete'] = hashDelete;
  Hash.prototype.get = hashGet;
  Hash.prototype.has = hashHas;
  Hash.prototype.set = hashSet;

  /**
   * Creates an list cache object.
   *
   * @private
   * @constructor
   * @param {Array} [entries] The key-value pairs to cache.
   */
  function ListCache(entries) {
    var index = -1,
        length = entries ? entries.length : 0;

    this.clear();
    while (++index < length) {
      var entry = entries[index];
      this.set(entry[0], entry[1]);
    }
  }

  /**
   * Removes all key-value entries from the list cache.
   *
   * @private
   * @name clear
   * @memberOf ListCache
   */
  function listCacheClear() {
    this.__data__ = [];
  }

  /**
   * Removes `key` and its value from the list cache.
   *
   * @private
   * @name delete
   * @memberOf ListCache
   * @param {string} key The key of the value to remove.
   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
   */
  function listCacheDelete(key) {
    var data = this.__data__,
        index = assocIndexOf(data, key);

    if (index < 0) {
      return false;
    }
    var lastIndex = data.length - 1;
    if (index == lastIndex) {
      data.pop();
    } else {
      splice.call(data, index, 1);
    }
    return true;
  }

  /**
   * Gets the list cache value for `key`.
   *
   * @private
   * @name get
   * @memberOf ListCache
   * @param {string} key The key of the value to get.
   * @returns {*} Returns the entry value.
   */
  function listCacheGet(key) {
    var data = this.__data__,
        index = assocIndexOf(data, key);

    return index < 0 ? undefined : data[index][1];
  }

  /**
   * Checks if a list cache value for `key` exists.
   *
   * @private
   * @name has
   * @memberOf ListCache
   * @param {string} key The key of the entry to check.
   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
   */
  function listCacheHas(key) {
    return assocIndexOf(this.__data__, key) > -1;
  }

  /**
   * Sets the list cache `key` to `value`.
   *
   * @private
   * @name set
   * @memberOf ListCache
   * @param {string} key The key of the value to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns the list cache instance.
   */
  function listCacheSet(key, value) {
    var data = this.__data__,
        index = assocIndexOf(data, key);

    if (index < 0) {
      data.push([key, value]);
    } else {
      data[index][1] = value;
    }
    return this;
  }

  // Add methods to `ListCache`.
  ListCache.prototype.clear = listCacheClear;
  ListCache.prototype['delete'] = listCacheDelete;
  ListCache.prototype.get = listCacheGet;
  ListCache.prototype.has = listCacheHas;
  ListCache.prototype.set = listCacheSet;

  /**
   * Creates a map cache object to store key-value pairs.
   *
   * @private
   * @constructor
   * @param {Array} [entries] The key-value pairs to cache.
   */
  function MapCache(entries) {
    var index = -1,
        length = entries ? entries.length : 0;

    this.clear();
    while (++index < length) {
      var entry = entries[index];
      this.set(entry[0], entry[1]);
    }
  }

  /**
   * Removes all key-value entries from the map.
   *
   * @private
   * @name clear
   * @memberOf MapCache
   */
  function mapCacheClear() {
    this.__data__ = {
      'hash': new Hash,
      'map': new (Map$1 || ListCache),
      'string': new Hash
    };
  }

  /**
   * Removes `key` and its value from the map.
   *
   * @private
   * @name delete
   * @memberOf MapCache
   * @param {string} key The key of the value to remove.
   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
   */
  function mapCacheDelete(key) {
    return getMapData(this, key)['delete'](key);
  }

  /**
   * Gets the map value for `key`.
   *
   * @private
   * @name get
   * @memberOf MapCache
   * @param {string} key The key of the value to get.
   * @returns {*} Returns the entry value.
   */
  function mapCacheGet(key) {
    return getMapData(this, key).get(key);
  }

  /**
   * Checks if a map value for `key` exists.
   *
   * @private
   * @name has
   * @memberOf MapCache
   * @param {string} key The key of the entry to check.
   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
   */
  function mapCacheHas(key) {
    return getMapData(this, key).has(key);
  }

  /**
   * Sets the map `key` to `value`.
   *
   * @private
   * @name set
   * @memberOf MapCache
   * @param {string} key The key of the value to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns the map cache instance.
   */
  function mapCacheSet(key, value) {
    getMapData(this, key).set(key, value);
    return this;
  }

  // Add methods to `MapCache`.
  MapCache.prototype.clear = mapCacheClear;
  MapCache.prototype['delete'] = mapCacheDelete;
  MapCache.prototype.get = mapCacheGet;
  MapCache.prototype.has = mapCacheHas;
  MapCache.prototype.set = mapCacheSet;

  /**
   * Gets the index at which the `key` is found in `array` of key-value pairs.
   *
   * @private
   * @param {Array} array The array to inspect.
   * @param {*} key The key to search for.
   * @returns {number} Returns the index of the matched value, else `-1`.
   */
  function assocIndexOf(array, key) {
    var length = array.length;
    while (length--) {
      if (eq(array[length][0], key)) {
        return length;
      }
    }
    return -1;
  }

  /**
   * The base implementation of `_.isNative` without bad shim checks.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a native function,
   *  else `false`.
   */
  function baseIsNative(value) {
    if (!isObject$3(value) || isMasked(value)) {
      return false;
    }
    var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
    return pattern.test(toSource(value));
  }

  /**
   * Gets the data for `map`.
   *
   * @private
   * @param {Object} map The map to query.
   * @param {string} key The reference key.
   * @returns {*} Returns the map data.
   */
  function getMapData(map, key) {
    var data = map.__data__;
    return isKeyable(key)
      ? data[typeof key == 'string' ? 'string' : 'hash']
      : data.map;
  }

  /**
   * Gets the native function at `key` of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @param {string} key The key of the method to get.
   * @returns {*} Returns the function if it's native, else `undefined`.
   */
  function getNative(object, key) {
    var value = getValue(object, key);
    return baseIsNative(value) ? value : undefined;
  }

  /**
   * Checks if `value` is suitable for use as unique object key.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
   */
  function isKeyable(value) {
    var type = typeof value;
    return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
      ? (value !== '__proto__')
      : (value === null);
  }

  /**
   * Checks if `func` has its source masked.
   *
   * @private
   * @param {Function} func The function to check.
   * @returns {boolean} Returns `true` if `func` is masked, else `false`.
   */
  function isMasked(func) {
    return !!maskSrcKey && (maskSrcKey in func);
  }

  /**
   * Converts `func` to its source code.
   *
   * @private
   * @param {Function} func The function to process.
   * @returns {string} Returns the source code.
   */
  function toSource(func) {
    if (func != null) {
      try {
        return funcToString.call(func);
      } catch (e) {}
      try {
        return (func + '');
      } catch (e) {}
    }
    return '';
  }

  /**
   * Creates a function that memoizes the result of `func`. If `resolver` is
   * provided, it determines the cache key for storing the result based on the
   * arguments provided to the memoized function. By default, the first argument
   * provided to the memoized function is used as the map cache key. The `func`
   * is invoked with the `this` binding of the memoized function.
   *
   * **Note:** The cache is exposed as the `cache` property on the memoized
   * function. Its creation may be customized by replacing the `_.memoize.Cache`
   * constructor with one whose instances implement the
   * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
   * method interface of `delete`, `get`, `has`, and `set`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to have its output memoized.
   * @param {Function} [resolver] The function to resolve the cache key.
   * @returns {Function} Returns the new memoized function.
   * @example
   *
   * var object = { 'a': 1, 'b': 2 };
   * var other = { 'c': 3, 'd': 4 };
   *
   * var values = _.memoize(_.values);
   * values(object);
   * // => [1, 2]
   *
   * values(other);
   * // => [3, 4]
   *
   * object.a = 2;
   * values(object);
   * // => [1, 2]
   *
   * // Modify the result cache.
   * values.cache.set(object, ['a', 'b']);
   * values(object);
   * // => ['a', 'b']
   *
   * // Replace `_.memoize.Cache`.
   * _.memoize.Cache = WeakMap;
   */
  function memoize(func, resolver) {
    if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
      throw new TypeError(FUNC_ERROR_TEXT$2);
    }
    var memoized = function() {
      var args = arguments,
          key = resolver ? resolver.apply(this, args) : args[0],
          cache = memoized.cache;

      if (cache.has(key)) {
        return cache.get(key);
      }
      var result = func.apply(this, args);
      memoized.cache = cache.set(key, result);
      return result;
    };
    memoized.cache = new (memoize.Cache || MapCache);
    return memoized;
  }

  // Assign cache to `_.memoize`.
  memoize.Cache = MapCache;

  /**
   * Performs a
   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * comparison between two values to determine if they are equivalent.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
   * @example
   *
   * var object = { 'a': 1 };
   * var other = { 'a': 1 };
   *
   * _.eq(object, object);
   * // => true
   *
   * _.eq(object, other);
   * // => false
   *
   * _.eq('a', 'a');
   * // => true
   *
   * _.eq('a', Object('a'));
   * // => false
   *
   * _.eq(NaN, NaN);
   * // => true
   */
  function eq(value, other) {
    return value === other || (value !== value && other !== other);
  }

  /**
   * Checks if `value` is classified as a `Function` object.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a function, else `false`.
   * @example
   *
   * _.isFunction(_);
   * // => true
   *
   * _.isFunction(/abc/);
   * // => false
   */
  function isFunction(value) {
    // The use of `Object#toString` avoids issues with the `typeof` operator
    // in Safari 8-9 which returns 'object' for typed array and other constructors.
    var tag = isObject$3(value) ? objectToString$2.call(value) : '';
    return tag == funcTag || tag == genTag;
  }

  /**
   * Checks if `value` is the
   * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
   * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an object, else `false`.
   * @example
   *
   * _.isObject({});
   * // => true
   *
   * _.isObject([1, 2, 3]);
   * // => true
   *
   * _.isObject(_.noop);
   * // => true
   *
   * _.isObject(null);
   * // => false
   */
  function isObject$3(value) {
    var type = typeof value;
    return !!value && (type == 'object' || type == 'function');
  }

  var lodash_memoize = memoize;

  /**
   * A collection of shims that provide minimal functionality of the ES6 collections.
   *
   * These implementations are not meant to be used outside of the ResizeObserver
   * modules as they cover only a limited range of use cases.
   */
  /* eslint-disable require-jsdoc, valid-jsdoc */
  var MapShim = (function () {
      if (typeof Map !== 'undefined') {
          return Map;
      }
      /**
       * Returns index in provided array that matches the specified key.
       *
       * @param {Array<Array>} arr
       * @param {*} key
       * @returns {number}
       */
      function getIndex(arr, key) {
          var result = -1;
          arr.some(function (entry, index) {
              if (entry[0] === key) {
                  result = index;
                  return true;
              }
              return false;
          });
          return result;
      }
      return /** @class */ (function () {
          function class_1() {
              this.__entries__ = [];
          }
          Object.defineProperty(class_1.prototype, "size", {
              /**
               * @returns {boolean}
               */
              get: function () {
                  return this.__entries__.length;
              },
              enumerable: true,
              configurable: true
          });
          /**
           * @param {*} key
           * @returns {*}
           */
          class_1.prototype.get = function (key) {
              var index = getIndex(this.__entries__, key);
              var entry = this.__entries__[index];
              return entry && entry[1];
          };
          /**
           * @param {*} key
           * @param {*} value
           * @returns {void}
           */
          class_1.prototype.set = function (key, value) {
              var index = getIndex(this.__entries__, key);
              if (~index) {
                  this.__entries__[index][1] = value;
              }
              else {
                  this.__entries__.push([key, value]);
              }
          };
          /**
           * @param {*} key
           * @returns {void}
           */
          class_1.prototype.delete = function (key) {
              var entries = this.__entries__;
              var index = getIndex(entries, key);
              if (~index) {
                  entries.splice(index, 1);
              }
          };
          /**
           * @param {*} key
           * @returns {void}
           */
          class_1.prototype.has = function (key) {
              return !!~getIndex(this.__entries__, key);
          };
          /**
           * @returns {void}
           */
          class_1.prototype.clear = function () {
              this.__entries__.splice(0);
          };
          /**
           * @param {Function} callback
           * @param {*} [ctx=null]
           * @returns {void}
           */
          class_1.prototype.forEach = function (callback, ctx) {
              if (ctx === void 0) { ctx = null; }
              for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {
                  var entry = _a[_i];
                  callback.call(ctx, entry[1], entry[0]);
              }
          };
          return class_1;
      }());
  })();

  /**
   * Detects whether window and document objects are available in current environment.
   */
  var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;

  // Returns global object of a current environment.
  var global$1$1 = (function () {
      if (typeof global !== 'undefined' && global.Math === Math) {
          return global;
      }
      if (typeof self !== 'undefined' && self.Math === Math) {
          return self;
      }
      if (typeof window !== 'undefined' && window.Math === Math) {
          return window;
      }
      // eslint-disable-next-line no-new-func
      return Function('return this')();
  })();

  /**
   * A shim for the requestAnimationFrame which falls back to the setTimeout if
   * first one is not supported.
   *
   * @returns {number} Requests' identifier.
   */
  var requestAnimationFrame$1 = (function () {
      if (typeof requestAnimationFrame === 'function') {
          // It's required to use a bounded function because IE sometimes throws
          // an "Invalid calling object" error if rAF is invoked without the global
          // object on the left hand side.
          return requestAnimationFrame.bind(global$1$1);
      }
      return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };
  })();

  // Defines minimum timeout before adding a trailing call.
  var trailingTimeout = 2;
  /**
   * Creates a wrapper function which ensures that provided callback will be
   * invoked only once during the specified delay period.
   *
   * @param {Function} callback - Function to be invoked after the delay period.
   * @param {number} delay - Delay after which to invoke callback.
   * @returns {Function}
   */
  function throttle$1 (callback, delay) {
      var leadingCall = false, trailingCall = false, lastCallTime = 0;
      /**
       * Invokes the original callback function and schedules new invocation if
       * the "proxy" was called during current request.
       *
       * @returns {void}
       */
      function resolvePending() {
          if (leadingCall) {
              leadingCall = false;
              callback();
          }
          if (trailingCall) {
              proxy();
          }
      }
      /**
       * Callback invoked after the specified delay. It will further postpone
       * invocation of the original function delegating it to the
       * requestAnimationFrame.
       *
       * @returns {void}
       */
      function timeoutCallback() {
          requestAnimationFrame$1(resolvePending);
      }
      /**
       * Schedules invocation of the original function.
       *
       * @returns {void}
       */
      function proxy() {
          var timeStamp = Date.now();
          if (leadingCall) {
              // Reject immediately following calls.
              if (timeStamp - lastCallTime < trailingTimeout) {
                  return;
              }
              // Schedule new call to be in invoked when the pending one is resolved.
              // This is important for "transitions" which never actually start
              // immediately so there is a chance that we might miss one if change
              // happens amids the pending invocation.
              trailingCall = true;
          }
          else {
              leadingCall = true;
              trailingCall = false;
              setTimeout(timeoutCallback, delay);
          }
          lastCallTime = timeStamp;
      }
      return proxy;
  }

  // Minimum delay before invoking the update of observers.
  var REFRESH_DELAY = 20;
  // A list of substrings of CSS properties used to find transition events that
  // might affect dimensions of observed elements.
  var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];
  // Check if MutationObserver is available.
  var mutationObserverSupported = typeof MutationObserver !== 'undefined';
  /**
   * Singleton controller class which handles updates of ResizeObserver instances.
   */
  var ResizeObserverController = /** @class */ (function () {
      /**
       * Creates a new instance of ResizeObserverController.
       *
       * @private
       */
      function ResizeObserverController() {
          /**
           * Indicates whether DOM listeners have been added.
           *
           * @private {boolean}
           */
          this.connected_ = false;
          /**
           * Tells that controller has subscribed for Mutation Events.
           *
           * @private {boolean}
           */
          this.mutationEventsAdded_ = false;
          /**
           * Keeps reference to the instance of MutationObserver.
           *
           * @private {MutationObserver}
           */
          this.mutationsObserver_ = null;
          /**
           * A list of connected observers.
           *
           * @private {Array<ResizeObserverSPI>}
           */
          this.observers_ = [];
          this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);
          this.refresh = throttle$1(this.refresh.bind(this), REFRESH_DELAY);
      }
      /**
       * Adds observer to observers list.
       *
       * @param {ResizeObserverSPI} observer - Observer to be added.
       * @returns {void}
       */
      ResizeObserverController.prototype.addObserver = function (observer) {
          if (!~this.observers_.indexOf(observer)) {
              this.observers_.push(observer);
          }
          // Add listeners if they haven't been added yet.
          if (!this.connected_) {
              this.connect_();
          }
      };
      /**
       * Removes observer from observers list.
       *
       * @param {ResizeObserverSPI} observer - Observer to be removed.
       * @returns {void}
       */
      ResizeObserverController.prototype.removeObserver = function (observer) {
          var observers = this.observers_;
          var index = observers.indexOf(observer);
          // Remove observer if it's present in registry.
          if (~index) {
              observers.splice(index, 1);
          }
          // Remove listeners if controller has no connected observers.
          if (!observers.length && this.connected_) {
              this.disconnect_();
          }
      };
      /**
       * Invokes the update of observers. It will continue running updates insofar
       * it detects changes.
       *
       * @returns {void}
       */
      ResizeObserverController.prototype.refresh = function () {
          var changesDetected = this.updateObservers_();
          // Continue running updates if changes have been detected as there might
          // be future ones caused by CSS transitions.
          if (changesDetected) {
              this.refresh();
          }
      };
      /**
       * Updates every observer from observers list and notifies them of queued
       * entries.
       *
       * @private
       * @returns {boolean} Returns "true" if any observer has detected changes in
       *      dimensions of it's elements.
       */
      ResizeObserverController.prototype.updateObservers_ = function () {
          // Collect observers that have active observations.
          var activeObservers = this.observers_.filter(function (observer) {
              return observer.gatherActive(), observer.hasActive();
          });
          // Deliver notifications in a separate cycle in order to avoid any
          // collisions between observers, e.g. when multiple instances of
          // ResizeObserver are tracking the same element and the callback of one
          // of them changes content dimensions of the observed target. Sometimes
          // this may result in notifications being blocked for the rest of observers.
          activeObservers.forEach(function (observer) { return observer.broadcastActive(); });
          return activeObservers.length > 0;
      };
      /**
       * Initializes DOM listeners.
       *
       * @private
       * @returns {void}
       */
      ResizeObserverController.prototype.connect_ = function () {
          // Do nothing if running in a non-browser environment or if listeners
          // have been already added.
          if (!isBrowser || this.connected_) {
              return;
          }
          // Subscription to the "Transitionend" event is used as a workaround for
          // delayed transitions. This way it's possible to capture at least the
          // final state of an element.
          document.addEventListener('transitionend', this.onTransitionEnd_);
          window.addEventListener('resize', this.refresh);
          if (mutationObserverSupported) {
              this.mutationsObserver_ = new MutationObserver(this.refresh);
              this.mutationsObserver_.observe(document, {
                  attributes: true,
                  childList: true,
                  characterData: true,
                  subtree: true
              });
          }
          else {
              document.addEventListener('DOMSubtreeModified', this.refresh);
              this.mutationEventsAdded_ = true;
          }
          this.connected_ = true;
      };
      /**
       * Removes DOM listeners.
       *
       * @private
       * @returns {void}
       */
      ResizeObserverController.prototype.disconnect_ = function () {
          // Do nothing if running in a non-browser environment or if listeners
          // have been already removed.
          if (!isBrowser || !this.connected_) {
              return;
          }
          document.removeEventListener('transitionend', this.onTransitionEnd_);
          window.removeEventListener('resize', this.refresh);
          if (this.mutationsObserver_) {
              this.mutationsObserver_.disconnect();
          }
          if (this.mutationEventsAdded_) {
              document.removeEventListener('DOMSubtreeModified', this.refresh);
          }
          this.mutationsObserver_ = null;
          this.mutationEventsAdded_ = false;
          this.connected_ = false;
      };
      /**
       * "Transitionend" event handler.
       *
       * @private
       * @param {TransitionEvent} event
       * @returns {void}
       */
      ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {
          var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;
          // Detect whether transition may affect dimensions of an element.
          var isReflowProperty = transitionKeys.some(function (key) {
              return !!~propertyName.indexOf(key);
          });
          if (isReflowProperty) {
              this.refresh();
          }
      };
      /**
       * Returns instance of the ResizeObserverController.
       *
       * @returns {ResizeObserverController}
       */
      ResizeObserverController.getInstance = function () {
          if (!this.instance_) {
              this.instance_ = new ResizeObserverController();
          }
          return this.instance_;
      };
      /**
       * Holds reference to the controller's instance.
       *
       * @private {ResizeObserverController}
       */
      ResizeObserverController.instance_ = null;
      return ResizeObserverController;
  }());

  /**
   * Defines non-writable/enumerable properties of the provided target object.
   *
   * @param {Object} target - Object for which to define properties.
   * @param {Object} props - Properties to be defined.
   * @returns {Object} Target object.
   */
  var defineConfigurable = (function (target, props) {
      for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {
          var key = _a[_i];
          Object.defineProperty(target, key, {
              value: props[key],
              enumerable: false,
              writable: false,
              configurable: true
          });
      }
      return target;
  });

  /**
   * Returns the global object associated with provided element.
   *
   * @param {Object} target
   * @returns {Object}
   */
  var getWindowOf = (function (target) {
      // Assume that the element is an instance of Node, which means that it
      // has the "ownerDocument" property from which we can retrieve a
      // corresponding global object.
      var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;
      // Return the local global object if it's not possible extract one from
      // provided element.
      return ownerGlobal || global$1$1;
  });

  // Placeholder of an empty content rectangle.
  var emptyRect = createRectInit(0, 0, 0, 0);
  /**
   * Converts provided string to a number.
   *
   * @param {number|string} value
   * @returns {number}
   */
  function toFloat(value) {
      return parseFloat(value) || 0;
  }
  /**
   * Extracts borders size from provided styles.
   *
   * @param {CSSStyleDeclaration} styles
   * @param {...string} positions - Borders positions (top, right, ...)
   * @returns {number}
   */
  function getBordersSize(styles) {
      var positions = [];
      for (var _i = 1; _i < arguments.length; _i++) {
          positions[_i - 1] = arguments[_i];
      }
      return positions.reduce(function (size, position) {
          var value = styles['border-' + position + '-width'];
          return size + toFloat(value);
      }, 0);
  }
  /**
   * Extracts paddings sizes from provided styles.
   *
   * @param {CSSStyleDeclaration} styles
   * @returns {Object} Paddings box.
   */
  function getPaddings(styles) {
      var positions = ['top', 'right', 'bottom', 'left'];
      var paddings = {};
      for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {
          var position = positions_1[_i];
          var value = styles['padding-' + position];
          paddings[position] = toFloat(value);
      }
      return paddings;
  }
  /**
   * Calculates content rectangle of provided SVG element.
   *
   * @param {SVGGraphicsElement} target - Element content rectangle of which needs
   *      to be calculated.
   * @returns {DOMRectInit}
   */
  function getSVGContentRect(target) {
      var bbox = target.getBBox();
      return createRectInit(0, 0, bbox.width, bbox.height);
  }
  /**
   * Calculates content rectangle of provided HTMLElement.
   *
   * @param {HTMLElement} target - Element for which to calculate the content rectangle.
   * @returns {DOMRectInit}
   */
  function getHTMLElementContentRect(target) {
      // Client width & height properties can't be
      // used exclusively as they provide rounded values.
      var clientWidth = target.clientWidth, clientHeight = target.clientHeight;
      // By this condition we can catch all non-replaced inline, hidden and
      // detached elements. Though elements with width & height properties less
      // than 0.5 will be discarded as well.
      //
      // Without it we would need to implement separate methods for each of
      // those cases and it's not possible to perform a precise and performance
      // effective test for hidden elements. E.g. even jQuery's ':visible' filter
      // gives wrong results for elements with width & height less than 0.5.
      if (!clientWidth && !clientHeight) {
          return emptyRect;
      }
      var styles = getWindowOf(target).getComputedStyle(target);
      var paddings = getPaddings(styles);
      var horizPad = paddings.left + paddings.right;
      var vertPad = paddings.top + paddings.bottom;
      // Computed styles of width & height are being used because they are the
      // only dimensions available to JS that contain non-rounded values. It could
      // be possible to utilize the getBoundingClientRect if only it's data wasn't
      // affected by CSS transformations let alone paddings, borders and scroll bars.
      var width = toFloat(styles.width), height = toFloat(styles.height);
      // Width & height include paddings and borders when the 'border-box' box
      // model is applied (except for IE).
      if (styles.boxSizing === 'border-box') {
          // Following conditions are required to handle Internet Explorer which
          // doesn't include paddings and borders to computed CSS dimensions.
          //
          // We can say that if CSS dimensions + paddings are equal to the "client"
          // properties then it's either IE, and thus we don't need to subtract
          // anything, or an element merely doesn't have paddings/borders styles.
          if (Math.round(width + horizPad) !== clientWidth) {
              width -= getBordersSize(styles, 'left', 'right') + horizPad;
          }
          if (Math.round(height + vertPad) !== clientHeight) {
              height -= getBordersSize(styles, 'top', 'bottom') + vertPad;
          }
      }
      // Following steps can't be applied to the document's root element as its
      // client[Width/Height] properties represent viewport area of the window.
      // Besides, it's as well not necessary as the <html> itself neither has
      // rendered scroll bars nor it can be clipped.
      if (!isDocumentElement(target)) {
          // In some browsers (only in Firefox, actually) CSS width & height
          // include scroll bars size which can be removed at this step as scroll
          // bars are the only difference between rounded dimensions + paddings
          // and "client" properties, though that is not always true in Chrome.
          var vertScrollbar = Math.round(width + horizPad) - clientWidth;
          var horizScrollbar = Math.round(height + vertPad) - clientHeight;
          // Chrome has a rather weird rounding of "client" properties.
          // E.g. for an element with content width of 314.2px it sometimes gives
          // the client width of 315px and for the width of 314.7px it may give
          // 314px. And it doesn't happen all the time. So just ignore this delta
          // as a non-relevant.
          if (Math.abs(vertScrollbar) !== 1) {
              width -= vertScrollbar;
          }
          if (Math.abs(horizScrollbar) !== 1) {
              height -= horizScrollbar;
          }
      }
      return createRectInit(paddings.left, paddings.top, width, height);
  }
  /**
   * Checks whether provided element is an instance of the SVGGraphicsElement.
   *
   * @param {Element} target - Element to be checked.
   * @returns {boolean}
   */
  var isSVGGraphicsElement = (function () {
      // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement
      // interface.
      if (typeof SVGGraphicsElement !== 'undefined') {
          return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };
      }
      // If it's so, then check that element is at least an instance of the
      // SVGElement and that it has the "getBBox" method.
      // eslint-disable-next-line no-extra-parens
      return function (target) { return (target instanceof getWindowOf(target).SVGElement &&
          typeof target.getBBox === 'function'); };
  })();
  /**
   * Checks whether provided element is a document element (<html>).
   *
   * @param {Element} target - Element to be checked.
   * @returns {boolean}
   */
  function isDocumentElement(target) {
      return target === getWindowOf(target).document.documentElement;
  }
  /**
   * Calculates an appropriate content rectangle for provided html or svg element.
   *
   * @param {Element} target - Element content rectangle of which needs to be calculated.
   * @returns {DOMRectInit}
   */
  function getContentRect(target) {
      if (!isBrowser) {
          return emptyRect;
      }
      if (isSVGGraphicsElement(target)) {
          return getSVGContentRect(target);
      }
      return getHTMLElementContentRect(target);
  }
  /**
   * Creates rectangle with an interface of the DOMRectReadOnly.
   * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly
   *
   * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.
   * @returns {DOMRectReadOnly}
   */
  function createReadOnlyRect(_a) {
      var x = _a.x, y = _a.y, width = _a.width, height = _a.height;
      // If DOMRectReadOnly is available use it as a prototype for the rectangle.
      var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;
      var rect = Object.create(Constr.prototype);
      // Rectangle's properties are not writable and non-enumerable.
      defineConfigurable(rect, {
          x: x, y: y, width: width, height: height,
          top: y,
          right: x + width,
          bottom: height + y,
          left: x
      });
      return rect;
  }
  /**
   * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.
   * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit
   *
   * @param {number} x - X coordinate.
   * @param {number} y - Y coordinate.
   * @param {number} width - Rectangle's width.
   * @param {number} height - Rectangle's height.
   * @returns {DOMRectInit}
   */
  function createRectInit(x, y, width, height) {
      return { x: x, y: y, width: width, height: height };
  }

  /**
   * Class that is responsible for computations of the content rectangle of
   * provided DOM element and for keeping track of it's changes.
   */
  var ResizeObservation = /** @class */ (function () {
      /**
       * Creates an instance of ResizeObservation.
       *
       * @param {Element} target - Element to be observed.
       */
      function ResizeObservation(target) {
          /**
           * Broadcasted width of content rectangle.
           *
           * @type {number}
           */
          this.broadcastWidth = 0;
          /**
           * Broadcasted height of content rectangle.
           *
           * @type {number}
           */
          this.broadcastHeight = 0;
          /**
           * Reference to the last observed content rectangle.
           *
           * @private {DOMRectInit}
           */
          this.contentRect_ = createRectInit(0, 0, 0, 0);
          this.target = target;
      }
      /**
       * Updates content rectangle and tells whether it's width or height properties
       * have changed since the last broadcast.
       *
       * @returns {boolean}
       */
      ResizeObservation.prototype.isActive = function () {
          var rect = getContentRect(this.target);
          this.contentRect_ = rect;
          return (rect.width !== this.broadcastWidth ||
              rect.height !== this.broadcastHeight);
      };
      /**
       * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data
       * from the corresponding properties of the last observed content rectangle.
       *
       * @returns {DOMRectInit} Last observed content rectangle.
       */
      ResizeObservation.prototype.broadcastRect = function () {
          var rect = this.contentRect_;
          this.broadcastWidth = rect.width;
          this.broadcastHeight = rect.height;
          return rect;
      };
      return ResizeObservation;
  }());

  var ResizeObserverEntry = /** @class */ (function () {
      /**
       * Creates an instance of ResizeObserverEntry.
       *
       * @param {Element} target - Element that is being observed.
       * @param {DOMRectInit} rectInit - Data of the element's content rectangle.
       */
      function ResizeObserverEntry(target, rectInit) {
          var contentRect = createReadOnlyRect(rectInit);
          // According to the specification following properties are not writable
          // and are also not enumerable in the native implementation.
          //
          // Property accessors are not being used as they'd require to define a
          // private WeakMap storage which may cause memory leaks in browsers that
          // don't support this type of collections.
          defineConfigurable(this, { target: target, contentRect: contentRect });
      }
      return ResizeObserverEntry;
  }());

  var ResizeObserverSPI = /** @class */ (function () {
      /**
       * Creates a new instance of ResizeObserver.
       *
       * @param {ResizeObserverCallback} callback - Callback function that is invoked
       *      when one of the observed elements changes it's content dimensions.
       * @param {ResizeObserverController} controller - Controller instance which
       *      is responsible for the updates of observer.
       * @param {ResizeObserver} callbackCtx - Reference to the public
       *      ResizeObserver instance which will be passed to callback function.
       */
      function ResizeObserverSPI(callback, controller, callbackCtx) {
          /**
           * Collection of resize observations that have detected changes in dimensions
           * of elements.
           *
           * @private {Array<ResizeObservation>}
           */
          this.activeObservations_ = [];
          /**
           * Registry of the ResizeObservation instances.
           *
           * @private {Map<Element, ResizeObservation>}
           */
          this.observations_ = new MapShim();
          if (typeof callback !== 'function') {
              throw new TypeError('The callback provided as parameter 1 is not a function.');
          }
          this.callback_ = callback;
          this.controller_ = controller;
          this.callbackCtx_ = callbackCtx;
      }
      /**
       * Starts observing provided element.
       *
       * @param {Element} target - Element to be observed.
       * @returns {void}
       */
      ResizeObserverSPI.prototype.observe = function (target) {
          if (!arguments.length) {
              throw new TypeError('1 argument required, but only 0 present.');
          }
          // Do nothing if current environment doesn't have the Element interface.
          if (typeof Element === 'undefined' || !(Element instanceof Object)) {
              return;
          }
          if (!(target instanceof getWindowOf(target).Element)) {
              throw new TypeError('parameter 1 is not of type "Element".');
          }
          var observations = this.observations_;
          // Do nothing if element is already being observed.
          if (observations.has(target)) {
              return;
          }
          observations.set(target, new ResizeObservation(target));
          this.controller_.addObserver(this);
          // Force the update of observations.
          this.controller_.refresh();
      };
      /**
       * Stops observing provided element.
       *
       * @param {Element} target - Element to stop observing.
       * @returns {void}
       */
      ResizeObserverSPI.prototype.unobserve = function (target) {
          if (!arguments.length) {
              throw new TypeError('1 argument required, but only 0 present.');
          }
          // Do nothing if current environment doesn't have the Element interface.
          if (typeof Element === 'undefined' || !(Element instanceof Object)) {
              return;
          }
          if (!(target instanceof getWindowOf(target).Element)) {
              throw new TypeError('parameter 1 is not of type "Element".');
          }
          var observations = this.observations_;
          // Do nothing if element is not being observed.
          if (!observations.has(target)) {
              return;
          }
          observations.delete(target);
          if (!observations.size) {
              this.controller_.removeObserver(this);
          }
      };
      /**
       * Stops observing all elements.
       *
       * @returns {void}
       */
      ResizeObserverSPI.prototype.disconnect = function () {
          this.clearActive();
          this.observations_.clear();
          this.controller_.removeObserver(this);
      };
      /**
       * Collects observation instances the associated element of which has changed
       * it's content rectangle.
       *
       * @returns {void}
       */
      ResizeObserverSPI.prototype.gatherActive = function () {
          var _this = this;
          this.clearActive();
          this.observations_.forEach(function (observation) {
              if (observation.isActive()) {
                  _this.activeObservations_.push(observation);
              }
          });
      };
      /**
       * Invokes initial callback function with a list of ResizeObserverEntry
       * instances collected from active resize observations.
       *
       * @returns {void}
       */
      ResizeObserverSPI.prototype.broadcastActive = function () {
          // Do nothing if observer doesn't have active observations.
          if (!this.hasActive()) {
              return;
          }
          var ctx = this.callbackCtx_;
          // Create ResizeObserverEntry instance for every active observation.
          var entries = this.activeObservations_.map(function (observation) {
              return new ResizeObserverEntry(observation.target, observation.broadcastRect());
          });
          this.callback_.call(ctx, entries, ctx);
          this.clearActive();
      };
      /**
       * Clears the collection of active observations.
       *
       * @returns {void}
       */
      ResizeObserverSPI.prototype.clearActive = function () {
          this.activeObservations_.splice(0);
      };
      /**
       * Tells whether observer has active observations.
       *
       * @returns {boolean}
       */
      ResizeObserverSPI.prototype.hasActive = function () {
          return this.activeObservations_.length > 0;
      };
      return ResizeObserverSPI;
  }());

  // Registry of internal observers. If WeakMap is not available use current shim
  // for the Map collection as it has all required methods and because WeakMap
  // can't be fully polyfilled anyway.
  var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();
  /**
   * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation
   * exposing only those methods and properties that are defined in the spec.
   */
  var ResizeObserver = /** @class */ (function () {
      /**
       * Creates a new instance of ResizeObserver.
       *
       * @param {ResizeObserverCallback} callback - Callback that is invoked when
       *      dimensions of the observed elements change.
       */
      function ResizeObserver(callback) {
          if (!(this instanceof ResizeObserver)) {
              throw new TypeError('Cannot call a class as a function.');
          }
          if (!arguments.length) {
              throw new TypeError('1 argument required, but only 0 present.');
          }
          var controller = ResizeObserverController.getInstance();
          var observer = new ResizeObserverSPI(callback, controller, this);
          observers.set(this, observer);
      }
      return ResizeObserver;
  }());
  // Expose public methods of ResizeObserver.
  [
      'observe',
      'unobserve',
      'disconnect'
  ].forEach(function (method) {
      ResizeObserver.prototype[method] = function () {
          var _a;
          return (_a = observers.get(this))[method].apply(_a, arguments);
      };
  });

  var index = (function () {
      // Export existing implementation if available.
      if (typeof global$1$1.ResizeObserver !== 'undefined') {
          return global$1$1.ResizeObserver;
      }
      return ResizeObserver;
  })();

  var canUseDOM = !!(
    typeof window !== 'undefined' &&
    window.document &&
    window.document.createElement
  );

  var canUseDom = canUseDOM;

  function scrollbarWidth() {
    if (typeof document === 'undefined') {
      return 0;
    }

    var body = document.body;
    var box = document.createElement('div');
    var boxStyle = box.style;
    boxStyle.position = 'fixed';
    boxStyle.left = 0;
    boxStyle.visibility = 'hidden';
    boxStyle.overflowY = 'scroll';
    body.appendChild(box);
    var width = box.getBoundingClientRect().right;
    body.removeChild(box);
    return width;
  }

  var SimpleBar =
  /*#__PURE__*/
  function () {
    function SimpleBar(element, options) {
      var _this = this;

      this.onScroll = function () {
        if (!_this.scrollXTicking) {
          window.requestAnimationFrame(_this.scrollX);
          _this.scrollXTicking = true;
        }

        if (!_this.scrollYTicking) {
          window.requestAnimationFrame(_this.scrollY);
          _this.scrollYTicking = true;
        }
      };

      this.scrollX = function () {
        if (_this.axis.x.isOverflowing) {
          _this.showScrollbar('x');

          _this.positionScrollbar('x');
        }

        _this.scrollXTicking = false;
      };

      this.scrollY = function () {
        if (_this.axis.y.isOverflowing) {
          _this.showScrollbar('y');

          _this.positionScrollbar('y');
        }

        _this.scrollYTicking = false;
      };

      this.onMouseEnter = function () {
        _this.showScrollbar('x');

        _this.showScrollbar('y');
      };

      this.onMouseMove = function (e) {
        _this.mouseX = e.clientX;
        _this.mouseY = e.clientY;

        if (_this.axis.x.isOverflowing || _this.axis.x.forceVisible) {
          _this.onMouseMoveForAxis('x');
        }

        if (_this.axis.y.isOverflowing || _this.axis.y.forceVisible) {
          _this.onMouseMoveForAxis('y');
        }
      };

      this.onMouseLeave = function () {
        _this.onMouseMove.cancel();

        if (_this.axis.x.isOverflowing || _this.axis.x.forceVisible) {
          _this.onMouseLeaveForAxis('x');
        }

        if (_this.axis.y.isOverflowing || _this.axis.y.forceVisible) {
          _this.onMouseLeaveForAxis('y');
        }

        _this.mouseX = -1;
        _this.mouseY = -1;
      };

      this.onWindowResize = function () {
        // Recalculate scrollbarWidth in case it's a zoom
        _this.scrollbarWidth = scrollbarWidth();

        _this.hideNativeScrollbar();
      };

      this.hideScrollbars = function () {
        _this.axis.x.track.rect = _this.axis.x.track.el.getBoundingClientRect();
        _this.axis.y.track.rect = _this.axis.y.track.el.getBoundingClientRect();

        if (!_this.isWithinBounds(_this.axis.y.track.rect)) {
          _this.axis.y.scrollbar.el.classList.remove(_this.classNames.visible);

          _this.axis.y.isVisible = false;
        }

        if (!_this.isWithinBounds(_this.axis.x.track.rect)) {
          _this.axis.x.scrollbar.el.classList.remove(_this.classNames.visible);

          _this.axis.x.isVisible = false;
        }
      };

      this.onPointerEvent = function (e) {
        var isWithinBoundsY, isWithinBoundsX;
        _this.axis.x.scrollbar.rect = _this.axis.x.scrollbar.el.getBoundingClientRect();
        _this.axis.y.scrollbar.rect = _this.axis.y.scrollbar.el.getBoundingClientRect();

        if (_this.axis.x.isOverflowing || _this.axis.x.forceVisible) {
          isWithinBoundsX = _this.isWithinBounds(_this.axis.x.scrollbar.rect);
        }

        if (_this.axis.y.isOverflowing || _this.axis.y.forceVisible) {
          isWithinBoundsY = _this.isWithinBounds(_this.axis.y.scrollbar.rect);
        } // If any pointer event is called on the scrollbar


        if (isWithinBoundsY || isWithinBoundsX) {
          // Preventing the event's default action stops text being
          // selectable during the drag.
          e.preventDefault(); // Prevent event leaking

          e.stopPropagation();

          if (e.type === 'mousedown') {
            if (isWithinBoundsY) {
              _this.onDragStart(e, 'y');
            }

            if (isWithinBoundsX) {
              _this.onDragStart(e, 'x');
            }
          }
        }
      };

      this.drag = function (e) {
        var eventOffset;
        var track = _this.axis[_this.draggedAxis].track;
        var trackSize = track.rect[_this.axis[_this.draggedAxis].sizeAttr];
        var scrollbar = _this.axis[_this.draggedAxis].scrollbar;
        var contentSize = _this.contentWrapperEl[_this.axis[_this.draggedAxis].scrollSizeAttr];
        var hostSize = parseInt(_this.elStyles[_this.axis[_this.draggedAxis].sizeAttr], 10);
        e.preventDefault();
        e.stopPropagation();

        if (_this.draggedAxis === 'y') {
          eventOffset = e.pageY;
        } else {
          eventOffset = e.pageX;
        } // Calculate how far the user's mouse is from the top/left of the scrollbar (minus the dragOffset).


        var dragPos = eventOffset - track.rect[_this.axis[_this.draggedAxis].offsetAttr] - _this.axis[_this.draggedAxis].dragOffset; // Convert the mouse position into a percentage of the scrollbar height/width.

        var dragPerc = dragPos / (trackSize - scrollbar.size); // Scroll the content by the same percentage.

        var scrollPos = dragPerc * (contentSize - hostSize); // Fix browsers inconsistency on RTL

        if (_this.draggedAxis === 'x') {
          scrollPos = _this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollbarInverted ? scrollPos - (trackSize + scrollbar.size) : scrollPos;
          scrollPos = _this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollingInverted ? -scrollPos : scrollPos;
        }

        _this.contentWrapperEl[_this.axis[_this.draggedAxis].scrollOffsetAttr] = scrollPos;
      };

      this.onEndDrag = function (e) {
        e.preventDefault();
        e.stopPropagation();

        _this.el.classList.remove(_this.classNames.dragging);

        document.removeEventListener('mousemove', _this.drag, true);
        document.removeEventListener('mouseup', _this.onEndDrag, true);
        _this.removePreventClickId = window.setTimeout(function () {
          // Remove these asynchronously so we still suppress click events
          // generated simultaneously with mouseup.
          document.removeEventListener('click', _this.preventClick, true);
          document.removeEventListener('dblclick', _this.preventClick, true);
          _this.removePreventClickId = null;
        });
      };

      this.preventClick = function (e) {
        e.preventDefault();
        e.stopPropagation();
      };

      this.el = element;
      this.flashTimeout;
      this.contentEl;
      this.contentWrapperEl;
      this.offsetEl;
      this.maskEl;
      this.globalObserver;
      this.mutationObserver;
      this.resizeObserver;
      this.scrollbarWidth;
      this.minScrollbarWidth = 20;
      this.options = Object.assign({}, SimpleBar.defaultOptions, options);
      this.classNames = Object.assign({}, SimpleBar.defaultOptions.classNames, this.options.classNames);
      this.isRtl;
      this.axis = {
        x: {
          scrollOffsetAttr: 'scrollLeft',
          sizeAttr: 'width',
          scrollSizeAttr: 'scrollWidth',
          offsetAttr: 'left',
          overflowAttr: 'overflowX',
          dragOffset: 0,
          isOverflowing: true,
          isVisible: false,
          forceVisible: false,
          track: {},
          scrollbar: {}
        },
        y: {
          scrollOffsetAttr: 'scrollTop',
          sizeAttr: 'height',
          scrollSizeAttr: 'scrollHeight',
          offsetAttr: 'top',
          overflowAttr: 'overflowY',
          dragOffset: 0,
          isOverflowing: true,
          isVisible: false,
          forceVisible: false,
          track: {},
          scrollbar: {}
        }
      };
      this.removePreventClickId = null; // Don't re-instantiate over an existing one

      if (this.el.SimpleBar) {
        return;
      }

      this.recalculate = lodash_throttle(this.recalculate.bind(this), 64);
      this.onMouseMove = lodash_throttle(this.onMouseMove.bind(this), 64);
      this.hideScrollbars = lodash_debounce(this.hideScrollbars.bind(this), this.options.timeout);
      this.onWindowResize = lodash_debounce(this.onWindowResize.bind(this), 64, {
        leading: true
      });
      SimpleBar.getRtlHelpers = lodash_memoize(SimpleBar.getRtlHelpers);
      this.init();
    }
    /**
     * Static properties
     */

    /**
     * Helper to fix browsers inconsistency on RTL:
     *  - Firefox inverts the scrollbar initial position
     *  - IE11 inverts both scrollbar position and scrolling offset
     * Directly inspired by @KingSora's OverlayScrollbars https://github.com/KingSora/OverlayScrollbars/blob/master/js/OverlayScrollbars.js#L1634
     */


    SimpleBar.getRtlHelpers = function getRtlHelpers() {
      var dummyDiv = document.createElement('div');
      dummyDiv.innerHTML = '<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';
      var scrollbarDummyEl = dummyDiv.firstElementChild;
      document.body.appendChild(scrollbarDummyEl);
      var dummyContainerChild = scrollbarDummyEl.firstElementChild;
      scrollbarDummyEl.scrollLeft = 0;
      var dummyContainerOffset = SimpleBar.getOffset(scrollbarDummyEl);
      var dummyContainerChildOffset = SimpleBar.getOffset(dummyContainerChild);
      scrollbarDummyEl.scrollLeft = 999;
      var dummyContainerScrollOffsetAfterScroll = SimpleBar.getOffset(dummyContainerChild);
      return {
        // determines if the scrolling is responding with negative values
        isRtlScrollingInverted: dummyContainerOffset.left !== dummyContainerChildOffset.left && dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left !== 0,
        // determines if the origin scrollbar position is inverted or not (positioned on left or right)
        isRtlScrollbarInverted: dummyContainerOffset.left !== dummyContainerChildOffset.left
      };
    };

    SimpleBar.initHtmlApi = function initHtmlApi() {
      this.initDOMLoadedElements = this.initDOMLoadedElements.bind(this); // MutationObserver is IE11+

      if (typeof MutationObserver !== 'undefined') {
        // Mutation observer to observe dynamically added elements
        this.globalObserver = new MutationObserver(function (mutations) {
          mutations.forEach(function (mutation) {
            Array.prototype.forEach.call(mutation.addedNodes, function (addedNode) {
              if (addedNode.nodeType === 1) {
                if (addedNode.hasAttribute('data-simplebar')) {
                  !addedNode.SimpleBar && new SimpleBar(addedNode, SimpleBar.getElOptions(addedNode));
                } else {
                  Array.prototype.forEach.call(addedNode.querySelectorAll('[data-simplebar]'), function (el) {
                    !el.SimpleBar && new SimpleBar(el, SimpleBar.getElOptions(el));
                  });
                }
              }
            });
            Array.prototype.forEach.call(mutation.removedNodes, function (removedNode) {
              if (removedNode.nodeType === 1) {
                if (removedNode.hasAttribute('data-simplebar')) {
                  removedNode.SimpleBar && removedNode.SimpleBar.unMount();
                } else {
                  Array.prototype.forEach.call(removedNode.querySelectorAll('[data-simplebar]'), function (el) {
                    el.SimpleBar && el.SimpleBar.unMount();
                  });
                }
              }
            });
          });
        });
        this.globalObserver.observe(document, {
          childList: true,
          subtree: true
        });
      } // Taken from jQuery `ready` function
      // Instantiate elements already present on the page


      if (document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll) {
        // Handle it asynchronously to allow scripts the opportunity to delay init
        window.setTimeout(this.initDOMLoadedElements);
      } else {
        document.addEventListener('DOMContentLoaded', this.initDOMLoadedElements);
        window.addEventListener('load', this.initDOMLoadedElements);
      }
    } // Helper function to retrieve options from element attributes
    ;

    SimpleBar.getElOptions = function getElOptions(el) {
      var options = Array.prototype.reduce.call(el.attributes, function (acc, attribute) {
        var option = attribute.name.match(/data-simplebar-(.+)/);

        if (option) {
          var key = option[1].replace(/\W+(.)/g, function (x, chr) {
            return chr.toUpperCase();
          });

          switch (attribute.value) {
            case 'true':
              acc[key] = true;
              break;

            case 'false':
              acc[key] = false;
              break;

            case undefined:
              acc[key] = true;
              break;

            default:
              acc[key] = attribute.value;
          }
        }

        return acc;
      }, {});
      return options;
    };

    SimpleBar.removeObserver = function removeObserver() {
      this.globalObserver.disconnect();
    };

    SimpleBar.initDOMLoadedElements = function initDOMLoadedElements() {
      document.removeEventListener('DOMContentLoaded', this.initDOMLoadedElements);
      window.removeEventListener('load', this.initDOMLoadedElements);
      Array.prototype.forEach.call(document.querySelectorAll('[data-simplebar]'), function (el) {
        if (!el.SimpleBar) new SimpleBar(el, SimpleBar.getElOptions(el));
      });
    };

    SimpleBar.getOffset = function getOffset(el) {
      var rect = el.getBoundingClientRect();
      return {
        top: rect.top + (window.pageYOffset || document.documentElement.scrollTop),
        left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft)
      };
    };

    var _proto = SimpleBar.prototype;

    _proto.init = function init() {
      // Save a reference to the instance, so we know this DOM node has already been instancied
      this.el.SimpleBar = this; // We stop here on server-side

      if (canUseDom) {
        this.initDOM();
        this.scrollbarWidth = scrollbarWidth();
        this.recalculate();
        this.initListeners();
      }
    };

    _proto.initDOM = function initDOM() {
      var _this2 = this;

      // make sure this element doesn't have the elements yet
      if (Array.prototype.filter.call(this.el.children, function (child) {
        return child.classList.contains(_this2.classNames.wrapper);
      }).length) {
        // assume that element has his DOM already initiated
        this.wrapperEl = this.el.querySelector("." + this.classNames.wrapper);
        this.contentWrapperEl = this.el.querySelector("." + this.classNames.contentWrapper);
        this.offsetEl = this.el.querySelector("." + this.classNames.offset);
        this.maskEl = this.el.querySelector("." + this.classNames.mask);
        this.contentEl = this.el.querySelector("." + this.classNames.contentEl);
        this.placeholderEl = this.el.querySelector("." + this.classNames.placeholder);
        this.heightAutoObserverWrapperEl = this.el.querySelector("." + this.classNames.heightAutoObserverWrapperEl);
        this.heightAutoObserverEl = this.el.querySelector("." + this.classNames.heightAutoObserverEl);
        this.axis.x.track.el = this.findChild(this.el, "." + this.classNames.track + "." + this.classNames.horizontal);
        this.axis.y.track.el = this.findChild(this.el, "." + this.classNames.track + "." + this.classNames.vertical);
      } else {
        // Prepare DOM
        this.wrapperEl = document.createElement('div');
        this.contentWrapperEl = document.createElement('div');
        this.offsetEl = document.createElement('div');
        this.maskEl = document.createElement('div');
        this.contentEl = document.createElement('div');
        this.placeholderEl = document.createElement('div');
        this.heightAutoObserverWrapperEl = document.createElement('div');
        this.heightAutoObserverEl = document.createElement('div');
        this.wrapperEl.classList.add(this.classNames.wrapper);
        this.contentWrapperEl.classList.add(this.classNames.contentWrapper);
        this.offsetEl.classList.add(this.classNames.offset);
        this.maskEl.classList.add(this.classNames.mask);
        this.contentEl.classList.add(this.classNames.contentEl);
        this.placeholderEl.classList.add(this.classNames.placeholder);
        this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl);
        this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);

        while (this.el.firstChild) {
          this.contentEl.appendChild(this.el.firstChild);
        }

        this.contentWrapperEl.appendChild(this.contentEl);
        this.offsetEl.appendChild(this.contentWrapperEl);
        this.maskEl.appendChild(this.offsetEl);
        this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl);
        this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl);
        this.wrapperEl.appendChild(this.maskEl);
        this.wrapperEl.appendChild(this.placeholderEl);
        this.el.appendChild(this.wrapperEl);
      }

      if (!this.axis.x.track.el || !this.axis.y.track.el) {
        var track = document.createElement('div');
        var scrollbar = document.createElement('div');
        track.classList.add(this.classNames.track);
        scrollbar.classList.add(this.classNames.scrollbar);
        track.appendChild(scrollbar);
        this.axis.x.track.el = track.cloneNode(true);
        this.axis.x.track.el.classList.add(this.classNames.horizontal);
        this.axis.y.track.el = track.cloneNode(true);
        this.axis.y.track.el.classList.add(this.classNames.vertical);
        this.el.appendChild(this.axis.x.track.el);
        this.el.appendChild(this.axis.y.track.el);
      }

      this.axis.x.scrollbar.el = this.axis.x.track.el.querySelector("." + this.classNames.scrollbar);
      this.axis.y.scrollbar.el = this.axis.y.track.el.querySelector("." + this.classNames.scrollbar);

      if (!this.options.autoHide) {
        this.axis.x.scrollbar.el.classList.add(this.classNames.visible);
        this.axis.y.scrollbar.el.classList.add(this.classNames.visible);
      }

      this.el.setAttribute('data-simplebar', 'init');
    };

    _proto.initListeners = function initListeners() {
      var _this3 = this;

      // Event listeners
      if (this.options.autoHide) {
        this.el.addEventListener('mouseenter', this.onMouseEnter);
      }

      ['mousedown', 'click', 'dblclick'].forEach(function (e) {
        _this3.el.addEventListener(e, _this3.onPointerEvent, true);
      });
      ['touchstart', 'touchend', 'touchmove'].forEach(function (e) {
        _this3.el.addEventListener(e, _this3.onPointerEvent, {
          capture: true,
          passive: true
        });
      });
      this.el.addEventListener('mousemove', this.onMouseMove);
      this.el.addEventListener('mouseleave', this.onMouseLeave);
      this.contentWrapperEl.addEventListener('scroll', this.onScroll); // Browser zoom triggers a window resize

      window.addEventListener('resize', this.onWindowResize);
      this.resizeObserver = new index(this.recalculate);
      this.resizeObserver.observe(this.el);
      this.resizeObserver.observe(this.contentEl);
    };

    _proto.recalculate = function recalculate() {
      var isHeightAuto = this.heightAutoObserverEl.offsetHeight <= 1;
      var isWidthAuto = this.heightAutoObserverEl.offsetWidth <= 1;
      this.elStyles = window.getComputedStyle(this.el);
      this.isRtl = this.elStyles.direction === 'rtl';
      this.contentEl.style.padding = this.elStyles.paddingTop + " " + this.elStyles.paddingRight + " " + this.elStyles.paddingBottom + " " + this.elStyles.paddingLeft;
      this.wrapperEl.style.margin = "-" + this.elStyles.paddingTop + " -" + this.elStyles.paddingRight + " -" + this.elStyles.paddingBottom + " -" + this.elStyles.paddingLeft;
      this.contentWrapperEl.style.height = isHeightAuto ? 'auto' : '100%'; // Determine placeholder size

      this.placeholderEl.style.width = isWidthAuto ? this.contentEl.offsetWidth + "px" : 'auto';
      this.placeholderEl.style.height = this.contentEl.scrollHeight + "px"; // Set isOverflowing to false if scrollbar is not necessary (content is shorter than offset)

      this.axis.x.isOverflowing = this.contentWrapperEl.scrollWidth > this.contentWrapperEl.offsetWidth;
      this.axis.y.isOverflowing = this.contentWrapperEl.scrollHeight > this.contentWrapperEl.offsetHeight; // Set isOverflowing to false if user explicitely set hidden overflow

      this.axis.x.isOverflowing = this.elStyles.overflowX === 'hidden' ? false : this.axis.x.isOverflowing;
      this.axis.y.isOverflowing = this.elStyles.overflowY === 'hidden' ? false : this.axis.y.isOverflowing;
      this.axis.x.forceVisible = this.options.forceVisible === 'x' || this.options.forceVisible === true;
      this.axis.y.forceVisible = this.options.forceVisible === 'y' || this.options.forceVisible === true;
      this.hideNativeScrollbar();
      this.axis.x.track.rect = this.axis.x.track.el.getBoundingClientRect();
      this.axis.y.track.rect = this.axis.y.track.el.getBoundingClientRect();
      this.axis.x.scrollbar.size = this.getScrollbarSize('x');
      this.axis.y.scrollbar.size = this.getScrollbarSize('y');
      this.axis.x.scrollbar.el.style.width = this.axis.x.scrollbar.size + "px";
      this.axis.y.scrollbar.el.style.height = this.axis.y.scrollbar.size + "px";
      this.positionScrollbar('x');
      this.positionScrollbar('y');
      this.toggleTrackVisibility('x');
      this.toggleTrackVisibility('y');
    }
    /**
     * Calculate scrollbar size
     */
    ;

    _proto.getScrollbarSize = function getScrollbarSize(axis) {
      if (axis === void 0) {
        axis = 'y';
      }

      var contentSize = this.scrollbarWidth ? this.contentWrapperEl[this.axis[axis].scrollSizeAttr] : this.contentWrapperEl[this.axis[axis].scrollSizeAttr] - this.minScrollbarWidth;
      var trackSize = this.axis[axis].track.rect[this.axis[axis].sizeAttr];
      var scrollbarSize;

      if (!this.axis[axis].isOverflowing) {
        return;
      }

      var scrollbarRatio = trackSize / contentSize; // Calculate new height/position of drag handle.

      scrollbarSize = Math.max(~~(scrollbarRatio * trackSize), this.options.scrollbarMinSize);

      if (this.options.scrollbarMaxSize) {
        scrollbarSize = Math.min(scrollbarSize, this.options.scrollbarMaxSize);
      }

      return scrollbarSize;
    };

    _proto.positionScrollbar = function positionScrollbar(axis) {
      if (axis === void 0) {
        axis = 'y';
      }

      var contentSize = this.contentWrapperEl[this.axis[axis].scrollSizeAttr];
      var trackSize = this.axis[axis].track.rect[this.axis[axis].sizeAttr];
      var hostSize = parseInt(this.elStyles[this.axis[axis].sizeAttr], 10);
      var scrollbar = this.axis[axis].scrollbar;
      var scrollOffset = this.contentWrapperEl[this.axis[axis].scrollOffsetAttr];
      scrollOffset = axis === 'x' && this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollingInverted ? -scrollOffset : scrollOffset;
      var scrollPourcent = scrollOffset / (contentSize - hostSize);
      var handleOffset = ~~((trackSize - scrollbar.size) * scrollPourcent);
      handleOffset = axis === 'x' && this.isRtl && SimpleBar.getRtlHelpers().isRtlScrollbarInverted ? handleOffset + (trackSize - scrollbar.size) : handleOffset;
      scrollbar.el.style.transform = axis === 'x' ? "translate3d(" + handleOffset + "px, 0, 0)" : "translate3d(0, " + handleOffset + "px, 0)";
    };

    _proto.toggleTrackVisibility = function toggleTrackVisibility(axis) {
      if (axis === void 0) {
        axis = 'y';
      }

      var track = this.axis[axis].track.el;
      var scrollbar = this.axis[axis].scrollbar.el;

      if (this.axis[axis].isOverflowing || this.axis[axis].forceVisible) {
        track.style.visibility = 'visible';
        this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'scroll';
      } else {
        track.style.visibility = 'hidden';
        this.contentWrapperEl.style[this.axis[axis].overflowAttr] = 'hidden';
      } // Even if forceVisible is enabled, scrollbar itself should be hidden


      if (this.axis[axis].isOverflowing) {
        scrollbar.style.display = 'block';
      } else {
        scrollbar.style.display = 'none';
      }
    };

    _proto.hideNativeScrollbar = function hideNativeScrollbar() {
      this.offsetEl.style[this.isRtl ? 'left' : 'right'] = this.axis.y.isOverflowing || this.axis.y.forceVisible ? "-" + (this.scrollbarWidth || this.minScrollbarWidth) + "px" : 0;
      this.offsetEl.style.bottom = this.axis.x.isOverflowing || this.axis.x.forceVisible ? "-" + (this.scrollbarWidth || this.minScrollbarWidth) + "px" : 0; // If floating scrollbar

      if (!this.scrollbarWidth) {
        var paddingDirection = [this.isRtl ? 'paddingLeft' : 'paddingRight'];
        this.contentWrapperEl.style[paddingDirection] = this.axis.y.isOverflowing || this.axis.y.forceVisible ? this.minScrollbarWidth + "px" : 0;
        this.contentWrapperEl.style.paddingBottom = this.axis.x.isOverflowing || this.axis.x.forceVisible ? this.minScrollbarWidth + "px" : 0;
      }
    }
    /**
     * On scroll event handling
     */
    ;

    _proto.onMouseMoveForAxis = function onMouseMoveForAxis(axis) {
      if (axis === void 0) {
        axis = 'y';
      }

      this.axis[axis].track.rect = this.axis[axis].track.el.getBoundingClientRect();
      this.axis[axis].scrollbar.rect = this.axis[axis].scrollbar.el.getBoundingClientRect();
      var isWithinScrollbarBoundsX = this.isWithinBounds(this.axis[axis].scrollbar.rect);

      if (isWithinScrollbarBoundsX) {
        this.axis[axis].scrollbar.el.classList.add(this.classNames.hover);
      } else {
        this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);
      }

      if (this.isWithinBounds(this.axis[axis].track.rect)) {
        this.showScrollbar(axis);
        this.axis[axis].track.el.classList.add(this.classNames.hover);
      } else {
        this.axis[axis].track.el.classList.remove(this.classNames.hover);
      }
    };

    _proto.onMouseLeaveForAxis = function onMouseLeaveForAxis(axis) {
      if (axis === void 0) {
        axis = 'y';
      }

      this.axis[axis].track.el.classList.remove(this.classNames.hover);
      this.axis[axis].scrollbar.el.classList.remove(this.classNames.hover);
    };

    /**
     * Show scrollbar
     */
    _proto.showScrollbar = function showScrollbar(axis) {
      if (axis === void 0) {
        axis = 'y';
      }

      var scrollbar = this.axis[axis].scrollbar.el;

      if (!this.axis[axis].isVisible) {
        scrollbar.classList.add(this.classNames.visible);
        this.axis[axis].isVisible = true;
      }

      if (this.options.autoHide) {
        this.hideScrollbars();
      }
    }
    /**
     * Hide Scrollbar
     */
    ;

    /**
     * on scrollbar handle drag movement starts
     */
    _proto.onDragStart = function onDragStart(e, axis) {
      if (axis === void 0) {
        axis = 'y';
      }

      var scrollbar = this.axis[axis].scrollbar.el; // Measure how far the user's mouse is from the top of the scrollbar drag handle.

      var eventOffset = axis === 'y' ? e.pageY : e.pageX;
      this.axis[axis].dragOffset = eventOffset - scrollbar.getBoundingClientRect()[this.axis[axis].offsetAttr];
      this.draggedAxis = axis;
      this.el.classList.add(this.classNames.dragging);
      document.addEventListener('mousemove', this.drag, true);
      document.addEventListener('mouseup', this.onEndDrag, true);

      if (this.removePreventClickId === null) {
        document.addEventListener('click', this.preventClick, true);
        document.addEventListener('dblclick', this.preventClick, true);
      } else {
        window.clearTimeout(this.removePreventClickId);
        this.removePreventClickId = null;
      }
    }
    /**
     * Drag scrollbar handle
     */
    ;

    /**
     * Getter for content element
     */
    _proto.getContentElement = function getContentElement() {
      return this.contentEl;
    }
    /**
     * Getter for original scrolling element
     */
    ;

    _proto.getScrollElement = function getScrollElement() {
      return this.contentWrapperEl;
    };

    _proto.removeListeners = function removeListeners() {
      var _this4 = this;

      // Event listeners
      if (this.options.autoHide) {
        this.el.removeEventListener('mouseenter', this.onMouseEnter);
      }

      ['mousedown', 'click', 'dblclick'].forEach(function (e) {
        _this4.el.removeEventListener(e, _this4.onPointerEvent, true);
      });
      ['touchstart', 'touchend', 'touchmove'].forEach(function (e) {
        _this4.el.removeEventListener(e, _this4.onPointerEvent, {
          capture: true,
          passive: true
        });
      });
      this.el.removeEventListener('mousemove', this.onMouseMove);
      this.el.removeEventListener('mouseleave', this.onMouseLeave);
      this.contentWrapperEl.removeEventListener('scroll', this.onScroll);
      window.removeEventListener('resize', this.onWindowResize);
      this.mutationObserver && this.mutationObserver.disconnect();
      this.resizeObserver.disconnect(); // Cancel all debounced functions

      this.recalculate.cancel();
      this.onMouseMove.cancel();
      this.hideScrollbars.cancel();
      this.onWindowResize.cancel();
    }
    /**
     * UnMount mutation observer and delete SimpleBar instance from DOM element
     */
    ;

    _proto.unMount = function unMount() {
      this.removeListeners();
      this.el.SimpleBar = null;
    }
    /**
     * Recursively walks up the parent nodes looking for this.el
     */
    ;

    _proto.isChildNode = function isChildNode(el) {
      if (el === null) return false;
      if (el === this.el) return true;
      return this.isChildNode(el.parentNode);
    }
    /**
     * Check if mouse is within bounds
     */
    ;

    _proto.isWithinBounds = function isWithinBounds(bbox) {
      return this.mouseX >= bbox.left && this.mouseX <= bbox.left + bbox.width && this.mouseY >= bbox.top && this.mouseY <= bbox.top + bbox.height;
    }
    /**
     * Find element children matches query
     */
    ;

    _proto.findChild = function findChild(el, query) {
      var matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector;
      return Array.prototype.filter.call(el.children, function (child) {
        return matches.call(child, query);
      })[0];
    };

    return SimpleBar;
  }();
  /**
   * HTML API
   * Called only in a browser env.
   */


  SimpleBar.defaultOptions = {
    autoHide: true,
    forceVisible: false,
    classNames: {
      contentEl: 'simplebar-content',
      contentWrapper: 'simplebar-content-wrapper',
      offset: 'simplebar-offset',
      mask: 'simplebar-mask',
      wrapper: 'simplebar-wrapper',
      placeholder: 'simplebar-placeholder',
      scrollbar: 'simplebar-scrollbar',
      track: 'simplebar-track',
      heightAutoObserverWrapperEl: 'simplebar-height-auto-observer-wrapper',
      heightAutoObserverEl: 'simplebar-height-auto-observer',
      visible: 'simplebar-visible',
      horizontal: 'simplebar-horizontal',
      vertical: 'simplebar-vertical',
      hover: 'simplebar-hover',
      dragging: 'simplebar-dragging'
    },
    scrollbarMinSize: 25,
    scrollbarMaxSize: 0,
    timeout: 1000
  };

  if (canUseDom) {
    SimpleBar.initHtmlApi();
  }

  return SimpleBar;

}));
// source --> https://emmanuelle-le-pogam.melanyneveur.com/wp-content/themes/oceanwp-child-melanyneveur/js/ntc.js?ver=6.9.4 
/*

+-----------------------------------------------------------------+
|     Created by Chirag Mehta - http://chir.ag/projects/ntc       |
|-----------------------------------------------------------------|
|               ntc js (Name that Color JavaScript)               |
+-----------------------------------------------------------------+

All the functions, code, lists etc. have been written specifically
for the Name that Color JavaScript by Chirag Mehta unless otherwise
specified.

This script is released under the: Creative Commons License:
Attribution 2.5 http://creativecommons.org/licenses/by/2.5/

Sample Usage:

  <script type="text/javascript" src="ntc.js"></script>

  <script type="text/javascript">

    var n_match  = ntc.name("#6195ED");
    n_rgb        = n_match[0]; // This is the RGB value of the closest matching color
    n_name       = n_match[1]; // This is the text string for the name of the match
    n_exactmatch = n_match[2]; // True if exact color match, False if close-match

    alert(n_match);

  </script>

*/

var ntc = {

  init: function() {
    var color, rgb, hsl;
    for(var i = 0; i < ntc.names.length; i++)
    {
      color = "#" + ntc.names[i][0];
      rgb = ntc.rgb(color);
      hsl = ntc.hsl(color);
      ntc.names[i].push(rgb[0], rgb[1], rgb[2], hsl[0], hsl[1], hsl[2]);
    }
  },

  name: function(color) {

    color = color.toUpperCase();
    if(color.length < 3 || color.length > 7)
      return ["#000000", "Invalid Color: " + color, false];
    if(color.length % 3 == 0)
      color = "#" + color;
    if(color.length == 4)
      color = "#" + color.substr(1, 1) + color.substr(1, 1) + color.substr(2, 1) + color.substr(2, 1) + color.substr(3, 1) + color.substr(3, 1);

    var rgb = ntc.rgb(color);
    var r = rgb[0], g = rgb[1], b = rgb[2];
    var hsl = ntc.hsl(color);
    var h = hsl[0], s = hsl[1], l = hsl[2];
    var ndf1 = 0, ndf2 = 0, ndf = 0;
    var cl = -1, df = -1;

    for(var i = 0; i < ntc.names.length; i++)
    {
      if(color == "#" + ntc.names[i][0])
        return ["#" + ntc.names[i][0], ntc.names[i][1], true]; // this line can be changed to -- return [ntc.names[i][1]]; if you would like to return only name of the colour

      ndf1 = Math.pow(r - ntc.names[i][2], 2) + Math.pow(g - ntc.names[i][3], 2) + Math.pow(b - ntc.names[i][4], 2);
      ndf2 = Math.pow(h - ntc.names[i][5], 2) + Math.pow(s - ntc.names[i][6], 2) + Math.pow(l - ntc.names[i][7], 2);
      ndf = ndf1 + ndf2 * 2;
      if(df < 0 || df > ndf)
      {
        df = ndf;
        cl = i;
      }
    }

    return (cl < 0 ? ["#000000", "Invalid Color: " + color, false] : ["#" + ntc.names[cl][0], ntc.names[cl][1], false]); // this line after ':' sign can be changed to -- [ntc.names[cl][1]] to return only name of the colour
  },

  // adopted from: Farbtastic 1.2
  // http://acko.net/dev/farbtastic
  hsl: function (color) {

    var rgb = [parseInt('0x' + color.substring(1, 3)) / 255, parseInt('0x' + color.substring(3, 5)) / 255, parseInt('0x' + color.substring(5, 7)) / 255];
    var min, max, delta, h, s, l;
    var r = rgb[0], g = rgb[1], b = rgb[2];

    min = Math.min(r, Math.min(g, b));
    max = Math.max(r, Math.max(g, b));
    delta = max - min;
    l = (min + max) / 2;

    s = 0;
    if(l > 0 && l < 1)
      s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));

    h = 0;
    if(delta > 0)
    {
      if (max == r && max != g) h += (g - b) / delta;
      if (max == g && max != b) h += (2 + (b - r) / delta);
      if (max == b && max != r) h += (4 + (r - g) / delta);
      h /= 6;
    }
    return [parseInt(h * 255), parseInt(s * 255), parseInt(l * 255)];
  },

  // adopted from: Farbtastic 1.2
  // http://acko.net/dev/farbtastic
  rgb: function(color) {
    return [parseInt('0x' + color.substring(1, 3)), parseInt('0x' + color.substring(3, 5)),  parseInt('0x' + color.substring(5, 7))];
  },

  names: [
["000000", "Black"],
["000010", "Charbonneux"],
["000020", "Xiketic"],
["000050", "Midnight Blue"],
["000080", "Blue Navy"],
["000094", "Lapis Blue"],
["0000C8", "Dark Blue"],
["0000FF", "Blue"],
["000741", "Stratos"],
["001000", "Dark Jungle"],
["0014AB", "Zaffre"],	
["001B1C", "Swamp"],
["002387", "Blue Resolution"],
["002900", "Deep Fir"],
["002E20", "Burnham"],
["002FA7", "International Klein Blue"],
["003153", "Prussian Blue"],
["003366", "Bleu de Minuit"],
["003399", "Smalt"],
["003532", "Deep Teal"],
["003740", "Beetle Wing"],
["003E40", "Cyprus"],
["004225", "British Racing Green"],
["004620", "Kaitoke Green"],
["0047AB", "Cobalt"],
["004787", "Outremer"],
["004816", "Crusoe"],
["0048BA", "Absolute Zero"],
["004950", "Sherpa Blue"],
["005000", "Lincoln Green"],
["00563F", "Sacramento State"],
["0056A7", "Endeavour"],
["00561B", "Vert Impérial"],
["00563F", "Castleton"],
["00581A", "Camarone"],
["00656E", "Harbor Blue"],
["0066CC", "Science Blue"],
["0066FF", "Blue Ribbon"],
["006C7F", "Kitsch"],
["006C98", "Yeehaa"],
["006DB0", "Honolulu"],
["0070FF", "Brandeis Blue"],
["007474", "Skobeloff"],
["00755E", "Tropical Rain Forest"],
["0076A3", "Allports"],
["0077BE", "Ocean Boat Blue"],
["007844", "Jolly Green"],
["007BA7", "Deep Cerulean"],
["007EC7", "Lochmara"],
["007FFF", "Azure Radiance"],
["008020", "Vert"],
["008080", "Sarcelle"],
["00815F", "Émeraude"],
["00828C", "Bay Teal"],
["008B97", "Yabbadabbadoo"],
["0093AF", "Munsell"],
["0095B6", "Bondi Blue"],
["009919", "Islamic Green"],
["009DC4", "Pacific Blue"],
["00A0B0", "Peacock Blue"],
["00A693", "Persian Green"],
["00A86B", "Jade"],
["00CC99", "Caribbean Green"],
["00CCCB", "Mers du Sud"],
["00CCCC", "Robin's Egg Blue"],
["00FF00", "Green"],
["00FF7F", "Vert printemps"],
["00FFFF", "Aqua"],
["010101", "Noir"],
["010D1A", "Blue Charcoal"],
["011635", "Midnight"],
["011D13", "Holly"],
["012731", "Daintree"],
["0131B4", "Saphir"],
["01361C", "Cardin Green"],
["01371A", "County Green"],
["013E62", "Astronaut Blue"],
["013F6A", "Regal Blue"],
["014849", "Cathedral View"],
["01493E", "Breathe Deeply"],
["014B39", "Forest Shadows"],
["014B43", "Aqua Deep"],
["014B6B", "Back of Beyond"],
["015E3D", "Rainforest Retreat"],
["014F63", "Brave New Teal"],
["015063", "Ocean Radiance"],
["015068", "Gulf Coast"],
["015261", "Deep Sea Dive"],
["01535D", "Bankson Lake"],
["01537F", "Kate’s Ring"],
["01555B", "Fish Tale"],
["01557D", "Cravin’ Cobalt"],
["01597C", "Turkish Tile"],
["015A75", "Arabian Nights"],
["015B52", "Planet Earth"],
["015C76", "Blue Jay Crest"],
["015E85", "Orient"],
["015E98", "Blueprint"],
["016162", "Blue Stone"],
["016168", "Kevin’s Stang"],
["01628A", "Jimbo’s Jersey"],
["01645C", "Dancing Peacock"],
["01646B", "Velvet Curtains"],
["016784", "Journey Into Night"],
["016CA0", "Blue on Blue"],
["016D39", "Fun Green"],
["016F78", "Totally Teal"],
["017029", "Greener Grass"],
["01738E", "Amazing Sky"],
["01755C", "Shadows of Time"],
["017887", "Watershed"],
["0178AA", "Blue Lobster"],
["01796F", "Pine Green"],
["017987", "Blue Lagoon"],
["017B77", "Lido Deck"],
["017B7F", "Forever Teal"],
["01826B", "Deep Sea"],
["018B7F", "Santorini Seascape"],
["019692", "Lights at Sea"],
["019BA4", "Blue Bolero"],
["01A368", "Green Haze"],
["01A7B8", "Marrakech Mile"],
["01D758", "Smaragdin"],
["0215D9", "Medium Blue"],
["022D15", "English Holly"],
["02402C", "Sherwood Green"],
["02478E", "Congress Blue"],
["024E46", "Evening Sea"],
["026395", "Bahama Blue"],
["02866F", "Observatory"],
["02A4D3", "Cerulean"],
["03163C", "Tangaroa"],
["032B52", "Green Vogue"],
["03224C", "Marine"],
["036A6E", "Mosque"],
["040348", "Blue Night"],	  
["041004", "Midnight Moss"],
["041322", "Black Pearl"],
["042E4C", "Blue Whale"],
["044022", "Zuccini"],
["044259", "Teal Blue"],
["048B9A", "Bleu Canard"],
["04A042", "Green Pigment"],
["051040", "Deep Cove"],
["051657", "Gulf Blue"],
["055989", "Venice Blue"],
["056F57", "Watercourse"],
["062A78", "Catalina Blue"],
["063537", "Tiber"],
["067790", "Bleu Paon"],
["069B81", "Gossamer"],
["06A189", "Niagara"],
["07272C", "Old Forest"],
["073A50", "Tarawera"],
["080110", "Jaguar"],
["081910", "Black Bean"],
["082567", "Deep Sapphire"],
["088370", "Elf Green"],
["08E8DE", "Bright Turquoise"],
["092256", "Downriver"],
["09230F", "Palm Green"],
["09255D", "Madison"],
["093624", "Vert Phtalo"],
["095228", "Vert Sapin"],
["095859", "Deep Sea Green"],
["096A09", "Vert Bouteille"],
["097F4B", "Salem"],
["0A001C", "Black Russian"],
["0A480D", "Dark Fern"],
["0A6906", "Japanese Laurel"],
["0A6F75", "Atoll"],
["0A85A9", "Wishing Well"],
["0ABAB5", "Tiffany Blue"],
["0B0B0B", "Cod Gray"],
["0B0F08", "Marshland"],
["0B1107", "Gordons Green"],
["0B1304", "Black Forest"],
["0B1616", "Dorian"],
["0B3142", "Gunmetal"],
["0B6207", "San Felix"],
["0BDA51", "Malachite"],
["0C0B1D", "Ebony"],
["0C0D0F", "Woodsmoke"],
["0C1911", "Racing Green"],
["0c3b5d", "Epic Adventure"],	  
["0C7A79", "Surfie Green"],
["0C8990", "Blue Chill"],
["0D0332", "Black Rock"],
["0D1117", "Bunker"],
["0D1C19", "Aztec Jungle"],
["0D2E1C", "Bush"],
["0D4C67", "Fingal’s Cave"],
["0E0E18", "Cinder"],
["0E2A30", "Firefly"],
["0F056B", "Bleu Nuit"],
["0F2D9E", "Torea Bay"],
["0F4C81", "Classic Blue"],
["0FC0FC", "Spiro Disco Ball"],
["100044", "Night Iris"],
["10121D", "Vulcan"],
["101405", "Green Waterloo"],
["105852", "Eden"],
["110C6C", "Arapawa"],
["11B5E4", "Cyan Process"],
["11CF2D", "Lime Green"],
["120A8F", "Phthalo Blue"],
["120D16", "Noir d'Aniline"],
["123447", "Elephant"],
["12403C", "Botanical Garden"],
["126B40", "Jewel"],
["130000", "Diesel"],
["130A06", "Asphalt"],
["130E0A", "Carbone"],
["13264D", "Blue Zodiac"],
["134F19", "Parsley"],
["137547", "Billiard Table"],
["140600", "Nero"],
["1450AA", "Tory Blue"],
["1481BA", "Star Command Blue"],
["149414", "Sinople"],
["151F4C", "Bunting"],
["1560BD", "Denim"],
["15736B", "Genoa"],
["161928", "Mirage"],
["161D10", "Hunter Green"],
["162A40", "Big Stone"],
["163222", "Celtic"],
["16322C", "Timber Green"],
["163531", "Gable Green"],
["16B84E", "Menthe"],
["171F04", "Pine Tree"],
["175579", "Chathams Blue"],
["175732", "Épinard"],
["182D09", "Deep Forest Green"],
["18391E", "Vert de Chrome"],
["184052", "Ethereal Dance"],
["18587A", "Blumine"],
["191308", "Chocolat noir"],
["19330E", "Palm Leaf"],
["193751", "Nile Blue"],
["1959A8", "Fun Blue"],
["1A1110", "Licorice"],
["1A1A68", "Lucky Point"],
["1AB385", "Mountain Meadow"],
["1B0245", "Tolopea"],
["1B1035", "Haiti"],
["1B127B", "Deep Koamaru"],
["1B1404", "Acadia"],
["1B1B1B", "Eerie Black"],
["1B2F11", "Seaweed"],
["1B3162", "Biscay"],
["1B4D3E", "Brunswick Green"],
["1B4F08", "Vert de Hooker"],
["1B659D", "Matisse"],
["1B9F17", "Slimy Green"],
["1C1208", "Crowshead"],
["1C1CF0", "Bluebonnet"],
["1C1E13", "Rangoon Green"],
["1C39BB", "Persian Blue"],
["1C402E", "Everglade"],
["1C7C7D", "Elm"],
["1C808A", "Ocean Reef"],
["1D4851", "Bleu Pétrole"],
["1d4864", "Midnight Sonata"],	  
["1D6142", "Green Pea"],
["1E0043", "Inkspot"],
["1E0F04", "Creole"],
["1E1609", "Karaka"],
["1E2EEF", "Ultramarine"],
["1E1708", "El Paso"],
["1E385B", "Cello"],
["1E433C", "Te Papa Green"],
["1E4540", "Midsummer Night"],
["1E586C", "Holiday Velvet"],
["1E7FCB", "Azur Blason"],
["1E90FF", "Dodger Blue"],
["1E9AB0", "Eastern Blue"],
["1FA055", "Rivière de Malachite"],
["1F4049", "Night Swim"],
["1F120F", "Night Rider"],
["1F8AD8", "Plastic Blue"],
["1FC2C2", "Java"],
["201A24", "Raisin Noir"],
["20208D", "Jacksons Purple"],
["202E54", "Cloud Burst"],
["203E4F", "Indigo Go-Go"],
["204852", "Blue Dianne"],
["2077A0", "In the Mood"],
["21177D", "Bleu K."],
["211A0E", "Eternity"],
["21421E", "Myrtle"],
["21ABCD", "Ball Blue"],
["220878", "Deep Blue"],
["22427C", "Bleu de Cobalt"],
["22780F", "Vert de Vessie"],
["227878", "Poseidon’s Castle"],
["228B22", "Forest Green"],
["23297A", "Saint Patrick"],
["232B2B", "Charleston"],
["233418", "Mallard"],
["233E51", "Blue Dusk"],
["234766", "Mykonos Reflection"],
["240A40", "Violet de Russie"],
["240C02", "Kilamanjaro"],
["242A1D", "Log Cabin"],
["242E16", "Scots Pine"],
["24445C", "Bleu de Prusse"],
["244E59", "Rugged Teal"],
["24500F", "Green House"],
["245b9e", "Miracle at Wrigley"],
["250740", "Dark Purple"],
["251607", "Graphite"],
["251706", "Cannon Black"],
["251F4F", "Port Gore"],
["25272C", "Shark"],
["25311C", "Green Kelp"],
["253529", "Black Leather Jacket"],
["25416d", "Sapphire Earrings"],	  
["2596D1", "Curious Blue"],
["25FDE9", "Turquoise"],
["260368", "Paua"],
["26056A", "Paris M"],
["261105", "Wood Bark"],
["261414", "Gondola"],
["262335", "Steel Gray"],
["26283B", "Ebony Clay"],
["265E83", "Night Fever"],
["26619C", "Lapis-lazuli"],
["267D3F", "Dark Spring Green"],
["26AF7A", "Vert Incertain"],
["26C4EC", "Bleu Céleste"],
["273A81", "Bay of Many"],
["274B5E", "Deep Pacific"],
["27504B", "Plantation"],
["278A5B", "Eucalyptus"],
["281E15", "Oil"],
["283A77", "Astronaut"],
["285838", "Emerald Temple"],
["286ACD", "Mariner"],
["290C5E", "Violent Violet"],
["292107", "Oscuro"],
["292130", "Bastille"],
["292319", "Zeus"],
["292937", "Charade"],
["297B9A", "Jelly Bean"],
["29AB87", "Jungle Green"],
["2A0359", "Cherry Pie"],
["2A140E", "Coffee Bean"],
["2A2630", "Baltic Sea"],
["2A380B", "Kombu"],
["2A4763", "Nordic Noir"],
["2A52BE", "Cerulean Blue"],
["2A8000", "Napier Green"],
["2B015A", "Nuit de Perse"],
["2B0202", "Sepia Black"],
["2B194F", "Valhalla"],
["2B3228", "Heavy Metal"],
["2b406f", "Deep Ocean Floor"],	  
["2B5A65", "Zephyr"],
["2b63a0", "Zydeco"],	  
["2BFAFA", "Cyan"],
["2C0B97", "Duke Blue"],
["2C0E8C", "Blue Gem"],
["2C1632", "Revolver"],
["2C2133", "Bleached Cedar"],
["2C75FF", "Bleu électrique"],
["2C8C84", "Lochinvar"],
["2D241E", "Réglisse"],
["2D2510", "Mikado"],
["2D2C2F", "Black Jet"],
["2D383A", "Outer Space"],
["2D569B", "St Tropaz"],
["2D7870", "Amazon Drift"],
["2E006C", "Indigo"],
["2E0329", "Jacaranda"],
["2E1905", "Jacko Bean"],
["2E3222", "Rangitoto"],
["2E3F62", "Rhino"],
["2E5894", "B'dazzled Blue"],
["2E8B57", "Sea Green"],
["2EBFD4", "Scooter"],
["2F124A", "Russian Violet"],
["2F1B0C", "Cachou"],
["2F1E0E", "Noiraud"],
["2F270E", "Onion"],
["2F3CB3", "Governor Bay"],
["2F519E", "Sapphire"],
["2F5A57", "Spectra"],
["2F6168", "Casal"],
["300529", "Melanzane"],
["301F1E", "Cocoa Brown"],
["302324", "Black Coffee"],
["302A0F", "Woodrush"],
["303030", "Anthracite"],
["30495e", "Blue Fedora"],	  
["304B6A", "San Juan"],
["306030", "Mughal Green"],
["306D88", "Cottage by the Sea"],
["30B6BF", "Utopia Beckons"],
["30D5C8", "Turquoise"],
["311C17", "Eclipse"],
["314459", "Pickled Bluewood"],
["315BA1", "Azure"],
["31728D", "Calypso"],
["317D82", "Paradiso"],
["318CE7", "Bleu roi"],
["32127A", "Persian Indigo"],
["32293A", "Blackcurrant"],
["322A26", "Café noir"],
["323232", "Mine Shaft"],
["323453", "Patrician Purple"],	  
["32575D", "Mediterranea"],
["325D52", "Stromboli"],
["327C14", "Bilbao"],
["327DA0", "Astral"],
["33036B", "Christalle"],
["332277", "Picotee Blue"],
["33292F", "Thunder"],
["333E4B", "Charbon Bleu"],
["335256", "Gris Ardoise"],
["33747C", "Sea Crest"],
["33CC99", "Shamrock"],
["33CDAA", "Carribean Flow"],
["341515", "Tamarind"],
["348398", "Metallic Seaweed"],
["34C924", "Vert pomme"],
["350036", "Mardi Gras"],
["350E42", "Valentino"],
["350E57", "Jagger"],
["353542", "Tuna"],
["353B3A", "Onyx"],
["354E8C", "Chambray"],
["357AB7", "Cæruleum"],
["363050", "Martinique"],
["363534", "Tuatara"],
["36362D", "Rosin"],
["363947", "Black Beard"],
["363C0D", "Waiouru"],
["366735", "Vert Chasseur"],
["3660AA", "Katsure Blue"],
["36747D", "Ming"],
["368136", "Kermit"],
["368716", "La Palma"],
["370028", "Aubergine"],
["370202", "Chocolate"],
["371D09", "Clinker"],
["37290E", "Brown Tumbleweed"],
["372F25", "Maduro"],
["373021", "Birch"],
["373E02", "Dark Olive"],	 	  
["377475", "Oracle"],
["380474", "Blue Diamond"],
["381A51", "Grape"],
["382A34", "Zeppelin"],
["383533", "Dune"],
["384555", "Oxford Blue"],
["384910", "Clover"],
["385D2B", "Privet Hedge"],
["386F48", "Mélèze"],
["391285", "Pixie Powder"],
["394851", "Limed Spruce"],
["395D8D", "Bright Cobalt"],
["396413", "Dell"],
["396475", "Am I Blue?"],
["3A0020", "Toledo"],
["3A020D", "Cassis"],
["3A084F", "Kaleïdoscope"],
["3A2010", "Sambuca"],
["3A2A6A", "Jacarta"],
["3A686C", "William"],
["3A6A47", "Killarney"],
["3A8EBA", "Bleu acier"],
["3A9D23", "Gazon"],
["3AB09E", "Keppel"],
["3AF24B", "Vert perroquet"],
["3B000B", "Temptress"],
["3B005C", "Deep Violet"],
["3B0910", "Aubergine"],
["3B1F1F", "Jon"],
["3B2820", "Treehouse"],
["3B444B", "Arsenic"],
["3B5B75", "Deep Sea Diving"],
["3B7A57", "Amazone"],
["3B91B4", "Boston Blue"],
["3BD429", "Lime Green"],
["3C0878", "Windsor"],
["3C1206", "Rebel"],
["3C1F76", "Meteorite"],
["3C2005", "Dark Ebony"],
["3C3910", "Camouflage"],
["3C395B", "Space Cadet"],
["3C4151", "Bright Gray"],
["3C4443", "Cape Cod"],
["3C493A", "Lunar Green"],
["3C633E", "Friendly Fairway"],
["3D0C02", "Bean"],
["3D182C", "Acai Pure"],
["3D2B1F", "Bistre"],
["3d4281", "Merlin’s Robes"],	  
["3D6F82", "Aristocratic"],
["3D7D52", "Goblin"],
["3E0480", "Kingfisher Daisy"],
["3E1C14", "Cedar"],
["3E2B23", "English Walnut"],
["3E2C1C", "Black Marlin"],
["3E3A44", "Ship Gray"],
["3E786D", "Aussie Surf"],
["3F7993", "Sea Swirl"],
["3EA6C6", "Greenish Blue"],
["3EABBF", "Pelorous"],
["3F2204", "Brou de noix"],
["3F2500", "Cola"],
["3F3002", "Madras"],
["3F307F", "Minsk"],
["3F4C3A", "Cabbage Pont"],
["3F583B", "Tom Thumb"],
["3F5D53", "Mineral Green"],
["3F7B63", "Bathing Beauty"],
["3FC1AA", "Puerto Rico"],
["3FFF00", "Harlequin"],
["401801", "Brown Pod"],
["40291D", "Cork"],
["40252E", "Old Burgundy"],
["403B38", "Masala"],
["403D19", "Thatch Green"],
["403E3B", "Black Olive"],
["40425a", "Emperor"],
["404565", "Skyline"],	  
["405169", "Fiord"],
["40826D", "Viridian"],
["4083A2", "Lake Henry"],
["40862D", "Always Greener"],
["408798", "Rickrack"],
["40A48E", "Zomp"],
["40A860", "Chateau Vert"],
["410056", "Ripe Plum"],
["411F10", "Paco"],
["412010", "Deep Oak"],
["413C37", "Merlin"],
["414257", "Gun Powder"],
["414C7D", "East Bay"],
["4169E1", "Royal Blue"],
["41AA78", "Ocean Green"],
["420303", "Burnt Maroon"],
["423921", "Lisbon Brown"],
["425B8A", "Bleu turquin"],
["425BB0", "Liberty"],
["427475", "Bijou Teal"],
["427764", "Leaping Lizard"],
["427977", "Faded Jade"],
["431560", "Scarlet Gum"],
["431C53", "American Purple"],
["433120", "Iroko"],
["433E37", "Armadillo"],
["434C59", "River Bed"],
["436A0D", "Green Leaf"],
["437D6D", "Bottle Green"],
["439299", "Vert Guignet"],
["43BDB8", "Bluish Green"],
["44012D", "Barossa"],
["441D00", "Morocco Brown"],
["444954", "Mako"],
["4477DD", "Blue Crayola"],
["451825", "Dark Sienna"],
["453740", "Rafter"],
["453747", "Virtuoso"],
["453D52", "Noblesse Oblige"],
["454936", "Kelp"],
["454B66", "Independence"],
["45558d", "Demon Blue"],	  
["456CAC", "San Marino"],
["45B1E8", "Picton Blue"],
["460B41", "Loulou"],
["462425", "Crater Brown"],
["462E01", "Café"],
["463F32", "Taupe"],
["465945", "Gray Asparagus"],
["466863", "Riverbend"],
["4682B4", "Steel Blue"],
["473452", "English Violet"],
["47A8D8", "Infinity"],
["480404", "Rustic Red"],
["480607", "Bulgarian Rose"],
["480656", "Clairvoyant"],
["481C1C", "Cocoa Bean"],
["483131", "Woody Brown"],
["483C32", "Brother Jonathan"],
["483D99", "entre Chien et Loup"],
["485375", "Enchanted Navy"],	  
["489BC6", "Estero Sky"],
["49170C", "Van Cleef"],
["492615", "Brown Derby"],
["49371B", "Metallic Bronze"],
["493c3f", "Antique Burgundy"],	
["49456f", "Spirit Blue"],	  
["495400", "Verdun Green"],
["496679", "Blue Bayoux"],
["497183", "Bismark"],
["498BB8", "Blueberry Festival"],
["4997D0", "Celestial"],
["4A2A04", "Bracken"],
["4A3004", "Deep Bronze"],
["4A3C30", "Mondo"],
["4A4150", "Dark Liver"],
["4A4244", "Tundora"],
["4A444B", "Gravel"],
["4A4E5A", "Trout"],
["4A5FA5", "Amparo Blue"],
["4AC34D", "Yellowish Green"],
["4B0082", "Pigment Indigo"],
["4B5320", "Army"],
["4B57DB", "Dark Periwinkle"],
["4B5D52", "Nandor"],
["4B7891", "Moody Teal"],
["4B7C89", "Night Masque"],
["4B98CC", "Delphinium Corsage"],
["4C2AEE", "Han Purple"],
["4C3024", "Saddle"],
["4C3ADC", "Iris"],
["4c4d7f", "Jazzy Blue"],	  
["4C4F56", "Abbey"],
["4c5192", "Blue Ember"],	  
["4C7075", "Sultry Bay"],
["4CA66B", "Prasin"],
["4D0135", "Blackberry"],
["4D0A18", "Cab Sav"],
["4D1E01", "Indian Tan"],
["4D251B", "Caput Mortuum"],
["4D282D", "Cowboy"],
["4D282E", "Livid Brown"],
["4D3833", "Rock"],
["4D3D14", "Punga"],
["4D400F", "Bronzetone"],
["4d404a", "Rare Wine"],	  
["4D5328", "Woodland"],
["4D5D53", "Feldgrau"],
["4D7530", "Shepherd’s Green"],
["4E0606", "Mahogany"],
["4E1609", "Puce de France"],
["4E2A5A", "Bossanova"],
["4E3B41", "Matterhorn"],
["4E3D28", "Bitume"],
["4E420C", "Bronze Olive"],
["4E4562", "Mulled Wine"],
["4E63CE", "Royal Blue Light"],
["4E6649", "Axolotl"],
["4E6D7F", "Folk Blue"],
["4E7795", "Flattering Blue"],
["4E7F9E", "Wedgewood"],
["4EABD1", "Shakespeare"],
["4F1C70", "Honey Flower"],
["4F2398", "Daisy Bush"],
["4F47C6", "Purplish Blue"],
["4f546d", "When Worlds Collide"],	  
["4F5529", "Mountain Moss"],
["4F69C6", "Indigo"],
["4F7569", "Idyllic Island"],
["4F7942", "Fern Green"],
["4F7CA4", "Parisian Blue"],
["4F86F7", "Blueberry"],
["4F9D5D", "Fruit Salad"],
["4FA83D", "Apple"],
["4FC4FC", "Capri"],
["50270B", "Koyuki Brown"],
["503f5b", "Bon Vivant"],	  
["504351", "Mortar"],
["507096", "Kashmir Blue"],
["507672", "Cutty Sark"],
["50C7C1", "Setting Sail"],
["50C878", "Emerald"],
["51242B", "Zibibbo"],
["514649", "Emperor"],
["514745", "Black Raisin"],
["515D40", "Rifle Green"],
["516E3D", "Chalet Green"],
["517C66", "Como"],
["51808F", "Smalt"],
["5190A9", "Chivalry"],
["52001F", "Castro"],
["520C17", "Maroon Oak"],
["523C94", "Gigas"],
["524055", "Dried Lilacs"],	  
["528154", "Middle Green"],
["533455", "Voodoo"],
["534491", "Victoria"],
["536984", "Aurora Borealis"],	  
["53824B", "Hippie Green"],
["541012", "Heath"],
["544333", "Judge Gray"],
["544A50", "Yasna"],
["54534D", "Fuscous Gray"],
["5472AA", "Barbeau"],
["5472AE", "Bleuet"],
["54741C", "Sap Green"],
["549019", "Vida Loca"],
["54F98D", "Menthe à l'eau"],
["55280C", "Cioccolato"],
["553763", "Purple Splendor"],	  
["555B10", "Saratoga"],
["556082", "Alpine Forget-me-not"],	  
["556D56", "Finlandia"],
["556F77", "Ol’ Blue Eyes"],
["557088", "Captain's Blue"],
["557690", "Goddess of the Nile"],
["557ab1", "Deepest Periwinkle"],	  
["5590D9", "Havelock Blue"],
["560095", "Metallic Violet"],
["563940", "Ancient Burgundy"],	  
["563C5C", "Pineapple"],
["564371", "Somptuous Purple"],	  
["564985", "Abracadabra"],
["56739A", "Bleu Guède"],
["568203", "Avocat"],
["56B4BE", "Blue Fountain"],
["570044", "Pourpre Impériale"],
["57444a", "Raspberry Truffle"],
["576b80", "Twinkle, Twinkle"],	  
["578363", "Spring Leaves"],
["579244", "Vert de mai"],
["57BED7", " Blue Fiesta"],
["57D53B", "Prairie"],
["582900", "Marron"],
["582B3E", "Vieux Mauve"],
["582B84", "Regalia"],
["583401", "Saddle Brown"],
["585156", "Zulu"],
["585562", "Scarpa Flow"],
["586C74", "Flannel Gray"],
["587156", "Cactus"],
["587657", "Green Mantle"],
["589AAF", "Hippie Blue"],
["591D35", "Wine Berry"],
["592804", "Brown Bramble"],
["593737", "Congo Brown"],
["594052", "Ripe Mulberry"],	  
["594433", "Millbrook"],
["596643", "Militaire"],
["597042", "Loire Valley"],
["597986", "Play Me a Melody"],
["5985c0", "Cobalt Glow"],	  
["5993A3", "My Skiff"],
["59BCDA", "Naxos Sky"],
["5A2D1A", "Abalone"],
["5A3A22", "Chocolat"],
["5a4050", "Plummy Rouge"],	  
["5A6521", "Vert Véronèse"],
["5A6E9C", "Waikawa Gray"],
["5A87A0", "Horizon"],
["5AA58C", "Éclat d'émeraude"],
["5B3013", "Jambalaya"],
["5B3C11", "Blet"],
["5B3C47", "Perfect Plum"],
["5C0120", "Bordeaux"],
["5C018B", "Purple Rain"],
["5C0536", "Mulberry Wood"],
["5C2C30", "Avant Garde"],
["5C2E01", "Carnaby Tan"],
["5C5542", "Khol"],
["5C5D75", "Comet"],
["5C90A4", "Left Bank Blue"],
["5D1E0F", "Redwood"],
["5D4C51", "Don Juan"],
["5D5174", "Purple Navy"],
["5D5C58", "Chicago"],
["5D5E37", "Verdigris"],
["5d6084", "Karmic Grape"],	  
["5D7747", "Dingley"],
["5D89BA", "Silver Lake"],
["5D8AA8", "Rackley"],
["5DA19F", "Breaker Bay"],
["5E2A9A", "Rebecca Purple"],
["5e342b", "One Dozen"],
["5e3b55", "Royal Velvet"],	  
["5E483E", "Kabul"],
["5E5B60", "Tornado"],
["5E5D3B", "Hemlock"],
["5f2d3a", "Power Tie"],
["5F3D26", "Irish Coffee"],
["5f4273", "Hatter’s Plush"],
["5f5561", "Purple Fury"],	  
["5F5F6E", "Mid Gray"],
["5F6672", "Shuttle Gray"],
["5F9FAF", "Blue Chiffon"],
["5FA777", "Aqua Forest"],
["5FB3AC", "Tradewind"],
["5FBBA5", "Blue Energy"],
["604913", "Horses Neck"],
["604C8D", "Ultra Violet"],
["6050DC", "Majorelle"],
["605B73", "Smoky"],
["606060", "Gris"],
["606E68", "Corduroy"],
["606e9c", "Blue Batik"],	  
["6093D1", "Danube"],
["612718", "Espresso"],
["613035", "Pompeii Red"],
["614051", "Eggplant"],
["614B3A", "Cacao"],
["614E1A", "Bronze"],
["615D30", "Costa Del Sol"],
["61619b", "Purple Frenzy"],	  
["61845F", "Glade Green"],
["61898A", "Lost Atlantis"],
["619187", "Beryl Green"],
["619288", "Wintergreen Dream"],
["619B87", "Harmony in Green"],
["619CBE", "Gulf Stream Blue"],
["622F30", "Buccaneer"],
["623F2D", "Quincy"],
["624E9A", "Butterfly Bush"],
["625119", "West Coast"],
["626649", "Finch"],
["6296cd", "Someday"],
["633457", "Burnt Orchid"],
["633570", "Comtesse"],	  
["639A8F", "Patina"],
["63B76C", "Fern"],
["642D66", "Pourpre Palatine"],
["642e32", "Voluptuous"],
["6456B7", "Slate Blue"],
["645D79", "Metropolis Lilac"],
["646077", "Dolphin"],
["646463", "Storm Dust"],
["646A54", "Siam"],
["646E75", "Nevada"],
["647e9e", "Smoky Violet"],	  
["6495ED", "Cornflower Blue"],
["649B88", "Glauque"],
["64A4AB", "Smoky Mountain Spring"],
["64CCDB", "Viking"],
["65000B", "Rosewood"],
["651A14", "Cherrywood"],
["652533", "Wine"],
["653a3e", "Royal Garnet"],	  
["652DC1", "Purple Heart"],
["653D7C", "Pansy"],
["657220", "Fern Frond"],
["65745D", "Willow Grove"],
["65869F", "Hoki"],
["660045", "Pompadour"],
["660099", "Purple"],
["6600FF", "Bleu Persan"],
["66023C", "Tyrian Purple"],
["661010", "Dark Tan"],
["662266", "Midnight Red"],
["663854", "Halaya Ube"],
["663f44", "Merlot"],	  
["664228", "Brun Van Dick"],
["66575d", "Sweet Currant"],
["665FD1", "Dark Periwinkle"],	  
["666156", "Karens Pewter"],
["666944", "Fresh Cilantro"],
["666b89", "Shadow Mountain"],	  
["668A15", "Pool Table"], 
["6699CC", "Livid"],
["66B58F", "Silver Tree"],
["66CDAA", "Medium"],
["66FF00", "Bright Green"],
["66FF66", "Screamin' Green"],
["67032D", "Black Rose"],
["673649", "Berry Brown"],	  
["67373f", "Wine Glass"],
["675375", "Velvet Beret"],	  
["675FA6", "Scampi"],
["674D47", "Liver"],
["676662", "Ironside Gray"],
["676767", "Granite Gris"],
["677179", "Gris de Payne"],
["677DB7", "Glaucous"],
["678975", "Viridian Green"],
["679F5A", "Mousse"],
["67A712", "Christi"],
["681B2B", "X Factor"],
["683600", "Nutmeg Wood Finish"],
["68374e", "Ruby Nights"],	  
["683839", "Spanish Tile"],
["685558", "Zambezi"],
["685E43", "Gris de Maure"],
["685E6E", "Salt Box"],
["686F8C", "Ardoise"],
["689D71", "Sauge"],
["692545", "Tawny Port"],
["692D54", "Finn"],
["694a5a", "Passionate"],	  
["695F62", "Scorpion"],
["697E9A", "Lynch"],
["6a2e34", "Lovestruck"],	  
["6A442E", "Spice"],
["6A455D", "Colombin"],
["6A4B21", "Colorado Claro"],
["6A5D1B", "Himalaya"],
["6A6051", "Soya Bean"],
["6a7ba2", "Bedtime Story"],
["6a8097", "Merman"],	  
["6A8185", "Steel Teal"],
["6B0D0D", "Bourgogne"],
["6B2A14", "Hairy Heath"],
["6B3FA0", "Rebecca Pourpre"],
["6B4423", "Flattery"],
["6B4E31", "Shingle Fawn"],
["6b5457", "Purple Earth"],	  
["6B5731", "Bureau"],
["6B5755", "Dorado"],
["6B8BA2", "Bermuda Gray"],
["6B8E23", "Olive Drab"],
["6B9297", "Teal & Tonic"],
["6B9DB6", "Crisp French Blue"],
["6BD38C", "Spring Bouquet"],
["6C0277", "Zinzolin"],
["6C3082", "Eminence"],
["6C3D5E", "Dark Byzantium"],
["6CDAE7", "Turquoise Blue"],
["6D0101", "Lonestar"],
["6D071A", "French Bordeaux"],
["6D332A", "Kwila"],
["6D5E54", "Pine Cone"],
["6D6C6C", "Dove Gray"],
["6D6D2F", "Safari Green"],
["6D8FA2", "Palace Intrigue"],
["6D9292", "Juniper"],
["6D92A1", "Gothic"],
["6D9495", "Ship Shape"],
["6E0902", "Red Oxide"],
["6E0B14", "Grenat"],
["6E1D14", "Moccaccino"],
["6E4826", "Pickled Bean"],
["6E4B26", "Dallas"],
["6E6D57", "Kokoda"],
["6E7783", "Pale Sky"],
["6E7F80", "AuroMetalSaurus"],
["6EA3A3", "Cresting Waves"],
["6F203B", "Old Mauve"],
["6F440C", "Cafe Royale"],
["6f4d50", "Crabapple Wine"],
["6f6183", "Purple Valley"],	  
["6F6A61", "Flint"],
["6F8E63", "Highland"],
["6F9D02", "Limeade"],
["6FD0C5", "Downy"],
["701C1C", "Persian Plum"],
["703516", "Colorado"],
["703642", "Catawba"],
["703d3d", "Molten Sulphur"],	  
["704214", "Sepia"],
["704A07", "Antique Bronze"],
["704F50", "Ferra"],
["706555", "Coffee"],
["70802C", "Absinthe Dreams"], 
["708090", "Slate Gray"],
["708D23", "Vert Olive"],
["708E9A", "Cat’s Pajamas"],
["711A00", "Cedar Wood Finish"],
["71291D", "Metallic Copper"],
["714463", "Burnt Orchid"],
["714693", "Affair"],
["714AB2", "Studio"],
["715D47", "Tobacco Brown"],
["716338", "Yellow Metal"],
["716B56", "Peat"],
["716E10", "Olivetone"],
["717486", "Storm Gray"],
["717FA1", "Ombre Bleue"],
["718080", "Sirocco"],
["71A6CE", "Boo Blue"],
["71D9E2", "Aquamarine Blue"],
["72010F", "Venetian Red"],
["723E64", "Violet d'évêque"],
["724A2F", "Old Copper"],
["724e56", "Stoic"],	  
["725877", "Chinese Violet"],
["726D4E", "Go Ben"],
["727472", "Nickel"],
["72799b", "Puttin’ on the Ritz"],	  
["727B89", "Raven"],
["729397", "Grand Boulevard"],
["72A0C1", "Air Superiority Blue"],
["72B7D9", "Blue Topaz"],
["730800", "Sang de bœuf"],
["731E8F", "Seance"],
["734454", "Vampire Love"],
["734682", "Amethyst Ice"],	
["734683", "Voodoo Violet"],
["736275", " Purple Suede"],	  
["736C9F", "Kimberly"],
["736D58", "Crocodile"],
["737829", "Crete"],
["738678", "Xanadu"],
["738D72", "Natalie’s Chalkboard"], 
["73A9C2", "Moonstone Blue"],
["73C2FB", "Maya Blue"],
["73D4BC", "Turquoise Twist"],
["745a92", "Rollick"],	  
["74640D", "Spicy Mustard"],
["746CC0", "Toolbox"],
["747D63", "Limed Ash"],
["747D83", "Rolling Stone"],
["748881", "Blue Smoke"],
["749378", "Laurel"],	  
["74B3B4", "Slightly Sheen"],
["74C365", "Mantis"],
["74B5DA", "Tribute"],
["74D0F1", "Azur"],
["755A57", "Russett"],
["7563A8", "Deluge"],
["757575", "Sonic Silver"],
["757648", "Farm Fresh"],
["763839", "Posh Red"],
["76395D", "Cosmic"],
["7666C6", "Blue Marguerite"],
["766DAD", "Blue Violet Crayola"],
["766F64", "Bis"],
["768993", "Abacus"],
["769097", "Blue Tea"],
["76BD17", "Lima"],
["76C7E2", "Waterslide"],
["76D7EA", "Sky Blue"],
["770F05", "Dark Burgundy"],
["771F1F", "Crown of Thorns"],
["773F1A", "Walnut"],
["774968", "Twilight Lavender"],
["776F61", "Pablo"],
["778120", "Pacifika"],
["778489", "Academy Gray"],
["77938A", "Brimming Over"],
["779766", "Acanthus Green"],
["779E86", "Oxley"],
["77B5A8", "Intracoastal"],
["77B5FE", "Bleu ciel"],
["77C27E", "Jolt of Green"],
["77DD77", "Pastel Green"],
["780109", "Japanese Maple"],
["78184A", "Pansy Purple"],
["782D19", "Mocha"],
["782F16", "Peanut"],
["783741", "Jazzy Red"],
["78363c", "Fire Agate"],
["783b2b", "Crushed Red Pepper"],	  
["785E2F", "Café au lait"],
["78866B", "Camouflage Green"],
["788A25", "Wasabi"],
["788BBA", "Ship Cove"],
["788E60", "Hinterland"],
["78A39C", "Sea Nymph"],
["791CF8", "Indigotine"],
["79443B", "Bole"],
["794a4d", "Moving Melody"],
["794e6c", "Magician’s Cloak"],	  
["795D4C", "Roman Coffee"],
["796172", "Purple Sunset"],	  
["796792", "Genevieve Song"],
["796878", "Old Lavender"],
["796989", "Rum"],
["796A78", "Fedora"],
["796D62", "Sandstone"],
["79704A", "Greek Oregano"],
["797A63", "Greenwich Green"],
["798081", "Plomb"],
["79DEEC", "Spray"],
["79F8F8", "Aigue-marine"],
["7A013A", "Siren"],
["7A2C26", "Reddish Brown"],
["7a422a", "Two Cents"],	  
["7A58C1", "Blue Fuchsia"],
["7A7A7A", "Boulder"],
["7A7C60", "Zipline Green"],
["7A8975", "Kale"],
["7A89B8", "Wild Blue Yonder"],
["7AC488", "De York"],
["7B3801", "Red Beech"],
["7B3F00", "Cinnamon"],
["7B6608", "Yukon Gold"],
["7B7874", "Tapa"],
["7B7C94", "Waterloo"],
["7B7F32", "Woodbine"],
["7B8265", "Flax Smoke"],
["7B9A7B", "Scottish Highlands"],
["7B9F80", "Amulet"],
["7BA05B", "Asparagus"],
["7C1C05", "Kenyan Copper"],
["7C1C23", "Plum Jam"],
["7c3147", "Pickled Beet"],	  
["7C7631", "Pesto"],
["7C778A", "Smoked Topaz"],
["7C7B7A", "Concord"],
["7C7B82", "Jumbo"],
["7C881A", "Trendy Green"],
["7C8DA2", "Norwegian Night"],
["7CA1A6", "Gumbo"],
["7CB0A1", "Acapulco"],
["7CB6A1", "Patina Hue"],
["7CB7BB", "Neptune"],
["7CB9E8", "Aero"],
["7D2C14", "Pueblo"],
["7d5955", "Berry Butter"],	
["7d80a5", "Positively Purple"],
["7d83bd", "Simply Purple"],	  
["7D84B2", "Rhythm"],
["7d98b3", "Blue Marble"],	  
["7D9DB0", "Lake Okoboji"],
["7DA29C", "Zen"],
["7DA98D", "Bay Leaf"],
["7DC8F7", "Malibu"],
["7E3300", "Caramel"],
["7E3A15", "Copper Canyon"],
["7e4b40", "Watusi"],	  
["7E5835", "Cannelle"],
["7e6472", "Purple Sunset"],
["7e85bd", "Plush"],	  
["7E8773", "Explorer Green"],
["7E9285", "Green Bay"],
["7E93A7", "Ardoise Claire"],
["7EBFC5", "Cerulean Skies"],
["7F1734", "Claret"],
["7F3060", "Purple Potion"],
["7f3639", "Heirloom Red"],	  
["7F3A02", "Peru Tan"],
["7f5051", "In the Red"],	  
["7F626D", "Falcon"],
["7F7589", "Mobster"],
["7F76D3", "Moody Blue"],
["7F7F7F", "Gris fer"],
["7f97cc", "Blue Shock"],	  
["7F9BAC", "Cats and Dogs"],
["7F9CA8", "Blue Nuthatch"],
["7FBCD7", "Water Fountain"],
["7FC844", "Jasmine Green"],
["7FD37F", "Summer Green"],
["7FDD4C", "Absinthe"],
["7FFF00", "Chartreuse"],
["7FFFD4", "Aquamarine"],
["800000", "Maroon"],
["800080", "Patriarch"],
["800B47", "Rose Bud Cherry"],
["801818", "Rouge de Falun"],
["80323c", "Rushing Red"],	  
["80341F", "Red Robin"],
["803790", "Vivid Violet"],
["804045", "Perennial Red"],	  
["80461B", "Russet"],
["80514e", "Red Henna"],	  
["806D5A", "Châtaigne"],
["807E79", "Friar Gray"],
["808000", "Olive"],
["808080", "Gray"],
["8097ae", "Versatile Blue"],
["80a5cd", "Paula loves Paris"],	  
["80B3AE", "Gulf Stream"],
["80B3C4", "Glacier"],
["80CCEA", "Seagull"],
["80D0D0", "Bleu givré"],
["811453", "Prune"],
["813637", "Sangria Red"],	  
["81422C", "Nutmeg"],
["815a92", "Sonic Plum"],	  
["81613E", "Coyote Brown"],
["81658e", "Vivacious Violet"],	  
["816E71", "Spicy Pink"],
["817377", "Empress"],
["81894E", "Turtle Green"],
["819885", "Spanish Green"],
["81ACB8", "Sebastian Inlet"],
["8203AB", "Violet RYB"],  
["825551", "Earth Rouge"],
["825779", "Purple Davenport"],	  
["826F65", "Sand Dune"],
["82747b", "Simple Plum"],	  
["827775", "Moka"],
["827D19", "Fickle Pickle"],
["828685", "Gunsmoke"],
["828F72", "Battleship Gray"],
["82C46C", "Amande"],
["831923", "Merlot"],
["835285", "Razzmic Berry"],
["836343", "Raw Umber"],
["836468", "Mauving Up"],	  
["837050", "Shadow"],
["83A697", "Vert céladon"],
["83AA5D", "Chelsea Cucumber"],
["83D0C6", "Monte Carlo"],
["842E1B", "Brique"],
["843179", "Plum"],
["845A3B", "Claro"],
["848484", "Fer"],
["84A0A0", "Granny Smith"],
["84C0BC", "Enchanted Isle"],
["84D3BE", "Middle Blue Green"],
["84DE02", "Alien Armpit"],
["850606", "Sanguine"],
["8547B6", "Royal Purple"],
["85530F", "Chaudron"],
["856D4D", "French Bistre"],
["8581D9", "Chetwode Blue"],
["858470", "Bandicoot"],
["859EA5", "Brocade Blue"],
["859FAF", "Bali Hai"],
["85BB65", "Dollar Bill"],
["85C17E", "Lichen"],
["85C4CC", "Half Baked"],
["860111", "Red Devil"],
["862f31", "Wine Cask"],
["863336", "Xotic"],
["863C3C", "Lotus"],
["86483C", "Ironstone"],
["864D1E", "Bull Shot"],
["86560A", "Rusty Nail"],
["8679b5", "Bravo!"],	  
["868974", "Bitter"],
["86949F", "Regent Gray"],
["8698c4", "Enchanted Evening"],	  
["86B9CB", "Blue Bird Morning"],
["86BAC8", "Mosaic Blue"],
["871550", "Disco"],
["873260", "Boysenberry"],
["873D42", "Zinger"],
["874b66", "Sea Fan Fuchsia"],
["87558c", "Cosmic Berry"],	  
["87591A", "Mordoré"],
["87756E", "Americano"],
["877885", "Classical Violet"],	  
["877C7B", "Hurricane"],
["878D91", "Oslo Gray"],
["8795b4", "Electric Sky"],	  
["879E6A", "Herbes de Provence"],
["87a4c8", " Violetta"],	  
["87AB39", "Sushi"],
["87B9BB", "Aqua Haze"],
["87BDBC", "Aquamarine"],
["87E990", "Jade Pâle"],
["882D17", "Kobe"],
["88421D", "Acajou"],
["884344", "Cowhide"],
["884DA7", "Améthyste"],
["885342", "Spicy Mix"],
["885818", "Grizzly"],
["886221", "Kumera"],
["888387", "Suva Gray"],
["888870", "Epic Green"],
["888D65", "Avocado"],
["88B999", "Clean Green"],
["893456", "Camelot"],
["893843", "Solid Pink"],
["89393F", "Love Junkie"],
["894367", "Cannon Pink"],
["897D6D", "Makara"],
["89b5dc", "High Seas"],	  
["8A28D9", "Blue-Violet"],
["8A3324", "Burnt Umber"],
["8A496B", "Twilight lavender"],
["8a5248", "Remember Me Red"],
["8a5255", "Maroon Rover"],	  
["8A6293", "French Lilac"],
["8a6c7a", "Tragic Juliet"],  
["8A73D6", "True V"],
["8A8360", "Clay Creek"],
["8A8389", "Monsoon"],
["8A872A", "Manzanilla Olive"],
["8A8F8A", "Stack"],
["8AA399", "Matin bleu"],
["8AB9F1", "Jordy Blue"],
["8B00FF", "Electric Violet"],
["8B0723", "Monarch"],
["8B4C4B", "Tuscan Red"],
["8b5748", "Rusted Earth"],	  
["8B6B0B", "Corn Harvest"],
["8B6C42", "Basané"],	  
["8B8470", "Olive Haze"],
["8B847E", "Schooner"],
["8B8680", "Natural Gray"],
["8B8E4F", "Fair and Square"],
["8B9C90", "Mantle"],
["8B9FEE", "Portage"],
["8BA690", "Envy"],
["8BA9A5", "Cascade"],
["8ba9c1", "Porcelain Vase"],	  
["8BADB8", "Lucy Blue"],
["8bb5d9", "Blue Magpie"],	  
["8BC076", "Leprechaun Laugh"],
["8BC4E0", "21st Century Blue"],
["8BC6DF", "Hydrangea Blue"],
["8BE6D8", "Riptide"],
["8C055E", "Cardinal Pink"],
["8c2840", "Thrill Ride"],
["8c2d60", "Magenta Manicure"],	  
["8c363b", "Cut Ruby"],	  
["8C472F", "Mule Fawn"],
["8c546d", "Plumberry"],  
["8C5738", "Potters Clay"],
["8C6495", "Trendy Pink"],
["8C696B", "Deep Taupe"],
["8CA97A", "Easygoing Green"],
["8CC1B5", "Float your Boa"],
["8D0226", "Paprika"],
["8d2e32", "Pomegranate Seeds"],	  
["8D3D38", "Sanguine Brown"],
["8D3F3F", "Tosca"],
["8D4024", "Senois"],
["8d4c89", "Mad about Magenta"],	  
["8D7662", "Cement"],
["8D8974", "Granite Green"],
["8D90A1", "Manatee"],
["8DA6B9", "New Toile"],
["8DA8CC", "Polo Blue"],
["8DA8F1", "Little Boy Blue"],
["8DC2E1", "Endless Blue"],
["8E0000", "Red Berry"],
["8E3A59", "Quinacridone"],
["8E4D1E", "Rope"],
["8E5434", "Terre de Sienne"],
["8e635e", "Cloak of Mystery"],	  
["8E6F70", "Opium"],
["8E7471", "Kubrick"],
["8E775E", "Domino"],
["8E8190", "Mamba"],
["8e91ab", "Macaw"],
["8e96b5", "House of Owen"],	  
["8E9DAE", "Blissful Blue"],
["8EA2C6", "Bleu charrette"],
["8EABC1", "Nepal"],
["8EADAC", "Fog Blue"],
["8EE53F", "Kiwi"],
["8F021C", "Pohutukawa"],
["8f3028", "Dante’s Cardigan"],
["8f3841", "Radiant Red"],	  
["8F3E33", "El Salva"],
["8F4B0E", "Korma"],
["8F5922", "Lavallière"],
["8F8176", "Squirrel"],
["8F9779", "Artichoke"],
["8FD6B4", "Vista Blue"],
["900020", "Burgundy"],
["901E1E", "Old Brick"],
["904c44", "Decadent Red"],	  
["90676F", "Kindness of Stangers"],
["907874", "Hemp"],
["907B71", "Almond Frost"],
["908696", "Intrigue"],	  
["908D39", "Sycamore"],
["90B39B", "Garden District"],
["91283B", "Passe Velour"],
["912B3B", "Amarante"],
["914E75", "Sugar Plum"],
["916270", "Valley Bloom"],	
["917987", "Plum Legacy"],
["917aa4", "Purple Phantom"],
["9183a7", "Purple Hills"],	  
["919D5A", "Whirled Peas"],
["92000A", "Sangria"],
["92316F", "Wild Aster"],		  
["924321", "Cumin"],
["924231", "Brick House"],	  
["924DB3", "Purple Plum"],
["925559", "Muted Red"],	  
["926D27", "Terre d'Ombre"],
["926F5B", "Crème de Marron"],
["928573", "Stonewall"],
["928590", "Venus"],
["928A6D", "Abanakee"],
["92907D", "Into the Wild"],
["92A1CF", "Ceil"],
["92B34D", "Fresh Mown"],
["933D41", "Smoky Topaz"],
["933F61", "Valspar Paint Va-Va Voom"],
["9370DB", "Medium Purple"],
["93A091", "New Patina"],
["93A67F", "Frog Prince"],
["93AB3E", "Sassy Green"],
["93b1d6", "Wings of Pegasus"],	  
["93C8CF", "Big Sky Country"],
["93CCEA", "Cornflower"],
["93DFB8", "Algae Green"],
["94353c", "Quite Red"],	  
["943A40", "Cordovan"],	  
["944747", "Copper Rust"],
["944A20", "Umber"],
["944A3B", "Marron Glacé"],
["944f43", "Russet Red"],	  
["946296", "Purple Unicorn"],
["947F60", "Havane"],
["94812B", "Kaki"],
["948771", "Arrowtown"],
["94CDC2", "Beach Breeze"],
["94D00A", "Citrine"],
["950015", "Scarlett"],
["954A00", "Saddle Brown"],
["955628", "Noisette"],
["956354", "Aged Bourbon"],	  
["956387", "Strikemaster"],
["958793", "Plummy"],	  
["959396", "Mountain Mist"],
["95976D", "Curly Grass"],
["959ccd", "Fields of Heather"],	  
["95A088", "Bushel"],
["95A595", "Vert-de-gris"],
["95BFB1", "Scenic View"],
["95BFE1", "Double Denim"],
["95C3DF", "Patrick’s Perfect Day"],
["960010", "Carmine"],
["960018", "Carmin"],
["960036", "Claret"],
["964068", "Posh Purple"],
["964B00", "Brown"],
["965A3E", "Coconut"],
["966e9c", "Pishposh"],	  
["967059", "Leather"],
["9678B6", "Purple Mountain's Majesty"],
["967BB6", "Lavender Purple"],
["967C5C", "Terre de Sienne Brûlée"],
["9680A4", "Glossy Grape"],
["9683EC", "Lavande"],
["96A8A1", "Pewter"],
["96B395", "Dried Basil "],
["96BCA1", "Summer Green"],
["96BBAB", "Cambridge Blue"],
["96C8A2", "Eton Blue"],
["973a3c", "Thai Chili"],
["973e41", "Fabulous Red"],	  
["97605D", "Au Chico"],
["976B39", "Yellowish Brown"],
["9771B5", "Purple Mountain Majesty"],
["97C6DA", "Boutonniere"],
["97CD2D", "Atlantis"],
["97DFC6", "Opaline"],
["983A5D", "Danse the Flamenco"],
["983D61", "Vin Rouge"],
["98535c", "Baked Bahama"],	  
["985717", "Rouille"],
["9874D3", "Lilac Bush"],
["98777B", "Bazaar"],
["98811B", "Hacienda"],
["988D77", "Pale Oyster"],
["98FF98", "Mint Green"],
["990000", "Stizza"],
["990066", "Fresh Eggplant"],
["991199", "Violet Eggplant"],
["991613", "Tamarillo"],
["991B07", "Totem Pole"],
["99512B", "Feuille Morte"],
["99546d", "Vive l’Amour"],
["996084", "Berry Pretty"],	  
["996666", "Copper Rose"],
["9966CC", "Amethyst"],
["997A8D", "Mountbatten Pink"],
["998099", "Toadstool"],
["9999CC", "Blue Bell"],
["99a0b2", "Moonlight Stroll"],
["99abce", "Heartsong"],	  
["99B8C4", "Déjà Blue"],
["99C4D5", "Ethereal Blue"],
["9A3820", "Prairie Sand"],
["9A3B55", "Jam Jar"],
["9A4EAE", "Purpureus"],
["9a5c4f", "Tropical Nut"],	  
["9A6E61", "Toast"],
["9a898d", "Sunrise over Tahiti"],	  
["9A9577", "Gurkha"],
["9A9859", "Stem"],
["9AA22A", "Vintage Chartreuse "],
["9aafd8", "Mysterious Blue"],	  
["9AB5C6", "Glacier Bay"],
["9AB973", "Olivine"],
["9AC2B8", "Shadow Green"],
["9B4703", "Oregon"],
["9b6f8f", "Cali Lily"],	  
["9B7653", "Dirt"],
["9B9E8F", "Lemon Grass"],
["9BB9BD", "Warm Breezes"],
["9BBAB4", "Nursery Wall"],
["9BD8D3", "Electro Chill"],
["9C004A", "Old Citadel"],
["9C2542", "Big Dip Oruby"],
["9c2e50", "Jam Jar"],	  
["9C3336", "Stiletto"],
["9c6250", "Tuscan Rooftops"],	  
["9CA3DB", "Maximum Blue Purple"],
["9d363a", "Pop of Poppy"],	  
["9D3B68", "Magenta Manicure"],
["9D3E0C", "Auburn"],
["9D446E", "Magenta Haze"],
["9D523B", "Krakatoa"],
["9D5616", "Hawaiian Tan"],
["9D848E", "Elderberry"],
["9D9033", "Parrot Feather"],
["9D96B2", "Heirloom Lilac"],
["9DACB7", "Gull Grey"],
["9db4cc", "Morris Blue"],	  
["9DC209", "Pistachio"],
["9DCCBB", "Cool Juniper"],
["9DE093", "Granny Smith Apple"],
["9DE5FF", "Anakiwa"],
["9E0E40", "Pourpre"],
["9E393C", "Planet Fever"],
["9E5302", "Chelsea Gem"],
["9e565c", "Upholstrery Red"],	  
["9E5B40", "Sepia Skin"],
["9E9E9E", "Souris"],
["9EA587", "Sage"],
["9EA91F", "Citron"],
["9EB1CD", "Rock Blue"],
["9EBCB2", "Riffin’ on Green"],
["9EDEE0", "Morning Glory"],
["9EFD38", "Vert citron"],
["9F2B68", "Amaranth deep purple"],
["9F381D", "Cognac"],
["9F4576", "Magenta haze"],
["9F551E", "Tabac"],
["9f727d", "Posh Rose"],	  
["9F8170", "Beaver"],
["9F821C", "Reef Gold"],
["9F9F9C", "Star Dust"],
["9FA0B1", "Santas Gray"],
["9FB683", "Bavarian Hops"],
["9FB7C1", "Blue Goblin"],
["9FD7D3", "Sinbad"],
["9FDD8C", "Feijoa"],
["9FE855", "Anis"],
["A020F0", "Veronica"],
["A02712", "Tabasco"],
["a06c77", "High Country Rose"],	  
["A0785A", "Chamoisee"],
["A10684", "Violine"],
["A1384B", "Mad About You"],
["A13D4A", "Coral Fire"],
["A1750D", "Buttered Rum"],
["A19569", "Fond of Fronds"],
["a199c7", "Purpleheart"],
["a1a4c5", "Sweet Violet"],	  
["A1ADB5", "Hit Gray"],
["A1C50A", "Citrus"],
["A1C8C6", "Drenched"],
["A1D566", "Verveine"],
["A1DAD7", "Aqua Island"],
["A1E9DE", "Water Leaf"],
["A2006D", "Flirt"],
["A21B1D", "Ruby Red"],
["a21f4e", "She Pouts"],
["A22000", "Rufous"],
["A22099", "Foxglove"],
["A2242F", "Samba"],
["A2345C", "Bōtan"],	  
["A23A34", "Kachow"],
["a25462", "Ruby Petals"],	  
["A26645", "Cape Palliser"],
["a27a7a", "Cherry Mocha"],
["a27e9c", "Pink Plumeria"],
["a2949f", "Romantic Holiday"],	  
["A2985E", "Acacia Tree"],
["A2AAB3", "Gray Chateau"],
["A2AEAB", "Edward"],
["a2aed2", "Safe Haven"],
["a2b2ce", "Lavender Blue"],
["a36864", "Savannah Red"],	
["a36a64", "Cranberry Foule"],	 	  
["A3807B", "Pharlap"],
["a381ba", "Plum Burst"],
["a391a7", "Fields of Provence"],	  
["A397B4", "Amethyst Smoke"],
["A39F31", "Friendly Frog"],
["a3abc5", "Bonnie Blue"],
["A3BD9C", "Spring Rain"], 	  
["A3D6DC", "Droplet"],
["A3E3ED", "Blizzard Blue"],
["A42424", "Fraise écrasée"],
["A4345D", "Tree peony"],
["A43F30", "Kamikaze"],
["a4554d", "Toasted Cranberry"],	  
["A4A49D", "Delta"],
["A4A6D3", "Wistful"],
["A4AF6E", "Green Smoke"],
["a4b1c1", "Blue Echo"],
["a4bddc", "September Aster"],	  
["A4BFCD", "Memorybook Blue"],
["A50B5E", "Jazzberry Jam"],
["A5260A", "Rouge Bismarck"],
["a53143", "Mad about You"],
["A5958F", "Etherea"],
["A59B91", "Zorba"],
["A59E80", "Cross Country"],
["A5CB0C", "Bahia"],
["A5D152", "Tilleul"],
["A5F976", "Inchworm"],
["A62F20", "Roof Terracotta"],
["A63A79", "Maximum Red Purple"],
["A65529", "Paarl"],
["a65d75", "Deep Sunset"],	  
["A68B5B", "Barley Corn"],
["a68e96", "Mellow Mauve"],	  
["A69279", "Donkey Brown"],
["A6A29A", "Dawn"],
["A6C4D0", "Favorite Sweater"],
["A6C8C3", "New-Age Green"],
["A6E7FF", "Fresh Air"],
["A72525", "Mexican Red"],
["a7434e", "Hibiscus Tea"],
["A75502", "Tanné"],
["A76726", "Alezan"],
["A77F56", "Café Crème"],
["A7882C", "Luxor Gold"],
["a796b8", "Iris Blossom"],	  
["A7BCA6", "Salon Green"],
["a7cbeb", "Bluish"],	  
["A85307", "Rich Gold"],
["a85551", "Red Ochre"],	  
["A86515", "Reno Sand"],
["A86B6B", "Coral Tree"],
["A86DBB", "Purple Mountain"],
["a86e5e", "Tiny Tulip"],
["a891b6", "Gleeful Joy"],	  
["A89874", "Queue-de-vache Foncée"],
["A8989B", "Dusty Gray"],
["A899E6", "Dull Lavender"],
["A8A589", "Tallow"],
["A8AE9C", "Bud"],
["A8AF8E", "Locust"],
["A8BD9F", "Norway"],
["A8C3D3", "Plein Air"],
["A8E3BD", "Chinook"],
["A91101", "Rouge d'Andrinople"],
["A94169", "Party Pattie"],
["a95849", "Caliente"],	  
["A99A86", "Grullo"],
["A9A07C", "Summer Valley"],
["A9A491", "Gray Olive"],
["A9ACB6", "Aluminium"],
["A9B2C3", "Cadet Blue"],
["A9B497", "Schist"],
["A9BDBF", "Tower Gray"],
["a9bdde", "Fairies in America"],	  
["A9BEF2", "Perano"],
["A9C6C2", "Opal"],
["A9D0E6", "December Solstice"],
["A9D1F5", "Baby Blue Eyes"],
["A9D6D5", "Clear Cove"],
["A9EAFE", "Azurin"],
["AA375A", "Night Shadz"],
["AA4069", "Medium Ruby"],
["AA4203", "Fire"],
["aa7267", "Pajarito Red"],	  
["AA8B5B", "Muesli"],
["AA8D6F", "Sandal"],
["AAA5A9", "Shady Lady"],
["AAA9CD", "Logan"],
["AAABB7", "Spun Pearl"],
["AAD6E6", "Regent St Blue"],
["AAF0D1", "Magic Mint"],
["AB0563", "Lipstick"],
["ab3037", "Planet Fever"],	  
["AB3472", "Royal Heath"],
["ab7378", "Taffeta Darling"],	  
["AB917A", "Sandrift"],
["AB9255", "Fort Knox"],
["ab9cac", "Native Lilac"],	  
["ABA0D9", "Cold Purple"],
["ABA196", "Bronco"],
["abafda", "Sassy Violet"],	  
["ABC3CC", "Juliet Blue"],
["AC1E44", "Lie de vin"],
["ac4b7e", "Pink Pizzazz"],	  
["ac545a", "Cherry Kisses"],
["ac595a", "Deep Rose"],	  
["AC8A56", "Limed Oak"],
["AC91CE", "East Side"],
["AC9E22", "Lemon Ginger"],
["ACA371", "Geek Chic"],
["ACA494", "Napa"],
["ACA586", "Hillary"],
["ACA59F", "Cloudy"],
["ACA996", "Afternoon Nap"],
["ACACAC", "Silver Chalice"],
["acaec4", "Soul Sister"],	  
["ACB78E", "Swamp Green"],
["ACCBB1", "Spring Rain"],
["ACDD4D", "Conifer"],
["ACE1AF", "Celadon"],
["ad273f", "Con Brio"],	  
["AD360E", "Ambre Rouge"],
["ad3c44", "Bright Red"],	  
["AD4F09", "Fauve"],
["AD781B", "Mandalay"],
["ADB977", "Green Curry"],
["ADBED1", "Casper"],
["ADCEE1", "Serendipity Blue"],
["ADD8FF", "Belgion"],
["ADDFAD", "Moss Green"],
["ADE0DC", "In the Shallows"],
["ADE6C4", "Padua"],
["ADFF2F", "Green Yellow"],
["AE0C00", "Mordant"],
["ae373f", "Classic Red"],	  
["AE4560", "Hippie Pink"],
["AE4A34", "Tomette"],
["AE6020", "Desert"],
["AE642D", "Baillet"],
["ae6471", "Pretty Peony"],
["ae668e", "Felicia"],	  
["ae7073", "Spanish Rose Shadow"],
["ae7da7", "Purple Stripe"],	  
["AE809E", "Bouquet"],
["ae85be", "Lavender Blaze"],	  
["AE8964", "Sépia"],
["AE9395", "Violet Dusk"],
["AEB087", "Terrarium"],
["aeb0cb", "Purple Freedom"],
["aebfda", "Canopy Bed"],	  
["AEC6CF", "Pastel"],
["AED2DC", "Soothing Blue"],
["AF002A", "Alabama Crimson"],
["AF4035", "Medium Carmine"],
["AF4D43", "Apple Blossom"],
["AF593E", "Brown Rust"],
["af6d5f", "Kitchen Tile Red"],	  
["AF6E4D", "Brown Sugar"],
["AF8751", "Driftwood"],
["AF8F2C", "Alpine"],
["af929f", "Pinterested"],	  
["AF9F1C", "Lucky"],
["AFA09E", "Martini"],
["AFA77B", "Beigeasse"],
["AFAFAF", "Acier"],
["AFA8BC", "Abbey Road"],
["AFB1B8", "Bombay"],
["AFB9A8", "Fanfare"],
["AFBDD9", "Pigeon Post"],
["AFC199", "Green eggs & Cam"],
["B04C6A", "Cadillac"],
["B05C52", "Giant's Club"],
["B05D54", "Matrix"],
["B05E81", "Tapestry"],
["B06500", "Ginger"],
["B06608", "Mai Tai"],
["b08886", "Plum Ribbon"],	  
["B09A95", "Del Rio"],
["B0BF1A", "Acid Green"],
["B0CEE6", "Frosty Snow Cap"],
["B0D5CE", "Sea Inspired"],
["B0E0E6", "Powder Blue"],
["B0E1E0", "High Altitude"],
["B0E313", "Inch Worm"],
["B0F2B6", "Vert d'eau"],
["B10000", "Bright Red"],
["B12731", "Upsdell Red"],
["B14A0B", "Vesuvius"],
["B1610B", "Pumpkin Skin"],
["B16D52", "Santa Fe"],
["b1828d", "New Bud"],	  
["B19461", "Teak"],
["B19BAA", "Dusty Lavender"],
["b19baa", "Dusty Lavender"], 
["b1a4a7", "Heather Bay"], 	  
["B1CEB0", "Cucumber Crush"],
["B1DFE4", "Srsly Blue"],
["B1E2C1", "Fringy Flower"],
["B1E2D7", "Sky Blue View"],
["B1F4E7", "Ice Cold"],
["B20931", "Shiraz"],
["b25550", "Brick Facade"],
["b2789a", "So Long Shadow"],	  
["B28330", "Chai Tea"],
["b283b8", "Berries Galore"],	  
["B284BE", "African Violet"],
["B2A1EA", "Biloba Flower"],
["B2CEDE", "Whiting Cottage"],
["B2D1DA", "Grand Entrance"],
["B2DDED", "Lady in Waiting"],
["B31B1B", "Cornaline"],
["B32D29", "Tall Poppy"],
["B33D26", "Chinese Red"],
["B3446C", "Irresistible"],
["B35165", "Love Story"],
["B35213", "Fiery Orange"],
["B36700", "Cuivre"],
["B38007", "Hot Toddy"],
["B3A85B", "Summer Moss"],
["B3AF95", "Taupe Grise"],
["B3B191", "Mastic"],
["b3b5dd", "Beloved"],
["b3bad1", "Peri Wink"],	  
["B3C110", "La Rioja"],
["B3DFEB", "Angelic Blue"],
["B43332", "Well Read"],
["B44668", "Blush"],
["b45762", "Sienna Dust"],
["B46D75", "Copper Penny"],
["b499bf", "Izzy’s Mittens"],
["b4c5e5", "Promise"],	  
["B4CFD3", "Jungle Mist"],
["B50000", "Ketchup"],
["B53389", "Fandango"],
["B55C3B", "Acacia"],
["B57281", "Turkish Rose"],
["B57EDC", "Lavender"],
["B59791", "Cherry Taupe"],
["B5A27F", "Mongoose"],
["B5B35C", "Olive Green"],
["B5B644", "Olive verte"],
["B5B7AF", "Gray-green Linen"],
["B5B968", "Sring Ahead"],
["b5c1e3", "Organza"],	  
["B5D1DC", "Sailing on the Bay"],
["B5D2CE", "Jet Stream"],
["B5D4D8", "Hatchling Blue"],
["B5E1DA", "Brilliante"],
["B5E5E2", "Frosty"],
["B5ECDF", "Cruise"],
["B6316C", "Hibiscus"],
["B666D2", "Lilas"],
["B67823", "Poil de chameau"],
["B69D98", "Thatch"],
["B6A237", "Karma"],
["B6B095", "Heathered Gray"],
["B6BAA4", "Eagle"],
["b6cce5", "Utterly Blue"],	  
["B6D1EA", "Spindle"],
["B6D3BF", "Gum Leaf"],
["B7410E", "Rust"],
["B76293", "Bee Balm"],
["B784A7", "Opera Mauve"],
["B78E5C", "Muddy Waters"],
["B7A214", "Sahara"],
["B7A458", "Husk"],
["B7A695", "Gentry Gray"],
["B7B0DD", "Soupçon Mauve"],
["B7B1B1", "Nobel"],
["B7B678", "Golden Green"],
["B7BAA3", "Mossy"],
["B7BCA0", "Quiet Waters"],
["B7C3D0", "Heather"],
["B7CFE2", "Prestige Blue"],
["B7F0BE", "Madang"],
["B81104", "Milano Red"],
["B82010", "Cardinal"],
["b84d5d", "Berry Blush"],
["B87333", "Copper"],
["b87463", "Florentine Clay"],
["B8860B", "Dark Goldenrod"],
["b8b3b6", "Frisky Whiskers"],	  
["B8B56A", "Gimblet"],
["B8C1B1", "Green Spring"],
["B8C25D", "Celery"],
["b8cce5", "Periwinkle Dream"],	  
["B8E0F9", "Sail"],
["B94E48", "Chestnut"],
["B95140", "Crail"],
["b95579", "Very Berry"],
["b96e78", "Brazilian Blush"],
["b987a7", "A Plum Job"],	  
["B98D28", "Marigold"],
["B9B276", "Clarissimo"],
["B9C46A", "Wild Willow"],
["B9C8AC", "Rainee"],
["B9CFDC", "Arctic Circle"],
["B9DDEB", "New Prince"],
["B9DEE2", "Haiku Blue"],
["BA0101", "Guardsman Red"],
["BA2B77", "Purplish Red"],
["BA3028", "Golden Gate Bridge"],
["BA3A17", "Rust"],
["BA450C", "Rock Spray"],
["ba4c4e", "Dressed to the Nine"],
["BA6F1E", "Bourbon"],
["ba7cb4", "Dragonflies"],	  
["BA7F03", "Pirate Gold"],
["BA8759", "Biche"],
["BA93D8", "Lenurple"],
["BA9B51", "Or Satiné"],
["BA9B61", "Claro Claro"],
["BAB1A2", "Nomad"],
["BABABA", "Étain Oxydé"],
["BABCB6", "Granite Dust"],
["BAC2BA", "Mercury"],
["BAC7C9", "Submarine"],
["BAEEF9", "Charlotte"],
["BB0B0B", "Cerise"],
["BB30A4", "Reddish Purple"],
["BB3385", "Medium Red Violet"],
["bb5d50", "Island Salsa"],
["bb8581", "New Haven Rose"],
["bb897c", "Rosy Sandstone"],
["BB8983", "Brandy Rose"],
["BB8B67", "Kalgoorie Sands"],
["BBAAEE", "Violet Ice Cream"],
["BBACAC", "Tourterelle"],
["bbafbd", "Midsummer Twilight"],	  
["BBAE98", "Grège"],
["BBBAA3", "Garnish"],
["BBCBAA", "Freshwater Green"],
["BBCEE0", "Barking Creek"],
["BBD009", "Rio Grande"],
["BBD2E1", "Fumée"],
["BBD7C1", "Surf"],
["BC2001", "Écrevisse"],
["BC9161", "Camel"],
["bcafba", "Lilac Blossom"],	  
["BCC9C2", "Powder Ash"],
["BCD2A0", "Fava Bean"],
["BCD4E6", "Beau Blue"],
["BCDBE3", "Needed Escape"],
["BD5E2E", "Tuscany"],
["bd8287", "Romantic Rose"],
["BD8574", "Burnished Apricot"],
["bd8775", "Western Pink"],
["BD978E", "Quicksand"],
["bda4ad", "Bedroom Plum"],	  
["BDABBE", "Lavender Frost"],
["bdabc1", "Really Romantic"],	  
["BDB1A8", "Silk"],
["BDB2A1", "Malta"],
["BDB3C7", "Chatelle"],
["BDBBD7", "Lavender Gray"],
["BDBDC6", "French Gray"],
["bdbfd1", "A Stitch in Time"],	  
["BDC6B3", "Succulent"],
["BDC8B1", "Jade Cameo"],
["BDC8B3", "Clay Ash"],
["BDC9CE", "Loblolly"],
["bdc9d9", "Snow Flurries"],	  
["BDDA57", "June Bud"],
["BDEBD9", "Air Bleu"],
["BDEDFD", "French Pass"],
["BE0032", "Crimson Glory"],
["BE454F", "Chrysanthemum"],
["be4948", "Oh So Red"],
["BE8A4A", "Spruce Cone"],
["BEA6C3", "London Hue"],
["beaccc", "Fancy Pansy"],
["beb1d0", "Orchid House"],
["beb3be", "Pocketful of Posies"],	  
["BEB5B7", "Pink Swan"],
["BEDE0D", "Fuego"],
["BEDEDD", "Ring Box Blue"],
["BEF574", "Pistache"],
["BF3030", "Fraise"],
["BF4A60", "Mon Cher Ami"],		  
["BF4F51", "Bittersweet Shimmer"],
["BF5500", "Rose of Sharon"],
["BFB8B0", "Tide"],
["BFBED8", "Blue Haze"],
["BFC1C2", "Silver Sand"],
["BFC921", "Key Lime Pie"],
["bfcde2", "Carousel Purple"],	  
["BFDAE9", "Lingerie Blue"],
["BFDBE2", "Ziggurat"],
["BFFF00", "Lime"],
["C029F0", "Electric Purple"],
["C02B18", "Thunderbird"],
["C04737", "Mojo"],
["c06e71", "Playful Pink"],
["C08081", "Old Rose"],
["c0827b", "Ceremonial Orchre"],
["C0934A", "Kowhai"],
["c0a2d1", "Purple Gala"],	  
["C0C0C0", "Silver"],
["C0D3B9", "Pale Leaf"],
["C0D8B6", "Pixie Green"],
["C1440E", "Tia Maria"],
["C14745", "Deep Chestnut"],
["C154C1", "Fuchsia Pink"],
["C19A6B", "Lion"],
["C1A004", "Buddha Gold"],
["c1a2a4", "Lychee Berry"],
["C1B7A4", "Bison Hide"],
["C1BAB0", "Tea"],
["C1BECD", "Gray Suit"],
["C1BFB1", "Tourdille"],
["C1CBC0", "Garden Flower"],
["C1D7B0", "Sprout"],
["C1DAE1", "Morning Glory"],
["C1E1D2", "Witch’s Brew"],
["C1F07C", "Sulu"],
["c23730", "Scarlet Tanager"],
["c23b22", "Steelhead Redd"],
["C26B03", "Indochine"],
["C27270", "Fuzzy Wuzzy"],
["c27b71", "Rhapsody"],
["C2955D", "Twine"],
["c2a6cc", "Meadow Thistle"],	  
["C2B279", "Fresh Peas"],
["C2BDB6", "Cotton Seed"],
["C2CAC4", "Pumice"],
["C2CDE0", "Beribboned"],
["C2D8E5", "Chapel Choir"],
["C2E8E5", "Jagged Ice"],
["C2F732", "Elixir des Moines"],
["C32148", "Maroon Flush"],
["c34b44", "Lovely Love Song"],
["c34b4a", "Autumn Fire"],
["c38c8f", "Twice Shy"],
["C39953", "Aztec Gold"],
["C3B091", "Indian Khaki"],
["C3B470", "Queue-de-vache Claire"],
["c3b7bc", "Sun Painter"],	  
["C3B8AC", "Gallery Grey"],
["C3BFC1", "Pale Slate"],
["C3C3BD", "Gray Nickel"],
["C3C89D", "Green Almond"],
["C3CDE6", "Periwinkle Gray"],
["C3D1D1", "Tiara"],
["C3D2CC", "Take a Hike"],
["C3D5C2", "Sunlit Sea"],
["C3D7E6", "Cache Blue"],
["C3DDF9", "Tropical Blue"],
["C41E3A", "Cardinal"],
["C45655", "Fuzzy Wuzzy Brown"],
["C45719", "Orange Roughy"],
["C46210", "Alloy Orange"],
["C4698F", "Rose Balais"],
["c4726f", "Cuban Plaza"],
["C4BA97", "Botanical Beauty"],
["C4C4BC", "Mist Gray"],
["C4C6AF", "Understory"],
["c4ccd3", "Misty Harbor"],	  
["C4D0B0", "Coriander"],
["C4DCE5", "Blue Bouquet"],
["C4F4C7", "Thé Vert"],
["C4F4EB", "Mint Tulip"],
["C54B8C", "Mulberry"],
["C53151", "Dingy Dungeon"],
["C59922", "Nugget"],
["C5994B", "Tussock"],
["c5b9d5", "Frosted Orchid"],	  
["C5DBCA", "Sea Mist"],
["C5E17A", "Yellow Green"],
["C5E9E3", "Polar Ice"],
["C60800", "Coquelicot"],
["C62D42", "Brick Red"],
["C65A76", "Bizzy Lizzy"],
["C6726B", "Contessa"],
["c684a6", "Bossy-Pants Pink"],	  
["c68a98", "Cooing Doves"],
["C69191", "Oriental Pink"],
["c69592", "Gilman Rose"],
["c6959f", "Edwardian Rose"],
["C6A84B", "Roti"],
["C6B9CD", "Languid Lavender"],
["C6BEDD", "Purple Dragon"],	  
["c6bee0", "Purple Hibiscus"],		  
["C6C3B5", "Ash"],
["C6C8BD", "Kangaroo"],
["c6ccd6", "Mount Nirvana"],	  
["C6CFD4", "New North"],
["C6D0C7", "Fountain Foam"],
["C6DAE2", "Skinny Dippin’"],
["C6E610", "Las Palmas"],
["C7031E", "Monza"],
["C71585", "Red Violet"],
["C72C48", "Framboise"],
["C7404B", "Cha Cha"],
["C740AC", "Byzantine"],
["c74e5b", "Whipped Strawberry"],
["C7BCA2", "Coral Reef"],
["C7C1FF", "Melrose"],
["C7C4BF", "Cloud"],
["C7C9D5", "Ghost"],
["C7CD90", "Pine Glade"],
["C7CF00", "Moutarde"],
["C7D3C2", "Budding Green"],
["C7DDE5", "Botticelli"],
["C84186", "Smitten"],
["c86aa7", "Cosmic Pink"],	  
["c86c6d", "Sonora Rose"],
["C88A65", "Antique Brass"],
["c8a0c3", "La La Love"],	  
["C8A2C8", "Lilac"],
["C8A528", "Hokey Pokey"],
["C8AABF", "Lily"],
["c8aeb0", "Mediterranean Sunset"],
["C8B568", "Laser"],
["C8BC8A", "Halfway Green"],
["c8bdc4", "Lavender Sand"],
["C8C5B3", "Grasscloth"],
["C8DCD4", "Ocean Silk"],
["C8E1C8", "Grasshopper Pie"],
["C8E3D7", "Edgewater"],
["C8E5EC", "Fresh Dawn"],
["C8EBD9", "Woolly Mint"],
["C96323", "Piper"],
["C99415", "Pizza"],
["C9A0DC", "Glycine"],
["C9A9DB", "Wisteria"],
["c9abb9", "Twiligh Bloom"],	  
["C9B29B", "Rodeo Dust"],
["C9B35B", "Sundance"],
["C9B93B", "Earls Green"],
["C9BCDC", "Chardon Pâle"],
["C9C088", "Frozen Marguerita"],
["C9C0BB", "Silver Rust"],
["C9D9D2", "Conch"],
["C9D9E5", "Blue Tulle"],
["C9DAE8", "Tourmaline"],
["C9E5C8", "Cuddle Bug"],
["C9E8EA", "Ambient Light"],
["C9FFA2", "Reef"],
["C9FFE5", "Aero Blue"],
["CA3435", "Flush Mahogany"],
["ca6997", "Rose Dust"],	  
["ca808b", "Doric Pink"],
["CABB48", "Turmeric"],
["CAC0E2", "Zappo"],
["caccde", "Lavender Escape"],	  
["CAD0E9", "Twilight Mist"],
["CADCD4", "Paris White"],
["CAE00D", "Bitter Lemon"],
["CAE6DA", "Skeptic"],
["CB410B", "Sinopia"],
["CB8FA9", "Viola"],
["cbbbc4", "Mischief"],	  
["CBC5AD", "Shaken or Stirred ?"],
["CBCAB6", "Foggy Gray"],
["CBCE88", "Dark Khaki"],
["CBD3B0", "Green Mist"],
["CBD8E3", "City of Lights"],
["CBD8E8", "Blue Romance"],
["CBDBD6", "Nebula"],
["CBDBE2", "Icy"],
["CBE8BF", "Summer Frolic"],
["CC1B73", "Magenta Dye"],
["CC4E66", "Popstar"],
["CC3333", "Persian Red"],
["CC338B", "Magenta Pink"],
["CC5500", "Orange brûlé"],
["CC6600", "Yam"],
["CC7722", "Ochre"],
["CC8899", "Puce"],
["CCCAA8", "Thistle Green"],
["CCCCCC", "Pinchard"],
["CCCCFF", "Periwinkle"],
["CCCFFF", "Pervenche"],
["CCE7D8", "Ultra Green"],
["CCE8E2", "Touch of Frost"],
["CCFF00", "Electric Lime"],
["CD5700", "Tenné"],
["CD5C5C", "Indian Red"],
["CD6651", "Roasted Pumpkin"],
["CD8429", "Brandy Punch"],
["cd8999", "Sianna Rose"],
["cd9489", "Field of Flowers"],
["CD9575", "Antique Laiton"],
["CDA5E1", "Violet Tropical"],
["cda8be", "Tranquil Dusk"],	  
["CDCA54", "Green Mamba"],
["CDCD0D", "Caca d'oie"],
["CDCD97", "Creamy Spinaci"],
["CDD0C7", "Chilean Sea Bass"],
["CDF4FF", "Onahau"],
["CE4B42", "Ruwix"],
["ce7c94", "Perruvian Pom Pom"],
["ce8c79", "Terra Earth"],
["ce9cb8", "Quilted Heart"],	  
["ce9ea0", "Pink Cocoa Cupcake"],
["CEB499", "Maple Leaf"],
["CEB98F", "Sorrell Brown"],
["CEBABA", "Cold Turkey"],
["CEC291", "Yuma"],
["CEC7A7", "Chino"],
["CEC8EF", "Soap"],
["cecfe8", "Eventide"],	  
["CECECE", "Gris perle"],
["CED9DB", "Sunday Sky"],
["CEFF00", "Volt"],
["CF0A1D", "Groseille"],
["CF1020", "Lava"],
["cf454a", "Red Bliss"],
["cf8a7e", "Vintage Coral"],
["CFA0E9", "Parme"],
["CFA39D", "Eunry"],
["cfa8b4", "Sugarplum Dance"],	  
["CFB53B", "Old Gold"],
["cfbcc3", "Calm Cupid"],	  
["CFC486", "Misty Moss"],
["CFDCCF", "Tasman"],
["CFE5B5", "Green reflection"],
["CFE5D2", "Surf Crest"],
["CFE8DA", "Icy Mint"],
["CFEBCE", "Refreshing Green"],
["CFF9F3", "Humming Bird"],
["CFFAF4", "Scandal"],
["D05F04", "Red Stage"],
["D06DA1", "Hopbush"],
["D07D12", "Meteor"],
["d09d8a", "Princess Peach"],
["d0aad3", "Plink"],	  
["D0BEF8", "Perfume"],
["D0C07A", "Chamois"],
["D0C0E5", "Prelude"],
["D0C379", "Green Citrine"],
["D0C445", "Greenish Yellow"],
["D0C8EC", "Poudre Mauve"],
["d0cccd", "Mercury Glass"],	  
["D0D1C4", "Misty Memory"],
["d0d1de", "Daybreak Beckons"],
["d0d7e1", "White Lightning"],	  
["D0DAE8", "Love Crystal"],
["D0E4D8", "Lazy Days"],
["D0E7BE", "Lime Fizz"],
["D0F0C0", "Tea Green"],
["D0FF14", "Arctic Lime"],
["D15E64", "Chestnut Rose"],
["d19699", "Rosetti Pink"],
["D18F1B", "Geebung"],
["D1B606", "Banane"],
["D1BEA8", "Vanilla"],
["D1C6B4", "Soft Amber"],
["d1cbcf", "Whisper Soft"],	  
["D1D2CA", "Celeste"],
["D1D2DD", "Mischka"],
["D1D5DB", "Light Gray"],
["D1DED8", "Soft Haze"],
["D1E231", "Pear"],
["d24b42", "Scarlet Sun"],
["D2691E", "Hot Cinnamon"],
["D27D46", "Raw Sienna"],
["d27fb7", "Raspberry Sorbet"],	  
["D29EAA", "Careys Pink"],
["D2B04C", "Bamboo"],
["D2B48C", "Tan"],
["d2c8cd", "Hazy Iris"],	  
["D2CAEC", "Gris de Lin"],
["D2CDB4", "Bone"],
["D2CFAC", "Martinique Dawn"],
["d2cfcd", "Apollo"],	  
["D2D0AE", "Zen"],
["D2DA97", "Deco"],
["D3EAE2", "Mint Whisper"],
["D2F6DE", "Blue Romance"],
["D2F8B0", "Gossip"],
["d34e5f", "Berrylicious"],
["d37b72", "Hearts Afire"],
["D3C2BE", "Filmy"],
["D3CBBA", "Sisal"],
["D3CDC5", "Swirl"],
["D3CFC2", "Secluded Beach"],
["d3d8e5", "Kindness"],	  
["D3E2C2", "Cat Woman"],
["D3E6ED", "Gauzy Calico"],
["D3E9EC", "Babymoon Blue"],
["D3F468", "Pistachio Cream"],
["D473D4", "Mauve"],
["D47494", "Charm"],
["d4a6ae", "Thistle Field"],
["D4B6AF", "Clam Shell"],
["D4BF8D", "Straw"],
["D4C4A8", "Akaroa"],
["d4c5de", "Playful Petal"],
["d4c9d7", "My Mona"],	  
["D4CD16", "Bird Flower"],
["D4D7D9", "Iron"],
["D4DFE2", "Geyser"],
["D4E2FC", "Hawkes Blue"],
["D4EAC3", "Lime Sherbet"],
["D54600", "Grenadier"],
["d55e7b", "Pink Burst"],
["D58490", "Pelure d'oignon"],
["d588ab", "Berry Twist"],	  
["D591A4", "Can Can"],
["D59A6F", "Whiskey"],
["D5D195", "Winter Hazel"],
["D5E0C8", "Sring Joy"],
["D5ECCF", "Garden Mist"],
["D5F6E3", "Granny Apple"],
["d68095", "Reflecting Rose"],
["D69188", "My Pink"],
["D6C562", "Tacha"],
["D6CEF6", "Moon Raker"],
["d6d0e8", "Will o' the Wisp"],	  
["D6D6D1", "Quill Gray"],
["d6d7e7", "Blushing Lilac"],
["d6e4ea", "Dreamstress"],	  
["D6E5E8", "Blown Glass"],
["D6E7D0", "Pale Tidepool"], 
["D6FFDB", "Snowy Mint"],
["D71868", "Dogwood Rose"],
["D74763", "Paradise Pink"],
["D7472A", "Reddish Orange"],
["D7837F", "New York Pink"],
["D7A6AF", "Rose Lavabo"],
["D7B15F", "Gold Metallic"],
["D7C498", "Pavlova"],
["D7D0FF", "Fog"],
["D84437", "Valencia"],
["D87C63", "Japonica"],
["d88e8b", "Coral Banks"],
["D8BFD8", "Thistle"],
["D8C2D5", "Maverick"],
["d8cadf", "Hampstead Heath"],	  
["D8D1BA", "Understated"],
["D8D7A9", "Sunlit Leaf"],
["D8DDB8", "Cool Cucumber"],
["D8E5C1", "Lime Sorbet"],
["D8EBC6", "Sprig of Mint"],
["D8FCFA", "Foam"],
["D90115", "Alizarine"],
["D94972", "Cabaret"],
["D95085", "Mystic"],
["d9878b", "Strawberry Pink"],
["D99376", "Burning Sand"],
["D9A380", "Tumbleweed"],
["D9B99B", "Cameo"],
["d9c1e0", "Lively Lilac"],
["d9c6e3", "Purple Whisper"],	  
["D9CC93", "Artichoke Mist"],
["d9cfdf", "Purpling Dawn"],	  
["d9d1d1", "Frosted Clover"],
["D9D6CF", "Timberwolf"],
["D9DCC1", "Tana"],
["d9dfe7", "Highland Winds"],	  
["D9E4F5", "Link Water"],
["D9E5BE", "Summer Rapture"],
["D9F7FF", "Mabel"],
["DA3287", "Cerise"],
["DA5B38", "Flame Pea"],
["DA6344", "Cuivre rouge"],
["da6884", "Hint of Cherry"],
["DA6A41", "Red Damask"],
["DA70D6", "Orchidée"],
["da854a", "Autumn Meadow"],
["DA8A67", "Copperfield"],
["da99a2", "Nana’s Rose"],
["DAA520", "Golden Grass"],
["DAB30A", "Miel"],
["DADCBE", "Ying Yang"],
["dabdd6", "Lavender Knoll"],	  
["DAE2B8", "Timid Absinthe"],
["DAE4DF", "Pearly Jade"],
["DAECD6", "Zanah"],
["DAF4F0", "Iceberg"],
["DAFAFF", "Oyster Bay"],
["DB0073", "Raspberry"],
["DB1600", "Rosso Corsa"],
["DB1702", "Cinabre"],
["DB2000", "Vermillon"],
["DB2B32", "Rose Madder"],
["DB5079", "Cranberry"],
["db8478", "Amber Rose"],
["DB9690", "Petite Orchid"],
["DB995E", "Di Serria"],
["DBAC96", "Arizona Dust"],
["dbb5ca", "Private-label Pink"],
["dbc5d3", "Scented Soap"],	  
["DBDBA4", "Lemon Fennel"],
["DBDBDB", "Alto"],
["DBE39E", "Wild Dove"],
["dbe3ea", "London Lights"],	  
["DBE7E6", "Blue Bottle"],
["DBFFF8", "Frosted Mint"],
["DC143C", "Crimson"],
["DC188B", "Rose Barbie"],
["DC1938", "Cramoisi"],
["DC343B", "Poppy Red"],
["DC4333", "Punch"],
["DC493A", "Cinnabar"],
["DC5B62", "Rose de Sharon"],
["dc7b67", "Marmalade Magic"],
["dc9e95", "Salmon Run"],
["dca2c1", "Amelia"],	  
["DCB20C", "Galliano"],
["DCB4BC", "Blossom"],
["DCD747", "Wattle"],
["DCD9D2", "Westar"],
["DCDDCC", "Moon Mist"],
["DCE8BA", "Limish"],
["DCE9BD", "Spring Glow"],
["DCEDB4", "Caper"],
["DCF0EA", "Swans Down"],
["dd7699", "Frosty Berry"],
["DD7744", "Mandarin"],
["dd7977", "Rouge Red"],
["dd9090", "Honeysuckle Rose"],
["DD985C", "Ocre rouge"],
["dd9c9b", "Juicy Peach"],
["DDD6D5", "Swiss Coffee"],
["ddd7de", "Pale Purple"],
["dde0ed", "On Butterfly Wings"],	  
["DDE26A", "Booger Buster"],
["DDE5BF", "Fern Shadow"],
["DDE5E6", "Northbound"],
["DDF9F1", "White Ice"],
["DE2916", "Tomate"],
["DE3163", "Cerise Red"],
["DE6360", "Roman"],
["DE6FA1", "Thulian Pink"],
["DE9816", "Gambodge"],
["DEA681", "Tumbleweed"],
["deb3cc", "Lofty Delight"],	  
["DEB887", "Bois"],
["DEBA13", "Gold Tips"],
["DEC196", "Brandy"],
["DEC5A5", "Baby Tan"],
["DECBC6", "Wafer"],
["ded0e5", "Whipped Plum"],	  
["DED2bb", "Quill"],
["DED4A4", "Sapling"],
["DED717", "Barberry"],
["dedfee", "Super Nova"],	  
["DEE5C0", "Pale Spring Bud"],
["DEF5FF", "Pattens Blue"],
["DEF0A3", "Mint Julep"],
["DF00FF", "Phlox"],
["df655d", "Blaze Orange"],
["DF6D14", "Citrouille"],
["DF73FF", "Héliotrope"],
["DF7800", "Fulvous"],
["DF7830", "Orange Toffee"],
["dfac9e", "Terra Cotta Blush"],
["DFAF2C", "Ocre"],
["dfb8a7", "Shy Time"],
["DFBFD3", "Ooh La La"],
["DFBE6F", "Apache"],
["dfc4d8", "Pink Ivory"],
["dfccce", "Lilac Buds"],
["dfccd6", "Lilac Lace"],	  
["DFCD6F", "Chenin"],
["dfcfd3", "Pretty Orchid"],
["DFCFDB", "Lola"],
["dfd5de", "Eternal Moonrise"],	
["dfdeec", "Dulcinea"],	  
["DFE5B9", "Frosty Margarita"],
["DFE7E0", "Alpin peak"],
["DFECDA", "Willow Brook"],
["DFF2E1", "Mint Hint"],
["DFF2FF", "Dragée Bleue"],
["DFFF00", "Chartreuse Yellow"],
["E0115F", "Rubis"],
["e06e78", "Passion Pink"],
["E08D3C", "Tiger's Eye"],
["e09bc9", "Flower Power"],	  
["E0B0FF", "Mauve anglais"],
["E0B646", "Anzac"],
["E0B7C2", "Melanie"],	  
["E0B974", "Harvest Gold"],
["E0C095", "Calico"],
["e0c4e0", "Lavender Quartz"],
["e0c6d8", "Ooh La La"],	  
["E0CDA9", "Sable"],
["e0d6e6", "Watercolor Grape"],
["e0d7db", "Blush of Morn"],	  
["E0EBD3", "Whiff of Green"],
["E0FFFF", "Baby Blue"],
["E16865", "Sunglo"],
["e17669", " Peach Posey"],
["e18684", "Powder Peach"],
["E1AD21", "Urobilin"],
["e1af92", "Black-Eyed Peach"],
["E1BC64", "Equator"],
["E1C0C8", "Pink Flare"],
["E1C19E", "Spiced Latte"],
["E1CE9A", "Vanille"],
["E1E6D6", "Periglacial Blue"],
["E1EAD4", "Kidnapper"],
["E1F6E8", "Tara"],
["E21313", "Gueules"],
["E25465", "Mandy"],
["E25822", "Flame"],
["E26F53", "Terra Cotta"],
["E2725B", "Terracotta"],
["E28913", "Golden Bell"],
["E292C0", "Shocking"],
["E29418", "Dixie"],
["E29CD2", "Light Orchid"],
["e2a5d1", "Pink Plunge"],	  
["E2A9A1", "Coral Cloud"],
["E2BC74", "Blond"],
["e2c7d0", "Fragrant Orchid"],
["e2cbc7", "Satin Teddy"],
["e2d4d9", "Blush of Hyacinth"],	  
["E2D8ED", "Snuff"],
["e2dde1", "Gentle Violet"],	  
["E2E48F", "Lime Mousse"],
["E2EBED", "Alice Blue"],
["E2F3E9", "Blanket"],
["E2F3EC", "Apple Green"],
["E30B5C", "Razzmatazz"],
["E32636", "Alizarin Crimson"],
["E34234", "Cinnabar"],
["E3B285", "Rose de Naple"],
["e3b8b9", "Pink Pampas"],
["E3BEBE", "Cavern Pink"],
["e3c9c9", "Pocketful of Promise"],
["E3D5B5", "Dutch White"],
["E3D733", "Acacia Flower"],
["E3E2C1", "Ethereal One"],
["E3F5E1", "Peppermint"],
["E3F988", "Mindaro"],
["E4007C", "Mexican Pink"],
["E460E8", "Orchidée"],
["E47698", "Deep Blush"],
["E49B0F", "Gamboge"],
["e4b2b5", "Champagne Blush"],
["E4C2D5", "Melanie"],
["E4CFDE", "Twilight"],
["E4D1C0", "Almond"],
["E4D422", "Sunflower"],
["e4d4df", "Sleepy Kisses"],	  
["E4D5B7", "Grain Brown"],
["E4D69B", "Zombie"],
["E4D96F", "Straw"],	  
["E4DB9E", "Celery Heart"],
["E4DCC7", "Unforgettable"],
["e4dfed", "Heart’s Aflutter"],	  
["E4EFD6", "Mint Mist"],
["E4EFD7", "Green Mist"],
["E4F6E7", "Frostee"],
["E4FFD1", "Snow Flurry"],
["E52B50", "Amaranth"],
["e5745a", "Ripe Pomegranate"],
["E5841B", "Zest"],
["E589BF", "Purplish Pink"],
["e59e85", "Coral Ridge"],
["E5CCC9", "Dust Storm"],
["e5d3e2", "Lilac Lane"],	  
["E5D7BD", "Stark White"],
["E5D8AF", "Hampton"],
["E5E0E1", "Bon Jour"],
["E5E5E5", "Platinium"],
["E5F9F6", "Polar"],
["E62020", "Lust"],
["E64E03", "Trinidad"],
["e67f9b", "Iced Berry"],
["E67E30", "Abricot"],
["e6888f", "Poppy Field"],
["e68bab", "Double Bubble"],	  
["e6ada0", "Pink Cocoa"], 
["E6BE8A", "Gold Sand"],
["E6BEA5", "Cashmere"],
["e6c3c8", "Sweet Baby’s Breath"],
["e6d3e7", "Simply Lavender"],	  
["E6D7B9", "Double Spanish White"],
["e6dcea", "Purple Mist"],	  
["E6E200", "Peridot"],
["E6E3C7", "Green Highland"],
["E6E4D4", "Satin Linen"],
["E6E697", "Flave"],
["E6EECB", "Apple Slice"],
["E6F2EA", "Harp"],
["E6F8F3", "Off Green"],
["E6FFE9", "Hint of Green"],
["E6FFFF", "Tranquil"],
["E73E01", "Corail"],
["E77200", "Mango Tango"],
["E7730A", "Christine"],
["e7968b", "Salmon Rose"],
["E79F8C", "Tonys Pink"],
["E79FC4", "Kobi"],
["E7A854", "Blond vénitien"],
["e7a993", "Sweet Marmalade"],
["e7b8c1", "Sweet Pie"],
["E7BCB4", "Rose Fog"],
["E7BF05", "Corn"],
["E7CD8C", "Putty"],
["e7d1df", "Wisteria Whisper"],
["e7d6e5", "Orchid Shimmer"],
["e7dcdb", "Pressed Blossoms"],
["e7e0e9", "Spun Moonbeam"],	  
["E7ECE6", "Gray Nurse"],
["E7F00D", "Jaune canari"],
["E7F8FF", "Lily White"],
["E7FEFF", "Bubbles"],
["E88E5A", "Big Foot Feet"],
["E89928", "Fire Bush"],
["e89eb2", "Second Blush"],
["e8a0a8", "Timeless Rose"],
["E8B9B3", "Shilo"],
["e8d3d9", "Barely Berry"],	  
["E8D630", "Blé"],
["E8E0D5", "Pearl Bush"],
["E8EBE0", "Green White"],
["E8EDBC", "Grasshopper"],
["E8F1D4", "Chrome White"],
["E8F2EB", "Gin"],
["E8F5F2", "Aqua Squeeze"],
["E936A7", "Frostbite"],
["E9383F", "Grenadine"],
["E96E00", "Clementine"],
["E97451", "Burnt Sienna"],
["E97C07", "Tahiti Gold"],
["e99296", "Flight of Fancy"],
["E9C9B1", "Ventre de Biche"],
["E9CECD", "Oyster Pink"],
["E9D2E5", "Queen Pink"],
["E9D66B", "Arylide Yellow"],
["E9D75A", "Confetti"],
["e9d8d6", "Quartz Pink"],
["e9ddea", "Sea Urchin"],
["E9E3E3", "Ebb"],
["E9EBB5", "Gleeful"],
["E9EFD9", "Desert Seedling"],
["E9F8ED", "Ottoman"],
["E9FFDB", "Nyanza"],
["E9FFFD", "Clear Day"],
["EA1A55", "Amarante"],
["EA3C53", "Desire"],
["ea7d96", "So Charming"],
["ea8280", "Sweet Melon"],
["EA88A8", "Carissma"],
["EA9A90", "Yellowish Pink"],
["eaacae", "Blushing"],
["EAAE69", "Porsche"],
["EAB33B", "Tulip Tree"],
["eab6b4", "Faithful Rose"],
["eac0dc", "Pink Gems"],	  
["EAC674", "Rob Roy"],
["EADAB8", "Raffia"],
["EADFF6", "Soupçon Rose"],
["EAE8D4", "White Rock"],
["EAF6EE", "Panache"],
["EAF6FF", "Solitude"],
["EAF9F5", "Aqua Spring"],
["EAFFFE", "Dew"],
["EB7160", "Agave"],
["EB9373", "Apricot"],
["eba7c4 ", "Pink Frenzy"],
["ebbadc", "Magic Wand"],	  
["ebbcb3", "Spring Linen"],
["ebc0c2", "Tulip Petal"],
["ebcadd", "Dreamy Memory"],
["ebcfe0", "Dog Rose"],	  
["EBEBC3", "Lime Ice"],
["EBEFD0", "Whipped Mint"],
["EBFEDC", "Botanical Bath"],
["EBC2AF", "Zinnwaldite"],
["ec9bb8", "Positively Pink"],	  
["eca69b", "Brushed Rose"],
["ECA927", "Fuel Yellow"],
["ECC54E", "Ronchi"],
["ECC7EE", "Pink Lavender"],
["ECCDB9", "Just Right"],
["ECD855", "Poussin"],
["ecdfd9", "Sweet Pastel"],	  
["ECE090", "Wild Rice"],
["ECEBBD", "Fall Green"],
["ECEBCE", "Aths Special"],
["ECF245", "Starship"],
["ED0000", "Écarlate"],
["ED0A3F", "Red Ribbon"],
["ED4C44", "Yosemite Campfire"],
["ED7A1C", "Tango"],
["ED7F10", "Orange"],
["ED9121", "Carrot Orange"],
["ED989E", "Sea Pink"],
["eda09f", "Antique Coral"],
["EDB381", "Tacao"],
["EDC9AF", "Desert Sand"],
["EDCDAB", "Pancho"],
["edcee2", " Pink Pony"],	  
["EDD38C", "Papier Bulle"],
["EDDCB1", "Chamois"],
["EDEA99", "Primrose"],
["EDEDED", "Étain Pur"],
["EDEFD8", "Grassy Field"],
["EDF0CE", "Sheer Green"],
["EDF1D3", "Ambrosia Mist"],
["EDF5DD", "Frost"],
["EDF5F5", "Aqua Haze"],
["EDF6FF", "Zumthor"],
["EDF9F1", "Narvik"],
["EDFC84", "Honeysuckle"],
["EDFF0C", "Jaune de Chrome"],
["EE1010", "Garance"],
["EE30D2", "Hot Magenta"],
["EE82EE", "Lavender Magenta"],
["eebbbd", "Camille Pink"],
["eebcca", "Prom Pink"],	  
["EEC1BE", "Beauty Bush"],
["EEC843", "Maize"],
["EED153", "Jaune de Mars"],
["EED794", "Chalky"],
["EED9C4", "Almond Cream"],
["eedae2", "Opal Blush"],
["EEDC82", "Flax"],
["EEDEDA", "Bizarre"],
["EEE3AD", "Double Colonial White"],
["EEE5D3", "Antique White"],
["EEEACF", "Feathered Fern"],
["EEEBB5", "Chia"],
["EEED09", "Xanthic"],
["EEEDDD", "Eggshell"],
["EEEEE8", "Cararra"],
["EEEF78", "Manz"],
["EEEFC0", "Limescent"],
["EEF0C8", "Tahuna Sands"],
["EEF0F3", "Athens Gray"],
["EEF3C3", "Tusk"],
["EEF4DE", "Loafer"],
["EEF6F7", "Catskill White"],
["EEFDFF", "Twilight Blue"],
["EEFF9A", "Jonquil"],
["EEFFE2", "Rice Flower"],
["EF863F", "Jaffa"],
["EFB28B", "Peach Squared"],
["EFCC3F", "Summer in the City"],
["EFD242", "Auréolin"],
["EFD807", "Jaune d'or"],
["efd8e5", "Lucky You"],	  
["EFDABB", "Soft Candlelight"],
["efdee1", "Berry Taffy"],
["EFE8B7", "Endive"],
["EFECC0", "Lime Kiss"],
["EFEFEF", "Gallery"],
["EFF2F3", "Porcelain"],
["F08A64", "Orange Slice"],
["F091A9", "Mauvelous"],
["F0AD46", "Sunray"],
["F0C300", "Ambre"],
["f0d1d9", "Pink Diamond"],
["F0D52D", "Golden Dream"],
["f0d5cf", "Gentle Kiss"],
["f0d8df", "Pink Taffy"],
["F0DAE1", "Piggy Pink"],
["F0DB7D", "Golden Sand"],
["F0DC82", "Buff"],
["f0dce4", "Pink Lemonade"],
["F0E2EC", "Prim"],
["F0E36B", "Beurre"],
["F0E68C", "Khaki"],
["F0E6BB", "Heart of Palm"],
["F0EBAC", "New Willow"],
["F0EEFD", "Selago"],
["F0EEFF", "Titan White"],
["F0F0F0", "Cultured Pearl"],
["F0F8FF", "White Alice"],
["F0FCEA", "Feta"],
["F18200", "Gold Drop"],
["F19B93", "Tempt Me"],
["F19BAB", "Wewak"],
["f19db7", "Harmonious Rose"],
["f1b2c8", "Hushed Rose"],	  
["f1d2d2", "Delicate Pink Rose"],
["F1E788", "Sahara Sand"],
["F1E9D2", "Parchment"],
["F1E9FF", "Blue Chalk"],
["F1EEC1", "Mint Julep"],
["F1F1F1", "Seashell"],
["F1F7F2", "Saltpan"],
["F1FFAD", "Tidal"],
["F1FFC8", "Chiffon"],
["F2552A", "Flamingo"],
["F28500", "Tangerine"],
["f29fab", "Sweet Sixteen"],
["f2b4b1", "Faint of Heart"],
["F2C3B2", "Mandys Pink"],
["f2c7da", "Pink Quartz"],	  
["f2cfcd", "Tulip Pink"],
["f2d2e7", "Pink Odyssey"],	  
["f2d8de", "Cake Pop"],
["F2E1BC", "Homey Cream"],
["F2EBCB", "Desert Flower"],
["F2F2F2", "Concrete"],
["F2F3F4", "Anti-Flash White"],
["F2FAFA", "Black Squeeze"],
["F2FFFF", "Opalin"],
["F34723", "Pomegranate"],
["f398af", "Flower Girl"],
["f39998", "Peach Burst"],
["F3AD16", "Buttercup"],
["f3cfd9", "Fairy Floss"],	  
["f3d2d8", "Oh So Pink"],
["F3D617", "Safran"],
["F3D69D", "New Orleans"],
["F3D9DF", "Vanilla Ice"],
["f3dfed", "Cascadia"],	  
["F3E7BB", "Sidecar"],
["F3E9E5", "Dawn Pink"],
["F3EDCF", "Wheatfield"],
["F3EEE6", "Alabaster"],
["F3FB62", "Canary"],
["F3FBD4", "Orinoco"],
["F3FFD8", "Carla"],
["F400A1", "Hollywood Cerise"],
["F4661B", "Carotte"],
["F49381", "Au Contraire"],
["F4A460", "Sandy brown"],
["f4bfd0", "Pink Icing"],	  
["F4C2C2", "Baby Pink"],
["F4C430", "Saffron"],
["f4c7bd", "Canyon Hush"],
["F4CA16", "Jonquille"],
["F4D81C", "Ripe Lemon"],
["f4dee0", "Piglet"],
["F4EBD3", "Janna"],
["F4F2EE", "Pampas"],
["F4F4F4", "Wild Sand"],
["F4F8FF", "Zircon"],
["F4FEFE", "Blanc lunaire"],
["F51523", "Red Pigment"],
["F57584", "Froly"],
["F5C85C", "Cream Can"],
["F5C999", "Manhattan"],
["f5d1dc", "Hello Dolly"],	  
["F5D5A0", "Deep Champagne"],
["f5d6cc", "Fleecy Dreams"],
["F5DD55", "Jaune Minion"],
["F5DDBF", "Morning Blossom"],
["f5dde2", "Water Lily Bloom"],
["F5DEB3", "Wheat"],
["f5e2ec", "Pink Mist"],	  
["F5E7A2", "Sandwisp"],
["F5E7E2", "Pot Pourri"],
["F5E9D3", "Albescent White"],
["F5EDEF", "Soft Peach"],
["F5F3E5", "Ecru White"],
["F5F5DC", "Beige"],
["F5FB3D", "Golden Fizz"],
["F5FF55", "Citron Laser"],
["F5FFBE", "Australian Mint"],
["F64A8A", "French Rose"],
["F653A6", "Brilliant Rose"],
["f69278", "Tropical Paradise"],
["F6A4C9", "Illusion"],
["F6ADC6", "Nadeshiko Pink"],
["f6afb9", "Sweet Caroline"],
["f6b2c4", "Pink Flutter"],
["f6c4bc", "Salmon Bisque"],
["f6cadc", "Pink Destiny"],	  
["f6dbe5", "Quebec Calm"],
["f6d3d2", "Rose Buff"],
["F6EAB3", "Daisy Spell"],
["F6F0E6", "Merino"],
["F6EABE", "Meringue Citron"],
["F6F0E6", "Merino"],
["F6F7F7", "Black Haze"],
["F6FEFE", "Blanc de Zinc"],
["F6FFDC", "Spring Sun"],
["F7230C", "Rouge de Mars"],
["F7468A", "Violet Red"],
["F77703", "Chilean Fire"],
["F77FBE", "Persian Pink"],
["f7b1ae", "Peach Punch"],
["F7B668", "Rajah"],
["f7b7aa", "Crushed Grapefruit"],
["F7C8DA", "Azalea"],
["F7DBE6", "We Peep"],
["f7e1d8", "Shell Pink"],
["F7E269", "Nankin"],
["F7F2E1", "Quarter Spanish White"],
["F7F5FA", "Whisper"],
["F7FAF7", "Snow Drift"],
["F7FF3C", "Jaune citron"],
["F88158", "Basket Ball"],
["F88E55", "Saumon"],
["f8a49a", "Pouty Pink"],
["F8B09C", "Simply Coral"],
["F8B853", "Casablanca"],
["F8C3DF", "Chantilly"],
["f8c5ba", "Warm Heart"],
["f8d4c6", "Pink Soap"],
["F8D9E9", "Cherub"],
["F8DB9D", "Marzipan"],
["f8dbe5", "Utterly Pink"],	  
["F8DD5C", "Energy Yellow"],
["F8DE8D", "Popcorn"],
["f8e0de", "Pink Breeze"],
["F8E4BF", "Givry"],
["F8E8CD", "Champagne"],
["F8F0E8", "White Linen"],
["F8F4FF", "Magnolia"],
["F8F6F1", "Spring Wood"],
["F8F7DC", "Coconut Cream"],
["F8F7FC", "White Lilac"],
["F8F8F7", "Desert Storm"],
["F8F8FF", "Ghost"],
["F8F99C", "Texas"],
["F8FACD", "Corn Field"],
["F8FDD3", "Mimosa Givré"],
["F9429E", "Rose Bonbon"],
["F95A61", "Carnation"],
["F9BF58", "Saffron Mango"],
["f9c5c2", "Peach Whisper"],
["f9ccca", "Tea Rose"],
["f9cdd9", "Sweet Pink "],
["f9cddb", "Rosy Cheeks"],	  
["f9e0e8", "Pink Ribbon"],
["F9E0ED", "Carousel Pink"],
["f9e3de", "Pink Wink"],
["f9e3e9", "Pixie Dust"],
["F9E4BC", "Dairy Cream"],
["F9E663", "Portica"],
["F9EAF3", "Amour"],
["F9EBAF", "Sherman’s Key Lime"],
["F9F8E4", "Rum Swizzle"],
["F9FF8B", "Dolly"],
["F9FFF6", "Sugar Cane"],
["FA7814", "Ecstasy"],
["FA9D5A", "Tan Hide"],
["facdcb", "Warm Pink"],
["facecd", "Peel’n’Eat Shrimp"],
["FAD3A2", "Corvette"],
["fad6d4", "Pink Bangles"],
["FADA5E", "Stil De Grain"],
["fadad7", "Baby Blush"],
["fadcdb", "Wide-Eyed"],
["fadde5", "Art Deco Pink"],
["faded7", "Bunny Ears"],
["FADFAD", "Peach Yellow"],
["FAE600", "Turbo"],
["FAE7B5", "Banana Mania"],
["FAEA73", "Topaze"],
["FAEAB9", "Astra"],
["FAEBD7", "Mocassin"],
["FAECCC", "Papaya Whip"],
["FAF0E6", "Lin"],
["FAF100", "Jaune Cadmium"],
["FAF3F0", "Fantasy"],
["FAF7D6", "Citrine White"],
["FAFAFA", "Cultured"],
["FAFDE4", "Hint of Yellow"],
["FAFFA4", "Milan"],
["FB4F14", "Orioles"],
["FB607F", "Brink Pink"],
["FB8989", "Geraldine"],
["FBA0E3", "Lavender Rose"],
["FBA129", "Sea Buckthorn"],
["FBAC13", "Sun"],
["FBAED2", "Lavender Pink"],
["FBB2A3", "Rose Bud"],
["FBBEDA", "Cupid"],
["FBCCE7", "Classic Rose"],
["FBCEB1", "Apricot Peach"],
["fbcec8", "Candy Kisses"],
["FBD07A", "Valspar Paint Tulip Pink"],
["FBE7B2", "Banana Mania"],
["FBE870", "Marigold Yellow"],
["FBE96C", "Festival"],
["FBEA8C", "Sweet Corn"],
["FBEC5D", "Candy Corn"],
["FBF2B7", "Wenge"],
["FBF9F9", "Hint of Red"],
["FBFCFA", "Lait"],
["FBFFBA", "Shalimar"],
["FC0FC0", "Shocking Pink"],
["FC5D5D", "Nacarat"],
["FC80A5", "Tickle Me Pink"],
["FC8EAC", "Flamand Rose"],
["FC9C1D", "Tree Poppy"],
["FCC01E", "Lightning Yellow"],
["fcccc3", "Ruffled Parasol"],
["FCD21C", "Orpiment"],
["fcd2c4", "Petal Soft"],
["FCD667", "Goldenrod"],
["FCD917", "Candlelight"],
["FCDA98", "Cherokee"],
["FCDC12", "Bouton d'or"],
["FCF4D0", "Double Pearl Lusta"],
["FCF4DC", "Pearl Lusta"],
["FCF75E", "Icterine"],
["FCF8F7", "Vista White"],
["FCFBF3", "Bianca"],
["FCFEDA", "Moon Glow"],
["FCFFE7", "China Ivory"],
["FCFFF9", "Ceramic"],
["FD0E35", "Torch Red"],
["FD3F92", "Fuchsia"],
["FD5240", "Ogre Odor"],
["FD5800", "Willpower"],
["FD5B78", "Wild Watermelon"],
["FD6C9E", "Rose Bouton"],
["FD7B33", "Crusta"],
["FD7C07", "Sorbus"],
["FD9FA2", "Sweet Pink"],
["FDBF87", "Pêche"],
["fdc3b3", "Mermaid Cheeks"],
["FDD5B1", "Feldspar"],
["FDD7E4", "Pig Pink"],
["FDDA8A", "Jasmin"],
["FDE1DC", "Cinderella"],
["FDE295", "Golden Glow"],
["FDE910", "Lemon"],
["FDE9E0", "Coquille d'œuf"],
["FDEA26", "Middle Jaune"],
["FDEE00", "Jaune de cobalt"],
["FDF1B8", "Crème"],
["FDF5E6", "Old Lace"],
["FDF6D3", "Half Colonial White"],
["FDF7AD", "Drover"],
["FDFEB8", "Pale Prim"],
["FDFFD5", "Cumulus"],
["FE28A2", "Persian Rose"],
["FE4C40", "Sunset Orange"],
["FE6F5E", "Bittersweet"],
["FE96A0", "Incarnadin"],
["FE9D04", "California"],
["FEA347", "Mandarine"],
["FEA777", "Isabelle"],
["FEA904", "Yellow Sea"],
["FEB24F", "Sping Squash"],
["FEBAAD", "Melon"],
["FEBFD2", "Rose Dragée"],
["FEC3AC", "Carnation"],
["FED33C", "Bright Sun"],
["FED85D", "Dandelion"],
["FEDB8D", "Salomie"],
["FEE2E1", "Misty Rose"],
["FEE347", "Paille"],
["FEE5AC", "Cape Honey"],
["FEE7F0", "Cuisse de nymphe"],
["FEEBF3", "Remy"],
["FEEFCE", "Oasis"],
["FEF0EC", "Bridesmaid"],
["FEF2C7", "Beeswax"],
["FEF3D8", "Bleach White"],
["FEF4CC", "Pipi"],
["FEF4DB", "Half Spanish White"],
["FEF4F8", "Wisp Pink"],
["FEF5F1", "Provincial Pink"],
["FEF7DE", "Half Dutch White"],
["FEF86C", "Mimosa"],
["FEF8E2", "Solitaire"],
["FEF8FF", "White Pointer"],
["FEF9E3", "Off Yellow"],
["FEFCED", "Orange White"],
["FEFDF0", "Blanc d'Espagne"],
["FEFEE0", "Écru"],
["FEFEE2", "Blanc cassé"],
["FEFEFE", "Albâtre"],
["FF0000", "Rouge"],
["FF004F", "Folly"],
["FF007F", "Rose"],
["FF00CC", "Purple Pizzazz"],
["FF00FF", "Magenta"],
["FF033E", "Rose Américaine"],
["FF0921", "Vermeil"],
["FF2052", "Awesome"],
["FF2400", "Scarlet"],
["FF2800", "Ferrari"],
["FF3399", "Wild Strawberry"],
["FF33CC", "Razzle Dazzle Rose"],
["FF355E", "Radical Red"],
["FF355E", "Sizzling Red"],
["FF3F34", "Red Orange"],
["FF4040", "Coral Red"],
["FF404C", "Sunburnt Cyclops"],
["FF4466", "Magic Potion"],
["FF4681", "Sasquatch Socks"],
["FF4901", "Feu Vif"],
["FF4D00", "Vermilion"],
["FF4F00", "International Orange"],
["FF5E4D", "Capucine"],
["FF6037", "Outrageous Orange"],
["FF6600", "Blaze Orange"],
["FF6666", "Aigre-doux"],
["FF66FF", "Pink Flamingo"],
["FF6969", "Bittersweet"],
["FF69B4", "Cuisse de nymphe émue"],
["FF6B53", "Persimmon"],
["FF6D3A", "Smashed Pumpkin"],
["FF6F61", "Living Coral"],	  
["FF6FFF", "Blush Pink"],
["FF6F7D", "Incarnat"],
["FF7034", "Burning Orange"],
["FF7518", "Pumpkin"],
["FF7D07", "Flamenco"],
["FF7F00", "Flush Orange"],
["FF7F50", "Coral"],
["FF866A", "Rose Thé"],
["FF878D", "Tulipe"],
["FF8C55", "Oiseau du Paradis"],
["FF8C69", "Salmon"],
["FF9000", "Pizazz"],
["FF910F", "West Side"],
["FF91A4", "Pink Salmon"],
["FF91AF", "Baker Miller"],
["FF9933", "Neon Carrot"],
["FF9966", "Atomic Tangerine"],
["FF9980", "Vivid Tangerine"],
["FF99CC", "Pale Magenta Pink"],
["FF9E2C", "Sunshade"],
["FFA000", "Orange Peel"],
["FFA194", "Mona Lisa"],
["FFA500", "Web Orange"],
["FFA6C9", "Carnation Pink"],
["FFAB81", "Hit Pink"],
["FFAE42", "Yellow Orange"],
["FFB0AC", "Cornflower Lilac"],
["FFB1B3", "Sundown"],
["FFB31F", "My Sin"],
["FFB555", "Texas Rose"],
["FFB6C1", "Xylophone"],
["FFB7D5", "Cotton Candy"],
["FFB97B", "Macaroni and Cheese"],
["FFBA00", "Selective Yellow"],
["FFBD5F", "Koromiko"],
["FFBF00", "Amber"],
["FFC0A8", "Wax Flower"],
["FFC0CB", "Pink"],
["FFC1CC", "Bubble Gum"],
["FFC3C0", "Your Pink"],
["FFC87C", "Topaz"],
["FFC901", "Supernova"],
["FFC961", "Doré"],
["FFCB60", "Aurore"],
["FFCBA4", "Flesh"],
["FFCC33", "Sunglow"],
["FFCC5C", "Golden Tainoi"],
["FFCC99", "Peach Orange"],
["FFCD8C", "Chardonnay"],
["ffd1af", "Apricot Froth"],
["FFD1DC", "Pastel Pink"],
["FFD2B7", "Romantic"],
["FFD38C", "Grandis"],
["FFD700", "Or"],
["FFD800", "School bus Yellow"],
["FFD8D9", "Cosmos"],
["FFDB00", "Sizzling Sunrise"],
["FFDB58", "Mustard"],
["FFDCD6", "Peach Schnapps"],
["FFDDAF", "Caramel"],
["FFDDCD", "Tuft Bush"],
["FFDDCF", "Watusi"],
["FFDDF4", "Pink Lace"],
["FFDE75", "Maïs"],
["FFDEAD", "Navajo White"],
["FFDEB3", "Frangipani"],
["FFDF46", "Gargoyle Gas"],
["FFE1DF", "Pippin"],
["FFE1F2", "Pale Rose"],
["FFE2C5", "Negroni"],
["FFE436", "Jaune Impérial"],
["FFE4C4", "Bisque"],
["FFE4CD", "Lumber"],
["FFE5A0", "Crème Brulée"],
["FFE5B4", "Peach"],
["FFE6C7", "Tequila"],
["FFE772", "Kournikova"],
["FFEAC8", "Sandy Beach"],
["FFEAD4", "Karry"],
["FFEC13", "Broom"],
["FFEDBC", "Colonial White"],
["FFEED8", "Derby"],
["FFEFA1", "Vis Vis"],
["FFEFC1", "Egg White"],
["FFEFD5", "Papaya Whip"],
["FFEFEC", "Fair Pink"],
["FFF0BC", "Jaune de Naple"],
["FFF0DB", "Peach Cream"],
["FFF0F5", "Lavender blush"],
["FFF0F0", "Orange Blossom"],
["FFF14F", "Gorse"],
["FFF1B5", "Buttermilk"],
["FFF1D8", "Pink Lady"],
["FFF1EE", "Forget Me Not"],
["FFF1F9", "Tutu"],
["FFF39D", "Picasso"],
["FFF3F1", "Chardon"],
["FFF46E", "Paris Daisy"],
["FFF48D", "Beurre frais"],
["FFF4CE", "Barley White"],
["FFF4DD", "Egg Sour"],
["FFF4E0", "Sazerac"],
["FFF4E8", "Serenade"],
["FFF4F3", "Chablis"],
["FFF5EE", "Seashell Peach"],
["FFF5F3", "Sauvignon"],
["FFF6D4", "Milk Punch"],
["FFF6DF", "Varden"],
["FFF6F5", "Rose White"],
["FFF8C6", "Lemon Chiffon"],
["FFF8D1", "Baja White"],
["FFF8DC", "Cornsilk"],
["FFF9E2", "Gin Fizz"],
["FFF9E6", "Early Dawn"],
["FFFACD", "Lemon Chiffon"],
["FFFAF4", "Bridal Heath"],
["FFFBDC", "Scotch Mist"],
["FFFBF9", "Soapstone"],
["FFFBFF", "Neige"],
["FFFC99", "Witch Haze"],
["FFFCEA", "Buttery White"],
["FFFCEE", "Island Spice"],
["FFFDD0", "Cream"],
["FFFDE6", "Chilean Heath"],
["FFFDE8", "Travertine"],
["FFFDF3", "Orchid White"],
["FFFDF4", "Quarter Pearl Lusta"],
["FFFEE1", "Half and Half"],
["FFFEEC", "Apricot White"],
["FFFEF0", "Rice Cake"],
["FFFEF6", "Black White"],
["FFFEFD", "Romance"],
["FFFF00", "Yellow"],
["FFFF66", "Laser Lemon"],
["FFFF6B", "Fleur de Soufre"],
["FFFF99", "Pale Canary"],
["FFFFB4", "Portafino"],
["FFFFD4", "Ivoire"],
["FFFFE0", "Jaune presque blanc"],
["FFFFF0", "Ivory"],
["FFFFFE", "White"],
["FFFFFF", "Blanc"]
]

}

ntc.init();