{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./node_modules/masonry-layout/dist/masonry.pkgd.js","webpack:///./vendor/assets/libs/masonry/masonry.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","_typeof","iterator","obj","constructor","factory","jQuery","arraySlice","Array","slice","console","logError","message","error","jQueryBridget","namespace","PluginClass","$","methodCall","$elems","methodName","args","returnValue","pluginMethodStr","each","elem","instance","data","method","charAt","apply","undefined","plainCall","options","option","_init","opts","isPlainObject","this","extend","fn","arg0","arguments","updateJQuery","bridget","EvEmitter","proto","on","eventName","listener","events","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","off","length","index","splice","emitEvent","onceListeners","allOff","getStyleSize","num","parseFloat","isNaN","measurements","measurementsLength","getStyle","style","getComputedStyle","isBoxSizeOuter","isSetup","getSize","div","document","createElement","width","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","Math","round","removeChild","setup","querySelector","nodeType","display","size","height","innerWidth","innerHeight","outerWidth","outerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesMethod","ElemProto","Element","matches","matchesSelector","prefixes","selector","utils","a","b","prop","makeArray","isArray","removeFrom","ary","getParent","parentNode","getQueryElement","handleEvent","event","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","threshold","timeoutName","timeout","clearTimeout","_this","setTimeout","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","attr","getAttribute","JSON","parse","className","docElemStyle","transitionProperty","transition","transformProperty","transform","transitionEndEvent","WebkitTransition","vendorProperties","transitionDuration","transitionDelay","Item","element","layout","position","x","y","_create","_transn","ingProperties","clean","onEnd","css","elemStyle","getPosition","isOriginLeft","_getOption","isOriginTop","xValue","yValue","layoutSize","layoutPosition","xPadding","xProperty","xResetProperty","getXValue","yPadding","yProperty","yResetProperty","getYValue","isHorizontal","percentPosition","_transitionTo","curX","curY","didNotMove","setPosition","isTransitioning","transX","transY","transitionStyle","getTranslate","to","onTransitionEnd","isCleaning","goTo","moveTo","_nonTransition","_removeStyles","_transition","from","enableTransition","transitionProps","duration","staggerDelay","onwebkitTransitionEnd","ontransitionend","onotransitionend","dashedVendorProperties","target","propertyName","isEmptyObj","disableTransition","removeTransitionStyles","removeEventListener","cleanStyle","cleanTransitionStyle","stagger","delay","removeElem","remove","hide","reveal","isHidden","getHideRevealTransitionEndProperty","onRevealTransitionEnd","hiddenStyle","visibleStyle","styleProperty","optionStyle","opacity","onHideTransitionEnd","destroy","left","right","top","bottom","noop","GUID","instances","Outlayer","queryElement","$element","defaults","id","outlayerGUID","containerStyle","initLayout","originLeft","originTop","resize","resizeContainer","subclass","Parent","SubClass","oldOption","compatOptions","horizontal","layoutInstant","reloadItems","stamps","stamp","bindResize","items","_itemize","children","itemElems","_filterFindItemElements","item","itemSelector","getItemElements","map","_resetLayout","_manageStamps","isInstant","_isLayoutInited","layoutItems","_getMeasurement","_getItemsForLayout","_layoutItems","_postLayout","filter","isIgnored","_emitCompleteOnItems","queue","_getItemLayoutPosition","isLayoutInstant","_processLayoutQueue","updateStagger","_positionItem","time","unit","msUnits","getMilliseconds","_getContainerSize","_setContainerMeasure","measure","isWidth","elemSize","max","onComplete","dispatchEvent","count","doneCount","tick","emitArgs","$event","Event","trigger","ignore","getItem","unignore","_find","unstamp","_getBoundingRect","_manageStamp","boundingRect","getBoundingClientRect","_boundingRect","_getElementOffset","thisRect","isResizeBound","unbindResize","onresize","needsResizeLayout","addItems","appended","prepended","previousItems","revealItemElements","getItems","hideItemElements","removeItems","removeData","Layout","ms","Masonry","fitWidth","measureColumns","colYs","cols","maxY","horizontalColIndex","getContainerWidth","columnWidth","firstItem","firstItemElem","containerWidth","gutter","excess","container","remainder","colSpan","min","colPosition","horizontalOrder","col","setHeight","setMax","_getTopColPosition","colGroup","_getTopColGroup","minimumY","groupCount","_getColGroupY","groupColYs","_getHorizontalColPosition","hasSize","stampSize","offset","firstX","lastX","firstCol","floor","lastCol","stampMaxY","_getContainerFitWidth","unusedCols","previousWidth"],"mappings":"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","file":"js/vendor/libs/masonry/masonry-1ba2d80e3dd9f25b23c6.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://optimal.seneris.com/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 871);\n","(function() { module.exports = window[\"jQuery\"]; }());","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Masonry PACKAGED v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n(function (window, factory) {\n // universal module definition\n\n /*jshint strict: false */\n\n /* globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('jquery-bridget/jquery-bridget', ['jquery'], function (jQuery) {\n return factory(window, jQuery);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('jquery'));\n } else {\n // browser global\n window.jQueryBridget = factory(window, window.jQuery);\n }\n})(window, function factory(window, jQuery) {\n 'use strict'; // ----- utils ----- //\n\n var arraySlice = Array.prototype.slice; // helper function for logging errors\n // $.error breaks jQuery chaining\n\n var console = window.console;\n var logError = typeof console == 'undefined' ? function () {} : function (message) {\n console.error(message);\n }; // ----- jQueryBridget ----- //\n\n function jQueryBridget(namespace, PluginClass, $) {\n $ = $ || jQuery || window.jQuery;\n\n if (!$) {\n return;\n } // add option method -> $().plugin('option', {...})\n\n\n if (!PluginClass.prototype.option) {\n // option setter\n PluginClass.prototype.option = function (opts) {\n // bail out if not an object\n if (!$.isPlainObject(opts)) {\n return;\n }\n\n this.options = $.extend(true, this.options, opts);\n };\n } // make jQuery plugin\n\n\n $.fn[namespace] = function (arg0\n /*, arg1 */\n ) {\n if (typeof arg0 == 'string') {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call(arguments, 1);\n return methodCall(this, arg0, args);\n } // just $().plugin({ options })\n\n\n plainCall(this, arg0);\n return this;\n }; // $().plugin('methodName')\n\n\n function methodCall($elems, methodName, args) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n $elems.each(function (i, elem) {\n // get instance\n var instance = $.data(elem, namespace);\n\n if (!instance) {\n logError(namespace + ' not initialized. Cannot call methods, i.e. ' + pluginMethodStr);\n return;\n }\n\n var method = instance[methodName];\n\n if (!method || methodName.charAt(0) == '_') {\n logError(pluginMethodStr + ' is not a valid method');\n return;\n } // apply method, get return value\n\n\n var value = method.apply(instance, args); // set return value if value is returned, use only first value\n\n returnValue = returnValue === undefined ? value : returnValue;\n });\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall($elems, options) {\n $elems.each(function (i, elem) {\n var instance = $.data(elem, namespace);\n\n if (instance) {\n // set options & init\n instance.option(options);\n\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass(elem, options);\n $.data(elem, namespace, instance);\n }\n });\n }\n\n updateJQuery($);\n } // ----- updateJQuery ----- //\n // set $.bridget for v1 backwards compatibility\n\n\n function updateJQuery($) {\n if (!$ || $ && $.bridget) {\n return;\n }\n\n $.bridget = jQueryBridget;\n }\n\n updateJQuery(jQuery || window.jQuery); // ----- ----- //\n\n return jQueryBridget;\n});\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n\n(function (global, factory) {\n // universal module definition\n\n /* jshint strict: false */\n\n /* globals define, module, window */\n if (typeof define == 'function' && define.amd) {\n // AMD - RequireJS\n define('ev-emitter/ev-emitter', factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n})(typeof window != 'undefined' ? window : this, function () {\n function EvEmitter() {}\n\n var proto = EvEmitter.prototype;\n\n proto.on = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n } // set events hash\n\n\n var events = this._events = this._events || {}; // set listeners array\n\n var listeners = events[eventName] = events[eventName] || []; // only add once\n\n if (listeners.indexOf(listener) == -1) {\n listeners.push(listener);\n }\n\n return this;\n };\n\n proto.once = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n } // add event\n\n\n this.on(eventName, listener); // set once flag\n // set onceEvents hash\n\n var onceEvents = this._onceEvents = this._onceEvents || {}; // set onceListeners object\n\n var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {}; // set flag\n\n onceListeners[listener] = true;\n return this;\n };\n\n proto.off = function (eventName, listener) {\n var listeners = this._events && this._events[eventName];\n\n if (!listeners || !listeners.length) {\n return;\n }\n\n var index = listeners.indexOf(listener);\n\n if (index != -1) {\n listeners.splice(index, 1);\n }\n\n return this;\n };\n\n proto.emitEvent = function (eventName, args) {\n var listeners = this._events && this._events[eventName];\n\n if (!listeners || !listeners.length) {\n return;\n } // copy over to avoid interference if .off() in listener\n\n\n listeners = listeners.slice(0);\n args = args || []; // once stuff\n\n var onceListeners = this._onceEvents && this._onceEvents[eventName];\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n var isOnce = onceListeners && onceListeners[listener];\n\n if (isOnce) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off(eventName, listener); // unset once flag\n\n delete onceListeners[listener];\n } // trigger listener\n\n\n listener.apply(this, args);\n }\n\n return this;\n };\n\n proto.allOff = function () {\n delete this._events;\n delete this._onceEvents;\n };\n\n return EvEmitter;\n});\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n/* globals console: false */\n\n\n(function (window, factory) {\n /* jshint strict: false */\n\n /* globals define, module */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('get-size/get-size', factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n})(window, function factory() {\n 'use strict'; // -------------------------- helpers -------------------------- //\n // get a number from a string, not a percentage\n\n function getStyleSize(value) {\n var num = parseFloat(value); // not a percent like '100%', and a number\n\n var isValid = value.indexOf('%') == -1 && !isNaN(num);\n return isValid && num;\n }\n\n function noop() {}\n\n var logError = typeof console == 'undefined' ? noop : function (message) {\n console.error(message);\n }; // -------------------------- measurements -------------------------- //\n\n var measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth'];\n var measurementsLength = measurements.length;\n\n function getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n size[measurement] = 0;\n }\n\n return size;\n } // -------------------------- getStyle -------------------------- //\n\n /**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\n\n function getStyle(elem) {\n var style = getComputedStyle(elem);\n\n if (!style) {\n logError('Style returned ' + style + '. Are you running this code in a hidden iframe on Firefox? ' + 'See https://bit.ly/getsizebug1');\n }\n\n return style;\n } // -------------------------- setup -------------------------- //\n\n\n var isSetup = false;\n var isBoxSizeOuter;\n /**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\n\n function setup() {\n // setup once\n if (isSetup) {\n return;\n }\n\n isSetup = true; // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n var body = document.body || document.documentElement;\n body.appendChild(div);\n var style = getStyle(div); // round value for browser zoom. desandro/masonry#928\n\n isBoxSizeOuter = Math.round(getStyleSize(style.width)) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n body.removeChild(div);\n } // -------------------------- getSize -------------------------- //\n\n\n function getSize(elem) {\n setup(); // use querySeletor if elem is string\n\n if (typeof elem == 'string') {\n elem = document.querySelector(elem);\n } // do not proceed on non-objects\n\n\n if (!elem || _typeof(elem) != 'object' || !elem.nodeType) {\n return;\n }\n\n var style = getStyle(elem); // if hidden, everything is 0\n\n if (style.display == 'none') {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; // get all measurements\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n var value = style[measurement];\n var num = parseFloat(value); // any 'auto', 'medium' value will be 0\n\n size[measurement] = !isNaN(num) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; // overwrite width and height if we can get it from style\n\n var styleWidth = getStyleSize(style.width);\n\n if (styleWidth !== false) {\n size.width = styleWidth + ( // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n\n var styleHeight = getStyleSize(style.height);\n\n if (styleHeight !== false) {\n size.height = styleHeight + ( // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);\n }\n\n size.innerWidth = size.width - (paddingWidth + borderWidth);\n size.innerHeight = size.height - (paddingHeight + borderHeight);\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n return size;\n }\n\n return getSize;\n});\n/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n\n(function (window, factory) {\n /*global define: false, module: false */\n 'use strict'; // universal module definition\n\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('desandro-matches-selector/matches-selector', factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n})(window, function factory() {\n 'use strict';\n\n var matchesMethod = function () {\n var ElemProto = window.Element.prototype; // check for the standard method name first\n\n if (ElemProto.matches) {\n return 'matches';\n } // check un-prefixed\n\n\n if (ElemProto.matchesSelector) {\n return 'matchesSelector';\n } // check vendor prefixes\n\n\n var prefixes = ['webkit', 'moz', 'ms', 'o'];\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n\n if (ElemProto[method]) {\n return method;\n }\n }\n }();\n\n return function matchesSelector(elem, selector) {\n return elem[matchesMethod](selector);\n };\n});\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n\n(function (window, factory) {\n // universal module definition\n\n /*jshint strict: false */\n\n /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define('fizzy-ui-utils/utils', ['desandro-matches-selector/matches-selector'], function (matchesSelector) {\n return factory(window, matchesSelector);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('desandro-matches-selector'));\n } else {\n // browser global\n window.fizzyUIUtils = factory(window, window.matchesSelector);\n }\n})(window, function factory(window, matchesSelector) {\n var utils = {}; // ----- extend ----- //\n // extends objects\n\n utils.extend = function (a, b) {\n for (var prop in b) {\n a[prop] = b[prop];\n }\n\n return a;\n }; // ----- modulo ----- //\n\n\n utils.modulo = function (num, div) {\n return (num % div + div) % div;\n }; // ----- makeArray ----- //\n\n\n var arraySlice = Array.prototype.slice; // turn element or nodeList into an array\n\n utils.makeArray = function (obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n } // return empty array if undefined or null. #6\n\n\n if (obj === null || obj === undefined) {\n return [];\n }\n\n var isArrayLike = _typeof(obj) == 'object' && typeof obj.length == 'number';\n\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n } // array of single index\n\n\n return [obj];\n }; // ----- removeFrom ----- //\n\n\n utils.removeFrom = function (ary, obj) {\n var index = ary.indexOf(obj);\n\n if (index != -1) {\n ary.splice(index, 1);\n }\n }; // ----- getParent ----- //\n\n\n utils.getParent = function (elem, selector) {\n while (elem.parentNode && elem != document.body) {\n elem = elem.parentNode;\n\n if (matchesSelector(elem, selector)) {\n return elem;\n }\n }\n }; // ----- getQueryElement ----- //\n // use element as selector string\n\n\n utils.getQueryElement = function (elem) {\n if (typeof elem == 'string') {\n return document.querySelector(elem);\n }\n\n return elem;\n }; // ----- handleEvent ----- //\n // enable .ontype to trigger from .addEventListener( elem, 'type' )\n\n\n utils.handleEvent = function (event) {\n var method = 'on' + event.type;\n\n if (this[method]) {\n this[method](event);\n }\n }; // ----- filterFindElements ----- //\n\n\n utils.filterFindElements = function (elems, selector) {\n // make array of elems\n elems = utils.makeArray(elems);\n var ffElems = [];\n elems.forEach(function (elem) {\n // check that elem is an actual element\n if (!(elem instanceof HTMLElement)) {\n return;\n } // add elem if no selector\n\n\n if (!selector) {\n ffElems.push(elem);\n return;\n } // filter & find items if we have a selector\n // filter\n\n\n if (matchesSelector(elem, selector)) {\n ffElems.push(elem);\n } // find children\n\n\n var childElems = elem.querySelectorAll(selector); // concat childElems to filterFound array\n\n for (var i = 0; i < childElems.length; i++) {\n ffElems.push(childElems[i]);\n }\n });\n return ffElems;\n }; // ----- debounceMethod ----- //\n\n\n utils.debounceMethod = function (_class, methodName, threshold) {\n threshold = threshold || 100; // original method\n\n var method = _class.prototype[methodName];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[methodName] = function () {\n var timeout = this[timeoutName];\n clearTimeout(timeout);\n var args = arguments;\n\n var _this = this;\n\n this[timeoutName] = setTimeout(function () {\n method.apply(_this, args);\n delete _this[timeoutName];\n }, threshold);\n };\n }; // ----- docReady ----- //\n\n\n utils.docReady = function (callback) {\n var readyState = document.readyState;\n\n if (readyState == 'complete' || readyState == 'interactive') {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout(callback);\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n }; // ----- htmlInit ----- //\n // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\n\n\n utils.toDashed = function (str) {\n return str.replace(/(.)([A-Z])/g, function (match, $1, $2) {\n return $1 + '-' + $2;\n }).toLowerCase();\n };\n\n var console = window.console;\n /**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\n\n utils.htmlInit = function (WidgetClass, namespace) {\n utils.docReady(function () {\n var dashedNamespace = utils.toDashed(namespace);\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll('[' + dataAttr + ']');\n var jsDashElems = document.querySelectorAll('.js-' + dashedNamespace);\n var elems = utils.makeArray(dataAttrElems).concat(utils.makeArray(jsDashElems));\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n elems.forEach(function (elem) {\n var attr = elem.getAttribute(dataAttr) || elem.getAttribute(dataOptionsAttr);\n var options;\n\n try {\n options = attr && JSON.parse(attr);\n } catch (error) {\n // log error, do not initialize\n if (console) {\n console.error('Error parsing ' + dataAttr + ' on ' + elem.className + ': ' + error);\n }\n\n return;\n } // initialize\n\n\n var instance = new WidgetClass(elem, options); // make available via $().data('namespace')\n\n if (jQuery) {\n jQuery.data(elem, namespace, instance);\n }\n });\n });\n }; // ----- ----- //\n\n\n return utils;\n});\n/**\n * Outlayer Item\n */\n\n\n(function (window, factory) {\n // universal module definition\n\n /* jshint strict: false */\n\n /* globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD - RequireJS\n define('outlayer/item', ['ev-emitter/ev-emitter', 'get-size/get-size'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(require('ev-emitter'), require('get-size'));\n } else {\n // browser global\n window.Outlayer = {};\n window.Outlayer.Item = factory(window.EvEmitter, window.getSize);\n }\n})(window, function factory(EvEmitter, getSize) {\n 'use strict'; // ----- helpers ----- //\n\n function isEmptyObj(obj) {\n for (var prop in obj) {\n return false;\n }\n\n prop = null;\n return true;\n } // -------------------------- CSS3 support -------------------------- //\n\n\n var docElemStyle = document.documentElement.style;\n var transitionProperty = typeof docElemStyle.transition == 'string' ? 'transition' : 'WebkitTransition';\n var transformProperty = typeof docElemStyle.transform == 'string' ? 'transform' : 'WebkitTransform';\n var transitionEndEvent = {\n WebkitTransition: 'webkitTransitionEnd',\n transition: 'transitionend'\n }[transitionProperty]; // cache all vendor properties that could have vendor prefix\n\n var vendorProperties = {\n transform: transformProperty,\n transition: transitionProperty,\n transitionDuration: transitionProperty + 'Duration',\n transitionProperty: transitionProperty + 'Property',\n transitionDelay: transitionProperty + 'Delay'\n }; // -------------------------- Item -------------------------- //\n\n function Item(element, layout) {\n if (!element) {\n return;\n }\n\n this.element = element; // parent layout class, i.e. Masonry, Isotope, or Packery\n\n this.layout = layout;\n this.position = {\n x: 0,\n y: 0\n };\n\n this._create();\n } // inherit EvEmitter\n\n\n var proto = Item.prototype = Object.create(EvEmitter.prototype);\n proto.constructor = Item;\n\n proto._create = function () {\n // transition objects\n this._transn = {\n ingProperties: {},\n clean: {},\n onEnd: {}\n };\n this.css({\n position: 'absolute'\n });\n }; // trigger specified handler for event type\n\n\n proto.handleEvent = function (event) {\n var method = 'on' + event.type;\n\n if (this[method]) {\n this[method](event);\n }\n };\n\n proto.getSize = function () {\n this.size = getSize(this.element);\n };\n /**\n * apply CSS styles to element\n * @param {Object} style\n */\n\n\n proto.css = function (style) {\n var elemStyle = this.element.style;\n\n for (var prop in style) {\n // use vendor property if available\n var supportedProp = vendorProperties[prop] || prop;\n elemStyle[supportedProp] = style[prop];\n }\n }; // measure position, and sets it\n\n\n proto.getPosition = function () {\n var style = getComputedStyle(this.element);\n\n var isOriginLeft = this.layout._getOption('originLeft');\n\n var isOriginTop = this.layout._getOption('originTop');\n\n var xValue = style[isOriginLeft ? 'left' : 'right'];\n var yValue = style[isOriginTop ? 'top' : 'bottom'];\n var x = parseFloat(xValue);\n var y = parseFloat(yValue); // convert percent to pixels\n\n var layoutSize = this.layout.size;\n\n if (xValue.indexOf('%') != -1) {\n x = x / 100 * layoutSize.width;\n }\n\n if (yValue.indexOf('%') != -1) {\n y = y / 100 * layoutSize.height;\n } // clean up 'auto' or other non-integer values\n\n\n x = isNaN(x) ? 0 : x;\n y = isNaN(y) ? 0 : y; // remove padding from measurement\n\n x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n this.position.x = x;\n this.position.y = y;\n }; // set settled position, apply padding\n\n\n proto.layoutPosition = function () {\n var layoutSize = this.layout.size;\n var style = {};\n\n var isOriginLeft = this.layout._getOption('originLeft');\n\n var isOriginTop = this.layout._getOption('originTop'); // x\n\n\n var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n var xProperty = isOriginLeft ? 'left' : 'right';\n var xResetProperty = isOriginLeft ? 'right' : 'left';\n var x = this.position.x + layoutSize[xPadding]; // set in percentage or pixels\n\n style[xProperty] = this.getXValue(x); // reset other property\n\n style[xResetProperty] = ''; // y\n\n var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n var yProperty = isOriginTop ? 'top' : 'bottom';\n var yResetProperty = isOriginTop ? 'bottom' : 'top';\n var y = this.position.y + layoutSize[yPadding]; // set in percentage or pixels\n\n style[yProperty] = this.getYValue(y); // reset other property\n\n style[yResetProperty] = '';\n this.css(style);\n this.emitEvent('layout', [this]);\n };\n\n proto.getXValue = function (x) {\n var isHorizontal = this.layout._getOption('horizontal');\n\n return this.layout.options.percentPosition && !isHorizontal ? x / this.layout.size.width * 100 + '%' : x + 'px';\n };\n\n proto.getYValue = function (y) {\n var isHorizontal = this.layout._getOption('horizontal');\n\n return this.layout.options.percentPosition && isHorizontal ? y / this.layout.size.height * 100 + '%' : y + 'px';\n };\n\n proto._transitionTo = function (x, y) {\n this.getPosition(); // get current x & y from top/left\n\n var curX = this.position.x;\n var curY = this.position.y;\n var didNotMove = x == this.position.x && y == this.position.y; // save end position\n\n this.setPosition(x, y); // if did not move and not transitioning, just go to layout\n\n if (didNotMove && !this.isTransitioning) {\n this.layoutPosition();\n return;\n }\n\n var transX = x - curX;\n var transY = y - curY;\n var transitionStyle = {};\n transitionStyle.transform = this.getTranslate(transX, transY);\n this.transition({\n to: transitionStyle,\n onTransitionEnd: {\n transform: this.layoutPosition\n },\n isCleaning: true\n });\n };\n\n proto.getTranslate = function (x, y) {\n // flip cooridinates if origin on right or bottom\n var isOriginLeft = this.layout._getOption('originLeft');\n\n var isOriginTop = this.layout._getOption('originTop');\n\n x = isOriginLeft ? x : -x;\n y = isOriginTop ? y : -y;\n return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n }; // non transition + transform support\n\n\n proto.goTo = function (x, y) {\n this.setPosition(x, y);\n this.layoutPosition();\n };\n\n proto.moveTo = proto._transitionTo;\n\n proto.setPosition = function (x, y) {\n this.position.x = parseFloat(x);\n this.position.y = parseFloat(y);\n }; // ----- transition ----- //\n\n /**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n // non transition, just trigger callback\n\n\n proto._nonTransition = function (args) {\n this.css(args.to);\n\n if (args.isCleaning) {\n this._removeStyles(args.to);\n }\n\n for (var prop in args.onTransitionEnd) {\n args.onTransitionEnd[prop].call(this);\n }\n };\n /**\n * proper transition\n * @param {Object} args - arguments\n * @param {Object} to - style to transition to\n * @param {Object} from - style to start transition from\n * @param {Boolean} isCleaning - removes transition styles after transition\n * @param {Function} onTransitionEnd - callback\n */\n\n\n proto.transition = function (args) {\n // redirect to nonTransition if no transition duration\n if (!parseFloat(this.layout.options.transitionDuration)) {\n this._nonTransition(args);\n\n return;\n }\n\n var _transition = this._transn; // keep track of onTransitionEnd callback by css property\n\n for (var prop in args.onTransitionEnd) {\n _transition.onEnd[prop] = args.onTransitionEnd[prop];\n } // keep track of properties that are transitioning\n\n\n for (prop in args.to) {\n _transition.ingProperties[prop] = true; // keep track of properties to clean up when transition is done\n\n if (args.isCleaning) {\n _transition.clean[prop] = true;\n }\n } // set from styles\n\n\n if (args.from) {\n this.css(args.from); // force redraw. http://blog.alexmaccaw.com/css-transitions\n\n var h = this.element.offsetHeight; // hack for JSHint to hush about unused var\n\n h = null;\n } // enable transition\n\n\n this.enableTransition(args.to); // set styles that are transitioning\n\n this.css(args.to);\n this.isTransitioning = true;\n }; // dash before all cap letters, including first for\n // WebkitTransform => -webkit-transform\n\n\n function toDashedAll(str) {\n return str.replace(/([A-Z])/g, function ($1) {\n return '-' + $1.toLowerCase();\n });\n }\n\n var transitionProps = 'opacity,' + toDashedAll(transformProperty);\n\n proto.enableTransition = function ()\n /* style */\n {\n // HACK changing transitionProperty during a transition\n // will cause transition to jump\n if (this.isTransitioning) {\n return;\n } // make `transition: foo, bar, baz` from style object\n // HACK un-comment this when enableTransition can work\n // while a transition is happening\n // var transitionValues = [];\n // for ( var prop in style ) {\n // // dash-ify camelCased properties like WebkitTransition\n // prop = vendorProperties[ prop ] || prop;\n // transitionValues.push( toDashedAll( prop ) );\n // }\n // munge number to millisecond, to match stagger\n\n\n var duration = this.layout.options.transitionDuration;\n duration = typeof duration == 'number' ? duration + 'ms' : duration; // enable transition styles\n\n this.css({\n transitionProperty: transitionProps,\n transitionDuration: duration,\n transitionDelay: this.staggerDelay || 0\n }); // listen for transition end event\n\n this.element.addEventListener(transitionEndEvent, this, false);\n }; // ----- events ----- //\n\n\n proto.onwebkitTransitionEnd = function (event) {\n this.ontransitionend(event);\n };\n\n proto.onotransitionend = function (event) {\n this.ontransitionend(event);\n }; // properties that I munge to make my life easier\n\n\n var dashedVendorProperties = {\n '-webkit-transform': 'transform'\n };\n\n proto.ontransitionend = function (event) {\n // disregard bubbled events from children\n if (event.target !== this.element) {\n return;\n }\n\n var _transition = this._transn; // get property name of transitioned property, convert to prefix-free\n\n var propertyName = dashedVendorProperties[event.propertyName] || event.propertyName; // remove property that has completed transitioning\n\n delete _transition.ingProperties[propertyName]; // check if any properties are still transitioning\n\n if (isEmptyObj(_transition.ingProperties)) {\n // all properties have completed transitioning\n this.disableTransition();\n } // clean style\n\n\n if (propertyName in _transition.clean) {\n // clean up style\n this.element.style[event.propertyName] = '';\n delete _transition.clean[propertyName];\n } // trigger onTransitionEnd callback\n\n\n if (propertyName in _transition.onEnd) {\n var onTransitionEnd = _transition.onEnd[propertyName];\n onTransitionEnd.call(this);\n delete _transition.onEnd[propertyName];\n }\n\n this.emitEvent('transitionEnd', [this]);\n };\n\n proto.disableTransition = function () {\n this.removeTransitionStyles();\n this.element.removeEventListener(transitionEndEvent, this, false);\n this.isTransitioning = false;\n };\n /**\n * removes style property from element\n * @param {Object} style\n **/\n\n\n proto._removeStyles = function (style) {\n // clean up transition styles\n var cleanStyle = {};\n\n for (var prop in style) {\n cleanStyle[prop] = '';\n }\n\n this.css(cleanStyle);\n };\n\n var cleanTransitionStyle = {\n transitionProperty: '',\n transitionDuration: '',\n transitionDelay: ''\n };\n\n proto.removeTransitionStyles = function () {\n // remove transition\n this.css(cleanTransitionStyle);\n }; // ----- stagger ----- //\n\n\n proto.stagger = function (delay) {\n delay = isNaN(delay) ? 0 : delay;\n this.staggerDelay = delay + 'ms';\n }; // ----- show/hide/remove ----- //\n // remove element from DOM\n\n\n proto.removeElem = function () {\n this.element.parentNode.removeChild(this.element); // remove display: none\n\n this.css({\n display: ''\n });\n this.emitEvent('remove', [this]);\n };\n\n proto.remove = function () {\n // just remove element if no transition support or no transition\n if (!transitionProperty || !parseFloat(this.layout.options.transitionDuration)) {\n this.removeElem();\n return;\n } // start transition\n\n\n this.once('transitionEnd', function () {\n this.removeElem();\n });\n this.hide();\n };\n\n proto.reveal = function () {\n delete this.isHidden; // remove display: none\n\n this.css({\n display: ''\n });\n var options = this.layout.options;\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n onTransitionEnd[transitionEndProperty] = this.onRevealTransitionEnd;\n this.transition({\n from: options.hiddenStyle,\n to: options.visibleStyle,\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n };\n\n proto.onRevealTransitionEnd = function () {\n // check if still visible\n // during transition, item may have been hidden\n if (!this.isHidden) {\n this.emitEvent('reveal');\n }\n };\n /**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\n\n\n proto.getHideRevealTransitionEndProperty = function (styleProperty) {\n var optionStyle = this.layout.options[styleProperty]; // use opacity\n\n if (optionStyle.opacity) {\n return 'opacity';\n } // get first property\n\n\n for (var prop in optionStyle) {\n return prop;\n }\n };\n\n proto.hide = function () {\n // set flag\n this.isHidden = true; // remove display: none\n\n this.css({\n display: ''\n });\n var options = this.layout.options;\n var onTransitionEnd = {};\n var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n onTransitionEnd[transitionEndProperty] = this.onHideTransitionEnd;\n this.transition({\n from: options.visibleStyle,\n to: options.hiddenStyle,\n // keep hidden stuff hidden\n isCleaning: true,\n onTransitionEnd: onTransitionEnd\n });\n };\n\n proto.onHideTransitionEnd = function () {\n // check if still hidden\n // during transition, item may have been un-hidden\n if (this.isHidden) {\n this.css({\n display: 'none'\n });\n this.emitEvent('hide');\n }\n };\n\n proto.destroy = function () {\n this.css({\n position: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n transition: '',\n transform: ''\n });\n };\n\n return Item;\n});\n/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n\n(function (window, factory) {\n 'use strict'; // universal module definition\n\n /* jshint strict: false */\n\n /* globals define, module, require */\n\n if (typeof define == 'function' && define.amd) {\n // AMD - RequireJS\n define('outlayer/outlayer', ['ev-emitter/ev-emitter', 'get-size/get-size', 'fizzy-ui-utils/utils', './item'], function (EvEmitter, getSize, utils, Item) {\n return factory(window, EvEmitter, getSize, utils, Item);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS - Browserify, Webpack\n module.exports = factory(window, require('ev-emitter'), require('get-size'), require('fizzy-ui-utils'), require('./item'));\n } else {\n // browser global\n window.Outlayer = factory(window, window.EvEmitter, window.getSize, window.fizzyUIUtils, window.Outlayer.Item);\n }\n})(window, function factory(window, EvEmitter, getSize, utils, Item) {\n 'use strict'; // ----- vars ----- //\n\n var console = window.console;\n var jQuery = window.jQuery;\n\n var noop = function noop() {}; // -------------------------- Outlayer -------------------------- //\n // globally unique identifiers\n\n\n var GUID = 0; // internal store of all Outlayer intances\n\n var instances = {};\n /**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\n\n function Outlayer(element, options) {\n var queryElement = utils.getQueryElement(element);\n\n if (!queryElement) {\n if (console) {\n console.error('Bad element for ' + this.constructor.namespace + ': ' + (queryElement || element));\n }\n\n return;\n }\n\n this.element = queryElement; // add jQuery\n\n if (jQuery) {\n this.$element = jQuery(this.element);\n } // options\n\n\n this.options = utils.extend({}, this.constructor.defaults);\n this.option(options); // add id for Outlayer.getFromElement\n\n var id = ++GUID;\n this.element.outlayerGUID = id; // expando\n\n instances[id] = this; // associate via id\n // kick it off\n\n this._create();\n\n var isInitLayout = this._getOption('initLayout');\n\n if (isInitLayout) {\n this.layout();\n }\n } // settings are for internal use only\n\n\n Outlayer.namespace = 'outlayer';\n Outlayer.Item = Item; // default options\n\n Outlayer.defaults = {\n containerStyle: {\n position: 'relative'\n },\n initLayout: true,\n originLeft: true,\n originTop: true,\n resize: true,\n resizeContainer: true,\n // item options\n transitionDuration: '0.4s',\n hiddenStyle: {\n opacity: 0,\n transform: 'scale(0.001)'\n },\n visibleStyle: {\n opacity: 1,\n transform: 'scale(1)'\n }\n };\n var proto = Outlayer.prototype; // inherit EvEmitter\n\n utils.extend(proto, EvEmitter.prototype);\n /**\n * set options\n * @param {Object} opts\n */\n\n proto.option = function (opts) {\n utils.extend(this.options, opts);\n };\n /**\n * get backwards compatible option value, check old name\n */\n\n\n proto._getOption = function (option) {\n var oldOption = this.constructor.compatOptions[option];\n return oldOption && this.options[oldOption] !== undefined ? this.options[oldOption] : this.options[option];\n };\n\n Outlayer.compatOptions = {\n // currentName: oldName\n initLayout: 'isInitLayout',\n horizontal: 'isHorizontal',\n layoutInstant: 'isLayoutInstant',\n originLeft: 'isOriginLeft',\n originTop: 'isOriginTop',\n resize: 'isResizeBound',\n resizeContainer: 'isResizingContainer'\n };\n\n proto._create = function () {\n // get items from children\n this.reloadItems(); // elements that affect layout, but are not laid out\n\n this.stamps = [];\n this.stamp(this.options.stamp); // set container style\n\n utils.extend(this.element.style, this.options.containerStyle); // bind resize method\n\n var canBindResize = this._getOption('resize');\n\n if (canBindResize) {\n this.bindResize();\n }\n }; // goes through all children again and gets bricks in proper order\n\n\n proto.reloadItems = function () {\n // collection of item elements\n this.items = this._itemize(this.element.children);\n };\n /**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\n\n\n proto._itemize = function (elems) {\n var itemElems = this._filterFindItemElements(elems);\n\n var Item = this.constructor.Item; // create new Outlayer Items for collection\n\n var items = [];\n\n for (var i = 0; i < itemElems.length; i++) {\n var elem = itemElems[i];\n var item = new Item(elem, this);\n items.push(item);\n }\n\n return items;\n };\n /**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\n\n\n proto._filterFindItemElements = function (elems) {\n return utils.filterFindElements(elems, this.options.itemSelector);\n };\n /**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\n\n\n proto.getItemElements = function () {\n return this.items.map(function (item) {\n return item.element;\n });\n }; // ----- init & layout ----- //\n\n /**\n * lays out all items\n */\n\n\n proto.layout = function () {\n this._resetLayout();\n\n this._manageStamps(); // don't animate first layout\n\n\n var layoutInstant = this._getOption('layoutInstant');\n\n var isInstant = layoutInstant !== undefined ? layoutInstant : !this._isLayoutInited;\n this.layoutItems(this.items, isInstant); // flag for initalized\n\n this._isLayoutInited = true;\n }; // _init is alias for layout\n\n\n proto._init = proto.layout;\n /**\n * logic before any new layout\n */\n\n proto._resetLayout = function () {\n this.getSize();\n };\n\n proto.getSize = function () {\n this.size = getSize(this.element);\n };\n /**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\n\n\n proto._getMeasurement = function (measurement, size) {\n var option = this.options[measurement];\n var elem;\n\n if (!option) {\n // default to 0\n this[measurement] = 0;\n } else {\n // use option as an element\n if (typeof option == 'string') {\n elem = this.element.querySelector(option);\n } else if (option instanceof HTMLElement) {\n elem = option;\n } // use size of element, if element\n\n\n this[measurement] = elem ? getSize(elem)[size] : option;\n }\n };\n /**\n * layout a collection of item elements\n * @api public\n */\n\n\n proto.layoutItems = function (items, isInstant) {\n items = this._getItemsForLayout(items);\n\n this._layoutItems(items, isInstant);\n\n this._postLayout();\n };\n /**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\n\n\n proto._getItemsForLayout = function (items) {\n return items.filter(function (item) {\n return !item.isIgnored;\n });\n };\n /**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\n\n\n proto._layoutItems = function (items, isInstant) {\n this._emitCompleteOnItems('layout', items);\n\n if (!items || !items.length) {\n // no items, emit event with empty array\n return;\n }\n\n var queue = [];\n items.forEach(function (item) {\n // get x/y object from method\n var position = this._getItemLayoutPosition(item); // enqueue\n\n\n position.item = item;\n position.isInstant = isInstant || item.isLayoutInstant;\n queue.push(position);\n }, this);\n\n this._processLayoutQueue(queue);\n };\n /**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\n\n\n proto._getItemLayoutPosition = function ()\n /* item */\n {\n return {\n x: 0,\n y: 0\n };\n };\n /**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\n\n\n proto._processLayoutQueue = function (queue) {\n this.updateStagger();\n queue.forEach(function (obj, i) {\n this._positionItem(obj.item, obj.x, obj.y, obj.isInstant, i);\n }, this);\n }; // set stagger from option in milliseconds number\n\n\n proto.updateStagger = function () {\n var stagger = this.options.stagger;\n\n if (stagger === null || stagger === undefined) {\n this.stagger = 0;\n return;\n }\n\n this.stagger = getMilliseconds(stagger);\n return this.stagger;\n };\n /**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\n\n\n proto._positionItem = function (item, x, y, isInstant, i) {\n if (isInstant) {\n // if not transition, just set CSS\n item.goTo(x, y);\n } else {\n item.stagger(i * this.stagger);\n item.moveTo(x, y);\n }\n };\n /**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\n\n\n proto._postLayout = function () {\n this.resizeContainer();\n };\n\n proto.resizeContainer = function () {\n var isResizingContainer = this._getOption('resizeContainer');\n\n if (!isResizingContainer) {\n return;\n }\n\n var size = this._getContainerSize();\n\n if (size) {\n this._setContainerMeasure(size.width, true);\n\n this._setContainerMeasure(size.height, false);\n }\n };\n /**\n * Sets width or height of container if returned\n * @returns {Object} size\n * @param {Number} width\n * @param {Number} height\n */\n\n\n proto._getContainerSize = noop;\n /**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\n\n proto._setContainerMeasure = function (measure, isWidth) {\n if (measure === undefined) {\n return;\n }\n\n var elemSize = this.size; // add padding and border width if border box\n\n if (elemSize.isBorderBox) {\n measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight + elemSize.borderLeftWidth + elemSize.borderRightWidth : elemSize.paddingBottom + elemSize.paddingTop + elemSize.borderTopWidth + elemSize.borderBottomWidth;\n }\n\n measure = Math.max(measure, 0);\n this.element.style[isWidth ? 'width' : 'height'] = measure + 'px';\n };\n /**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\n\n\n proto._emitCompleteOnItems = function (eventName, items) {\n var _this = this;\n\n function onComplete() {\n _this.dispatchEvent(eventName + 'Complete', null, [items]);\n }\n\n var count = items.length;\n\n if (!items || !count) {\n onComplete();\n return;\n }\n\n var doneCount = 0;\n\n function tick() {\n doneCount++;\n\n if (doneCount == count) {\n onComplete();\n }\n } // bind callback\n\n\n items.forEach(function (item) {\n item.once(eventName, tick);\n });\n };\n /**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\n\n\n proto.dispatchEvent = function (type, event, args) {\n // add original event to arguments\n var emitArgs = event ? [event].concat(args) : args;\n this.emitEvent(type, emitArgs);\n\n if (jQuery) {\n // set this.$element\n this.$element = this.$element || jQuery(this.element);\n\n if (event) {\n // create jQuery event\n var $event = jQuery.Event(event);\n $event.type = type;\n this.$element.trigger($event, args);\n } else {\n // just trigger with type if no event available\n this.$element.trigger(type, args);\n }\n }\n }; // -------------------------- ignore & stamps -------------------------- //\n\n /**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\n\n\n proto.ignore = function (elem) {\n var item = this.getItem(elem);\n\n if (item) {\n item.isIgnored = true;\n }\n };\n /**\n * return item to layout collection\n * @param {Element} elem\n */\n\n\n proto.unignore = function (elem) {\n var item = this.getItem(elem);\n\n if (item) {\n delete item.isIgnored;\n }\n };\n /**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\n\n\n proto.stamp = function (elems) {\n elems = this._find(elems);\n\n if (!elems) {\n return;\n }\n\n this.stamps = this.stamps.concat(elems); // ignore\n\n elems.forEach(this.ignore, this);\n };\n /**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\n\n\n proto.unstamp = function (elems) {\n elems = this._find(elems);\n\n if (!elems) {\n return;\n }\n\n elems.forEach(function (elem) {\n // filter out removed stamp elements\n utils.removeFrom(this.stamps, elem);\n this.unignore(elem);\n }, this);\n };\n /**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\n\n\n proto._find = function (elems) {\n if (!elems) {\n return;\n } // if string, use argument as selector string\n\n\n if (typeof elems == 'string') {\n elems = this.element.querySelectorAll(elems);\n }\n\n elems = utils.makeArray(elems);\n return elems;\n };\n\n proto._manageStamps = function () {\n if (!this.stamps || !this.stamps.length) {\n return;\n }\n\n this._getBoundingRect();\n\n this.stamps.forEach(this._manageStamp, this);\n }; // update boundingLeft / Top\n\n\n proto._getBoundingRect = function () {\n // get bounding rect for container element\n var boundingRect = this.element.getBoundingClientRect();\n var size = this.size;\n this._boundingRect = {\n left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n right: boundingRect.right - (size.paddingRight + size.borderRightWidth),\n bottom: boundingRect.bottom - (size.paddingBottom + size.borderBottomWidth)\n };\n };\n /**\n * @param {Element} stamp\n **/\n\n\n proto._manageStamp = noop;\n /**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\n\n proto._getElementOffset = function (elem) {\n var boundingRect = elem.getBoundingClientRect();\n var thisRect = this._boundingRect;\n var size = getSize(elem);\n var offset = {\n left: boundingRect.left - thisRect.left - size.marginLeft,\n top: boundingRect.top - thisRect.top - size.marginTop,\n right: thisRect.right - boundingRect.right - size.marginRight,\n bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n };\n return offset;\n }; // -------------------------- resize -------------------------- //\n // enable event handlers for listeners\n // i.e. resize -> onresize\n\n\n proto.handleEvent = utils.handleEvent;\n /**\n * Bind layout to window resizing\n */\n\n proto.bindResize = function () {\n window.addEventListener('resize', this);\n this.isResizeBound = true;\n };\n /**\n * Unbind layout to window resizing\n */\n\n\n proto.unbindResize = function () {\n window.removeEventListener('resize', this);\n this.isResizeBound = false;\n };\n\n proto.onresize = function () {\n this.resize();\n };\n\n utils.debounceMethod(Outlayer, 'onresize', 100);\n\n proto.resize = function () {\n // don't trigger if size did not change\n // or if resize was unbound. See #9\n if (!this.isResizeBound || !this.needsResizeLayout()) {\n return;\n }\n\n this.layout();\n };\n /**\n * check if layout is needed post layout\n * @returns Boolean\n */\n\n\n proto.needsResizeLayout = function () {\n var size = getSize(this.element); // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n\n var hasSizes = this.size && size;\n return hasSizes && size.innerWidth !== this.size.innerWidth;\n }; // -------------------------- methods -------------------------- //\n\n /**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n **/\n\n\n proto.addItems = function (elems) {\n var items = this._itemize(elems); // add items to collection\n\n\n if (items.length) {\n this.items = this.items.concat(items);\n }\n\n return items;\n };\n /**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\n\n\n proto.appended = function (elems) {\n var items = this.addItems(elems);\n\n if (!items.length) {\n return;\n } // layout and reveal just the new items\n\n\n this.layoutItems(items, true);\n this.reveal(items);\n };\n /**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\n\n\n proto.prepended = function (elems) {\n var items = this._itemize(elems);\n\n if (!items.length) {\n return;\n } // add items to beginning of collection\n\n\n var previousItems = this.items.slice(0);\n this.items = items.concat(previousItems); // start new layout\n\n this._resetLayout();\n\n this._manageStamps(); // layout new stuff without transition\n\n\n this.layoutItems(items, true);\n this.reveal(items); // layout previous items\n\n this.layoutItems(previousItems);\n };\n /**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\n\n\n proto.reveal = function (items) {\n this._emitCompleteOnItems('reveal', items);\n\n if (!items || !items.length) {\n return;\n }\n\n var stagger = this.updateStagger();\n items.forEach(function (item, i) {\n item.stagger(i * stagger);\n item.reveal();\n });\n };\n /**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\n\n\n proto.hide = function (items) {\n this._emitCompleteOnItems('hide', items);\n\n if (!items || !items.length) {\n return;\n }\n\n var stagger = this.updateStagger();\n items.forEach(function (item, i) {\n item.stagger(i * stagger);\n item.hide();\n });\n };\n /**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\n\n\n proto.revealItemElements = function (elems) {\n var items = this.getItems(elems);\n this.reveal(items);\n };\n /**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\n\n\n proto.hideItemElements = function (elems) {\n var items = this.getItems(elems);\n this.hide(items);\n };\n /**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\n\n\n proto.getItem = function (elem) {\n // loop through items to get the one that matches\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n\n if (item.element == elem) {\n // return item\n return item;\n }\n }\n };\n /**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\n\n\n proto.getItems = function (elems) {\n elems = utils.makeArray(elems);\n var items = [];\n elems.forEach(function (elem) {\n var item = this.getItem(elem);\n\n if (item) {\n items.push(item);\n }\n }, this);\n return items;\n };\n /**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\n\n\n proto.remove = function (elems) {\n var removeItems = this.getItems(elems);\n\n this._emitCompleteOnItems('remove', removeItems); // bail if no items to remove\n\n\n if (!removeItems || !removeItems.length) {\n return;\n }\n\n removeItems.forEach(function (item) {\n item.remove(); // remove item from collection\n\n utils.removeFrom(this.items, item);\n }, this);\n }; // ----- destroy ----- //\n // remove and disable Outlayer instance\n\n\n proto.destroy = function () {\n // clean up dynamic styles\n var style = this.element.style;\n style.height = '';\n style.position = '';\n style.width = ''; // destroy items\n\n this.items.forEach(function (item) {\n item.destroy();\n });\n this.unbindResize();\n var id = this.element.outlayerGUID;\n delete instances[id]; // remove reference to instance by id\n\n delete this.element.outlayerGUID; // remove data for jQuery\n\n if (jQuery) {\n jQuery.removeData(this.element, this.constructor.namespace);\n }\n }; // -------------------------- data -------------------------- //\n\n /**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\n\n\n Outlayer.data = function (elem) {\n elem = utils.getQueryElement(elem);\n var id = elem && elem.outlayerGUID;\n return id && instances[id];\n }; // -------------------------- create Outlayer class -------------------------- //\n\n /**\n * create a layout class\n * @param {String} namespace\n */\n\n\n Outlayer.create = function (namespace, options) {\n // sub-class Outlayer\n var Layout = subclass(Outlayer); // apply new options and compatOptions\n\n Layout.defaults = utils.extend({}, Outlayer.defaults);\n utils.extend(Layout.defaults, options);\n Layout.compatOptions = utils.extend({}, Outlayer.compatOptions);\n Layout.namespace = namespace;\n Layout.data = Outlayer.data; // sub-class Item\n\n Layout.Item = subclass(Item); // -------------------------- declarative -------------------------- //\n\n utils.htmlInit(Layout, namespace); // -------------------------- jQuery bridge -------------------------- //\n // make into jQuery plugin\n\n if (jQuery && jQuery.bridget) {\n jQuery.bridget(namespace, Layout);\n }\n\n return Layout;\n };\n\n function subclass(Parent) {\n function SubClass() {\n Parent.apply(this, arguments);\n }\n\n SubClass.prototype = Object.create(Parent.prototype);\n SubClass.prototype.constructor = SubClass;\n return SubClass;\n } // ----- helpers ----- //\n // how many milliseconds are in each unit\n\n\n var msUnits = {\n ms: 1,\n s: 1000\n }; // munge time-like parameter into millisecond number\n // '0.4s' -> 40\n\n function getMilliseconds(time) {\n if (typeof time == 'number') {\n return time;\n }\n\n var matches = time.match(/(^\\d*\\.?\\d*)(\\w*)/);\n var num = matches && matches[1];\n var unit = matches && matches[2];\n\n if (!num.length) {\n return 0;\n }\n\n num = parseFloat(num);\n var mult = msUnits[unit] || 1;\n return num * mult;\n } // ----- fin ----- //\n // back in global\n\n\n Outlayer.Item = Item;\n return Outlayer;\n});\n/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n\n(function (window, factory) {\n // universal module definition\n\n /* jshint strict: false */\n\n /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['outlayer/outlayer', 'get-size/get-size'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('outlayer'), require('get-size'));\n } else {\n // browser global\n window.Masonry = factory(window.Outlayer, window.getSize);\n }\n})(window, function factory(Outlayer, getSize) {\n // -------------------------- masonryDefinition -------------------------- //\n // create an Outlayer layout class\n var Masonry = Outlayer.create('masonry'); // isFitWidth -> fitWidth\n\n Masonry.compatOptions.fitWidth = 'isFitWidth';\n var proto = Masonry.prototype;\n\n proto._resetLayout = function () {\n this.getSize();\n\n this._getMeasurement('columnWidth', 'outerWidth');\n\n this._getMeasurement('gutter', 'outerWidth');\n\n this.measureColumns(); // reset column Y\n\n this.colYs = [];\n\n for (var i = 0; i < this.cols; i++) {\n this.colYs.push(0);\n }\n\n this.maxY = 0;\n this.horizontalColIndex = 0;\n };\n\n proto.measureColumns = function () {\n this.getContainerWidth(); // if columnWidth is 0, default to outerWidth of first item\n\n if (!this.columnWidth) {\n var firstItem = this.items[0];\n var firstItemElem = firstItem && firstItem.element; // columnWidth fall back to item of first element\n\n this.columnWidth = firstItemElem && getSize(firstItemElem).outerWidth || // if first elem has no width, default to size of container\n this.containerWidth;\n }\n\n var columnWidth = this.columnWidth += this.gutter; // calculate columns\n\n var containerWidth = this.containerWidth + this.gutter;\n var cols = containerWidth / columnWidth; // fix rounding errors, typically with gutters\n\n var excess = columnWidth - containerWidth % columnWidth; // if overshoot is less than a pixel, round up, otherwise floor it\n\n var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n cols = Math[mathMethod](cols);\n this.cols = Math.max(cols, 1);\n };\n\n proto.getContainerWidth = function () {\n // container is parent if fit width\n var isFitWidth = this._getOption('fitWidth');\n\n var container = isFitWidth ? this.element.parentNode : this.element; // check that this.size and size are there\n // IE8 triggers resize on body size change, so they might not be\n\n var size = getSize(container);\n this.containerWidth = size && size.innerWidth;\n };\n\n proto._getItemLayoutPosition = function (item) {\n item.getSize(); // how many columns does this brick span\n\n var remainder = item.size.outerWidth % this.columnWidth;\n var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil'; // round if off by 1 pixel, otherwise use ceil\n\n var colSpan = Math[mathMethod](item.size.outerWidth / this.columnWidth);\n colSpan = Math.min(colSpan, this.cols); // use horizontal or top column position\n\n var colPosMethod = this.options.horizontalOrder ? '_getHorizontalColPosition' : '_getTopColPosition';\n var colPosition = this[colPosMethod](colSpan, item); // position the brick\n\n var position = {\n x: this.columnWidth * colPosition.col,\n y: colPosition.y\n }; // apply setHeight to necessary columns\n\n var setHeight = colPosition.y + item.size.outerHeight;\n var setMax = colSpan + colPosition.col;\n\n for (var i = colPosition.col; i < setMax; i++) {\n this.colYs[i] = setHeight;\n }\n\n return position;\n };\n\n proto._getTopColPosition = function (colSpan) {\n var colGroup = this._getTopColGroup(colSpan); // get the minimum Y value from the columns\n\n\n var minimumY = Math.min.apply(Math, colGroup);\n return {\n col: colGroup.indexOf(minimumY),\n y: minimumY\n };\n };\n /**\n * @param {Number} colSpan - number of columns the element spans\n * @returns {Array} colGroup\n */\n\n\n proto._getTopColGroup = function (colSpan) {\n if (colSpan < 2) {\n // if brick spans only one column, use all the column Ys\n return this.colYs;\n }\n\n var colGroup = []; // how many different places could this brick fit horizontally\n\n var groupCount = this.cols + 1 - colSpan; // for each group potential horizontal position\n\n for (var i = 0; i < groupCount; i++) {\n colGroup[i] = this._getColGroupY(i, colSpan);\n }\n\n return colGroup;\n };\n\n proto._getColGroupY = function (col, colSpan) {\n if (colSpan < 2) {\n return this.colYs[col];\n } // make an array of colY values for that one group\n\n\n var groupColYs = this.colYs.slice(col, col + colSpan); // and get the max value of the array\n\n return Math.max.apply(Math, groupColYs);\n }; // get column position based on horizontal index. #873\n\n\n proto._getHorizontalColPosition = function (colSpan, item) {\n var col = this.horizontalColIndex % this.cols;\n var isOver = colSpan > 1 && col + colSpan > this.cols; // shift to next row if item can't fit on current row\n\n col = isOver ? 0 : col; // don't let zero-size items take up space\n\n var hasSize = item.size.outerWidth && item.size.outerHeight;\n this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n return {\n col: col,\n y: this._getColGroupY(col, colSpan)\n };\n };\n\n proto._manageStamp = function (stamp) {\n var stampSize = getSize(stamp);\n\n var offset = this._getElementOffset(stamp); // get the columns that this stamp affects\n\n\n var isOriginLeft = this._getOption('originLeft');\n\n var firstX = isOriginLeft ? offset.left : offset.right;\n var lastX = firstX + stampSize.outerWidth;\n var firstCol = Math.floor(firstX / this.columnWidth);\n firstCol = Math.max(0, firstCol);\n var lastCol = Math.floor(lastX / this.columnWidth); // lastCol should not go over if multiple of columnWidth #425\n\n lastCol -= lastX % this.columnWidth ? 0 : 1;\n lastCol = Math.min(this.cols - 1, lastCol); // set colYs to bottom of the stamp\n\n var isOriginTop = this._getOption('originTop');\n\n var stampMaxY = (isOriginTop ? offset.top : offset.bottom) + stampSize.outerHeight;\n\n for (var i = firstCol; i <= lastCol; i++) {\n this.colYs[i] = Math.max(stampMaxY, this.colYs[i]);\n }\n };\n\n proto._getContainerSize = function () {\n this.maxY = Math.max.apply(Math, this.colYs);\n var size = {\n height: this.maxY\n };\n\n if (this._getOption('fitWidth')) {\n size.width = this._getContainerFitWidth();\n }\n\n return size;\n };\n\n proto._getContainerFitWidth = function () {\n var unusedCols = 0; // count unused columns\n\n var i = this.cols;\n\n while (--i) {\n if (this.colYs[i] !== 0) {\n break;\n }\n\n unusedCols++;\n } // fit container to columns that have been used\n\n\n return (this.cols - unusedCols) * this.columnWidth - this.gutter;\n };\n\n proto.needsResizeLayout = function () {\n var previousWidth = this.containerWidth;\n this.getContainerWidth();\n return previousWidth != this.containerWidth;\n };\n\n return Masonry;\n});","import * as Masonry from 'masonry-layout/dist/masonry.pkgd.js'\n\nexport { Masonry }\n"],"sourceRoot":""}