{"version":3,"sources":["webpack:///solution.js","webpack:///webpack/bootstrap 9615a939a7b77d7991a1","webpack:///./assets/js/utils.js","webpack:///./node_modules/domready/ready.js","webpack:///./assets/js/vendors/polyfillIntersectionObserver.js","webpack:///./assets/js/vendors/fontLoader.js","webpack:///./node_modules/webfontloader/webfontloader.js","webpack:///./assets/js/lazzyLoad.js","webpack:///./assets/js/solution.js","webpack:///./assets/js/controlers/Tabs.js","webpack:///./assets/js/scrollHandler.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","doc","document","the","querySelector","bind","all","querySelectorAll","animation","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","callback","setTimeout","getElemOffset","elem","height","offsetHeight","top","isNaN","offsetTop","offsetParent","isMobile","Android","navigator","userAgent","match","BlackBerry","iOS","Opera","Windows","any","Symbol","iterator","definition","listener","fns","hack","documentElement","doScroll","loaded","test","readyState","addEventListener","removeEventListener","shift","fn","push","polyfillIntersectionObserver","IntersectionObserverEntry","entry","this","time","target","rootBounds","boundingClientRect","intersectionRect","getEmptyRect","isIntersecting","targetRect","targetArea","width","intersectionArea","intersectionRatio","IntersectionObserver","opt_options","options","Error","root","nodeType","_checkForIntersections","throttle","THROTTLE_TIMEOUT","_callback","_observationTargets","_queuedEntries","_rootMarginValues","_parseRootMargin","rootMargin","thresholds","_initThresholds","threshold","map","margin","unit","join","now","performance","timeout","timer","addEvent","node","event","opt_useCapture","attachEvent","removeEvent","detatchEvent","computeRectIntersection","rect1","rect2","Math","max","bottom","min","left","right","getBoundingClientRect","el","rect","err","containsDeep","parent","child","getParentNode","parentNode","host","registry","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","some","item","element","_registerInstance","_monitorIntersections","unobserve","filter","length","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","slice","opt_threshold","Array","isArray","sort","t","a","opt_rootMargin","marginString","margins","split","parts","exec","parseFloat","_monitoringIntersections","_monitoringInterval","setInterval","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","forEach","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","newEntry","_hasCrossedThreshold","getComputedStyle","display","atRoot","parentRect","parentComputedStyle","body","overflow","html","clientWidth","clientHeight","_expandRectByRootMargin","newRect","oldRatio","newRatio","indexOf","index","splice","default","_webfontloader","_webfontloader2","obj","fonts","load","google","families","__WEBPACK_AMD_DEFINE_RESULT__","aa","b","apply","arguments","ba","unshift","Function","toString","ca","createElement","e","style","cssText","setAttribute","appendChild","createTextNode","u","getElementsByTagName","insertBefore","lastChild","v","removeChild","w","className","f","g","replace","y","ea","location","hostname","z","rel","href","media","da","onload","onerror","A","src","onreadystatechange","tagName","B","C","D","E","F","G","parseInt","fa","H","I","J","ga","substr","toLowerCase","ha","h","j","events","classes","ia","K","L","ja","ka","M","aria-hidden","N","O","P","Q","T","S","la","R","U","offsetWidth","serif","q","V","ma","W","na","oa","qa","k","r","x","X","FontFace","xa","vendor","start","pa","ra","sa","ta","ua","va","pop","wa","encodeURIComponent","ya","Da","Ca","Ba","Aa","za","Ea","Ga","Ha","Date","Promise","then","race","clearTimeout","context","fontfamily","fontStyle","fontWeight","projectId","version","api","id","urls","testStrings","latin","latin-ext","cyrillic","greek","khmer","Hanuman","thin","extralight","extra-light","ultralight","ultra-light","light","regular","book","medium","semi-bold","semibold","demi-bold","demibold","bold","extra-bold","extrabold","ultra-bold","ultrabold","black","heavy","italic","normal","Fa","Arimo","Cousine","Tinos","text","Typekit","config","async","__webfontfontdeckmodule__","weight","Y","custom","fontdeck","monotype","typekit","Z","undefined","lazzyLoad","onIntersection","entries","scroll","preloadImage","_polyfillIntersectionObserver2","lazys","_utils","img","dataset","lazy","_polyfillIntersectionObserver","_interopRequireDefault","_fontLoader","_domready","_domready2","_Tabs","_Tabs2","_scrollHandler","_scrollHandler2","_lazzyLoad","_lazzyLoad2","header","_","classList","toggle","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","props","descriptor","writable","key","protoProps","staticProps","Tabs","cnt","triggers","tabs","controler","init","_this","trigger","selector","tab","tabIt","updateHash","hash","active","add","inactive","remove","scrollHandler","distance","onScroll"],"mappings":"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","file":"solution.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 12);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar doc = document;\nvar the = doc.querySelector.bind(doc);\nvar all = doc.querySelectorAll.bind(doc);\n\n// Detect request animation frame\nvar animation = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame ||\n// IE Fallback, you can even fallback to onscroll\nfunction (callback) {\n window.setTimeout(callback, 1000 / 60);\n};\n\nvar getElemOffset = function getElemOffset(elem) {\n\n // Width and height of container or element\n /// const width = elem.offsetWidth\n var height = elem.offsetHeight;\n\n // Default top and left position of container or element\n var top = 0;\n //let left = 0\n\n // Get total distance of container or element to document's top and left origin\n do {\n if (!isNaN(elem.offsetTop)) {\n top += elem.offsetTop;\n }\n // if (!isNaN(elem.offsetLeft)) {\n // left += elem.offsetLeft\n // }\n } while ((elem = elem.offsetParent) !== null);\n\n // Return dimensions and position\n return { height: height, top: top };\n};\n\n/**\n * @desc Check if is mobile or not\n */\nvar isMobile = {\n Android: function Android() {\n return navigator.userAgent.match(/Android/i);\n },\n BlackBerry: function BlackBerry() {\n return navigator.userAgent.match(/BlackBerry/i);\n },\n iOS: function iOS() {\n return navigator.userAgent.match(/iPhone|iPad|iPod/i);\n },\n Opera: function Opera() {\n return navigator.userAgent.match(/Opera Mini/i);\n },\n Windows: function Windows() {\n return navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/WPDesktop/i);\n },\n any: function any() {\n return isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows();\n }\n};\n\nexports.doc = doc;\nexports.the = the;\nexports.all = all;\nexports.animation = animation;\nexports.getElemOffset = getElemOffset;\nexports.isMobile = isMobile;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n */\n!function (name, definition) {\n\n if (true) module.exports = definition();else if (typeof define == 'function' && _typeof(define.amd) == 'object') define(definition);else this[name] = definition();\n}('domready', function () {\n\n var fns = [],\n _listener,\n doc = document,\n hack = doc.documentElement.doScroll,\n domContentLoaded = 'DOMContentLoaded',\n loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n if (!loaded) doc.addEventListener(domContentLoaded, _listener = function listener() {\n doc.removeEventListener(domContentLoaded, _listener);\n loaded = 1;\n while (_listener = fns.shift()) {\n _listener();\n }\n });\n\n return function (fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = polyfillIntersectionObserver;\n/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n\n// (function(window, document) {\n// 'use strict'\n\nfunction polyfillIntersectionObserver() {\n\n // Exits early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function get() {\n return this.intersectionRatio > 0;\n }\n });\n }\n\n return;\n }\n\n /**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observering a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\n var registry = [];\n\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function IntersectionObserverEntry(entry) {\n\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n this.intersectionRatio = intersectionArea / targetArea;\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n }\n\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n function IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function (margin) {\n return margin.value + margin.unit;\n }).join(' ');\n }\n\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.observe = function (target) {\n\n var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({ element: target, entry: null });\n this._monitorIntersections();\n this._checkForIntersections();\n };\n\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = this._observationTargets.filter(function (item) {\n\n return item.element != target;\n });\n\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n };\n\n /**\n * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n };\n\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n };\n\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function (t, i, a) {\n\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n\n return t !== a[i - 1];\n });\n };\n\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function (margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return { value: parseFloat(parts[1]), unit: parts[2] };\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n };\n\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibilty state is visible.\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\n } else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(this.root || document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n };\n\n /**\n * Stops polling for intersection changes.\n * @private\n */\n IntersectionObserver.prototype._unmonitorIntersections = function () {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n };\n\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n IntersectionObserver.prototype._checkForIntersections = function () {\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function (item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget && this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n };\n\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n\n var parentComputedStyle = parent.nodeType == 1 ? window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body && parent != document.documentElement && parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n if (!intersectionRect) break;\n }\n\n parent = getParentNode(parent);\n }\n return intersectionRect;\n };\n\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n IntersectionObserver.prototype._getRootRect = function () {\n\n var rootRect = void 0;\n\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n\n return this._expandRectByRootMargin(rootRect);\n };\n\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n };\n\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n IntersectionObserver.prototype._hasCrossedThreshold = function (oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n };\n\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\n };\n\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n };\n\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n };\n\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n function now() {\n return window.performance && performance.now && performance.now();\n }\n\n /**\n * Throttles a function and delays its executiong, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\n function throttle(fn, timeout) {\n var timer = null;\n\n return function () {\n if (!timer) {\n timer = setTimeout(function () {\n fn();\n timer = null;\n }, timeout);\n }\n };\n }\n\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n function addEvent(node, event, fn, opt_useCapture) {\n\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n }\n\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n }\n\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\n function computeRectIntersection(rect1, rect2) {\n\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return width >= 0 && height >= 0 && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\n function getBoundingClientRect(el) {\n\n var rect = void 0;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n }\n\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n\n /**\n * Checks to see if a parent element contains a child elemnt (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n function containsDeep(parent, child) {\n\n var node = child;\n\n while (node) {\n if (node == parent) return true;\n node = getParentNode(node);\n }\n\n return false;\n }\n\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n function getParentNode(node) {\n\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n }\n\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n}\n//}(window, document))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _webfontloader = __webpack_require__(4);\n\nvar _webfontloader2 = _interopRequireDefault(_webfontloader);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fonts = _webfontloader2.default.load({\n google: {\n families: ['Poppins:100,300,400,700']\n }\n});\n\nexports.default = fonts;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* Web Font Loader v1.6.28 - (c) Adobe Systems, Google. License: Apache 2.0 */(function () {\n function aa(a, b, c) {\n return a.call.apply(a.bind, arguments);\n }function ba(a, b, c) {\n if (!a) throw Error();if (2 < arguments.length) {\n var d = Array.prototype.slice.call(arguments, 2);return function () {\n var c = Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c, d);return a.apply(b, c);\n };\n }return function () {\n return a.apply(b, arguments);\n };\n }function p(a, b, c) {\n p = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf(\"native code\") ? aa : ba;return p.apply(null, arguments);\n }var q = Date.now || function () {\n return +new Date();\n };function ca(a, b) {\n this.a = a;this.o = b || a;this.c = this.o.document;\n }var da = !!window.FontFace;function t(a, b, c, d) {\n b = a.c.createElement(b);if (c) for (var e in c) {\n c.hasOwnProperty(e) && (\"style\" == e ? b.style.cssText = c[e] : b.setAttribute(e, c[e]));\n }d && b.appendChild(a.c.createTextNode(d));return b;\n }function u(a, b, c) {\n a = a.c.getElementsByTagName(b)[0];a || (a = document.documentElement);a.insertBefore(c, a.lastChild);\n }function v(a) {\n a.parentNode && a.parentNode.removeChild(a);\n }\n function w(a, b, c) {\n b = b || [];c = c || [];for (var d = a.className.split(/\\s+/), e = 0; e < b.length; e += 1) {\n for (var f = !1, g = 0; g < d.length; g += 1) {\n if (b[e] === d[g]) {\n f = !0;break;\n }\n }f || d.push(b[e]);\n }b = [];for (e = 0; e < d.length; e += 1) {\n f = !1;for (g = 0; g < c.length; g += 1) {\n if (d[e] === c[g]) {\n f = !0;break;\n }\n }f || b.push(d[e]);\n }a.className = b.join(\" \").replace(/\\s+/g, \" \").replace(/^\\s+|\\s+$/, \"\");\n }function y(a, b) {\n for (var c = a.className.split(/\\s+/), d = 0, e = c.length; d < e; d++) {\n if (c[d] == b) return !0;\n }return !1;\n }\n function ea(a) {\n return a.o.location.hostname || a.a.location.hostname;\n }function z(a, b, c) {\n function d() {\n m && e && f && (m(g), m = null);\n }b = t(a, \"link\", { rel: \"stylesheet\", href: b, media: \"all\" });var e = !1,\n f = !0,\n g = null,\n m = c || null;da ? (b.onload = function () {\n e = !0;d();\n }, b.onerror = function () {\n e = !0;g = Error(\"Stylesheet failed to load\");d();\n }) : setTimeout(function () {\n e = !0;d();\n }, 0);u(a, \"head\", b);\n }\n function A(a, b, c, d) {\n var e = a.c.getElementsByTagName(\"head\")[0];if (e) {\n var f = t(a, \"script\", { src: b }),\n g = !1;f.onload = f.onreadystatechange = function () {\n g || this.readyState && \"loaded\" != this.readyState && \"complete\" != this.readyState || (g = !0, c && c(null), f.onload = f.onreadystatechange = null, \"HEAD\" == f.parentNode.tagName && e.removeChild(f));\n };e.appendChild(f);setTimeout(function () {\n g || (g = !0, c && c(Error(\"Script load timeout\")));\n }, d || 5E3);return f;\n }return null;\n };function B() {\n this.a = 0;this.c = null;\n }function C(a) {\n a.a++;return function () {\n a.a--;D(a);\n };\n }function E(a, b) {\n a.c = b;D(a);\n }function D(a) {\n 0 == a.a && a.c && (a.c(), a.c = null);\n };function F(a) {\n this.a = a || \"-\";\n }F.prototype.c = function (a) {\n for (var b = [], c = 0; c < arguments.length; c++) {\n b.push(arguments[c].replace(/[\\W_]+/g, \"\").toLowerCase());\n }return b.join(this.a);\n };function G(a, b) {\n this.c = a;this.f = 4;this.a = \"n\";var c = (b || \"n4\").match(/^([nio])([1-9])$/i);c && (this.a = c[1], this.f = parseInt(c[2], 10));\n }function fa(a) {\n return H(a) + \" \" + (a.f + \"00\") + \" 300px \" + I(a.c);\n }function I(a) {\n var b = [];a = a.split(/,\\s*/);for (var c = 0; c < a.length; c++) {\n var d = a[c].replace(/['\"]/g, \"\");-1 != d.indexOf(\" \") || /^\\d/.test(d) ? b.push(\"'\" + d + \"'\") : b.push(d);\n }return b.join(\",\");\n }function J(a) {\n return a.a + a.f;\n }function H(a) {\n var b = \"normal\";\"o\" === a.a ? b = \"oblique\" : \"i\" === a.a && (b = \"italic\");return b;\n }\n function ga(a) {\n var b = 4,\n c = \"n\",\n d = null;a && ((d = a.match(/(normal|oblique|italic)/i)) && d[1] && (c = d[1].substr(0, 1).toLowerCase()), (d = a.match(/([1-9]00|normal|bold)/i)) && d[1] && (/bold/i.test(d[1]) ? b = 7 : /[1-9]00/.test(d[1]) && (b = parseInt(d[1].substr(0, 1), 10))));return c + b;\n };function ha(a, b) {\n this.c = a;this.f = a.o.document.documentElement;this.h = b;this.a = new F(\"-\");this.j = !1 !== b.events;this.g = !1 !== b.classes;\n }function ia(a) {\n a.g && w(a.f, [a.a.c(\"wf\", \"loading\")]);K(a, \"loading\");\n }function L(a) {\n if (a.g) {\n var b = y(a.f, a.a.c(\"wf\", \"active\")),\n c = [],\n d = [a.a.c(\"wf\", \"loading\")];b || c.push(a.a.c(\"wf\", \"inactive\"));w(a.f, c, d);\n }K(a, \"inactive\");\n }function K(a, b, c) {\n if (a.j && a.h[b]) if (c) a.h[b](c.c, J(c));else a.h[b]();\n };function ja() {\n this.c = {};\n }function ka(a, b, c) {\n var d = [],\n e;for (e in b) {\n if (b.hasOwnProperty(e)) {\n var f = a.c[e];f && d.push(f(b[e], c));\n }\n }return d;\n };function M(a, b) {\n this.c = a;this.f = b;this.a = t(this.c, \"span\", { \"aria-hidden\": \"true\" }, this.f);\n }function N(a) {\n u(a.c, \"body\", a.a);\n }function O(a) {\n return \"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:\" + I(a.c) + \";\" + (\"font-style:\" + H(a) + \";font-weight:\" + (a.f + \"00\") + \";\");\n };function P(a, b, c, d, e, f) {\n this.g = a;this.j = b;this.a = d;this.c = c;this.f = e || 3E3;this.h = f || void 0;\n }P.prototype.start = function () {\n var a = this.c.o.document,\n b = this,\n c = q(),\n d = new Promise(function (d, e) {\n function f() {\n q() - c >= b.f ? e() : a.fonts.load(fa(b.a), b.h).then(function (a) {\n 1 <= a.length ? d() : setTimeout(f, 25);\n }, function () {\n e();\n });\n }f();\n }),\n e = null,\n f = new Promise(function (a, d) {\n e = setTimeout(d, b.f);\n });Promise.race([f, d]).then(function () {\n e && (clearTimeout(e), e = null);b.g(b.a);\n }, function () {\n b.j(b.a);\n });\n };function Q(a, b, c, d, e, f, g) {\n this.v = a;this.B = b;this.c = c;this.a = d;this.s = g || \"BESbswy\";this.f = {};this.w = e || 3E3;this.u = f || null;this.m = this.j = this.h = this.g = null;this.g = new M(this.c, this.s);this.h = new M(this.c, this.s);this.j = new M(this.c, this.s);this.m = new M(this.c, this.s);a = new G(this.a.c + \",serif\", J(this.a));a = O(a);this.g.a.style.cssText = a;a = new G(this.a.c + \",sans-serif\", J(this.a));a = O(a);this.h.a.style.cssText = a;a = new G(\"serif\", J(this.a));a = O(a);this.j.a.style.cssText = a;a = new G(\"sans-serif\", J(this.a));a = O(a);this.m.a.style.cssText = a;N(this.g);N(this.h);N(this.j);N(this.m);\n }var R = { D: \"serif\", C: \"sans-serif\" },\n S = null;function T() {\n if (null === S) {\n var a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);S = !!a && (536 > parseInt(a[1], 10) || 536 === parseInt(a[1], 10) && 11 >= parseInt(a[2], 10));\n }return S;\n }Q.prototype.start = function () {\n this.f.serif = this.j.a.offsetWidth;this.f[\"sans-serif\"] = this.m.a.offsetWidth;this.A = q();U(this);\n };\n function la(a, b, c) {\n for (var d in R) {\n if (R.hasOwnProperty(d) && b === a.f[R[d]] && c === a.f[R[d]]) return !0;\n }return !1;\n }function U(a) {\n var b = a.g.a.offsetWidth,\n c = a.h.a.offsetWidth,\n d;(d = b === a.f.serif && c === a.f[\"sans-serif\"]) || (d = T() && la(a, b, c));d ? q() - a.A >= a.w ? T() && la(a, b, c) && (null === a.u || a.u.hasOwnProperty(a.a.c)) ? V(a, a.v) : V(a, a.B) : ma(a) : V(a, a.v);\n }function ma(a) {\n setTimeout(p(function () {\n U(this);\n }, a), 50);\n }function V(a, b) {\n setTimeout(p(function () {\n v(this.g.a);v(this.h.a);v(this.j.a);v(this.m.a);b(this.a);\n }, a), 0);\n };function W(a, b, c) {\n this.c = a;this.a = b;this.f = 0;this.m = this.j = !1;this.s = c;\n }var X = null;W.prototype.g = function (a) {\n var b = this.a;b.g && w(b.f, [b.a.c(\"wf\", a.c, J(a).toString(), \"active\")], [b.a.c(\"wf\", a.c, J(a).toString(), \"loading\"), b.a.c(\"wf\", a.c, J(a).toString(), \"inactive\")]);K(b, \"fontactive\", a);this.m = !0;na(this);\n };\n W.prototype.h = function (a) {\n var b = this.a;if (b.g) {\n var c = y(b.f, b.a.c(\"wf\", a.c, J(a).toString(), \"active\")),\n d = [],\n e = [b.a.c(\"wf\", a.c, J(a).toString(), \"loading\")];c || d.push(b.a.c(\"wf\", a.c, J(a).toString(), \"inactive\"));w(b.f, d, e);\n }K(b, \"fontinactive\", a);na(this);\n };function na(a) {\n 0 == --a.f && a.j && (a.m ? (a = a.a, a.g && w(a.f, [a.a.c(\"wf\", \"active\")], [a.a.c(\"wf\", \"loading\"), a.a.c(\"wf\", \"inactive\")]), K(a, \"active\")) : L(a.a));\n };function oa(a) {\n this.j = a;this.a = new ja();this.h = 0;this.f = this.g = !0;\n }oa.prototype.load = function (a) {\n this.c = new ca(this.j, a.context || this.j);this.g = !1 !== a.events;this.f = !1 !== a.classes;pa(this, new ha(this.c, a), a);\n };\n function qa(a, b, c, d, e) {\n var f = 0 == --a.h;(a.f || a.g) && setTimeout(function () {\n var a = e || null,\n m = d || null || {};if (0 === c.length && f) L(b.a);else {\n b.f += c.length;f && (b.j = f);var h,\n l = [];for (h = 0; h < c.length; h++) {\n var k = c[h],\n n = m[k.c],\n r = b.a,\n x = k;r.g && w(r.f, [r.a.c(\"wf\", x.c, J(x).toString(), \"loading\")]);K(r, \"fontloading\", x);r = null;if (null === X) if (window.FontFace) {\n var x = /Gecko.*Firefox\\/(\\d+)/.exec(window.navigator.userAgent),\n xa = /OS X.*Version\\/10\\..*Safari/.exec(window.navigator.userAgent) && /Apple/.exec(window.navigator.vendor);\n X = x ? 42 < parseInt(x[1], 10) : xa ? !1 : !0;\n } else X = !1;X ? r = new P(p(b.g, b), p(b.h, b), b.c, k, b.s, n) : r = new Q(p(b.g, b), p(b.h, b), b.c, k, b.s, a, n);l.push(r);\n }for (h = 0; h < l.length; h++) {\n l[h].start();\n }\n }\n }, 0);\n }function pa(a, b, c) {\n var d = [],\n e = c.timeout;ia(b);var d = ka(a.a, c, a.c),\n f = new W(a.c, b, e);a.h = d.length;b = 0;for (c = d.length; b < c; b++) {\n d[b].load(function (b, d, c) {\n qa(a, f, b, d, c);\n });\n }\n };function ra(a, b) {\n this.c = a;this.a = b;\n }\n ra.prototype.load = function (a) {\n function b() {\n if (f[\"__mti_fntLst\" + d]) {\n var c = f[\"__mti_fntLst\" + d](),\n e = [],\n h;if (c) for (var l = 0; l < c.length; l++) {\n var k = c[l].fontfamily;void 0 != c[l].fontStyle && void 0 != c[l].fontWeight ? (h = c[l].fontStyle + c[l].fontWeight, e.push(new G(k, h))) : e.push(new G(k));\n }a(e);\n } else setTimeout(function () {\n b();\n }, 50);\n }var c = this,\n d = c.a.projectId,\n e = c.a.version;if (d) {\n var f = c.c.o;A(this.c, (c.a.api || \"https://fast.fonts.net/jsapi\") + \"/\" + d + \".js\" + (e ? \"?v=\" + e : \"\"), function (e) {\n e ? a([]) : (f[\"__MonotypeConfiguration__\" + d] = function () {\n return c.a;\n }, b());\n }).id = \"__MonotypeAPIScript__\" + d;\n } else a([]);\n };function sa(a, b) {\n this.c = a;this.a = b;\n }sa.prototype.load = function (a) {\n var b,\n c,\n d = this.a.urls || [],\n e = this.a.families || [],\n f = this.a.testStrings || {},\n g = new B();b = 0;for (c = d.length; b < c; b++) {\n z(this.c, d[b], C(g));\n }var m = [];b = 0;for (c = e.length; b < c; b++) {\n if (d = e[b].split(\":\"), d[1]) for (var h = d[1].split(\",\"), l = 0; l < h.length; l += 1) {\n m.push(new G(d[0], h[l]));\n } else m.push(new G(d[0]));\n }E(g, function () {\n a(m, f);\n });\n };function ta(a, b) {\n a ? this.c = a : this.c = ua;this.a = [];this.f = [];this.g = b || \"\";\n }var ua = \"https://fonts.googleapis.com/css\";function va(a, b) {\n for (var c = b.length, d = 0; d < c; d++) {\n var e = b[d].split(\":\");3 == e.length && a.f.push(e.pop());var f = \"\";2 == e.length && \"\" != e[1] && (f = \":\");a.a.push(e.join(f));\n }\n }\n function wa(a) {\n if (0 == a.a.length) throw Error(\"No fonts to load!\");if (-1 != a.c.indexOf(\"kit=\")) return a.c;for (var b = a.a.length, c = [], d = 0; d < b; d++) {\n c.push(a.a[d].replace(/ /g, \"+\"));\n }b = a.c + \"?family=\" + c.join(\"%7C\");0 < a.f.length && (b += \"&subset=\" + a.f.join(\",\"));0 < a.g.length && (b += \"&text=\" + encodeURIComponent(a.g));return b;\n };function ya(a) {\n this.f = a;this.a = [];this.c = {};\n }\n var za = { latin: \"BESbswy\", \"latin-ext\": \"\\xE7\\xF6\\xFC\\u011F\\u015F\", cyrillic: \"\\u0439\\u044F\\u0416\", greek: \"\\u03B1\\u03B2\\u03A3\", khmer: \"\\u1780\\u1781\\u1782\", Hanuman: \"\\u1780\\u1781\\u1782\" },\n Aa = { thin: \"1\", extralight: \"2\", \"extra-light\": \"2\", ultralight: \"2\", \"ultra-light\": \"2\", light: \"3\", regular: \"4\", book: \"4\", medium: \"5\", \"semi-bold\": \"6\", semibold: \"6\", \"demi-bold\": \"6\", demibold: \"6\", bold: \"7\", \"extra-bold\": \"8\", extrabold: \"8\", \"ultra-bold\": \"8\", ultrabold: \"8\", black: \"9\", heavy: \"9\", l: \"3\", r: \"4\", b: \"7\" },\n Ba = { i: \"i\", italic: \"i\", n: \"n\", normal: \"n\" },\n Ca = /^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;\n function Da(a) {\n for (var b = a.f.length, c = 0; c < b; c++) {\n var d = a.f[c].split(\":\"),\n e = d[0].replace(/\\+/g, \" \"),\n f = [\"n4\"];if (2 <= d.length) {\n var g;var m = d[1];g = [];if (m) for (var m = m.split(\",\"), h = m.length, l = 0; l < h; l++) {\n var k;k = m[l];if (k.match(/^[\\w-]+$/)) {\n var n = Ca.exec(k.toLowerCase());if (null == n) k = \"\";else {\n k = n[2];k = null == k || \"\" == k ? \"n\" : Ba[k];n = n[1];if (null == n || \"\" == n) n = \"4\";else var r = Aa[n],\n n = r ? r : isNaN(n) ? \"4\" : n.substr(0, 1);k = [k, n].join(\"\");\n }\n } else k = \"\";k && g.push(k);\n }0 < g.length && (f = g);3 == d.length && (d = d[2], g = [], d = d ? d.split(\",\") : g, 0 < d.length && (d = za[d[0]]) && (a.c[e] = d));\n }a.c[e] || (d = za[e]) && (a.c[e] = d);for (d = 0; d < f.length; d += 1) {\n a.a.push(new G(e, f[d]));\n }\n }\n };function Ea(a, b) {\n this.c = a;this.a = b;\n }var Fa = { Arimo: !0, Cousine: !0, Tinos: !0 };Ea.prototype.load = function (a) {\n var b = new B(),\n c = this.c,\n d = new ta(this.a.api, this.a.text),\n e = this.a.families;va(d, e);var f = new ya(e);Da(f);z(c, wa(d), C(b));E(b, function () {\n a(f.a, f.c, Fa);\n });\n };function Ga(a, b) {\n this.c = a;this.a = b;\n }Ga.prototype.load = function (a) {\n var b = this.a.id,\n c = this.c.o;b ? A(this.c, (this.a.api || \"https://use.typekit.net\") + \"/\" + b + \".js\", function (b) {\n if (b) a([]);else if (c.Typekit && c.Typekit.config && c.Typekit.config.fn) {\n b = c.Typekit.config.fn;for (var e = [], f = 0; f < b.length; f += 2) {\n for (var g = b[f], m = b[f + 1], h = 0; h < m.length; h++) {\n e.push(new G(g, m[h]));\n }\n }try {\n c.Typekit.load({ events: !1, classes: !1, async: !0 });\n } catch (l) {}a(e);\n }\n }, 2E3) : a([]);\n };function Ha(a, b) {\n this.c = a;this.f = b;this.a = [];\n }Ha.prototype.load = function (a) {\n var b = this.f.id,\n c = this.c.o,\n d = this;b ? (c.__webfontfontdeckmodule__ || (c.__webfontfontdeckmodule__ = {}), c.__webfontfontdeckmodule__[b] = function (b, c) {\n for (var g = 0, m = c.fonts.length; g < m; ++g) {\n var h = c.fonts[g];d.a.push(new G(h.name, ga(\"font-weight:\" + h.weight + \";font-style:\" + h.style)));\n }a(d.a);\n }, A(this.c, (this.f.api || \"https://f.fontdeck.com/s/css/js/\") + ea(this.c) + \"/\" + b + \".js\", function (b) {\n b && a([]);\n })) : a([]);\n };var Y = new oa(window);Y.a.c.custom = function (a, b) {\n return new sa(b, a);\n };Y.a.c.fontdeck = function (a, b) {\n return new Ha(b, a);\n };Y.a.c.monotype = function (a, b) {\n return new ra(b, a);\n };Y.a.c.typekit = function (a, b) {\n return new Ga(b, a);\n };Y.a.c.google = function (a, b) {\n return new Ea(b, a);\n };var Z = { load: p(Y.load, Y) }; true ? !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return Z;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : \"undefined\" !== typeof module && module.exports ? module.exports = Z : (window.WebFont = Z, window.WebFontConfig && Y.load(window.WebFontConfig));\n})();\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = lazzyLoad;\n\nvar _utils = __webpack_require__(0);\n\nvar _polyfillIntersectionObserver = __webpack_require__(2);\n\nvar _polyfillIntersectionObserver2 = _interopRequireDefault(_polyfillIntersectionObserver);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// preload images\nfunction lazzyLoad() {\n\n (0, _polyfillIntersectionObserver2.default)();\n\n var lazys = (0, _utils.all)('.lazzy');\n\n var preloadImage = function preloadImage(img) {\n return img.src = img.dataset.src;\n };\n\n var config = {\n rootMargin: '50px 0px',\n threshold: 0.01\n };\n\n var scroll = new IntersectionObserver(onIntersection, config);\n\n lazys.forEach(function (lazy) {\n return scroll.observe(lazy);\n });\n\n function onIntersection(entries) {\n\n // Loop through the entries\n entries.forEach(function (entry) {\n\n // Are we in viewport?\n if (entry.intersectionRatio > 0) {\n scroll.unobserve(entry.target);\n preloadImage(entry.target);\n }\n });\n }\n}\n\n/***/ }),\n/* 6 */,\n/* 7 */,\n/* 8 */,\n/* 9 */,\n/* 10 */,\n/* 11 */,\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _fontLoader = __webpack_require__(3);\n\nvar _fontLoader2 = _interopRequireDefault(_fontLoader);\n\nvar _utils = __webpack_require__(0);\n\nvar _domready = __webpack_require__(1);\n\nvar _domready2 = _interopRequireDefault(_domready);\n\nvar _Tabs = __webpack_require__(13);\n\nvar _Tabs2 = _interopRequireDefault(_Tabs);\n\nvar _scrollHandler = __webpack_require__(14);\n\nvar _scrollHandler2 = _interopRequireDefault(_scrollHandler);\n\nvar _lazzyLoad = __webpack_require__(5);\n\nvar _lazzyLoad2 = _interopRequireDefault(_lazzyLoad);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _domready2.default)(function () {\n new _Tabs2.default();\n (0, _lazzyLoad2.default)();\n (0, _scrollHandler2.default)('.pushs', -50);\n\n var header = (0, _utils.the)('#header');\n var hamburger = (0, _utils.the)('#hamburger');\n\n hamburger.addEventListener('click', function (_) {\n header.classList.toggle('menu-open');\n });\n});\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _utils = __webpack_require__(0);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tabs = function () {\n function Tabs() {\n _classCallCheck(this, Tabs);\n\n this.cnt = (0, _utils.the)('.tabs') || false;\n\n if (!this.cnt) return;\n\n this.triggers = this.cnt.querySelectorAll('.tabber li');\n this.tabs = this.cnt.querySelectorAll('.tab');\n this.controler = [];\n this.init();\n }\n\n _createClass(Tabs, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n this.triggers.forEach(function (trigger) {\n\n var selector = trigger.dataset.tab;\n var tab = (0, _utils.the)('.tab[data-tab=' + selector + ']');\n _this.controler.push({ trigger: trigger, tab: tab, selector: selector });\n\n trigger.addEventListener('click', function () {\n _this.tabIt(selector);\n _this.updateHash(selector);\n });\n });\n\n var hash = window.location.hash || false;\n\n if (hash) {\n var selector = hash.replace(\"#\", \"\");\n this.tabIt(selector);\n }\n }\n }, {\n key: 'updateHash',\n value: function updateHash(selector) {\n window.location.hash = selector;\n }\n }, {\n key: 'tabIt',\n value: function tabIt(selector) {\n\n this.controler.filter(function (e) {\n return e.selector === selector;\n }).forEach(function (active) {\n active.tab.classList.add('active');\n active.trigger.classList.add('active');\n });\n\n this.controler.filter(function (e) {\n return e.selector !== selector;\n }).forEach(function (inactive) {\n inactive.tab.classList.remove('active');\n inactive.trigger.classList.remove('active');\n });\n }\n }]);\n\n return Tabs;\n}();\n\nexports.default = Tabs;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scrollHandler;\n\nvar _utils = __webpack_require__(0);\n\nvar _polyfillIntersectionObserver = __webpack_require__(2);\n\nvar _polyfillIntersectionObserver2 = _interopRequireDefault(_polyfillIntersectionObserver);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar onScroll = function onScroll(element) {\n return element.classList.add('visible');\n};\n\nfunction scrollHandler(element, distance) {\n\n (0, _polyfillIntersectionObserver2.default)();\n\n var lazys = (0, _utils.all)(element);\n\n var config = {\n rootMargin: distance + 'px 0px',\n threshold: 0.01\n };\n\n var scroll = new IntersectionObserver(onIntersection, config);\n\n lazys.forEach(function (lazy) {\n return scroll.observe(lazy);\n });\n\n function onIntersection(entries) {\n\n // Loop through the entries\n entries.forEach(function (entry) {\n\n // Are we in viewport?\n if (entry.intersectionRatio > 0) {\n scroll.unobserve(entry.target);\n onScroll(entry.target);\n }\n });\n }\n}\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// solution.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9615a939a7b77d7991a1","const doc = document\nconst the = doc.querySelector.bind(doc)\nconst all = doc.querySelectorAll.bind(doc)\n\n// Detect request animation frame\nconst animation = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n // IE Fallback, you can even fallback to onscroll\n function(callback) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n\nconst getElemOffset = elem => {\n\n // Width and height of container or element\n /// const width = elem.offsetWidth\n const height = elem.offsetHeight\n\n // Default top and left position of container or element\n let top = 0\n //let left = 0\n\n // Get total distance of container or element to document's top and left origin\n do {\n if (!isNaN(elem.offsetTop)) {\n top += elem.offsetTop\n }\n // if (!isNaN(elem.offsetLeft)) {\n // left += elem.offsetLeft\n // }\n } while ((elem = elem.offsetParent) !== null)\n\n // Return dimensions and position\n return {height,top}\n\n}\n\n\n/**\n * @desc Check if is mobile or not\n */\nconst isMobile = {\n Android: function () {\n return navigator.userAgent.match(/Android/i);\n },\n BlackBerry: function () {\n return navigator.userAgent.match(/BlackBerry/i);\n },\n iOS: function () {\n return navigator.userAgent.match(/iPhone|iPad|iPod/i);\n },\n Opera: function () {\n return navigator.userAgent.match(/Opera Mini/i);\n },\n Windows: function () {\n return navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/WPDesktop/i);\n },\n any: function () {\n return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());\n }\n}\n\nexport { doc, the, all, animation, getElemOffset, isMobile}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/js/utils.js","/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n */\n!function (name, definition) {\n\n if (typeof module != 'undefined') module.exports = definition()\n else if (typeof define == 'function' && typeof define.amd == 'object') define(definition)\n else this[name] = definition()\n\n}('domready', function () {\n\n var fns = [], listener\n , doc = document\n , hack = doc.documentElement.doScroll\n , domContentLoaded = 'DOMContentLoaded'\n , loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState)\n\n\n if (!loaded)\n doc.addEventListener(domContentLoaded, listener = function () {\n doc.removeEventListener(domContentLoaded, listener)\n loaded = 1\n while (listener = fns.shift()) listener()\n })\n\n return function (fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn)\n }\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/domready/ready.js","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n\n// (function(window, document) {\n// 'use strict'\n\nexport default function polyfillIntersectionObserver(){\n\n // Exits early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n if ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0\n }\n })\n }\n\n return\n }\n\n /**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observering a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\n const registry = []\n\n\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function IntersectionObserverEntry(entry) {\n\n this.time = entry.time\n this.target = entry.target\n this.rootBounds = entry.rootBounds\n this.boundingClientRect = entry.boundingClientRect\n this.intersectionRect = entry.intersectionRect || getEmptyRect()\n this.isIntersecting = !!entry.intersectionRect\n\n // Calculates the intersection ratio.\n const targetRect = this.boundingClientRect\n const targetArea = targetRect.width * targetRect.height\n const intersectionRect = this.intersectionRect\n const intersectionArea = intersectionRect.width * intersectionRect.height\n\n // Sets intersection ratio.\n if (targetArea) {\n this.intersectionRatio = intersectionArea / targetArea\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0\n }\n }\n\n\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n function IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {}\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function')\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element')\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT)\n\n // Private properties.\n this._callback = callback\n this._observationTargets = []\n this._queuedEntries = []\n this._rootMarginValues = this._parseRootMargin(options.rootMargin)\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold)\n this.root = options.root || null\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit\n }).join(' ')\n }\n\n\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100\n\n\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n IntersectionObserver.prototype.POLL_INTERVAL = null\n\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true\n\n\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.observe = function(target) {\n\n const isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target\n })\n\n if (isTargetAlreadyObserved) {\n return\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element')\n }\n\n this._registerInstance()\n this._observationTargets.push({element: target, entry: null})\n this._monitorIntersections()\n this._checkForIntersections()\n\n }\n\n\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target\n })\n\n if (!this._observationTargets.length) {\n this._unmonitorIntersections()\n this._unregisterInstance()\n }\n\n }\n\n\n /**\n * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = []\n this._unmonitorIntersections()\n this._unregisterInstance()\n }\n\n\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n IntersectionObserver.prototype.takeRecords = function() {\n const records = this._queuedEntries.slice()\n this._queuedEntries = []\n return records\n }\n\n\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n IntersectionObserver.prototype._initThresholds = opt_threshold => {\n\n let threshold = opt_threshold || [0]\n if (!Array.isArray(threshold)) threshold = [threshold]\n\n return threshold.sort().filter( (t, i, a) => {\n\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively')\n }\n\n return t !== a[i - 1]\n\n })\n\n }\n\n\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\n IntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px'\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin)\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent')\n }\n return {value: parseFloat(parts[1]), unit: parts[2]}\n })\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0]\n margins[2] = margins[2] || margins[0]\n margins[3] = margins[3] || margins[1]\n\n return margins\n\n }\n\n\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibilty state is visible.\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL)\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true)\n addEvent(document, 'scroll', this._checkForIntersections, true)\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections)\n this._domObserver.observe(this.root || document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n })\n }\n }\n }\n }\n\n\n /**\n * Stops polling for intersection changes.\n * @private\n */\n IntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false\n\n clearInterval(this._monitoringInterval)\n this._monitoringInterval = null\n\n removeEvent(window, 'resize', this._checkForIntersections, true)\n removeEvent(document, 'scroll', this._checkForIntersections, true)\n\n if (this._domObserver) {\n this._domObserver.disconnect()\n this._domObserver = null\n }\n }\n }\n\n\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n IntersectionObserver.prototype._checkForIntersections = function() {\n\n const rootIsInDom = this._rootIsInDom()\n const rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect()\n\n this._observationTargets.forEach(function(item) {\n const target = item.element\n const targetRect = getBoundingClientRect(target)\n const rootContainsTarget = this._rootContainsTarget(target)\n const oldEntry = item.entry\n const intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect)\n\n const newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n })\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry)\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry)\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry)\n }\n }\n }, this)\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this)\n }\n }\n\n\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n IntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return\n\n const targetRect = getBoundingClientRect(target)\n let intersectionRect = targetRect\n let parent = getParentNode(target)\n let atRoot = false\n\n while (!atRoot) {\n let parentRect = null\n\n let parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {}\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return\n\n if (parent == this.root || parent == document) {\n atRoot = true\n parentRect = rootRect\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent)\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect)\n if (!intersectionRect) break\n }\n\n parent = getParentNode(parent)\n }\n return intersectionRect\n }\n\n\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n IntersectionObserver.prototype._getRootRect = function() {\n\n let rootRect\n\n if (this.root) {\n rootRect = getBoundingClientRect(this.root)\n } else {\n // Use / instead of window since scroll bars affect size.\n let html = document.documentElement\n let body = document.body\n\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n }\n }\n\n return this._expandRectByRootMargin(rootRect)\n\n }\n\n\n\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\n IntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n const margins = this._rootMarginValues.map( (margin, i) => {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100\n })\n\n const newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n }\n\n newRect.width = newRect.right - newRect.left\n newRect.height = newRect.bottom - newRect.top\n\n return newRect\n\n }\n\n\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n IntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n const oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1\n const newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return\n\n for (var i = 0; i < this.thresholds.length; i++) {\n const threshold = this.thresholds[i]\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true\n }\n }\n }\n\n\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n IntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root)\n }\n\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n IntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target)\n }\n\n\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this)\n }\n }\n\n\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function() {\n const index = registry.indexOf(this)\n if (index != -1) registry.splice(index, 1)\n }\n\n\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n function now() {\n return window.performance && performance.now && performance.now()\n }\n\n\n /**\n * Throttles a function and delays its executiong, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\n function throttle(fn, timeout) {\n let timer = null\n\n return function () {\n if (!timer) {\n timer = setTimeout( () => {\n fn()\n timer = null\n }, timeout)\n }\n }\n\n }\n\n\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n function addEvent(node, event, fn, opt_useCapture) {\n\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false)\n }\n\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn)\n }\n\n }\n\n\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false)\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn)\n }\n }\n\n\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\n function computeRectIntersection(rect1, rect2) {\n\n const top = Math.max(rect1.top, rect2.top)\n const bottom = Math.min(rect1.bottom, rect2.bottom)\n const left = Math.max(rect1.left, rect2.left)\n const right = Math.min(rect1.right, rect2.right)\n const width = right - left\n const height = bottom - top\n\n return (width >= 0 && height >= 0) && {\n top,\n bottom,\n left,\n right,\n width,\n height\n }\n\n }\n\n\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\n function getBoundingClientRect(el) {\n\n let rect\n\n try {\n rect = el.getBoundingClientRect()\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect()\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n }\n }\n return rect\n }\n\n\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n }\n }\n\n /**\n * Checks to see if a parent element contains a child elemnt (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n function containsDeep(parent, child) {\n\n let node = child\n\n while (node) {\n if (node == parent) return true\n node = getParentNode(node)\n }\n\n return false\n\n }\n\n\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n function getParentNode(node) {\n\n const parent = node.parentNode\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host\n }\n return parent\n }\n\n\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver\n window.IntersectionObserverEntry = IntersectionObserverEntry\n\n}\n//}(window, document))\n\n\n\n// WEBPACK FOOTER //\n// ./assets/js/vendors/polyfillIntersectionObserver.js","import WebFont from 'webfontloader'\n\nconst fonts = WebFont.load({\n google: {\n families: ['Poppins:100,300,400,700']\n }\n})\n\nexport default fonts\n\n\n\n// WEBPACK FOOTER //\n// ./assets/js/vendors/fontLoader.js","/* Web Font Loader v1.6.28 - (c) Adobe Systems, Google. License: Apache 2.0 */(function(){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?d():setTimeout(f,25)},function(){e()})}f()}),e=null,f=new Promise(function(a,d){e=setTimeout(d,b.f)});Promise.race([f,d]).then(function(){e&&(clearTimeout(e),e=null);b.g(b.a)},function(){b.j(b.a)})};function Q(a,b,c,d,e,f,g){this.v=a;this.B=b;this.c=c;this.a=d;this.s=g||\"BESbswy\";this.f={};this.w=e||3E3;this.u=f||null;this.m=this.j=this.h=this.g=null;this.g=new M(this.c,this.s);this.h=new M(this.c,this.s);this.j=new M(this.c,this.s);this.m=new M(this.c,this.s);a=new G(this.a.c+\",serif\",J(this.a));a=O(a);this.g.a.style.cssText=a;a=new G(this.a.c+\",sans-serif\",J(this.a));a=O(a);this.h.a.style.cssText=a;a=new G(\"serif\",J(this.a));a=O(a);this.j.a.style.cssText=a;a=new G(\"sans-serif\",J(this.a));a=\nO(a);this.m.a.style.cssText=a;N(this.g);N(this.h);N(this.j);N(this.m)}var R={D:\"serif\",C:\"sans-serif\"},S=null;function T(){if(null===S){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);S=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return S}Q.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f[\"sans-serif\"]=this.m.a.offsetWidth;this.A=q();U(this)};\nfunction la(a,b,c){for(var d in R)if(R.hasOwnProperty(d)&&b===a.f[R[d]]&&c===a.f[R[d]])return!0;return!1}function U(a){var b=a.g.a.offsetWidth,c=a.h.a.offsetWidth,d;(d=b===a.f.serif&&c===a.f[\"sans-serif\"])||(d=T()&&la(a,b,c));d?q()-a.A>=a.w?T()&&la(a,b,c)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):ma(a):V(a,a.v)}function ma(a){setTimeout(p(function(){U(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.m.a);b(this.a)},a),0)};function W(a,b,c){this.c=a;this.a=b;this.f=0;this.m=this.j=!1;this.s=c}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c(\"wf\",a.c,J(a).toString(),\"active\")],[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\"),b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\")]);K(b,\"fontactive\",a);this.m=!0;na(this)};\nW.prototype.h=function(a){var b=this.a;if(b.g){var c=y(b.f,b.a.c(\"wf\",a.c,J(a).toString(),\"active\")),d=[],e=[b.a.c(\"wf\",a.c,J(a).toString(),\"loading\")];c||d.push(b.a.c(\"wf\",a.c,J(a).toString(),\"inactive\"));w(b.f,d,e)}K(b,\"fontinactive\",a);na(this)};function na(a){0==--a.f&&a.j&&(a.m?(a=a.a,a.g&&w(a.f,[a.a.c(\"wf\",\"active\")],[a.a.c(\"wf\",\"loading\"),a.a.c(\"wf\",\"inactive\")]),K(a,\"active\")):L(a.a))};function oa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}oa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;pa(this,new ha(this.c,a),a)};\nfunction qa(a,b,c,d,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,m=d||null||{};if(0===c.length&&f)L(b.a);else{b.f+=c.length;f&&(b.j=f);var h,l=[];for(h=0;h img.src = img.dataset.src\n\n const config = {\n rootMargin: '50px 0px',\n threshold: 0.01\n }\n\n const scroll = new IntersectionObserver(onIntersection, config)\n\n lazys.forEach( lazy => scroll.observe(lazy))\n\n function onIntersection(entries) {\n\n // Loop through the entries\n entries.forEach(entry => {\n\n // Are we in viewport?\n if (entry.intersectionRatio > 0) {\n scroll.unobserve(entry.target)\n preloadImage(entry.target)\n }\n\n })\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/js/lazzyLoad.js","import fonts from './vendors/fontLoader'\nimport {the, all, doc} from './utils'\nimport domready from 'domready'\nimport Tabs from './controlers/Tabs'\nimport scrollHandler from './scrollHandler'\nimport lazzyLoad from './lazzyLoad'\n\ndomready( () => {\n new Tabs()\n lazzyLoad()\n scrollHandler('.pushs', -50)\n\n const header = the('#header')\n const hamburger = the('#hamburger')\n\n hamburger.addEventListener('click', _ => {\n header.classList.toggle('menu-open')\n })\n\n})\n\n\n\n// WEBPACK FOOTER //\n// ./assets/js/solution.js","import {the, all, doc} from '../utils'\n\nexport default class Tabs{\n\n constructor(){\n\n this.cnt = the('.tabs') || false\n\n if(!this.cnt) return\n\n this.triggers = this.cnt.querySelectorAll('.tabber li')\n this.tabs = this.cnt.querySelectorAll('.tab')\n this.controler = []\n this.init()\n }\n\n init(){\n\n this.triggers.forEach(trigger => {\n\n const selector = trigger.dataset.tab\n const tab = the(`.tab[data-tab=${selector}]`)\n this.controler.push({trigger, tab, selector})\n\n trigger.addEventListener('click', () => {\n this.tabIt(selector)\n this.updateHash(selector)\n })\n\n })\n\n const hash = window.location.hash || false\n\n if(hash){\n const selector = hash.replace(\"#\", \"\")\n this.tabIt(selector)\n }\n\n }\n\n updateHash(selector){\n window.location.hash = selector\n }\n\n tabIt(selector){\n\n this.controler.filter(e => e.selector === selector).forEach(active => {\n active.tab.classList.add('active')\n active.trigger.classList.add('active')\n })\n\n this.controler.filter(e => e.selector !== selector).forEach(inactive => {\n inactive.tab.classList.remove('active')\n inactive.trigger.classList.remove('active')\n })\n\n\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/js/controlers/Tabs.js","import {the, all, doc} from './utils'\nimport polyfillIntersectionObserver from './vendors/polyfillIntersectionObserver'\n\nconst onScroll = element => element.classList.add('visible')\n\nexport default function scrollHandler(element, distance){\n\n polyfillIntersectionObserver()\n\n const lazys = all(element)\n\n const config = {\n rootMargin: `${distance}px 0px`,\n threshold: 0.01\n }\n\n const scroll = new IntersectionObserver(onIntersection, config)\n\n lazys.forEach( lazy => scroll.observe(lazy))\n\n function onIntersection(entries) {\n\n // Loop through the entries\n entries.forEach(entry => {\n\n // Are we in viewport?\n if (entry.intersectionRatio > 0) {\n scroll.unobserve(entry.target)\n onScroll(entry.target)\n }\n\n })\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/js/scrollHandler.js"],"sourceRoot":""}