\r\n \r\n )}\r\n />\r\n);\r\n\r\n// export default SimpleSlider;\r\n","import React from \"react\";\r\nimport { Link } from \"gatsby\";\r\nimport styles from \"./featuredpost.module.css\";\r\nimport \"../styles/main.css\";\r\nimport excelAutomate from '../images/excel-automation-jason.jpg';\r\n// import Img from 'gatsby-image'\r\n\r\nexport default function FeaturedPost(props) {\r\n let post = props.featuredPost;\r\n let postExcerptLength = post.excerpt.length;\r\n\r\n let excerpt = postExcerptLength > 500 ? (post.excerpt.substring(0, 500) + '...').replace(\r\n /http[^)\\s]+/,\r\n '$&'\r\n ) : ''; // Hack for Bizlabs post to allow link\r\n return (\r\n
\r\n Jason Bloomberg - a leading digital transformation guru, talks about how SheetKraft solves the major issue being faced by many organizations where Excel falls short of the capabilities that complex use cases often require – even for power users. SheetKraft\r\n resolves this problem by extending Excel via a combination of sophisticated Excel plugins and a server-based platform offering.\r\n Read More...\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
{post.frontmatter.title}
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import React from 'react'\r\nimport integration from '../images/platform-imgs/Integrate.png'\r\nimport automation from '../images/platform-imgs/automation1.png'\r\nimport reporting from '../images/platform-imgs/Report-.png'\r\nimport governance from '../images/platform-imgs/governance.png'\r\nimport logo from '../images/logo-sk.png'\r\nimport '../../node_modules/font-awesome/css/font-awesome.min.css';\r\nimport styles from './ProductDetails.module.css';\r\n\r\nlet listyle = {\r\n backgroundColor: ' #183869',\r\n}\r\nlet btncolor = {\r\n backgroundColor: 'red',\r\n}\r\n\r\nlet borderTop = {\r\n borderTop: '0'\r\n}\r\n\r\nfunction createStyles(i) {\r\n let divStyles = [listyle, listyle, listyle, listyle];\r\n\r\n if (i >= 0)\r\n divStyles[i] = btncolor;\r\n return divStyles;\r\n}\r\n\r\nfunction selectedContent(i) {\r\n switch (i) {\r\n case 0:\r\n return (\r\n\r\n
\r\n < div className=\"table-responsive tr-bg\" >\r\n
\r\n \r\n\r\n
\r\n
Integration
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
Read / write xls, txt, csv, dbf, xml, json files
\r\n
\r\n
\r\n
Connect to SQL servers, PostGreSQL, Oracle, MySQL and other databases
\r\n
\r\n\r\n
\r\n
Connect to Exchange and other email servers over IMAP and SMTP
\r\n
\r\n\r\n
\r\n
Read/write from shared folders, FTP / SFTP
\r\n
\r\n
\r\n
Consume and expose APIs
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n )\r\n\r\n case 1:\r\n return (\r\n
\r\n < div className=\"table-responsive tr-bg\" >\r\n
\r\n \r\n
\r\n
\r\n Automation\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
Perform complex chains of calculations
\r\n
\r\n
\r\n
Support for data transformation- filter, sort, pivot, lookup
\r\n
\r\n\r\n
\r\n
Support for Excel functions including financial functions
\r\n
\r\n\r\n\r\n
\r\n
Automation of task execution based on incoming emails or time based schedules
\r\n
\r\n
\r\n
Send emails / SMS
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n )\r\n case 2:\r\n return (\r\n
\r\n < div className=\"table-responsive tr-bg\" >\r\n
\r\n \r\n
\r\n
Reporting
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
Structured Excel files with tables, charts, and formatting
\r\n
\r\n
\r\n
Text files (csv / txt) for upload
\r\n
\r\n\r\n
\r\n
Customizable email formats with attachments
\r\n
\r\n\r\n
\r\n
Structured data formats- xml, dbf, json
\r\n\r\n
\r\n
\r\n
Document types- PDF, Word
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n )\r\n case 3:\r\n return (\r\n
\r\n < div className=\"table-responsive tr-bg\" >\r\n
\r\n \r\n < div className=\"container color-gray\" >\r\n
\r\n
\r\n
\r\n\r\n < h3 className=\"text-capitalize color-pri-blue\" >\r\n A Platform for all your\r\n\r\n < div className=\"rw-words rw-words-1\" >\r\n Reporting\r\n Processing\r\n Automation\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default TestimonialsClients;\r\n","import React from 'react'\r\nimport shridhar from '../images/team/Shridhar.jpg'\r\nimport Koustubh from '../images/team/Koustubh.jpg'\r\nimport chetan from '../images/team/chetan-400.jpg'\r\nimport surya from '../images/team/surya.jpg'\r\nimport styles from \"./ManagementTeam.module.css\"\r\n//import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n//import { faLinkedin } from '@fortawesome/free-brands-svg-icons'\r\nimport '../styles/main.css'\r\n\r\nexport default function ManagementTeam() {\r\n return (\r\n
\r\n \r\n < div className=\"container\" >\r\n
\r\n
Management Team
\r\n\r\n < div className=\"col-md-4 col-xs-12 team-member\" >\r\n \r\n
Shridhar Iyer
\r\n
Chief Executive Officer
\r\n < a className=\"faLinkedin\"\r\n target=\"_blank\"\r\n href=\"https://www.linkedin.com/in/shridhar-iyer-b7775020/\"\r\n rel=\"noopener noreferrer\" > \r\n
\r\n < div className=\"col-md-4 col-xs-12 team-member\" >\r\n \r\n
Koustubh Moharir
\r\n
Chief Technology Officer
\r\n < a className=\"faLinkedin\"\r\n target=\"_blank\"\r\n href=\"https://www.linkedin.com/in/koustubhmoharir/\"\r\n rel=\"noopener noreferrer\" > \r\n
\r\n < div className=\"col-md-4 col-xs-12 team-member\" >\r\n \r\n
Chetan Lalwani
\r\n
Director
\r\n < a className=\"faLinkedin\"\r\n target=\"_blank\"\r\n href=\"https://www.linkedin.com/in/chetan-lalwani-aa350215/\"\r\n rel=\"noopener noreferrer\" > \r\n \r\n < div className=\"clearfix\" > \r\n \r\n \r\n \r\n
\r\n < i className=\"fa fa-chevron-up\"> \r\n \r\n\r\n )\r\n }\r\n}\r\n\r\nexport const query = graphql`\r\n {\r\n allMarkdownRemark(sort: {\r\n fields: frontmatter___published,\r\n order: DESC\r\n }, filter: {\r\n frontmatter: {\r\n draft: {\r\n ne: true\r\n },\r\n category: {\r\n eq: \"news\"\r\n },\r\n featured: {\r\n eq: true\r\n }\r\n }\r\n }, limit: 1) {\r\n edges {\r\n node {\r\n id\r\n fields {\r\n slug\r\n }\r\n frontmatter {\r\n tags\r\n category\r\n draft\r\n published\r\n title\r\n featured\r\n hero {\r\n childImageSharp {\r\n fluid(maxWidth: 800) {\r\n ...GatsbyImageSharpFluid\r\n }\r\n }\r\n }\r\n }\r\n excerpt(pruneLength: 1000)\r\n html\r\n }\r\n }\r\n }\r\n\r\n releaseVersion:allIndexYaml(limit: 1) {\r\n edges {\r\n node {\r\n version\r\n }\r\n }\r\n }\r\n }\r\n`","\"use strict\";\n\nexports.__esModule = true;\nexports.Track = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n} // given specifications/props for a slide, fetch all the classes that need to be applied to the slide\n\n\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var slickCurrent = index === spec.currentSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n style.WebkitTransition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react2.default.Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react2.default.Children.forEach(spec.children, function (elem, index) {\n var child = void 0;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = _react2.default.createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_extends({}, spec, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_extends({}, spec, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push(_react2.default.cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames2.default)(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({\n outline: \"none\"\n }, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_extends({}, spec, {\n index: key\n }));\n preCloneSlides.push(_react2.default.cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames2.default)(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({}, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_extends({}, spec, {\n index: key\n }));\n postCloneSlides.push(_react2.default.cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames2.default)(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _extends({}, child.props.style || {}, childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = exports.Track = function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n function Track() {\n _classCallCheck(this, Track);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n Track.prototype.render = function render() {\n var slides = renderSlides(this.props);\n var _props = this.props,\n onMouseEnter = _props.onMouseEnter,\n onMouseOver = _props.onMouseOver,\n onMouseLeave = _props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return _react2.default.createElement(\"div\", _extends({\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n };\n\n return Track;\n}(_react2.default.PureComponent);","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPEAAABWCAMAAAFeC7D7AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAA8UExURQAAAC5Riy5RlyxOkC9Sjy9SkC5SjzBSjzBTjzBTjzBTkC9SjzNYmTNYmi9SjzNYmTNYmjNZmkJvv0RyxBletPYAAAAOdFJOUwAWFhfKysvLy8zMzf3+eHH2QQAAAAlwSFlzAAAXEQAAFxEByibzPwAAAthJREFUaEPlmu1yozAMRek2TbfN1i34/d91JVs2HzH2IM9Ks9b9g6m5c3IoEBIyseNpeRYfN3D+PK153KA6DxtU5+f6PEyfpzE9NaanxnQrjpYn8WGePErBeRoWA/M0KsfVp+ttfG1nqc82DytmGruzkbg7ucE9kvr1w/k8sc9txz6/3TqRqgknArPNPol6utDuPHk78kJLVtwvGnDilo628x1tODgWtjceWakdjpnLoTatXU1s08rlhDaNrwfbNGQE2jTi5NFRfnS8bOiyy9jllkP3esKFj9kNZW4Xy+wulPndyXV0pxstheJeaSAet3RdrjuC11sddjgbVNiBjGx6q6A4gUTykZ3/LJItW5a8ZUuTV7Y8ObE1yJGtQp7x2q9ADlwFMnHFyZkLZIEQdccVSSJLcxNZnhvJGlwk63CBfKeBnagZq+1rN3/SSDhwXOuQ4VTWIYdryAetSCZcNud3WhMMXa/lyRHsZ/GzisAHMr1j/9MQeE/Of5XI/EZUiCjY/6xkWbD/zmRhsP9K38pIgzNZHJzI8mAiK4AjWQMcyCpg/+emA17cqwoYuRrgwFUAR648mLji4MSVBmeuMHjlyoI3XOGvkVeuRBJYmpvA4lwCy3MjWIEbwBpcBKtwAazDxcd+Kly4Rulw9R6xKj1eFcltZLlinLtrHUhKcW52n6b+z3CXs9hyDvd1ppzpThacP4w453t3cP5twnn9tILO7wacN8bReftbnyGzMw7O98GdD8ZVZ/rQ/t+HTNecOhe2HSXg/FZwHtgYnH8KzkMbg/PXk/PgxsH5tnMe3vjJ2YDxwdmE8c7ZiPHG2YxxdjZk7Jdv93gxZAy3YA/8+s+KcfK1Yrz62jDe+low3vuOb3z0Hd342Xds45LvyMZlXzQeI6SZc+Y7So7Go/sejcf33Rtb8N0a2/Bdja34JmM7vtHYki8a2/JFY2s/bzL3c65p88ihnmn6C3Hq10YOwhEsAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/chetan-400-27201d67a5910aea689706824cc2db2d.jpg\";","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\n\nexport default function useMounted() {\n var mounted = useRef(true);\n var isMounted = useRef(function () {\n return mounted.current;\n });\n useEffect(function () {\n return function () {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.Dots = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = exports.Dots = function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n Dots.prototype.clickHandler = function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n };\n\n Dots.prototype.render = function render() {\n var _this2 = this;\n\n var dotCount = getDotCount({\n slideCount: this.props.slideCount,\n slidesToScroll: this.props.slidesToScroll,\n slidesToShow: this.props.slidesToShow,\n infinite: this.props.infinite\n }); // Apply join & split to Array to pre-fill it for IE8\n //\n // Credit: http://stackoverflow.com/a/13735425/1849458\n\n var _props = this.props,\n onMouseEnter = _props.onMouseEnter,\n onMouseOver = _props.onMouseOver,\n onMouseLeave = _props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = Array.apply(null, Array(dotCount + 1).join(\"0\").split(\"\")).map(function (x, i) {\n var leftBound = i * _this2.props.slidesToScroll;\n var rightBound = i * _this2.props.slidesToScroll + (_this2.props.slidesToScroll - 1);\n var className = (0, _classnames2.default)({\n \"slick-active\": _this2.props.currentSlide >= leftBound && _this2.props.currentSlide <= rightBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: _this2.props.slidesToScroll,\n currentSlide: _this2.props.currentSlide\n };\n\n var onClick = _this2.clickHandler.bind(_this2, dotOptions);\n\n return _react2.default.createElement(\"li\", {\n key: i,\n className: className\n }, _react2.default.cloneElement(_this2.props.customPaging(i), {\n onClick: onClick\n }));\n });\n return _react2.default.cloneElement(this.props.appendDots(dots), _extends({\n className: this.props.dotsClass\n }, mouseEvents));\n };\n\n return Dots;\n}(_react2.default.PureComponent);","module.exports = \"data:image/jpeg;base64,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\"","import \"core-js/modules/es.array.reduce.js\";\n\n/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n\n\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n\n return false;\n });\n return result;\n }\n\n return (\n /** @class */\n function () {\n function class_1() {\n this.__entries__ = [];\n }\n\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function get() {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n return class_1;\n }()\n );\n}();\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\n\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; // Returns global object of a current environment.\n\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n } // eslint-disable-next-line no-new-func\n\n\n return Function('return this')();\n}();\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\n\n\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}(); // Defines minimum timeout before adding a trailing call.\n\n\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\n\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n\n\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n\n\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n } // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n\n\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n} // Minimum delay before invoking the update of observers.\n\n\nvar REFRESH_DELAY = 20; // A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\n\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; // Check if MutationObserver is available.\n\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\n\nvar ResizeObserverController =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n } // Add listeners if they haven't been added yet.\n\n\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer); // Remove observer if it's present in registry.\n\n if (~index) {\n observers.splice(index, 1);\n } // Remove listeners if controller has no connected observers.\n\n\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_(); // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n\n\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n }); // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n } // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n\n\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b; // Detect whether transition may affect dimensions of an element.\n\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\n\n\nvar defineConfigurable = function defineConfigurable(target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n};\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\n\n\nvar getWindowOf = function getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local global object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || global$1;\n}; // Placeholder of an empty content rectangle.\n\n\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\n\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\n\n\nfunction getBordersSize(styles) {\n var positions = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\n\n\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight; // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom; // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n\n var width = toFloat(styles.width),\n height = toFloat(styles.height); // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n } // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n\n\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight; // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n } // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n\n\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\n\n\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height; // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype); // Rectangle's properties are not writable and non-enumerable.\n\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\n\n\nvar ResizeObservation =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n\n\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n\n return ResizeObservation;\n}();\n\nvar ResizeObserverEntry =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit); // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n\n return ResizeObserverEntry;\n}();\n\nvar ResizeObserverSPI =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is already being observed.\n\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this); // Force the update of observations.\n\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is not being observed.\n\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_; // Create ResizeObserverEntry instance for every active observation.\n\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n\n return ResizeObserverSPI;\n}(); // Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\n\n\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\n\nvar ResizeObserver =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n\n return ResizeObserver;\n}(); // Expose public methods of ResizeObserver.\n\n\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\n\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n}();\n\nexport default index;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport createChainedFunction from './createChainedFunction';\n\nfunction isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n/**\n * There are situations due to browser quirks or Bootstrap CSS where\n * an anchor tag is needed, when semantically a button tag is the\n * better choice. SafeAnchor ensures that when an anchor is used like a\n * button its accessible. It also emulates input `disabled` behavior for\n * links, which is usually desirable for Buttons, NavItems, DropdownItems, etc.\n */\n\n\nvar SafeAnchor = React.forwardRef(function (_ref, ref) {\n var _ref$as = _ref.as,\n Component = _ref$as === void 0 ? 'a' : _ref$as,\n disabled = _ref.disabled,\n onKeyDown = _ref.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"disabled\", \"onKeyDown\"]);\n\n var handleClick = function handleClick(event) {\n var href = props.href,\n onClick = props.onClick;\n\n if (disabled || isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (isTrivialHref(props.href)) {\n props.role = props.role || 'button'; // we want to make sure there is a href attribute on the node\n // otherwise, the cursor incorrectly styled (except with role='button')\n\n props.href = props.href || '#';\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: ref\n }, props, {\n onClick: handleClick,\n onKeyDown: createChainedFunction(handleKeyDown, onKeyDown)\n }));\n});\nSafeAnchor.displayName = 'SafeAnchor';\nexport default SafeAnchor;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAABHCAYAAACuy22FAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAMAUlEQVR4nO2de0xb1x3HvwQSbIzBsABpwJc0JYHxSErLWghtU2hKUrXgUkURMdn6SNkjWttVVIuyNVrarqJ0qSZ1U1KJsj+6liDCmhq65TGCiwYJKCQEE7MmcbvJPAK0AYwBOwHH+4PYM/hcXz+ubTDnI0UK5557zu/c+/W5v985554bZDabzaBQAoQV/jaAQuETKmhKQBHClWGsb9wXdvBKlFTibxNgrKvH7bNKf5vBSVDwsPX/ghdeQnB8gh+tcY4V8ZtYj3EKuqvuMq/GeIMQ45T1/+ExQNSuO360Zg7zSBdgHGXPIIj2nTEOME/+F2adAQAwq/wAJvEqP1vEjWDfSdZjnIJeCqyc1iH49txNMd2+A2he9bNFgOnqZpjHb7EeD1qzxYfWLB+oD00JKHzeQ9+c+N4u7QcRq31qw8SU499xhMj/Lot+dgb6mVm3zxevDIE4ZCWPFjmPzmjCrVkzQkOCECkI9mndPhV00+UzqPvXMbv0iuf/4FNRb/1FDPTTQazHxWFmRIbfQcZ9M3g614gd2Uaf2WahcaAfh7/+t9vnF65NwFsZ7MET35y9rofiig5XbhgxMjn/h/gjJgyy9Eg8mx7pdTsCwofmG/10EPTTwegfCcbJ8wLERZtw8CW9X4S92NEZTfjVFwO4oJ1mzXNBO40L2mnUXBrD7wrWIG2NwGv2UB/aCYZHg/HLwxIc/kzsb1MWHWV1fQ7FbEvvkBGvfN4P9ZD3OgYqaBf46IQIHzeI/G3GouFI2/fodVGcI5OzeOvMkJcsooJ2mfc+EaNv2LeBzmJEZzThSJt9gG8hdY0AseFkj7Z3yIgvrui8Yhf1oe/ycNptvLdPh6Gbwbg5sQJ/PRmGDjV5kuH9T8X4U7l/ZlDlievws6QNfqnbli/VE8T0/A3heOepe6yjG19c0eHNf9ywy1dzacwrQSIV9F3EYWZI40yQxpkAADuyjfi4QYT3PrH3m0+eF2BiaoVfhvfEISv9NhxnS4d2yi4tNjwEHxbPnzp/Nj0Szdf1aL4+OS+9d2huNIStF3cX6nI44OWiKaSvnyEeu/i1/0XlT67csPedc9aR4wsZS0/cc8PAq00AFTQnzzxCDnq+GVi+Dzed0WQ31gwAqXHk4biMe4TE9Ksj7EsD3IUKmoPNSeQeeujm8g0M+8fJ10QUSpZTaAh5EmtARy7HE6igOUhOJE8/TxnZZxoDHcMMOXYQswjal9PfVNBuMulg6jzQ0RlNvJSjv8VPObZQQbvJzOzyFbT+lv8Xb7GxfCMbik/Zl2u/+Cw5NpT3eqiglxiDBgOu6smTGgCQLI7woTXOQxK0N6CCXmI0DvajcbCfeOweoRB/fyzPxxYtLqgPTQkoqKApAQUVNCWgoIKmBBQ0KFxiyBPXQZ54r7/NWLRQQS8xxCErsVZIXuxDoYKm+IjfEhb5p8YJUPpgFK/1UEFTfIKC8MqV/paJd0HToJDiMmyr6hYDi9eyRU5UxOJdoLOcoYLmQDdJXlUnEizfDx/wtb5ZHMr/OmkqaA40/eQwQ7Bq+QqaiSK/Dc+2rJRt/XR8JP/vZVJBc9CmIi9xTL+P/9eHlgpsb2oPsrxSxfbK1loqaN/SNxyMvynJY75p9y5fQQNzG8ks5EIfeUuwlm8miekbVvO/HpoKmoULvavw47eiibuUJsT+f/+O5crj94XbpV3QTqNzgah1RhPqu+035YkND/HKpo10HPouPd+E4OeVUdBPB2Hgu7mdR9nYs8O5zQkDmYeYMBxps09/4ZgW+3JXIzk2FEMTs6juuEnc8oBtDw9PoYK+y/BoMIZHuaPu9PUzeLnIfteg5UaWNAypawTEzRod7Xln4bXHYrxhFnU5XCEu2uS3Pe0WI7/Oi3XrvH25q3nfAswCFbSTpK+fQe07o8ved7YlSxqGA0/EuXSOLD3Sq+8XUpeDg4RYE/bsmKZuBgulD0YhOTYU7ytHHO4VHRseglcfi/H6Zyl8KmgmJhFPbH7Sl1USKd0+DeNt8gygYJUZEvEdJMSakHbvjN965HWicMgT19mlZ0j8/1HRhWRJw1D3k3VQDxlxecAAndFk3eYrPnIlHmLCkCUN84ktPhX0xvhkbIxP9mWVRN4o1fvbBE62rI7BltXeCZy8RdoagVe/n+IM1IemBBRU0JSAggaFXkKwZRCm9exfzQrO+6kPrWHndss4MDYAAAhaAt/55iLIbDY7XDZmnFj83+abUb8Ms/6K9e+I6Kt+tMZJsvjfvd4dzPphf5vgMkFi9qFCTkFTKEsJ6kNTAgoqaEpAQQVNCSiooCkBBRU0JaCggqYEFJwTK7t37wHDSFFZWWFN27//ALTaPuvfEkkkUlJSkJf3ODZtyrArY2F+WxaWbUGl6oFS+RUGBwcxMTGBiIgIbN9egJycbAg59naz1FdWthf5+fN3tNdoNDh48BAA4NixTznbaluebf7du/c4tOHAgf3Wa0E6n6tOAGhuVqKqqhrZ2Q/jtdde4WwvqXxncNQWubwEhYXPcNbjSCe214LL5oW2MIwUGzduQHFxMaKjuXdZ8mimUC4vAQBMTU2jq6sLFRWVkMmKUFKyy2F+W0Qi+1dxamvroFA0gGGkyMzMBAB0dXWhqqoap0+fId58EseP1+P++++fdyFqa+ucOpcL27a0trZBq+2bl5aQkEA6zSXOnTsPAGhv78DOnc8hPj7e4zLZYBgpHnkk1y49MTHR47KPHv0I7777e6cEudCWkZERdHZeRFNTM7GDWohHgrb8cgGgpGQXqqv/AoWiAbGxMcSKbfOzoVL1QKFowLZt+ZDLd1t745KSXWhuViI5eaPT9o2P63DkyFG8+eZvAMz1eGp1r9PnO8K2La2tbXZpnqJS9UCt7oVMVgSFogGnTp3G3r0v8VY+CT7tt2XhfXDVFrl8Nw4dehtVVdVITt7o8IfNqw9dXFwMADh9+ozbZXz2WY21rIWuRX5+nku9lExWBLW6FypVD0ZHx3D8eD3S0lLBMFK37fMVSuVXkEgiUVDwJNLSUtHZeREGw+KYLncVubwEanWv209HoVCI0lI5AODSpS6HeXldnBQdHQWGkbL6y42NX9qlLewVtNo+MIzU6ceTIwoKnkRXVxeOHv0I8fHxGB/Xobz8dVRVVXtctjcZGBhAe3sHtm3LR3R0FIqKClFRUYmmprNe60UB+/sjEok4H/HOUFj4DLq7VQ6f3lxYfPDW1jaH18Cnq+1qamrt0rx5g6Kjo1BaKkdFRSXGx3WQy0uQlJTktfr44tSp0wCAHTu2A5i7mQwj5byZnqDV9tndH4aR8iJoACgvfx2HDr2N48frXXIbXYVXQY+Ojll7WBLOROGWHn50dIyXXnrTpgzIZEXQaDScYpBIIiEW2y/5FIvFkEjcfxdu7dq1xDaNjo5Zj1swGAzo7LwIAHjjjf12ZTU3K3kTmS1sIy22uNKOhQiFQpSV7cXBg4fw4Yd/Jl5nR6hUPQBADFxt4dWHPnPmnwCA7dsL3C7Dcu6JEyfsfMbmZiUGBgZcLlMmK8SLLz7PmS8lJQVqdS80Go01TaPRQK3uRUpKisv1WsjISAcAtLXN35nl8uXL844DQFPTWYyP6yCTFUEuL5n3TyKJtI58+ANX2kEiKSkJZWV7odX2uRScGwwGNDQ0AgAeeCDTYV6PemiLz2UZttNq+yCTFXnUg+Tn52Fk5DsoFA24du06MjMzIRKFobtbBbW6F2lpqS5Fy8Bc7+BMMPn000+hvb0DH3zwR2zduhUA0NLSAokkEjt3PudWewAgJycb586dR01NLbq7Vdi8eRO+/fY/aG/vQFpaKnJysq15W1vbwDBS4tDn1NQ0FIoGqFQ9xPF+UoySm5vLy5PO1XawYXt/HWFpi2XYbnxch7KyvZz30SNBW3wuy8RKaamceKFdpaRkF1JTfwil8iu0tLQAACIiIpwah/SEpKQkHD5cifr6z631pqSkeDwGLBQKUV7+OmpqjuHateuoqakFw0ghkxVBJiu0juY0NyutE0IkHn00FwpFAxoaGonXmRSjJCYm8iZoZ9vBhUxWaH3ykbD15xlGiqysB52eWKEL/CkBBV3LQQkoqKApAQUVNCWg+B9eazfPatBIMgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/Report--e7c014803986ea4afe7af2cd3f39d35b.png\";","module.exports = \"data:image/png;base64,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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"width100\":\"Testimonials-module--width100--9cjlx\",\"slider\":\"Testimonials-module--slider--24cnV\"};","module.exports = __webpack_public_path__ + \"static/ABCPMS-9415ba8796e17a868d7d35f4700bbe80.png\";","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n var onUnmount = useUpdatedRef(fn);\n useEffect(function () {\n return function () {\n return onUnmount.current();\n };\n }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n var valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","module.exports = __webpack_public_path__ + \"static/Integrate-58a63914e87a6ef6694be2d40f7f2059.png\";","module.exports = __webpack_public_path__ + \"static/citrus-1d97af7de61d6c3221bd7772793cd7ec.jpg\";","var MediaQueryDispatch = require('./MediaQueryDispatch');\n\nmodule.exports = new MediaQueryDispatch();","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n constructor: QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup: function setup() {\n if (this.options.setup) {\n this.options.setup();\n }\n\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on: function on() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off: function off() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy: function destroy() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals: function equals(target) {\n return this.options === target || this.options.match === target;\n }\n};\nmodule.exports = QueryHandler;","module.exports = __webpack_public_path__ + \"static/citrus-payu-945d5cf4a2bc3261a7b615663c4c4ca8.png\";","module.exports = __webpack_public_path__ + \"static/logo_of_fimmda-31d15ee657590dadcadc769c6955ed2e.png\";","module.exports = __webpack_public_path__ + \"static/Blocks-2505857e5da570287e7c2aca8b1170e1.gif\";","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function isDimension(feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function obj2mq(obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature); // Add px to dimension features\n\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n\n if (index < features.length - 1) {\n mq += ' and ';\n }\n });\n return mq;\n};\n\nvar json2mq = function json2mq(query) {\n var mq = '';\n\n if (typeof query === 'string') {\n return query;\n } // Handling array of media queries\n\n\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n\n if (index < query.length - 1) {\n mq += ', ';\n }\n });\n return mq;\n } // Handling single media query\n\n\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","module.exports = __webpack_public_path__ + \"static/setup-208ef3694fedf295016cc7469d4804cb.gif\";","import React from 'react'\r\nimport sklogo from '../images/sk-logo.png'\r\nimport sklogosticky from '../images/sk-logo-sticky.png'\r\nimport { Navbar } from 'react-bootstrap'\r\nimport { Link } from 'gatsby'\r\nimport styles from \"./Header.module.css\"\r\n// import { faBullhorn } from '@fortawesome/free-solid-svg-icons'\r\n\r\n\r\nexport default class Header extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.onScroll = this.onScroll.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('scroll', this.onScroll, false);\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('scroll', this.onScroll, false);\r\n\r\n }\r\n\r\n onScroll(e) {\r\n\r\n let x = document.getElementsByClassName(\"navbar\")[0];\r\n let y = document.getElementsByClassName(\"sk-adaptive-header\")[0];\r\n\r\n if (window.pageYOffset > 0) {\r\n x.classList.remove(\"navbar-dark\");\r\n y.classList.add(\"sk-is-sticky\");\r\n } else {\r\n\r\n x.classList.add(\"navbar-dark\");\r\n y.classList.remove(\"sk-is-sticky\");\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n render() {\r\n\r\n let samePage = this.props.samePage;\r\n\r\n return (\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n < ul className=\"nav navbar-nav mx-auto nav-fill w-100\" >\r\n < li className=\"nav-item productLink\" >\r\n Product\r\n \r\n < li className=\"nav-item\" >\r\n Team\r\n \r\n < li className=\"nav-item\" >\r\n Partners\r\n \r\n < li className=\"nav-item\" >\r\n Documentation\r\n \r\n < li className=\"nav-item\" >\r\n Case Studies\r\n \r\n {/* < li className=\"nav-item\" >\r\n Blog\r\n */}\r\n {/* < li className=\"nav-item\" >\r\n Marketing\r\n */}\r\n < li className=\"nav-item\" >\r\n Contact Us\r\n \r\n \r\n \r\n \r\n\r\n div>\r\n\r\n\r\n )\r\n }\r\n\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/dsp-4d1476e2f846744330431a12db0a4ab7.png\";","\"use strict\";\n\nexports.__esModule = true;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0\n};\nexports.default = initialState;","module.exports = __webpack_public_path__ + \"static/Gears-a276dd176485cb39536eb2470de2b273.gif\";","module.exports = __webpack_public_path__ + \"static/pcImg-5626e6600e26a7baafbd155370c4ff6c.jpg\";","module.exports = __webpack_public_path__ + \"static/automation1-38f1da02e81569f261ab80afa3971fa6.png\";","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.InnerSlider = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _initialState = require(\"./initial-state\");\n\nvar _initialState2 = _interopRequireDefault(_initialState);\n\nvar _lodash = require(\"lodash.debounce\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = require(\"classnames\");\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = require(\"resize-observer-polyfill\");\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar InnerSlider = exports.InnerSlider = function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n function InnerSlider(props) {\n _classCallCheck(this, InnerSlider);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.listRefHandler = function (ref) {\n return _this.list = ref;\n };\n\n _this.trackRefHandler = function (ref) {\n return _this.track = ref;\n };\n\n _this.adaptHeight = function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\" + _this.state.currentSlide + \"\\\"]\");\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n };\n\n _this.componentWillMount = function () {\n _this.ssrInit();\n\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_extends({}, _this.props, _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n };\n\n _this.componentDidMount = function () {\n var spec = _extends({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill2.default(function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n }); // To support server-side rendering\n\n if (!window) {\n return;\n }\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n };\n\n _this.componentWillUnmount = function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n };\n\n _this.componentWillReceiveProps = function (nextProps) {\n var spec = _extends({\n listRef: _this.list,\n trackRef: _this.track\n }, nextProps, _this.state);\n\n var setTrackStyle = false;\n\n for (var _iterator = Object.keys(_this.props), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var key = _ref;\n\n if (!nextProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(nextProps[key]) === \"object\" || typeof nextProps[key] === \"function\") {\n continue;\n }\n\n if (nextProps[key] !== _this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react2.default.Children.count(nextProps.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react2.default.Children.count(nextProps.children) - nextProps.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (nextProps.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n };\n\n _this.componentDidUpdate = function () {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_extends({}, _this.props, _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n };\n\n _this.onWindowResized = function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash2.default)(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n };\n\n _this.resizeWindow = function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (!_reactDom2.default.findDOMNode(_this.track)) return;\n\n var spec = _extends({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props, _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n };\n\n _this.updateState = function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _extends({}, spec, updatedState, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _extends({}, spec, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react2.default.Children.count(_this.props.children) !== _react2.default.Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n };\n\n _this.ssrInit = function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_extends({}, _this.props, _this.state, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_extends({}, _this.props, _this.state, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i2 = 0; _i2 < postClones; _i2++) {\n _trackWidth += childrenWidths[_i2];\n }\n\n for (var _i3 = 0; _i3 < _this.state.currentSlide; _i3++) {\n _trackLeft += childrenWidths[_i3];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = childrenWidths[_this.state.currentSlide] + \"px\";\n _trackStyle.left = \"calc(\" + _trackStyle.left + \" + (100% - \" + currentWidth + \") / 2 ) \";\n }\n\n _this.setState({\n trackStyle: _trackStyle\n });\n\n return;\n }\n\n var childrenCount = _react2.default.Children.count(_this.props.children);\n\n var spec = _extends({}, _this.props, _this.state, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n\n _this.setState({\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n });\n };\n\n _this.checkImagesLoad = function () {\n var images = document.querySelectorAll(\".slick-slide img\");\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n };\n\n _this.progressiveLazyLoad = function () {\n var slidesToLoad = [];\n\n var spec = _extends({}, _this.props, _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n };\n\n _this.slideHandler = function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_extends({\n index: index\n }, _this.props, _this.state, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n _this.setState(state, function () {\n asNavFor && asNavFor.innerSlider.state.currentSlide !== currentSlide && asNavFor.innerSlider.slideHandler(index);\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n };\n\n _this.changeSlide = function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _extends({}, _this.props, _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n };\n\n _this.clickHandler = function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n };\n\n _this.keyHandler = function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n };\n\n _this.selectHandler = function (options) {\n _this.changeSlide(options);\n };\n\n _this.disableBodyScroll = function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n };\n\n _this.enableBodyScroll = function () {\n window.ontouchmove = null;\n };\n\n _this.swipeStart = function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n };\n\n _this.swipeMove = function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _extends({}, _this.props, _this.state, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n };\n\n _this.swipeEnd = function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _extends({}, _this.props, _this.state, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n };\n\n _this.slickPrev = function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n };\n\n _this.slickNext = function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n };\n\n _this.slickGoTo = function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n };\n\n _this.play = function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_extends({}, _this.props, _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n };\n\n _this.autoPlay = function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n };\n\n _this.pause = function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n };\n\n _this.onDotsOver = function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n };\n\n _this.onDotsLeave = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n };\n\n _this.onTrackOver = function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n };\n\n _this.onTrackLeave = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n };\n\n _this.onSlideFocus = function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n };\n\n _this.onSlideBlur = function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n };\n\n _this.render = function () {\n var className = (0, _classnames2.default)(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _extends({}, _this.props, _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _extends({}, trackProps, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _extends({}, dotProps, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = _react2.default.createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = _react2.default.createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = _react2.default.createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _extends({}, verticalHeightStyle, centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.swipeEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\"\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return _react2.default.createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", _react2.default.createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), _react2.default.createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n };\n\n _this.list = null;\n _this.track = null;\n _this.state = _extends({}, _initialState2.default, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react2.default.Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n return _this;\n }\n\n return InnerSlider;\n}(_react2.default.Component);","var QueryHandler = require('./QueryHandler');\n\nvar each = require('./Util').each;\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\n\n\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n var self = this;\n\n this.listener = function (mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n constuctor: MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler: function addHandler(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler: function removeHandler(handler) {\n var handlers = this.handlers;\n each(handlers, function (h, i) {\n if (h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i, 1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches: function matches() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear: function clear() {\n each(this.handlers, function (handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess: function assess() {\n var action = this.matches() ? 'on' : 'off';\n each(this.handlers, function (handler) {\n handler[action]();\n });\n }\n};\nmodule.exports = MediaQuery;","var MediaQuery = require('./MediaQuery');\n\nvar Util = require('./Util');\n\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\n\nfunction MediaQueryDispatch() {\n if (!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n constructor: MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register: function register(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if (!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n } //normalise to object in an array\n\n\n if (isFunction(options)) {\n options = {\n match: options\n };\n }\n\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (handler) {\n if (isFunction(handler)) {\n handler = {\n match: handler\n };\n }\n\n queries[q].addHandler(handler);\n });\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister: function unregister(q, handler) {\n var query = this.queries[q];\n\n if (query) {\n if (handler) {\n query.removeHandler(handler);\n } else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\nmodule.exports = MediaQueryDispatch;","module.exports = __webpack_public_path__ + \"static/Koustubh-51f193450cde0858c56b158e45974166.jpg\";","\"use strict\";\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nexports.__esModule = true;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar getOnDemandLazySlides = exports.getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nvar getRequiredLazySlides = exports.getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nvar lazyStartIndex = exports.lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nvar lazyEndIndex = exports.lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nvar lazySlidesOnLeft = exports.lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nvar lazySlidesOnRight = exports.lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nvar getWidth = exports.getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nvar getHeight = exports.getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nvar getSwipeDirection = exports.getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nvar canGoNext = exports.canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nvar extractObject = exports.extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nvar initializedState = exports.initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react2.default.Children.count(spec.children);\n\n var listWidth = Math.ceil(getWidth(_reactDom2.default.findDOMNode(spec.listRef)));\n var trackWidth = Math.ceil(getWidth(_reactDom2.default.findDOMNode(spec.trackRef)));\n var slideWidth = void 0;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = _reactDom2.default.findDOMNode(spec.listRef) && getHeight(_reactDom2.default.findDOMNode(spec.listRef).querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides({\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }, spec);\n lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nvar slideHandler = exports.slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoadedList = spec.lazyLoadedList,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide = void 0,\n animationLeft = void 0,\n finalLeft = void 0;\n var state = {},\n nextState = {};\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList.push(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList\n };\n nextState = {\n animating: false\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n animationLeft = getTrackLeft(_extends({}, spec, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_extends({}, spec, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n lazyLoad && lazyLoadedList.concat(getOnDemandLazySlides(_extends({}, spec, {\n currentSlide: animationSlide\n })));\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_extends({}, spec, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, {\n left: finalLeft\n })),\n swipeLeft: null\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nvar changeSlide = exports.changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n\n if (targetSlide === options.currentSlide) {\n return null;\n }\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (targetSlide === options.currentSlide) {\n return null;\n }\n\n if (infinite) {\n var direction = siblingDirection(_extends({}, spec, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n\n if (targetSlide === options.currentSlide) {\n return null;\n }\n }\n\n return targetSlide;\n};\n\nvar keyHandler = exports.keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nvar swipeStart = exports.swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && e.preventDefault();\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nvar swipeMove = exports.swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return e.preventDefault();\n if (vertical && swipeToSlide && verticalSwiping) e.preventDefault();\n var swipeLeft = void 0,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && swipeDirection === \"right\" || currentSlide + 1 >= dotCount && swipeDirection === \"left\" || !canGoNext(spec) && swipeDirection === \"left\") {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _extends({}, state, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_extends({}, spec, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n e.preventDefault();\n }\n\n return state;\n};\n\nvar swipeEnd = exports.swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n currentSlide = spec.currentSlide,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe;\n\n if (!dragging) {\n if (swipe) e.preventDefault();\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n e.preventDefault();\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount = void 0,\n newSlide = void 0;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = currentSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = currentSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = currentSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_extends({}, spec, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nvar getNavigableIndexes = exports.getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nvar checkNavigable = exports.checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nvar getSlideCount = exports.getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide = void 0;\n\n var slickList = _reactDom2.default.findDOMNode(spec.listRef);\n\n var slides = slickList.querySelectorAll(\".slick-slide\");\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nvar checkSpecKeys = exports.checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nvar getTrackCSS = exports.getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth = void 0,\n trackHeight = void 0;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _extends({}, style, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nvar getTrackAnimateCSS = exports.getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getTrackLeft = exports.getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n\n var trackElem = _reactDom2.default.findDOMNode(trackRef);\n\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nvar getPreClones = exports.getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nvar getPostClones = exports.getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nvar getTotalSlides = exports.getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nvar siblingDirection = exports.siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nvar slidesOnRight = exports.slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding; // returns no of slides on the right of active slide\n\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nvar slidesOnLeft = exports.slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding; // returns no of slides on the left of active slide\n\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nvar canUseDOM = exports.canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};","module.exports = __webpack_public_path__ + \"static/mcx-6a9ff6fdbd06378d9ca489214f8f84bc.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"section\":\"Video-module--section--1x0aJ\",\"videoDesc\":\"Video-module--videoDesc--14f9Q\",\"skPromoVideo\":\"Video-module--skPromoVideo--3lp_2\"};"],"sourceRoot":""}