PageSourceSearch

https://foixa.cat/wp-content/themes/ajuntaments_ddgi_2022/dist/assets/js/main.js

js foixa.cat collected 2026-10-03 00:34:48 UTC 364,851 bytes, 11,524 lines download raw bytes

1(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
2/*! UIkit 3.13.7 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */
3
4(function (global, factory) {
5    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
6    typeof define === 'function' && define.amd ? define('uikiticons', factory) :
7    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.UIkitIcons = factory());
8})(this, (function () { 'use strict';
9
10    function plugin(UIkit) {
11      if (plugin.installed) {
12        return;
13      }
14
15      UIkit.icon.add({
16        "500px": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg
vendor: 3,152 bytes, lines 16-17
16\"><path d=\"M9.624,11.866c-0.141,0.132,0.479,0.658,0.662,0.418c0.051-0.046,0.607-0.61,0.662-0.664c0,0,0.738,0.719,0.814,0.719 c0.1,0,0.207-0.055,0.322-0.17c0.27-0.269,0.135-0.416,0.066-0.495l-0.631-0.616l0.658-0.668c0.146-0.156,0.021-0.314-0.1-0.449 c-0.182-0.18-0.359-0.226-0.471-0.125l-0.656,0.654l-0.654-0.654c-0.033-0.034-0.08-0.045-0.124-0.045 c-0.079,0-0.191,0.068-0.307,0.181c-0.202,0.202-0.247,0.351-0.133,0.462l0.665,0.665L9.624,11.866z\"/><path d=\"M11.066,2.884c-1.061,0-2.185,0.248-3.011,0.604c-0.087,0.034-0.141,0.106-0.15,0.205C7.893,3.784,7.919,3.909,7.982,4.066 c0.05,0.136,0.187,0.474,0.452,0.372c0.844-0.326,1.779-0.507,2.633-0.507c0.963,0,1.9,0.191,2.781,0.564 c0.695,0.292,1.357,0.719,2.078,1.34c0.051,0.044,0.105,0.068,0.164,0.068c0.143,0,0.273-0.137,0.389-0.271 c0.191-0.214,0.324-0.395,0.135-0.575c-0.686-0.654-1.436-1.138-2.363-1.533C13.24,3.097,12.168,2.884,11.066,2.884z\"/><path d=\"M16.43,15.747c-0.092-0.028-0.242,0.05-0.309,0.119l0,0c-0.652,0.652-1.42,1.169-2.268,1.521 c-0.877,0.371-1.814,0.551-2.779,0.551c-0.961,0-1.896-0.189-2.775-0.564c-0.848-0.36-1.612-0.879-2.268-1.53 c-0.682-0.688-1.196-1.455-1.529-2.268c-0.325-0.799-0.471-1.643-0.471-1.643c-0.045-0.24-0.258-0.249-0.567-0.203 c-0.128,0.021-0.519,0.079-0.483,0.36v0.01c0.105,0.644,0.289,1.284,0.545,1.895c0.417,0.969,1.002,1.849,1.756,2.604 c0.757,0.754,1.636,1.34,2.604,1.757C8.901,18.785,9.97,19,11.088,19c1.104,0,2.186-0.215,3.188-0.645 c1.838-0.896,2.604-1.757,2.604-1.757c0.182-0.204,0.227-0.317-0.1-0.643C16.779,15.956,16.525,15.774,16.43,15.747z\"/><path d=\"M5.633,13.287c0.293,0.71,0.723,1.341,1.262,1.882c0.54,0.54,1.172,0.971,1.882,1.264c0.731,0.303,1.509,0.461,2.298,0.461 c0.801,0,1.578-0.158,2.297-0.461c0.711-0.293,1.344-0.724,1.883-1.264c0.543-0.541,0.971-1.172,1.264-1.882 c0.314-0.721,0.463-1.5,0.463-2.298c0-0.79-0.148-1.569-0.463-2.289c-0.293-0.699-0.721-1.329-1.264-1.881 c-0.539-0.541-1.172-0.959-1.867-1.263c-0.721-0.303-1.5-0.461-2.299-0.461c-0.802,0-1.613,0.159-2.322,0.461 c-0.577,0.25-1.544,0.867-2.119,1.454v0.012V2.108h8.16C15.1,2.104,15.1,1.69,15.1,1.552C15.1,1.417,15.1,1,14.809,1H5.915 C5.676,1,5.527,1.192,5.527,1.384v6.84c0,0.214,0.273,0.372,0.529,0.428c0.5,0.105,0.614-0.056,0.737-0.224l0,0 c0.18-0.273,0.776-0.884,0.787-0.894c0.901-0.905,2.117-1.408,3.416-1.408c1.285,0,2.5,0.501,3.412,1.408 c0.914,0.914,1.408,2.122,1.408,3.405c0,1.288-0.508,2.496-1.408,3.405c-0.9,0.896-2.152,1.406-3.438,1.406 c-0.877,0-1.711-0.229-2.433-0.671v-4.158c0-0.553,0.237-1.151,0.643-1.614c0.462-0.519,1.094-0.799,1.782-0.799 c0.664,0,1.293,0.253,1.758,0.715c0.459,0.459,0.709,1.071,0.709,1.723c0,1.385-1.094,2.468-2.488,2.468 c-0.273,0-0.769-0.121-0.781-0.125c-0.281-0.087-0.405,0.306-0.438,0.436c-0.159,0.496,0.079,0.585,0.123,0.607 c0.452,0.137,0.743,0.157,1.129,0.157c1.973,0,3.572-1.6,3.572-3.57c0-1.964-1.6-3.552-3.572-3.552c-0.97,0-1.872,0.36-2.546,1.038 c-0.656,0.631-1.027,1.487-1.027,2.322v3.438v-0.011c-0.372-0.42-0.732-1.041-0.981-1.682c-0.102-0.248-0.315-0.202-0.607-0.113 c-0.135,0.035-0.519,0.157-0.44,0.439C5.372,12.799,5.577,13.164,5.633,13.287z\"/></svg>",
17        "album": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"
17 xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"5\" y=\"2\" width=\"10\" height=\"1\"/><rect x=\"3\" y=\"4\" width=\"14\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"6.5\" width=\"17\" height=\"11\"/></svg>",
18        "arrow-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"10.5,16.08 5.63,10.66 6.37,10 10.5,14.58 14.63,10 15.37,10.66\"/><line fill=\"none\" stroke=\"#000\" x1=\"10.5\" y1=\"4\" x2=\"10.5\" y2=\"15\"/></svg>",
19        "arrow-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"10 14 5 9.5 10 5\"/><line fill=\"none\" stroke=\"#000\" x1=\"16\" y1=\"9.5\" x2=\"5\" y2=\"9.52\"/></svg>",
20        "arrow-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"10 5 15 9.5 10 14\"/><line fill=\"none\" stroke=\"#000\" x1=\"4\" y1=\"9.5\" x2=\"15\" y2=\"9.5\"/></svg>",
21        "arrow-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"10.5,4 15.37,9.4 14.63,10.08 10.5,5.49 6.37,10.08 5.63,9.4\"/><line fill=\"none\" stroke=\"#000\" x1=\"10.5\" y1=\"16\" x2=\"10.5\" y2=\"5\"/></svg>",
22        "bag": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M7.5,7.5V4A2.48,2.48,0,0,1,10,1.5,2.54,2.54,0,0,1,12.5,4V7.5\"/><polygon fill=\"none\" stroke=\"#000\" points=\"16.5 7.5 3.5 7.5 2.5 18.5 17.5 18.5 16.5 7.5\"/></svg>",
23        "ban": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"4\" y1=\"3.5\" x2=\"16\" y2=\"16.5\"/></svg>",
24        "behance": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5,10.6c-0.4-0.5-0.9-0.9-1.6-1.1c1.7-1,2.2-3.2,0.7-4.7C7.8,4,6.3,4,5.2,4C3.5,4,1.7,4,0,4v12c1.7,0,3.4,0,5.2,0 c1,0,2.1,0,3.1-0.5C10.2,14.6,10.5,12.3,9.5,10.6L9.5,10.6z M5.6,6.1c1.8,0,1.8,2.7-0.1,2.7c-1,0-2,0-2.9,0V6.1H5.6z M2.6,13.8v-3.1 c1.1,0,2.1,0,3.2,0c2.1,0,2.1,3.2,0.1,3.2L2.6,13.8z\"/><path d=\"M19.9,10.9C19.7,9.2,18.7,7.6,17,7c-4.2-1.3-7.3,3.4-5.3,7.1c0.9,1.7,2.8,2.3,4.7,2.1c1.7-0.2,2.9-1.3,3.4-2.9h-2.2 c-0.4,1.3-2.4,1.5-3.5,0.6c-0.4-0.4-0.6-1.1-0.6-1.7H20C20,11.7,19.9,10.9,19.9,10.9z M13.5,10.6c0-1.6,2.3-2.7,3.5-1.4 c0.4,0.4,0.5,0.9,0.6,1.4H13.5L13.5,10.6z\"/><rect x=\"13\" y=\"4\" width=\"5\" height=\"1.4\"/></svg>",
25        "bell": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17,15.5 L3,15.5 C2.99,14.61 3.79,13.34 4.1,12.51 C4.58,11.3 4.72,10.35 5.19,7.01 C5.54,4.53 5.89,3.2 7.28,2.16 C8.13,1.56 9.37,1.5 9.81,1.5 L9.96,1.5 C9.96,1.5 11.62,1.41 12.67,2.17 C14.08,3.2 14.42,4.54 14.77,7.02 C15.26,10.35 15.4,11.31 15.87,12.52 C16.2,13.34 17.01,14.61 17,15.5 L17,15.5 Z\"/><path fill=\"none\" stroke=\"#000\" d=\"M12.39,16 C12.39,17.37 11.35,18.43 9.91,18.43 C8.48,18.43 7.42,17.37 7.42,16\"/></svg>",
26        "bold": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5,15.3 C5.66,15.3 5.9,15 5.9,14.53 L5.9,5.5 C5.9,4.92 5.56,4.7 5,4.7 L5,4 L8.95,4 C12.6,4 13.7,5.37 13.7,6.9 C13.7,7.87 13.14,9.17 10.86,9.59 L10.86,9.7 C13.25,9.86 14.29,11.28 14.3,12.54 C14.3,14.47 12.94,16 9,16 L5,16 L5,15.3 Z M9,9.3 C11.19,9.3 11.8,8.5 11.85,7 C11.85,5.65 11.3,4.8 9,4.8 L7.67,4.8 L7.67,9.3 L9,9.3 Z M9.185,15.22 C11.97,15 12.39,14 12.4,12.58 C12.4,11.
2615 11.39,10 9,10 L7.67,10 L7.67,15 L9.18,15 Z\"/></svg>",
27        "bolt": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.74,20 L7.73,12 L3,12 L15.43,1 L12.32,9 L17.02,9 L4.74,20 L4.74,20 L4.74,20 Z M9.18,11 L7.1,16.39 L14.47,10 L10.86,10 L12.99,4.67 L5.61,11 L9.18,11 L9.18,11 L9.18,11 Z\"/></svg>",
28        "bookmark": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"5.5 1.5 15.5 1.5 15.5 17.5 10.5 12.5 5.5 17.5\"/></svg>",
29        "calendar": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 2,3 2,17 18,17 18,3 2,3 Z M 17,16 3,16 3,8 17,8 17,16 Z M 17,7 3,7 3,4 17,4 17,7 Z\"/><rect width=\"1\" height=\"3\" x=\"6\" y=\"2\"/><rect width=\"1\" height=\"3\" x=\"13\" y=\"2\"/></svg>",
30        "camera": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10.8\" r=\"3.8\"/><path fill=\"none\" stroke=\"#000\" d=\"M1,4.5 C0.7,4.5 0.5,4.7 0.5,5 L0.5,17 C0.5,17.3 0.7,17.5 1,17.5 L19,17.5 C19.3,17.5 19.5,17.3 19.5,17 L19.5,5 C19.5,4.7 19.3,4.5 19,4.5 L13.5,4.5 L13.5,2.9 C13.5,2.6 13.3,2.5 13,2.5 L7,2.5 C6.7,2.5 6.5,2.6 6.5,2.9 L6.5,4.5 L1,4.5 L1,4.5 Z\"/></svg>",
31        "cart": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"7.3\" cy=\"17.3\" r=\"1.4\"/><circle cx=\"13.3\" cy=\"17.3\" r=\"1.4\"/><polyline fill=\"none\" stroke=\"#000\" points=\"0 2 3.2 4 5.3 12.5 16 12.5 18 6.5 8 6.5\"/></svg>",
32        "check": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" points=\"4,10 8,15 17,4\"/></svg>",
33        "chevron-double-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"10 14 6 10 10 6\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"14 14 10 10 14 6\"/></svg>",
34        "chevron-double-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"10 6 14 10 10 14\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"6 6 10 10 6 14\"/></svg>",
35        "chevron-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"16 7 10 13 4 7\"/></svg>",
36        "chevron-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"13 16 7 10 13 4\"/></svg>",
37        "chevron-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"7 4 13 10 7 16\"/></svg>",
38        "chevron-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"4 13 10 7 16 13\"/></svg>",
39        "clock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.018,14.197 L9.445,10.625\"/></svg>",
40        "close": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.06\" d=\"M16,16 L4,4\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.06\" d=\"M16,4 L4,16\"/></svg>",
41        "cloud-download": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.3,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.3
411,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6\"/><polyline fill=\"none\" stroke=\"#000\" points=\"11.75 16 9.5 18.25 7.25 16\"/><path fill=\"none\" stroke=\"#000\" d=\"M9.5,18 L9.5,9.5\"/></svg>",
42        "cloud-upload": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.31,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.31,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6\"/><polyline fill=\"none\" stroke=\"#000\" points=\"7.25 11.75 9.5 9.5 11.75 11.75\"/><path fill=\"none\" stroke=\"#000\" d=\"M9.5,18 L9.5,9.5\"/></svg>",
43        "code": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"13,4 19,10 13,16\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"7,4 1,10 7,16\"/></svg>",
44        "cog": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"9.997\" cy=\"10\" r=\"3.31\"/><path fill=\"none\" stroke=\"#000\" d=\"M18.488,12.285 L16.205,16.237 C15.322,15.496 14.185,15.281 13.303,15.791 C12.428,16.289 12.047,17.373 12.246,18.5 L7.735,18.5 C7.938,17.374 7.553,16.299 6.684,15.791 C5.801,15.27 4.655,15.492 3.773,16.237 L1.5,12.285 C2.573,11.871 3.317,10.999 3.317,9.991 C3.305,8.98 2.573,8.121 1.5,7.716 L3.765,3.784 C4.645,4.516 5.794,4.738 6.687,4.232 C7.555,3.722 7.939,2.637 7.735,1.5 L12.263,1.5 C12.072,2.637 12.441,3.71 13.314,4.22 C14.206,4.73 15.343,4.516 16.225,3.794 L18.487,7.714 C17.404,8.117 16.661,8.988 16.67,10.009 C16.672,11.018 17.415,11.88 18.488,12.285 L18.488,12.285 Z\"/></svg>",
45        "comment": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6,18.71 L6,14 L1,14 L1,1 L19,1 L19,14 L10.71,14 L6,18.71 L6,18.71 Z M2,13 L7,13 L7,16.29 L10.29,13 L18,13 L18,2 L2,2 L2,13 L2,13 Z\"/></svg>",
46        "commenting": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"1.5,1.5 18.5,1.5 18.5,13.5 10.5,13.5 6.5,17.5 6.5,13.5 1.5,13.5\"/><circle cx=\"10\" cy=\"8\" r=\"1\"/><circle cx=\"6\" cy=\"8\" r=\"1\"/><circle cx=\"14\" cy=\"8\" r=\"1\"/></svg>",
47        "comments": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"2 0.5 19.5 0.5 19.5 13\"/><path d=\"M5,19.71 L5,15 L0,15 L0,2 L18,2 L18,15 L9.71,15 L5,19.71 L5,19.71 L5,19.71 Z M1,14 L6,14 L6,17.29 L9.29,14 L17,14 L17,3 L1,3 L1,14 L1,14 L1,14 Z\"/></svg>",
48        "copy": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"2.5\" width=\"12\" height=\"16\"/><polyline fill=\"none\" stroke=\"#000\" points=\"5 0.5 17.5 0.5 17.5 17\"/></svg>",
49        "credit-card": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"4.5\" width=\"17\" height=\"12\"/><rect x=\"1\" y=\"7\" width=\"18\" height=\"3\"/></svg>",
50        "database": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><ellipse fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"4.64\" rx=\"7.5\" ry=\"3.14\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.5,8.11 C17.5,9.85 14.14,11.25 10,11.25 C5.86,11.25 2.5,9.84 2.5,8.11\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.5,11.25 C17.5,12.99 14.14,14.39 10,14.39 C5.86,14.39 2.5,12.98 2.5,11.25\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.49,4.64 L17.5,14.36 C17.5,16.1 14.14,17.5 10,17.5 C5.86,17.5 2.5,16.09 2.5,14.36 L2.5,4.64\"/></svg>",
51        "desktop": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"8\" y=\"15\" width=\"1\" height=\"2\"/><rect x=\"11\" y=\"15\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"16\" width=\"10\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"3.5\" width=\"17\" height=\"11\"/></svg>",
52        "discord": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"><path d=\"M16.074,4.361a14.243,14.243,0,0,0-3.61-1.134,10.61,10.61,0,0,0-.463.96,13.219,13.219,0,0,0-4,0,10.138,10.138,0,0,0-.468-.96A14.206,14.206,0,0,0,3.919,4.364,15.146,15.146,0,0,0,1.324,14.5a14.435,14.435,0,0,0,4.428,2.269A10.982,10.982,0,0,0,6.7,15.21a9.294,9.294,0,0,1-1.494-.727c.125-.093.248-.19.366-.289a10.212,10.212,0,0,0,8.854,0c.119.1.242.2.366.289a9.274,9.274,0,0,1-1.5.728,10.8,10.8,0,0,0,.948,1.562,14.419,14.419,0,0,0,4.431-2.27A15.128,15.128,0,0,0,16.074,4.361Zm-8.981,8.1a1.7,1.7,0,0,1-1.573-1.79A1.689,1.689,0,0,1,7.093,8.881a1.679,1.679,0,0,1,1.573,1.791A1.687,1.687,0,0,1,7.093,12.462Zm5.814,0a1.7,1.7,0,0,1-1.573-1.79,1.689,1.689,0,0,1,1.573-1.791,1.679,1.679,0,0,1,1.573,1.791A1.688,1.688,0,0,1,12.907,12.462Z\"/></svg>",
53        "download": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"14,10 9.5,14.5 5,10\"/><rect x=\"3\" y=\"17\" width=\"13\" height=\"1\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"13.91\" x2=\"9.5\" y2=\"3\"/></svg>",
54        "dribbble": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M1.3,8.9c0,0,5,0.1,8.6-1c1.4-0.4,2.6-0.9,4-1.9 c1.4-1.1,2.5-2.5,2.5-2.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M3.9,16.6c0,0,1.7-2.8,3.5-4.2 c1.8-1.3,4-2,5.7-2.2C16,10,19,10.6,19,10.6\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M6.9,1.6c0,0,3.3,4.6,4.2,6.8 c0.4,0.9,1.3,3.1,1.9,5.2c0.6,2,0.9,4.4,0.9,4.4\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>",
55        "etsy": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"><path d=\"M8,4.26C8,4.07,8,4,8.31,4h4.46c.79,0,1.22.67,1.53,1.91l.25,1h.76c.14-2.82.26-4,.26-4S13.65,3,12.52,3H6.81L3.75,2.92v.84l1,.2c.73.11.9.27,1,1,0,0,.06,2,.06,5.17s-.06,5.14-.06,5.14c0,.59-.23.81-1,.94l-1,.2v.84l3.06-.1h5.11c1.15,0,3.82.1,3.82.1,0-.7.45-3.88.51-4.22h-.73l-.76,1.69a2.25,2.25,0,0,1-2.45,1.47H9.4c-1,0-1.44-.4-1.44-1.24V10.44s2.16,0,2.86.06c.55,0,.85.19,1.06,1l.23,1H13L12.9,9.94,13,7.41h-.85l-.28,1.13c-.16.74-.28.84-1,1-1,.1-2.89.09-2.89.09Z\"/></svg>",
56        "expand": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"13 2 18 2 18 7 17 7 17 3 13 3\"/><polygon points=\"2 13 3 13 3 17 7 17 7 18 2 18\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M11,9 L17,3\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M3,17 L9,11\"/></svg>",
57        "facebook": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11,10h2.6l0.4-3H11V5.3c0-0.9,0.2-1.5,1.5-1.5H14V1.1c-0.3,0-1-0.1-2.1-0.1C9.6,1,8,2.4,8,5v2H5.5v3H8v8h3V10z\"/></svg>",
58        "file-edit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M18.65,1.68 C18.41,1.45 18.109,1.33 17.81,1.33 C17.499,1.33 17.209,1.45 16.98,1.68 L8.92,9.76 L8,12.33 L10.55,11.41 L18.651,3.34 C19.12,2.87 19.12,2.15 18.65,1.68 L18.65,1.68 L18.65,1.68 Z\"/><polyline fill=\"none\" stroke=\"#000\" points=\"16.5 8.482 16.5 18.5 3.5 18.5 3.5 1.5 14.211 1.5\"/></svg>",
59        "file-pdf": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" width=\"13\" height=\"17\" x=\"3.5\" y=\"1.5\"/><path d=\"M14.65 11.67c-.48.3-1.37-.19-1.79-.37a4.65 4.65 0 0 1 1.49.06c.35.1.36.28.3.31zm-6.3.06l.43-.79a14.7 14.7 0 0 0 .75-1.64 5.48 5.48 0 0 0 1.25 1.55l.2.15a16.36 16.36 0 0 0-2.63.73zM9.5 5.32c.2 0 .32.5.32.97a1.99 1.99 0 0 1-.23 1.04 5.05 5.05 0 0 1-.17-1.3s0-.71.08-.71zm-3.9 9a4.35 4.35 0 0 1 1.21-1.46l.24-.22a4.35 4.35 0 0 1-1.46 1.68zm9.23-3.3a2.05 2.05 0 0 0-1.32-.3 11.07 11.07 0 0 0-1.58.11 4.09 4.09 0 0 1-.74-.5 5.39 5.39 0 0 1-1.32-2.06 10.37 10.37 0 0 0 .28-2.62 1.83 1.83 0 0 0-.07-.25.57.57 0 0 0-.52-.4H9.4a.59.59 0 0 0-.6.38 6.95 6.95 0 0 0 .37 3.14c-.26.63-1 2.12-1 2.12-.3.58-.57 1.08-.82 1.5l-.8.44A3.11 3.11 0 0 0 5 14.16a.39.39 0 0 0 .15.42l.24.13c1.15.56 2.28-1.74 2.66-2.42a23.1 23.1 0 0 1 3.59-.85 4.56 4.56 0 0 0 2.91.8.5.5 0 0 0 .3-.21 1.1 1.1 0 0 0 .12-.75.84.84 0 0 0-.14-.25z\"/></svg>",
60        "file-text": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" width=\"13\" height=\"17\" x=\"3.5\" y=\"1.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"12\" y1=\"12.5\" y2=\"12.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"8.5\" y2=\"8.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"6.5\" y2=\"6.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"10.5\" y2=\"10.5\"/></svg>",
61        "file": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"1.5\" width=\"13\" height=\"17\"/></svg>",
62        "flickr": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"5.5\" cy=\"9.5\" r=\"3.5\"/><circle cx=\"14.5\" cy=\"9.5\" r=\"3.5\"/></svg>",
63        "folder": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"9.5 5.5 8.5 3.5 1.5 3.5 1.5 16.5 18.5 16.5 18.5 5.5\"/></svg>",
64        "forward": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.47,13.11 C4.02,10.02 6.27,7.85 9.04,6.61 C9.48,6.41 10.27,6.13 11,5.91 L11,2 L18.89,9 L11,16 L11,12.13 C9.25,12.47 7.58,13.19 6.02,14.25 C3.03,16.28 1.63,18.54 1.63,18.54 C1.63,18.54 1.38,15.28 2.47,13.11 L2.47,13.11 Z M5.3,13.53 C6.92,12.4 9.04,11.4 12,10.92 L12,13.63 L17.36,9 L12,4.25 L12,6.8 C11.71,6.86 10.86,7.02 9.67,7.49 C6.79,8.65 4.58,10.96 3.49,13.08 C3.18,13.7 2.68,14.87 2.49,16 C3.28,15.05 4.4,14.15 5.3,13.53 L5.3,13.53 Z\"/></svg>",
65        "foursquare": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.23,2 C15.96,2 16.4,2.41 16.5,2.86 C16.57,3.15 16.56,3.44 16.51,3.73 C16.46,4.04 14.86,11.72 14.75,12.03 C14.56,12.56 14.16,12.82 13.61,12.83 C13.03,12.84 11.09,12.51 10.69,13 C10.38,13.38 7.79,16.39 6.81,17.53 C6.61,17.76 6.4,17.96 6.08,17.99 C5.68,18.04 5.29,17.87 5.17,17.45 C5.12,17.28 5.1,17.09 5.1,16.91 C5.1,12.4 4.86,7.81 5.11,3.31 C5.17,2.5 5.81,2.12 6.53,2 L15.23,2 L15.23,2 Z M9.76,11.42 C9.94,11.19 10.17,11.1 10.45,11.1 L12.86,11.1 C13.12,11.1 13.31,10.94 13.36,10.69 C13.37,10.64 13.62,9.41 13.74,8.83 C13.81,8.52 13.53,8.28 13.27,8.28 C12.35,8.29 11.42,8.28 10.5,8.28 C9.84,8.28 9.83,7.69 9.82,7.21 C9.8,6.85 10.13,6.55 10.5,6.55 C11.59,6.56 12.67,6.55 13.76,6.55 C14.03,6.55 14.23,6.4 14.28,6.14 C14.34,5.87 14.67,4.29 14.67,4.29 C14.67,4.29 14.82,3.74 14.19,3.74 L7.34,3.74 C7,3.75 6.84,4.02 6.84,4.33 C6.84,7.58 6.85,14.95 6.85,14.99 C6.87,15 8.89,12.51 9.76,11.42 L9.76,11.42 Z\"/></svg>",
66        "future": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline points=\"19 2 18 2 18 6 14 6 14 7 19 7 19 2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M18,6.548 C16.709,3.29 13.354,1 9.6,1 C4.6,1 0.6,5 0.6,10 C0.6,15 4.6,19 9.6,19 C14.6,19 18.6,15 18.6,10\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path d=\"M13.018,14.197 L9.445,10.625\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\"/></svg>",
67        "git-branch": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"7\" cy=\"3\" r=\"2\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"14\" cy=\"6\" r=\"2\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"7\" cy=\"17\" r=\"2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"2\" d=\"M14,8 C14,10.41 12.43,10.87 10.56,11.25 C9.09,11.54 7,12.06 7,15 L7,5\"/></svg>",
68        "git-fork": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"5.79\" cy=\"2.79\" r=\"1.79\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"14.19\" cy=\"2.79\" r=\"1.79\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"10.03\" cy=\"16.79\" r=\"1.79\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"2\" d=\"M5.79,4.57 L5.79,6.56 C5.79,9.19 10.03,10.22 10.03,13.31 C10.03,14.86 10.04,14.55 10.04,14.55 C10.04,14.37 10.04,14.86 10.04,13.31 C10.04,10.22 14.2,9.19 14.2,6.56 L14.2,4.57\"/></svg>",
69        "github-alt": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5 C4.75,0.5 0.5,4.76 0.5,10.01 C0.5,15.26 4.75,19.51 10,19.51 C15.24,19.51 19.5,15.26 19.5,10.01 C19.5,4.76 15.25,0.5 10,0.5 L10,0.5 Z M12.81,17.69 C12.81,17.69 12.81,17.7 12.79,17.69 C12.47,17.75 12.35,17.59 12.35,17.36 L12.35,16.17 C12.35,15.45 12.09,14.92 11.58,14.56 C12.2,14.51 12.77,14.39 13.26,14.21 C13.87,13.98 14.36,13.69 14.74,13.29 C15.42,12.59 15.76,11.55 15.76,10.17 C15.76,9.25 15.45,8.46 14.83,7.8 C15.1,7.08 15.07,6.29 14.75,5.44 L14.51,5.42 C14.34,5.4 14.06,5.46 13.67,5.61 C13.25,5.78 12.79,6.03 12.31,6.35 C11.55,6.16 10.81,6.05 10.09,6.05 C9.36,6.05 8.61,6.15 7.88,6.35 C7.28,5.96 6.75,5.68 6.26,5.54 C6.07,5.47 5.9,5.44 5.78,5.44 L5.42,5.44 C5.06,6.29 5.04,7.08 5.32,7.8 C4.7,8.46 4.4,9.25 4.4,10.17 C4.4,11.94 4.96,13.16 6.08,13.84 C6.53,14.13 7.05,14.32 7.69,14.43 C8.03,14.5 8.32,14.54 8.55,14.55 C8.07,14.89 7.82,15.42 7.82,16.16 L7.82,17.51 C7.8,17.69 7.7,17.8 7.51,17.8 C4.21,16.74 1.82,13.65 1.82,10.01 C1.82,5.5 5.49,1.83 10,1.83 C14.5,1.83 18.17,5.5 18.17,10.01 C18.18,13.53 15.94,16.54 12.81,17.69 L12.81,17.69 Z\"/></svg>",
70        "github": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,1 C5.03,1 1,5.03 1,10 C1,13.98 3.58,17.35 7.16,18.54 C7.61,18.62 7.77,18.34 7.77,18.11 C7.77,17.9 7.76,17.33 7.76,16.58 C5.26,17.12 4.73,15.37 4.73,15.37 C4.32,14.33 3.73,14.05 3.73,14.05 C2.91,13.5 3.79,13.5 3.79,13.5 C4.69,13.56 5.17,14.43 5.17,14.43 C5.97,15.8 7.28,15.41 7.79,15.18 C7.87,14.6 8.1,14.2 8.36,13.98 C6.36,13.75 4.26,12.98 4.26,9.53 C4.26,8.55 4.61,7.74 5.19,7.11 C5.1,6.88 4.79,5.97 5.28,4.73 C5.28,4.73 6.04,4.49 7.75,5.65 C8.47,5.45 9.24,5.35 10,5.35 C10.76,5.35 11.53,5.45 12.25,5.65 C13.97,4.48 14.72,4.73 14.72,4.73 C15.21,5.97 14.9,6.88 14.81,7.11 C15.39,7.74 15.73,8.54 15.73,9.53 C15.73,12.99 13.63,13.75 11.62,13.97 C11.94,14.25 12.23,14.8 12.23,15.64 C12.23,16.84 12.22,17.81 12.22,18.11 C12.22,18.35 12.38,18.63 12.84,18.54 C16.42,17.35 19,13.98 19,10 C19,5.03 14.97,1 10,1 L10,1 Z\"/></svg>",
71        "gitter": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"3.5\" y=\"1\" width=\"1.531\" height=\"11.471\"/><rect x=\"7.324\" y=\"4.059\" width=\"1.529\" height=\"15.294\"/><rect x=\"11.148\" y=\"4.059\" width=\"1.527\" height=\"15.294\"/><rect x=\"14.971\" y=\"4.059\" width=\"1.529\" height=\"8.412\"/></svg>",
72        "google": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.86,9.09 C18.46,12.12 17.14,16.05 13.81,17.56 C9.45,19.53 4.13,17.68 2.47,12.87 C0.68,7.68 4.22,2.42 9.5,2.03 C11.57,1.88 13.42,2.37 15.05,3.65 C15.22,3.78 15.37,3.93 15.61,4.14 C14.9,4.81 14.23,5.45 13.5,6.14 C12.27,5.08 10.84,4.72 9.28,4.98 C8.12,5.17 7.16,5.76 6.37,6.63 C4.88,8.27 4.62,10.86 5.76,12.82 C6.95,14.87 9.17,15.8 11.57,15.25 C13.27,14.87 14.76,13.33 14.89,11.75 L10.51,11.75 L10.51,9.09 L17.86,9.09 L17.86,9.09 Z\"/></svg>",
73        "grid": "<svg width=\"20\" 
73height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"2\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"2\" y=\"8\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"8\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"8\" width=\"3\" height=\"3\"/><rect x=\"2\" y=\"14\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"14\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"14\" width=\"3\" height=\"3\"/></svg>",
74        "happy": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"13\" cy=\"7\" r=\"1\"/><circle cx=\"7\" cy=\"7\" r=\"1\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10\" r=\"8.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M14.6,11.4 C13.9,13.3 12.1,14.5 10,14.5 C7.9,14.5 6.1,13.3 5.4,11.4\"/></svg>",
75        "hashtag": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.431,8 L15.661,7 L12.911,7 L13.831,3 L12.901,3 L11.98,7 L9.29,7 L10.21,3 L9.281,3 L8.361,7 L5.23,7 L5,8 L8.13,8 L7.21,12 L4.23,12 L4,13 L6.98,13 L6.061,17 L6.991,17 L7.911,13 L10.601,13 L9.681,17 L10.611,17 L11.531,13 L14.431,13 L14.661,12 L11.76,12 L12.681,8 L15.431,8 Z M10.831,12 L8.141,12 L9.061,8 L11.75,8 L10.831,12 Z\"/></svg>",
76        "heart": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" d=\"M10,4 C10,4 8.1,2 5.74,2 C3.38,2 1,3.5
765 1,6.73 C1,8.84 2.67,10.44 2.67,10.44 L10,18 L17.33,10.44 C17.33,10.44 19,8.84 19,6.73 C19,3.55 16.62,2 14.26,2 C11.9,2 10,4 10,4 L10,4 Z\"/></svg>",
77        "history": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"#000\" points=\"1 2 2 2 2 6 6 6 6 7 1 7 1 2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M2.1,6.548 C3.391,3.29 6.746,1 10.5,1 C15.5,1 19.5,5 19.5,10 C19.5,15 15.5,19 10.5,19 C5.5,19 1.5,15 1.5,10\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.018,14.197 L9.445,10.625\"/></svg>",
78        "home": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"18.65 11.35 10 2.71 1.35 11.35 0.65 10.65 10 1.29 19.35 10.65\"/><polygon points=\"15 4 18 4 18 7 17 7 17 5 15 5\"/><polygon points=\"3 11 4 11 4 18 7 18 7 12 12 12 12 18 16 18 16 11 17 11 17 19 11 19 11 13 8 13 8 19 3 19\"/></svg>",
79        "image": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"16.1\" cy=\"6.1\" r=\"1.1\"/><rect fill=\"none\" stroke=\"#000\" x=\".5\" y=\"2.5\" width=\"19\" height=\"15\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"4,13 8,9 13,14\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"11,12 12.5,10.5 16,14\"/></svg>",
80        "info": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.13,11.59 C11.97,12.84 10.35,14.12 9.1,14.16 C6.17,14.2 9.89,9.46 8.74,8.37 C9.3,8.16 10.62,7.83 10.62,8.81 C10.62,9.63 10.12,10.55 9.88,11.32 C8.66,15.16 12.13,11.15 12.14,11.18 C12.16,11.21 12.16,11.35 12.13,11.59 C12.08,11.95 12.16,11.35 12.13,11.59 L12.13,11.59 Z M11.56,5.67 C11.56,6.67 9.36,7.15 9.36,6.03 C9.36,5 11.56,4.54 11.56,5.67 L11.56,5.67 Z\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>",
81        "instagram": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.55,1H6.46C3.45,1,1,3.44,1,6.44v7.12c0,3,2.45,5.44,5.46,5.44h7.08c3.02,0,5.46-2.44,5.46-5.44V6.44 C19.01,3.44,16.56,1,13.55,1z M17.5,14c0,1.93-1.57,3.5-3.5,3.5H6c-1.93,0-3.5-1.57-3.5-3.5V6c0-1.93,1.57-3.5,3.5-3.5h8 c1.93,0,3.5,1.57,3.5,3.5V14z\"/><circle cx=\"14.87\" cy=\"5.26\" r=\"1.09\"/><path d=\"M10.03,5.45c-2.55,0-4.63,2.06-4.63,4.6c0,2.55,2.07,4.61,4.63,4.61c2.56,0,4.63-2.061,4.63-4.61 C14.65,7.51,12.58,5.45,10.03,5.45L10.03,5.45L10.03,5.45z M10.08,13c-1.66,0-3-1.34-3-2.99c0-1.65,1.34-2.99,3-2.99s3,1.34,3,2.99 C13.08,11.66,11.74,13,10.08,13L10.08,13L10.08,13z\"/></svg>",
82        "italic": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.63,5.48 L10.15,14.52 C10,15.08 10.37,15.25 11.92,15.3 L11.72,16 L6,16 L6.2,15.31 C7.78,15.26 8.19,15.09 8.34,14.53 L10.82,5.49 C10.97,4.92 10.63,4.76 9.09,4.71 L9.28,4 L15,4 L14.81,4.69 C13.23,4.75 12.78,4.91 12.63,5.48 L12.63,5.48 Z\"/></svg>",
83        "joomla": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.8,13.4l1.7-1.7L5.9,8c-0.6-0.5-0.6-1.5,0-2c0.6-0.6,1.4-0.6,2,0l1.7-1.7c-1-1-2.3-1.3-3.6-1C5.8,2.2,4.8,1.4,3.7,1.4 c-1.3,0-2.3,1-2.3,2.3c0,1.1,0.8,2,1.8,2.3c-0.4,1.3-0.1,2.8,1,3.8L7.8,13.4L7.8,13.4z\"/><path d=\"M10.2,4.3c1-1,2.5-1.4,3.8-1c0.2-1.1,1.1-2,2.3-2c1.3,0,2.3,1,2.3,2.3c0,1.2-0.9,2.2-2,2.3c0.4,1.3,0,2.8-1,3.8L13.9,8 c0.6-0.5,0.6-1.5,0-2c-0.5-0.6-1.5-0.6-2,0L8.2,9.7L6.5,8\"/><path d=\"M14.1,16.8c-1.3,0.4-2.8,0.1-3.8-1l1.7-1.7c0.6,0.6,1.5,0.6,2,0c0.5-0.6,0.6-1.5,0-2l-3.7-3.7L12,6.7l3.7,3.7 c1,1,1.3,2.4,1,3.6c1.1,0.2,2,1.1,2,2.3c0,1.3-1,2.3-2.3,2.3C15.2,18.6,14.3,17.8,14.1,16.8\"/><path d=\"M13.2,12.2l-3.7,3.7c-1,1-2.4,1.3-3.6,1c-0.2,1-1.2,1.8-2.2,1.8c-1.3,0-2.3-1-2.3-2.3c0-1.1,0.8-2,1.8-2.3 c-0.3-1.3,0-2.7,1-3.7l1.7,1.7c-0.6,0.6-0.6,1.5,0,2c0.6,0.6,1.4,0.6,2,0l3.7-3.7\"/></svg>",
84        "laptop": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"16\" width=\"20\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"2.5\" y=\"4.5\" width=\"15\" height=\"10\"/></svg>",
85        "lifesaver": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5 C4.76,0.5 0.5,4.76 0.5,10 C0.5,15.24 4.76,19.5 10,19.5 C15.24,19.5 19.5,15.24 19.5,10 C19.5,4.76 15.24,0.5 10,0.5 L10,0.5 Z M10,1.5 C11.49,1.5 12.89,1.88 14.11,2.56 L11.85,4.82 C11.27,4.61 10.65,4.5 10,4.5 C9.21,4.5 8.47,4.67 7.79,4.96 L5.58,2.75 C6.87,1.95 8.38,1.5 10,1.5 L10,1.5 Z M4.96,7.8 C4.67,8.48 4.5,9.21 4.5,10 C4.5,10.65 4.61,11.27 4.83,11.85 L2.56,14.11 C1.88,12.89 1.5,11.49 1.5,10 C1.5,8.38 1.95,6.87 2.75,5.58 L4.96,7.79 L4.96,7.8 L4.96,7.8 Z M10,18.5 C8.25,18.5 6.62,17.97 5.27,17.06 L7.46,14.87 C8.22,15.27 9.08,15.5 10,15.5 C10.79,15.5 11.53,15.33 12.21,15.04 L14.42,17.25 C13.13,18.05 11.62,18.5 10,18.5 L10,18.5 Z M10,14.5 C7.52,14.5 5.5,12.48 5.5,10 C5.5,7.52 7.52,5.5 10,5.5 C12.48,5.5 14.5,7.52 14.5,10 C14.5,12.48 12.48,14.5 10,14.5 L10,14.5 Z M15.04,12.21 C15.33,11.53 15.5,10.79 15.5,10 C15.5,9.08 15.27,8.22 14.87,7.46 L17.06,5.27 C17.97,6.62 18.5,8.25 18.5,10 C18.5,11.62 18.05,13.13 17.25,14.42 L15.04,12.21 L15.04,12.21 Z\"/></svg>",
86        "link": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M10.625,12.375 L7.525,15.475 C6.825,16.175 5.925,16.175 5.225,15.475 L4.525,14.775 C3.825,14.074 3.825,13.175 4.525,12.475 L7.625,9.375\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M9.325,7.375 L12.425,4.275 C13.125,3.575 14.025,3.575 14.724,4.275 L15.425,4.975 C16.125,5.675 16.125,6.575 15.425,7.275 L12.325,10.375\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M7.925,11.875 L11.925,7.975\"/></svg>",
87        "linkedin": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.77,17.89 L5.77,7.17 L2.21,7.17 L2.21,17.89 L5.77,17.89 L5.77,17.89 Z M3.99,5.71 C5.23,5.71 6.01,4.89 6.01,3.86 C5.99,2.8 5.24,2 4.02,2 C2.8,2 2,2.8 2,3.85 C2,4.88 2.77,5.7 3.97,5.7 L3.99,5.7 L3.99,5.71 L3.99,5.71 Z\"/><path d=\"M7.75,17.89 L11.31,17.89 L11.31,11.9 C11.31,11.58 11.33,11.26 11.43,11.03 C11.69,10.39 12.27,9.73 13.26,9.73 C14.55,9.73 15.06,10.71 15.06,12.15 L15.06,17.89 L18.62,17.89 L18.62,11.74 C18.62,8.45 16.86,6.92 14.52,6.92 C12.6,6.92 11.75,7.99 11.28,8.73 L11.3,8.73 L11.3,7.17 L7.75,7.17 C7.79,8.17 7.75,17.89 7.75,17.89 L7.75,17.89 L7.75,17.89 Z\"/></svg>",
88        "list": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"6\" y=\"4\" width=\"12\" height=\"1\"/><rect x=\"6\" y=\"9\" width=\"12\" height=\"1\"/><rect x=\"6\" y=\"14\" width=\"12\" height=\"1\"/><rect x=\"2\" y=\"4\" width=\"2\" height=\"1\"/><rect x=\"2\" y=\"9\" width=\"2\" height=\"1\"/><rect x=\"2\" y=\"14\" width=\"2\" height=\"1\"/></svg>",
89        "location": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" d=\"M10,0.5 C6.41,0.5 3.5,3.39 3.5,6.98 C3.5,11.83 10,19 10,19 C10,
8919 16.5,11.83 16.5,6.98 C16.5,3.39 13.59,0.5 10,0.5 L10,0.5 Z\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"6.8\" r=\"2.3\"/></svg>",
90        "lock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" height=\"10\" width=\"13\" y=\"8.5\" x=\"3.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M6.5,8 L6.5,4.88 C6.5,3.01 8.07,1.5 10,1.5 C11.93,1.5 13.5,3.01 13.5,4.88 L13.5,8\"/></svg>",
91        "mail": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"1.4,6.5 10,11 18.6,6.5\"/><path d=\"M 1,4 1,16 19,16 19,4 1,4 Z M 18,15 2,15 2,5 18,5 18,15 Z\"/></svg>",
92        "menu": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"2\" y=\"4\" width=\"16\" height=\"1\"/><rect x=\"2\" y=\"9\" width=\"16\" height=\"1\"/><rect x=\"2\" y=\"14\" width=\"16\" height=\"1\"/></svg>",
93        "microphone": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" x1=\"10\" x2=\"10\" y1=\"16.44\" y2=\"18.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"7\" x2=\"13\" y1=\"18.5\" y2=\"18.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.5 4.89v5.87a3.5 3.5 0 0 1-7 0V4.89a3.5 3.5 0 0 1 7 0z\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M15.5 10.36V11a5.5 5.5 0 0 1-11 0v-.6\"/></svg>",
94        "minus-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.5\" cy=\"9.5\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" x1=\"5\" y1=\"9.5\" x2=\"14\" y2=\"9.5\"/></svg>",
95        "minus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect height=\"1\" width=\"18\" y=\"9\" x=\"1\"/></svg>",
96        "more-vertical": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"10\" cy=\"3\" r=\"2\"/><circle cx=\"10\" cy=\"10\" r=\"2\"/><circle cx=\"10\" cy=\"17\" r=\"2\"/></svg>",
97        "more": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"3\" cy=\"10\" r=\"2\"/><circle cx=\"10\" cy=\"10\" r=\"2\"/><circle cx=\"17\" cy=\"10\" r=\"2\"/></svg>",
98        "move": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"4,5 1,5 1,9 2,9 2,6 4,6\"/><polygon points=\"1,16 2,16 2,18 4,18 4,19 1,19\"/><polygon points=\"14,16 14,19 11,19 11,18 13,18 13,16\"/><rect fill=\"none\" stroke=\"#000\" x=\"5.5\" y=\"1.5\" width=\"13\" height=\"13\"/><rect x=\"1\" y=\"11\" width=\"1\" height=\"3\"/><rect x=\"6\" y=\"18\" width=\"3\" height=\"1\"/></svg>",
99        "nut": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"2.5,5.7 10,1.3 17.5,5.7 17.5,14.3 10,18.7 2.5,14.3\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10\" r=\"3.5\"/></svg>",
100        "pagekit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"3,1 17,1 17,16 10,16 10,13 14,13 14,4 6,4 6,16 10,16 10,19 3,19\"/></svg>",
101        "paint-bucket": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.21,1 L0,11.21 L8.1,19.31 L18.31,9.1 L10.21,1 L10.21,1 Z M16.89,9.1 L15,11 L1.7,11 L10.21,2.42 L16.89,9.1 Z\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.42,2.33 L11.7,7.61\"/><path d=\"M18.49,12 C18.49,12 20,14.06 20,15.36 C20,16.28 19.24,17 18.49,17 L18.49,17 C17.74,17 17,16.28 17,15.36 C17,14.06 18.49,12 18.49,12 L18.49,12 Z\"/></svg>",
102        "pencil": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M17.25,6.01 L7.12,16.1 L3.82,17.2 L5.02,13.9 L15.12,3.88 C15.71,3.29 16.66,3.29 17.25,3.88 C17.83,4.47 17.83,5.42 17.25,6.01 L17.25,6.01 Z\"/><path fill=\"none\" stroke=\"#000\" d=\"M15.98,7.268 L13.851,5.148\"/></svg>",
103        "phone-landscape": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M17,5.5 C17.8,5.5 18.5,6.2 18.5,7 L18.5,14 C18.5,14.8 17.8,15.5 17,15.5 L3,15.5 C2.2,15.5 1.5,14.8 1.5,14 L1.5,7 C1.5,6.2 2.2,5.5 3,5.5 L17,5.5 L17,5.5 L17,5.5 Z\"/><circle cx=\"3.8\" cy=\"10.5\" r=\".8\"/></svg>",
104        "phone": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M15.5,17 C15.5,17.8 14.8,18.5 14,18.5 L7,18.5 C6.2,18.5 5.5,17.8 5.5,17 L5.5,3 C5.5,2.2 6.2,1.5 7,1.5 L14,1.5 C14.8,1.5 15.5,2.2 15.5,3 L15.5,17 L15.5,17 L15.5,17 Z\"/><circle cx=\"10.5\" cy=\"16.5\" r=\".8\"/></svg>",
105        "pinterest": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.21,1 C5.5,1 3,4.16 3,7.61 C3,9.21 3.85,11.2 5.22,11.84 C5.43,11.94 5.54,11.89 5.58,11.69 C5.62,11.54 5.8,10.8 5.88,10.45 C5.91,10.34 5.89,10.24 5.8,10.14 C5.36,9.59 5,8.58 5,7.65 C5,5.24 6.82,2.91 9.93,2.91 C12.61,2.91 14.49,4.74 14.49,7.35 C14.49,10.3 13,12.35 11.06,12.35 C9.99,12.35 9.19,11.47 9.44,10.38 C9.75,9.08 10.35,7.68 10.35,6.75 C10.35,5.91 9.9,5.21 8.97,5.21 C7.87,5.21 6.99,6.34 6.99,7.86 C6.99,8.83 7.32,9.48 7.32,9.48 C7.32,9.48 6.24,14.06 6.04,14.91 C5.7,16.35 6.08,18.7 6.12,18.9 C6.14,19.01 6.26,19.05 6.33,18.95 C6.44,18.81 7.74,16.85 8.11,15.44 C8.24,14.93 8.79,12.84 8.79,12.84 C9.15,13.52 10.19,14.09 11.29,14.09 C14.58,14.09 16.96,11.
10506 16.96,7.3 C16.94,3.7 14,1 10.21,1\"/></svg>",
106        "play-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" points=\"8.5 7 13.5 10 8.5 13\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>",
107        "play": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"6.5,5 14.5,10 6.5,15\"/></svg>",
108        "plus-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.5\" cy=\"9.5\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"5\" x2=\"9.5\" y2=\"14\"/><line fill=\"none\" stroke=\"#000\" x1=\"5\" y1=\"9.5\" x2=\"14\" y2=\"9.5\"/></svg>",
109        "plus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"1\" width=\"1\" height=\"17\"/><rect x=\"1\" y=\"9\" width=\"17\" height=\"1\"/></svg>",
110        "print": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"4.5 13.5 1.5 13.5 1.5 6.5 18.5 6.5 18.5 13.5 15.5 13.5\"/><polyline fill=\"none\" stroke=\"#000\" points=\"15.5 6.5 15.5 2.5 4.5 2.5 4.5 6.5\"/><rect fill=\"none\" stroke=\"#000\" width=\"11\" height=\"6\" x=\"4.5\" y=\"11.5\"/><rect width=\"8\" height=\"1\" x=\"6\" y=\"13\"/><rect width=\"8\" height=\"1\" x=\"6\" y=\"15\"/></svg>",
111        "pull": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"6.85,8 9.5,10.6 12.15,8 12.85,8.7 9.5,12 6.15,8.7\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"11\" x2=\"9.5\" y2=\"2\"/><polyline fill=\"none\" stroke=\"#000\" points=\"6,5.5 3.5,5.5 3.5,18.5 15.5,18.5 15.5,5.5 13,5.5\"/></svg>",
112        "push": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"12.15,4 9.5,1.4 6.85,4 6.15,3.3 9.5,0 12.85,3.3\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"10\" x2=\"9.5\" y2=\"1\"/><polyline fill=\"none\" stroke=\"#000\" points=\"6 5.5 3.5 5.5 3.5 18.5 15.5 18.5 15.5 5.5 13 5.5\"/></svg>",
113        "question": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><circle cx=\"10.44\" cy=\"14.42\" r=\"1.05\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" d=\"M8.17,7.79 C8.17,4.75 12.72,4.73 12.72,7.72 C12.72,8.67 11.81,9.15 11.23,9.75 C10.75,10.24 10.51,10.73 10.45,11.4 C10.44,11.53 10.43,11.64 10.43,11.75\"/></svg>",
114        "quote-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.27,7.79 C17.27,9.45 16.97,10.43 15.99,12.02 C14.98,13.64 13,15.23 11.56,15.97 L11.1,15.08 C12.34,14.2 13.14,13.51 14.02,11.82 C14.27,11.34 14.41,10.92 14.49,10.54 C14.3,10.58 14.09,10.6 13.88,10.6 C12.06,10.6 10.59,9.12 10.59,7.3 C10.59,5.48 12.06,4 13.88,4 C15.39,4 16.67,5.02 17.05,6.42 C17.19,6.82 17.27,7.27 17.27,7.79 L17.27,7.79 Z\"/><path d=\"M8.68,7.79 C8.68,9.45 8.38,10.43 7.4,12.02 C6.39,13.64 4.41,15.23 2.97,15.97 L2.51,15.08 C3.75,14.2 4.55,13.51 5.43,11.82 C5.68,11.34 5.82,10.92 5.9,10.54 C5.71,10.58 5.5,10.6 5.29,10.6 C3.47,10.6 2,9.12 2,7.3 C2,5.48 3.47,4 5.29,4 C6.8,4 8.08,5.02 8.46,6.42 C8.6,6.82 8.68,7.27 8.68,7.79 L8.68,7.79 Z\"/></svg>",
115        "receiver": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" d=\"M6.189,13.611C8.134,15.525 11.097,18.239 13.867,18.257C16.47,18.275 18.2,16.241 18.2,16.241L14.509,12.551L11.539,13.639L6.189,8.29L7.313,5.355L3.76,1.8C3.76,1.8 1.732,3.537 1.7,6.092C1.667,8.809 4.347,11.738 6.189,13.611\"/></svg>",
116        "reddit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19 9.05a2.56 2.56 0 0 0-2.56-2.56 2.59 2.59 0 0 0-1.88.82 10.63 10.63 0 0 0-4.14-1v-.08c.58-1.62 1.58-3.89 2.7-4.1.38-.08.77.12 1.19.57a1.15 1.15 0 0 0-.06.37 1.48 1.48 0 1 0 1.51-1.45 1.43 1.43 0 0 0-.76.19A2.29 2.29 0 0 0 12.91 1c-2.11.43-3.39 4.38-3.63 5.19 0 0 0 .11-.06.11a10.65 10.65 0 0 0-3.75 1A2.56 2.56 0 0 0 1 9.05a2.42 2.42 0 0 0 .72 1.76A5.18 5.18 0 0 0 1.24 13c0 3.66 3.92 6.64 8.73 6.64s8.74-3 8.74-6.64a5.23 5.23 0 0 0-.46-2.13A2.58 2.58 0 0 0 19 9.05zm-16.88 0a1.44 1.44 0 0 1 2.27-1.19 7.68 7.68 0 0 0-2.07 1.91 1.33 1.33 0 0 1-.2-.72zM10 18.4c-4.17 0-7.55-2.4-7.55-5.4S5.83 7.53 10 7.53 17.5 10 17.5 13s-3.38 5.4-7.5 5.4zm7.69-8.61a7.62 7.62 0 0 0-2.09-1.91 1.41 1.41 0 0 1 .84-.28 1.47 1.47 0 0 1 1.44 1.45 1.34 1.34 0 0 1-.21.72z\"/><path d=\"M6.69 12.58a1.39 1.39 0 1 1 1.39-1.39 1.38 1.38 0 0 1-1.38 1.39z\"/><path d=\"M14.26 11.2a1.39 1.39 0 1 1-1.39-1.39 1.39 1.39 0 0 1 1.39 1.39z\"/><path d=\"M13.09 14.88a.54.54 0 0 1-.09.77 5.3 5.3 0 0 1-3.26 1.19 5.61 5.61 0 0 1-3.4-1.22.55.55 0 1 1 .73-.83 4.09 4.09 0 0 0 5.25 0 .56.56 0 0 1 .77.09z\"/></svg>",
117        "refresh": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17.08,11.15 C17.09,11.31 17.1,11.47 17.1,11.64 C17.1,15.53 13.94,18.69 10.05,18.69 C6.16,18.68 3,15.53 3,11.63 C3,7.74 6.16,4.58 10.05,4.58 C10.9,4.58 11.71,4.73 12.46,5\"/><polyline fill=\"none\" stroke=\"#000\" points=\"9.9 2 12.79 4.89 9.79 7.9\"/>
117</svg>",
118        "reply": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.7,13.11 C16.12,10.02 13.84,7.85 11.02,6.61 C10.57,6.41 9.75,6.13 9,5.91 L9,2 L1,9 L9,16 L9,12.13 C10.78,12.47 12.5,13.19 14.09,14.25 C17.13,16.28 18.56,18.54 18.56,18.54 C18.56,18.54 18.81,15.28 17.7,13.11 L17.7,13.11 Z M14.82,13.53 C13.17,12.4 11.01,11.4 8,10.92 L8,13.63 L2.55,9 L8,4.25 L8,6.8 C8.3,6.86 9.16,7.02 10.37,7.49 C13.3,8.65 15.54,10.96 16.65,13.08 C16.97,13.7 17.48,14.86 17.68,16 C16.87,15.05 15.73,14.15 14.82,13.53 L14.82,13.53 Z\"/></svg>",
119        "rss": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"3.12\" cy=\"16.8\" r=\"1.85\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,8.2 C1.78,8.18 2.06,8.16 2.35,8.16 C7.57,8.16 11.81,12.37 11.81,17.57 C11.81,17.89 11.79,18.19 11.76,18.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,2.52 C1.78,2.51 2.06,2.5 2.35,2.5 C10.72,2.5 17.5,9.24 17.5,17.57 C17.5,17.89 17.49,18.19 17.47,18.5\"/></svg>",
120        "search": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>",
121        "server": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"3\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"7\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"16\" y=\"3\" width=\"1\" height=\"1\"/><rect x=\"16\" y=\"10\" width=\"1\" height=\"1\"/><circle fill=\"none\" stroke=\"#000\" cx=\"9.9\" cy=\"17.4\" r=\"1.4\"/><rect x=\"3\" y=\"10\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"10\" width=\"1\" height=\"2\"/><rect x=\"9.5\" y=\"14\" width=\"1\" height=\"2\"/><rect x=\"3\" y=\"17\" width=\"6\" height=\"1\"/><rect x=\"11\" y=\"17\" width=\"6\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"1.5\" width=\"17\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"8.5\" width=\"17\" height=\"5\"/></svg>",
122        "settings": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><ellipse fill=\"none\" stroke=\"#000\" cx=\"6.11\" cy=\"3.55\" rx=\"2.11\" ry=\"2.15\"/><ellipse fill=\"none\" stroke=\"#000\" cx=\"6.11\" cy=\"15.55\" rx=\"2.11\" ry=\"2.15\"/><circle fill=\"none\" stroke=\"#000\" cx=\"13.15\" cy=\"9.55\" r=\"2.15\"/><rect x=\"1\" y=\"3\" width=\"3\" height=\"1\"/><rect x=\"10\" y=\"3\" width=\"8\" height=\"1\"/><rect x=\"1\" y=\"9\" width=\"8\" height=\"1\"/><rect x=\"15\" y=\"9\" width=\"3\" height=\"1\"/><rect x=\"1\" y=\"15\" width=\"3\" height=\"1\"/><rect x=\"10\" y=\"15\" width=\"8\" height=\"1\"/></svg>",
123        "shrink": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"11 4 12 4 12 8 16 8 16 9 11 9\"/><polygon points=\"4 11 9 11 9 16 8 16 8 12 4 12\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M12,8 L18,2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M2,18 L8,12\"/></svg>",
124        "sign-in": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"7 2 17 2 17 17 7 17 7 16 16 16 16 3 7 3\"/><polygon points=\"9.1 13.4 8.5 12.8 11.28 10 4 10 4 9 11.28 9 8.5 6.2 9.1 5.62 13 9.5\"/></svg>",
125        "sign-out": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"13.1 13.4 12.5 12.8 15.28 10 8 10 8 9 15.28 9 12.5 6.2 13.1 5.62 17 9.5\"/><polygon points=\"13 2 3 2 3 17 13 17 13 16 4 16 4 3 13 3\"/></svg>",
126        "social": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13.4\" y1=\"14\" x2=\"6.3\" y2=\"10.7\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13.5\" y1=\"5.5\" x2=\"6.5\" y2=\"8.8\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"15.5\" cy=\"4.6\" r=\"2.3\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"15.5\" cy=\"14.8\" r=\"2.3\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"4.5\" cy=\"9.8\" r=\"2.3\"/></svg>",
127        "soundcloud": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.2,9.4c-0.4,0-0.8,0.1-1.101,0.2c-0.199-2.5-2.399-4.5-5-4.5c-0.6,0-1.2,0.1-1.7,0.3C9.2,5.5,9.1,5.6,9.1,5.6V15h8 
127c1.601,0,2.801-1.2,2.801-2.8C20,10.7,18.7,9.4,17.2,9.4L17.2,9.4z\"/><rect x=\"6\" y=\"6.5\" width=\"1.5\" height=\"8.5\"/><rect x=\"3\" y=\"8\" width=\"1.5\" height=\"7\"/><rect y=\"10\" width=\"1.5\" height=\"5\"/></svg>",
128        "star": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"10 2 12.63 7.27 18.5 8.12 14.25 12.22 15.25 18 10 15.27 4.75 18 5.75 12.22 1.5 8.12 7.37 7.27\"/></svg>",
129        "strikethrough": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6,13.02 L6.65,13.02 C7.64,15.16 8.86,16.12 10.41,16.12 C12.22,16.12 12.92,14.93 12.92,13.89 C12.92,12.55 11.99,12.03 9.74,11.23 C8.05,10.64 6.23,10.11 6.23,7.83 C6.23,5.5 8.09,4.09 10.4,4.09 C11.44,4.09 12.13,4.31 12.72,4.54 L13.33,4 L13.81,4 L13.81,7.59 L13.16,7.59 C12.55,5.88 11.52,4.89 10.07,4.89 C8.84,4.89 7.89,5.69 7.89,7.03 C7.89,8.29 8.89,8.78 10.88,9.45 C12.57,10.03 14.38,10.6 14.38,12.91 C14.38,14.75 13.27,16.93 10.18,16.93 C9.18,16.93 8.17,16.69 7.46,16.39 L6.52,17 L6,17 L6,13.02 L6,13.02 Z\"/><rect x=\"3\" y=\"10\" width=\"15\" height=\"1\"/></svg>",
130        "table": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"3\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"7\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"11\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"15\" width=\"18\" height=\"1\"/></svg>",
131        "tablet-landscape": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M1.5,5 C1.5,4.2 2.2,3.5 3,3.5 L17,3.5 C17.8,3.5 18.5,4.2 18.5,5 L18.5,16 C18.5,16.8 17.8,17.5 17,17.5 L3,17.5 C2.2,17.5 1.5,16.8 1.5,16 L1.5,5 L1.5,5 L1.5,5 Z\"/><circle cx=\"3.7\" cy=\"10.5\" r=\".8\"/></svg>",
132        "tablet": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M5,18.5 C4.2,18.5 3.5,17.8 3.5,17 L3.5,3 C3.5,2.2 4.2,1.5 5,1.5 L16,1.5 C16.8,1.5 17.5,2.2 17.5,3 L17.5,17 C17.5,17.8 16.8,18.5 16,18.5 L5,18.5 L5,18.5 L5,18.5 Z\"/><circle cx=\"10.5\" cy=\"16.3\" r=\".8\"/></svg>",
133        "tag": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17.5,3.71 L17.5,7.72 C17.5,7.96 17.4,8.2 17.21,8.39 L8.39,17.2 C7.99,17.6 7.33,17.6 6.93,17.2 L2.8,13.07 C2.4,12.67 2.4,12.01 2.8,11.61 L11.61,2.8 C11.81,2.6 12.08,2.5 12.34,2.5 L16.19,2.5 C16.52,2.5 16.86,2.63 17.11,2.88 C17.35,3.11 17.48,3.4 17.5,3.71 L17.5,3.71 Z\"/><circle cx=\"14\" cy=\"6\" r=\"1\"/></svg>",
134        "thumbnails": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"3.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"11.5\" y=\"3.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"11.5\" y=\"11.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"11.5\" width=\"5\" height=\"5\"/></svg>",
135        "tiktok": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.24,6V8.82a6.79,6.79,0,0,1-4-1.28v5.81A5.26,5.26,0,1,1,8,8.1a4.36,4.36,0,0,1,.72.05v2.9A2.57,2.57,0,0,0,7.64,11a2.4,2.4,0,1,0,2.77,2.38V2h2.86a4,4,0,0,0,1.84,3.38A4,4,0,0,0,17.24,6Z\"/></svg>",
136        "trash": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"6.5 3 6.5 1.5 13.5 1.5 13.5 3\"/><polyline fill=\"none\" stroke=\"#000\" points=\"4.5 4 4.5 18.5 15.5 18.5 15.5 4\"/><rect x=\"8\" y=\"7\" width=\"1\" height=\"9\"/><rect x=\"11\" y=\"7\" width=\"1\" height=\"9\"/><rect x=\"2\" y=\"3\" width=\"16\" height=\"1\"/></svg>",
137        "triangle-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"5 7 15 7 10 12\"/></svg>",
138        "triangle-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"12 5 7 10 12 15\"/></svg>",
139        "triangle-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"8 5 13 10 8 15\"/></svg>",
140        "triangle-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"5 13 10 8 15 13\"/></svg>",
141        "tripadvisor": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.021,7.866C19.256,6.862,20,5.854,20,5.854h-3.346C14.781,4.641,12.504,4,9.98,4C7.363,4,4.999,4.651,3.135,5.876H0\tc0,0,0.738,0.987,0.976,1.988c-0.611,0.837-0.973,1.852-0.973,2.964c0,2.763,2.249,5.009,5.011,5.
141009\tc1.576,0,2.976-0.737,3.901-1.879l1.063,1.599l1.075-1.615c0.475,0.611,1.1,1.111,1.838,1.451c1.213,0.547,2.574,0.612,3.825,0.15\tc2.589-0.963,3.913-3.852,2.964-6.439c-0.175-0.463-0.4-0.876-0.675-1.238H19.021z M16.38,14.594\tc-1.002,0.371-2.088,0.328-3.06-0.119c-0.688-0.317-1.252-0.817-1.657-1.438c-0.164-0.25-0.313-0.52-0.417-0.811\tc-0.124-0.328-0.186-0.668-0.217-1.014c-0.063-0.689,0.037-1.396,0.339-2.043c0.448-0.971,1.251-1.71,2.25-2.079\tc2.075-0.765,4.375,0.3,5.14,2.366c0.762,2.066-0.301,4.37-2.363,5.134L16.38,14.594L16.38,14.594z M8.322,13.066\tc-0.72,1.059-1.935,1.76-3.309,1.76c-2.207,0-4.001-1.797-4.001-3.996c0-2.203,1.795-4.002,4.001-4.002\tc2.204,0,3.999,1.8,3.999,4.002c0,0.137-0.024,0.261-0.04,0.396c-0.067,0.678-0.284,1.313-0.648,1.853v-0.013H8.322z M2.472,10.775\tc0,1.367,1.112,2.479,2.476,2.479c1.363,0,2.472-1.11,2.472-2.479c0-1.359-1.11-2.468-2.472-2.468\tC3.584,8.306,2.473,9.416,2.472,10.775L2.472,10.775z M12.514,10.775c0,1.367,1.104,2.479,2.471,2.479\tc1.363,0,2.474-1.108,2.474-2.479c0-1.359-1.11-2.468-2.474-2.468c-1.364,0-2.477,1.109-2.477,2.468H12.514z M3.324,10.775\tc0-0.893,0.726-1.618,1.614-1.618c0.889,0,1.625,0.727,1.625,1.618c0,0.898-0.725,1.627-1.625,1.627\tc-0.901,0-1.625-0.729-1.625-1.627H3.324z M13.354,10.775c0-0.893,0.726-1.618,1.627-1.618c0.886,0,1.61,0.727,1.61,1.618\tc0,0.898-0.726,1.627-1.626,1.627s-1.625-0.729-1.625-1.627H13.354z M9.977,4.875c1.798,0,3.425,0.324,4.849,0.968\tc-0.535,0.015-1.061,0.108-1.586,0.3c-1.264,0.463-2.264,1.388-2.815,2.604c-0.262,0.551-0.398,1.133-0.448,1.72\tC9.79,7.905,7.677,5.873,5.076,5.82C6.501,5.208,8.153,4.875,9.94,4.875H9.977z\"/></svg>",
142        "tumblr": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.885,8.598c0,0,0,3.393,0,4.996c0,0.282,0,0.66,0.094,0.942c0.377,1.509,1.131,2.545,2.545,3.11 c1.319,0.472,2.356,0.472,3.676,0c0.565-0.188,1.132-0.659,1.132-0.659l-0.849-2.263c0,0-1.036,0.378-1.603,0.283 c-0.565-0.094-1.226-0.66-1.226-1.508c0-1.603,0-4.902,0-4.902h2.828V5.771h-2.828V2H8.205c0,0-0.094,0.66-0.188,0.942 C7.828,3.791,7.262,4.733,6.603,5.394C5.848,6.147,5,6.43,5,6.43v2.168H6.885z\"/></svg>",
143        "tv": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"7\" y=\"16\" width=\"6\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\".5\" y=\"3.5\" width=\"19\" height=\"11\"/></svg>",
144        "twitch": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.23,1,2,4.23V15.85H5.88v3.23L9.1,15.85h2.59L17.5,10V1Zm11,8.4L13.62,12H11L8.78,14.24V12H5.88V2.29H16.21Z\"/><rect x=\"12.98\" y=\"4.55\" width=\"1.29\" height=\"3.88\"/><rect x=\"9.43\" y=\"4.55\" width=\"1.29\" height=\"3.88\"/></svg>",
145        "twitter": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19,4.74 C18.339,5.029 17.626,5.229 16.881,5.32 C17.644,4.86 18.227,4.139 18.503,3.28 C17.79,3.7 17.001,4.009 16.159,4.17 C15.485,3.45 14.526,3 13.464,3 C11.423,3 9.771,4.66 9.771,6.7 C9.771,6.99 9.804,7.269 9.868,7.539 C6.795,7.38 4.076,5.919 2.254,3.679 C1.936,4.219 1.754,4.86 1.754,5.539 C1.754,6.82 2.405,7.95 3.397,8.61 C2.79,8.589 2.22,8.429 1.723,8.149 L1.723,8.189 C1.723,9.978 2.997,11.478 4.686,11.82 C4.376,11.899 4.049,11.939 3.713,11.939 C3.475,11.939 3.245,11.919 3.018,11.88 C3.49,13.349 4.852,14.419 6.469,14.449 C5.205,15.429 3.612,16.019 1.882,16.019 C1.583,16.019 1.29,16.009 1,15.969 C2.635,17.019 4.576,17.629 6.662,17.629 C13.454,17.629 17.17,12 17.17,7.129 C17.17,6.969 17.166,6.809 17.157,6.649 C17.879,6.129 18.504,5.478 19,4.74\"/></svg>",
146        "uikit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"14.4,3.1 11.3,5.1 15,7.3 15,12.9 10,15.7 5,12.9 5,8.5 2,6.8 2,14.8 9.9,19.5 18,14.8 18,5.3\"/><polygon points=\"9.8,4.2 6.7,2.4 9.8,0.4 12.9,2.3\"/></svg>",
147        "unlock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"8.5\" width=\"13\" height=\"10\"/><path fill=\"none\" stroke=\"#000\" d=\"M6.5,8.5 L6.5,4.9 C6.5,3 8.1,1.5 10,1.5 C11.9,1.5 13.5,3 13.5,4.9\"/></svg>",
148        "upload": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"5 8 9.5 3.5 14 8\"/><rect x=\"3\" y=\"17\" width=\"13\" height=\"1\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"15\" x2=\"9.5\" y2=\"4\"/></svg>",
149        "user": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.9\" cy=\"6.4\" r=\"4.4\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,19 C2.3,14.5 5.8,11.2 10,11.2 C14.2,11.2 17.7,14.6 18.5,19.2\"/></svg>",
150        "users": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"7.7\" cy=\"8.6\" r=\"3.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1,18.1 C1.7,14.6 4.4,12.1 7.6,12.1 C10.9,12.1 13.7,14.8 14.3,18.3\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M11.4,4 C12.8,2.4 15.4,2.8 16.3,4.7 C17.2,6.6 15.7,8.9 13.6,8.9 C16.5,8.9 18.8,11.3 19.2,14.1\"/></svg>",
151        "video-camera": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"17.5 6.9 17.5 13.1 13.5 10.4 13.5 14.5 2.5 14.5 2.5 5.5 13.5 5.5 13.5 9.6 17.5 6.9\"/></svg>",
152        "vimeo": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.065,7.59C1.84,7.367,1.654,7.082,1.468,6.838c-0.332-0.42-0.137-0.411,0.274-0.772c1.026-0.9
1521,2.004-1.896,3.127-2.688 c1.017-0.713,2.365-1.173,3.286-0.039c0.849,1.045,0.869,2.629,1.084,3.891c0.215,1.309,0.421,2.648,0.88,3.901 c0.127,0.352,0.37,1.018,0.81,1.074c0.567,0.078,1.145-0.917,1.408-1.289c0.684-0.987,1.611-2.317,1.494-3.587 c-0.115-1.349-1.572-1.095-2.482-0.773c0.146-1.514,1.555-3.216,2.912-3.792c1.439-0.597,3.579-0.587,4.302,1.036 c0.772,1.759,0.078,3.802-0.763,5.396c-0.918,1.731-2.1,3.333-3.363,4.829c-1.114,1.329-2.432,2.787-4.093,3.422 c-1.897,0.723-3.021-0.686-3.667-2.318c-0.705-1.777-1.056-3.771-1.565-5.621C4.898,8.726,4.644,7.836,4.136,7.191 C3.473,6.358,2.72,7.141,2.065,7.59C1.977,7.502,2.115,7.551,2.065,7.59L2.065,7.59z\"/></svg>",
153        "warning": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"10\" cy=\"14\" r=\"1\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><path d=\"M10.97,7.72 C10.85,9.54 10.56,11.29 10.56,11.29 C10.51,11.87 10.27,12 9.99,12 C9.69,12 9.49,11.87 9.43,11.29 C9.43,11.29 9.16,9.54 9.03,7.72 C8.96,6.54 9.03,6 9.03,6 C9.03,5.45 9.46,5.02 9.99,5 C10.53,5.01 10.97,5.44 10.97,6 C10.97,6 11.04,6.54 10.97,7.72 L10.97,7.72 Z\"/></svg>",
154        "whatsapp": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.7,3.3c-1.8-1.8-4.1-2.8-6.7-2.8c-5.2,0-9.4,4.2-9.4,9.4c0,1.7,0.4,3.3,1.3,4.7l-1.3,4.9l5-1.3c1.4,0.8,2.9,1.2,4.5,1.2 l0,0l0,0c5.2,0,9.4-4.2,9.4-9.4C19.5,7.4,18.5,5,16.7,3.3 M10.1,17.7L10.1,17.7c-1.4,0-2.8-0.4-4-1.1l-0.3-0.2l-3,0.8l0.8-2.9 l-0.2-0.3c-0.8-1.2-1.2-2.7-1.2-4.2c0-4.3,3.5-7.8,7.8-7.8c2.1,0,4.1,0.8,5.5,2.3c1.5,1.5,2.3,3.4,2.3,5.5 C17.9,14.2,14.4,17.7,10.1,17.7 M14.4,11.9c-0.2-0.1-1.4-0.7-1.6-0.8c-0.2-0.1-0.4-0.1-0.5,0.1c-0.2,0.2-0.6,0.8-0.8,0.9 c-0.1,0.2-0.3,0.2-0.5,0.1c-0.2-0.1-1-0.4-1.9-1.2c-0.7-0.6-1.2-1.4-1.3-1.6c-0.1-0.2,0-0.4,0.1-0.5C8,8.8,8.1,8.7,8.2,8.5 c0.1-0.1,0.2-0.2,0.2-0.4c0.1-0.2,0-0.3,0-0.4C8.4,7.6,7.9,6.5,7.7,6C7.5,5.5,7.3,5.6,7.2,5.6c-0.1,0-0.3,0-0.4,0 c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.8,0.8-0.8,2c0,1.2,0.8,2.3,1,2.4c0.1,0.2,1.7,2.5,4,3.5c0.6,0.2,1,0.4,1.3,0.5 c0.6,0.2,1.1,0.2,1.5,0.1c0.5-0.1,1.4-0.6,1.6-1.1c0.2-0.5,0.2-1,0.1-1.1C14.8,12.1,14.6,12,14.4,11.9\"/>
154</svg>",
155        "wordpress": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5c-5.2,0-9.5,4.3-9.5,9.5s4.3,9.5,9.5,9.5c5.2,0,9.5-4.3,9.5-9.5S15.2,0.5,10,0.5L10,0.5L10,0.5z M15.6,3.9h-0.1 c-0.8,0-1.4,0.7-1.4,1.5c0,0.7,0.4,1.3,0.8,1.9c0.3,0.6,0.7,1.3,0.7,2.3c0,0.7-0.3,1.5-0.6,2.7L14.1,15l-3-8.9 c0.5,0,0.9-0.1,0.9-0.1C12.5,6,12.5,5.3,12,5.4c0,0-1.3,0.1-2.2,0.1C9,5.5,7.7,5.4,7.7,5.4C7.2,5.3,7.2,6,7.6,6c0,0,0.4,0.1,0.9,0.1 l1.3,3.5L8,15L5,6.1C5.5,6.1,5.9,6,5.9,6C6.4,6,6.3,5.3,5.9,5.4c0,0-1.3,0.1-2.2,0.1c-0.2,0-0.3,0-0.5,0c1.5-2.2,4-3.7,6.9-3.7 C12.2,1.7,14.1,2.6,15.6,3.9L15.6,3.9L15.6,3.9z M2.5,6.6l3.9,10.8c-2.7-1.3-4.6-4.2-4.6-7.4C1.8,8.8,2,7.6,2.5,6.6L2.5,6.6L2.5,6.6 z M10.2,10.7l2.5,6.9c0,0,0,0.1,0.1,0.1C11.9,18,11,18.2,10,18.2c-0.8,0-1.6-0.1-2.3-0.3L10.2,10.7L10.2,10.7L10.2,10.7z M14.2,17.1 l2.5-7.3c0.5-1.2,0.6-2.1,0.6-2.9c0-0.3,0-0.6-0.1-0.8c0.6,1.2,1,2.5,1,4C18.3,13,16.6,15.7,14.2,17.1L14.2,17.1L14.2,17.1z\"/></svg>",
156        "world": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M1,10.5 L19,10.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M2.35,15.5 L17.65,15.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M2.35,5.5 L17.523,5.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M10,19.46 L9.98,19.46 C7.31,17.33 5.61,14.141 5.61,10.58 C5.61,7.02 7.33,3.83 10,1.7 C10.01,1.7 9.99,1.7 10,1.7 L10,1.7 C12.67,3.83 14.4,7.02 14.4,10.58 C14.4,14.141 12.67,17.33 10,19.46 L10,19.46 L10,19.46 L10,19.46 Z\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10.5\" r=\"9\"/></svg>",
157        "xing": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.4,4.56 C4.24,4.56 4.11,4.61 4.05,4.72 C3.98,4.83 3.99,4.97 4.07,5.12 L5.82,8.16 L5.82,8.17 L3.06,13.04 C2.99,13.18 2.99,13.33 3.06,13.44 C3.12,13.55 3.24,13.62 3.4,13.62 L6,13.62 C6.39,13.62 6.57,13.36 6.71,13.12 C6.71,13.12 9.41,8.35 9.51,8.16 C9.49,8.14 7.72,5.04 7.72,5.04 C7.58,4.81 7.39,4.56 6.99,4.56 L4.4,4.56 L4.4,4.56 Z\"/><path d=\"M15.3,1 C14.91,1 14.74,1.25 14.6,1.5 C14.6,1.5 9.01,11.42 8.82,11.74 C8.83,11.76 12.51,18.51 12.51,18.51 C12.64,18.74 12.84,19 13.23,19 L15.82,19 C15.98,19 16.1,18.94 16.16,18.83 C16.23,18.72 16.23,18.57 16.16,18.43 L12.5,11.74 L12.5,11.72 L18.25,1.56 C18.32,1.42 18.32,1.27 18.25,1.16 C18.21,1.06 18.08,1 17.93,1 L15.3,1 L15.3,1 Z\"/></svg>",
158        "yelp": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.175,14.971c-0.112,0.77-1.686,2.767-2.406,3.054c-0.246,0.1-0.487,0.076-0.675-0.069\tc-0.122-0.096-2.446-3.859-2.446-3.859c-0.194-0.293-0.157-0.682,0.083-0.978c0.234-0.284,0.581-0.393,0.881-0.276\tc0.016,0.01,4.21,1.394,4.332,1.482c0.178,0.148,0.263,0.379,0.225,0.646L17.175,14.971L17.175,14.971z M11.464,10.789\tc-0.203-0.307-0.199-0.666,0.009-0.916c0,0,2.625-3.574,2.745-3.657c0.203-0.135,0.452-0.141,0.69-0.025\tc0.691,0.335,2.085,2.405,2.167,3.199v0.027c0.024,0.271-0.082,0.491-0.273,0.623c-0.132,0.083-4.43,1.155-4.43,1.155\tc-0.322,0.096-0.68-0.06-0.882-0.381L11.464,10.789z M9.475,9.563C9.32,9.609,8.848,9.757,8.269,8.817c0,0-3.916-6.16-4.007-6.351\tc-0.057-0.212,0.011-0.455,0.202-0.65C5.047,1.211,8.21,0.327,9.037,0.529c0.27,0.069,0.457,0.238,0.522,0.479\tc0.047,0.266,0.433,5.982,0.488,7.264C10.098,9.368,9.629,9.517,9.475,9.563z M9.927,19.066c-0.083,0.225-0.273,0.373-0.54,0.421\tc-0.762,0.13-3.15-0.751-3.647-1.342c-0.096-0.131-0.155-0.262-0.167-0.394c-0.011-0.095,0-0.189,0.036-0.272\tc0.061-0.155,2.917-3.538,2.917-3.538c0.214-0.272,0.595-0.355,0.952-0.213c0.345,0.13,0.56,0.428,0.536,0.749\tC10.014,14.479,9.977,18.923,9.927,19.066z M3.495,13.912c-0.235-0.009-0.444-0.148-0.568-0.382c-0.089-0.17-0.151-0.453-0.19-0.794\tC2.63,11.701,2.761,10.144,3.07,9.648c0.145-0.226,0.357-0.345,0.592-0.336c0.154,0,4.255,1.667,4.255,1.667\tc0.321,0.118,0.521,0.453,0.5,0.833c-0.023,0.37-0.236,0.655-0.551,0.738L3.495,13.912z\"/></svg>",
159        "youtube": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15,4.1c1,0.1,2.3,0,3,0.8c0.8,0.8,0.9,2.1,0.9,3.1C19,9.2,19,10.9,19,12c-0.1,1.1,0,2.4-0.5,3.4c-0.5,1.1-1.4,1.5-2.5,1.6 c-1.2,0.1-8.6,0.1-11,0c-1.1-0.1-2.4-0.1-3.2-1c-0.7-0.8-0.7-2-0.8-3C1,11.8,1,10.1,1,8.9c0-1.1,0-2.4,0.5-3.4C2,4.5,3,4.3,4.1,4.2 C5.3,4.1,12.6,4,15,4.1z M8,7.5v6l5.5-3L8,7.5z\"/></svg>" });
160
161    }
162
163    if (typeof window !== 'undefined' && window.UIkit) {
164      window.UIkit.use(plugin);
165    }
166
167    return plugin;
168
169}));
170
171},{}],2:[function(require,module,exports){
172/*! UIkit 3.13.7 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */
173
174(function (global, factory) {
175    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
176    typeof define === 'function' && define.amd ? define('uikit', factory) :
177    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.UIkit = factory());
178})(this, (function () { 'use strict';
179
180    const { hasOwnProperty, toString } = Object.prototype;
181
182    function hasOwn(obj, key) {
183      return hasOwnProperty.call(obj, key);
184    }
185
186    const hyphenateRe = /\B([A-Z])/g;
187
188    const hyphenate = memoize((str) => str.replace(hyphenateRe, '-$1').toLowerCase());
189
190    const camelizeRe = /-(\w)/g;
191
192    const camelize = memoize((str) => str.replace(camelizeRe, toUpper));
193
194    const ucfirst = memoize((str) =>
195    str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '');
196
197
198    function toUpper(_, c) {
199      return c ? c.toUpperCase() : '';
200    }
201
202    function startsWith(str, search) {
203      return str == null ? void 0 : str.startsWith == null ? void 0 : str.startsWith(search);
204    }
205
206    function endsWith(str, search) {
207      return str == null ? void 0 : str.endsWith == null ? void 0 : str.endsWith(search);
208    }
209
210    function includes(obj, search) {
211      return obj == null ? void 0 : obj.includes == null ? void 0 : obj.includes(search);
212    }
213
214    function findIndex(array, predicate) {
215      return array == null ? void 0 : array.findIndex == null ? void 0 : array.findIndex(predicate);
216    }
217
218    const { isArray, from: toArray } = Array;
219    const { assign } = Object;
220
221    function isFunction(obj) {
222      return typeof obj === 'function';
223    }
224
225    function isObject(obj) {
226      return obj !== null && typeof obj === 'object';
227    }
228
229    function isPlainObject(obj) {
230      return toString.call(obj) === '[object Object]';
231    }
232
233    function isWindow(obj) {
234      return isObject(obj) && obj === obj.window;
235    }
236
237    function isDocument(obj) {
238      return nodeType(obj) === 9;
239    }
240
241    function isNode(obj) {
242      return nodeType(obj) >= 1;
243    }
244
245    function isElement(obj) {
246      return nodeType(obj) === 1;
247    }
248
249    function nodeType(obj) {
250      return !isWindow(obj) && isObject(obj) && obj.nodeType;
251    }
252
253    function isBoolean(value) {
254      return typeof value === 'boolean';
255    }
256
257    function isString(value) {
258      return typeof value === 'string';
259    }
260
261    function isNumber(value) {
262      return typeof value === 'number';
263    }
264
265    function isNumeric(value) {
266      return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));
267    }
268
269    function isEmpty(obj) {
270      return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);
271    }
272
273    function isUndefined(value) {
274      return value === void 0;
275    }
276
277    function toBoolean(value) {
278      return isBoolean(value) ?
279      value :
280      value === 'true' || value === '1' || value === '' ?
281      true :
282      value === 'false' || value === '0' ?
283      false :
284      value;
285    }
286
287    function toNumber(value) {
288      const number = Number(value);
289      return isNaN(number) ? false : number;
290    }
291
292    function toFloat(value) {
293      return parseFloat(value) || 0;
294    }
295
296    function toNode(element) {
297      return toNodes(element)[0];
298    }
299
300    function toNodes(element) {
301      return element && (isNode(element) ? [element] : Array.from(element).filter(isNode)) || [];
302    }
303
304    function toWindow(element) {var _element;
305      if (isWindow(element)) {
306        return element;
307      }
308
309      element = toNode(element);
310      const document = isDocument(element) ? element : (_element = element) == null ? void 0 : _element.ownerDocument;
311
312      return (document == null ? void 0 : document.defaultView) || window;
313    }
314
315    function toMs(time) {
316      return time ? endsWith(time, 'ms') ? toFloat(time) : toFloat(time) * 1000 : 0;
317    }
318
319    function isEqual(value, other) {
320      return (
321        value === other ||
322        isObject(value) &&
323        isObject(other) &&
324        Object.keys(value).length === Object.keys(other).length &&
325        each(value, (val, key) => val === other[key]));
326
327    }
328
329    function swap(value, a, b) {
330      return value.replace(new RegExp(a + "|" + b, 'g'), (match) => match === a ? b : a);
331    }
332
333    function last(array) {
334      return array[array.length - 1];
335    }
336
337    function each(obj, cb) {
338      for (const key in obj) {
339        if (false === cb(obj[key], key)) {
340          return false;
341        }
342      }
343      return true;
344    }
345
346    function sortBy$1(array, prop) {
347      return array.
348      slice().
349      sort((_ref, _ref2) => {let { [prop]: propA = 0 } = _ref;let { [prop]: propB = 0 } = _ref2;return (
350          propA > propB ? 1 : propB > propA ? -1 : 0);});
351
352    }
353
354    function uniqueBy(array, prop) {
355      const seen = new Set();
356      return array.filter((_ref3) => {let { [prop]: check } = _ref3;return seen.has(check) ? false : seen.add(check);});
357    }
358
359    function clamp(number, min, max) {if (min === void 0) {min = 0;}if (max === void 0) {max = 1;}
360      return Math.min(Math.max(toNumber(number) || 0, min), max);
361    }
362
363    function noop() {}
364
365    function intersectRect() {for (var _len = arguments.length, rects = new Array(_len), _key = 0; _key < _len; _key++) {rects[_key] = arguments[_key];}
366      return [
367      ['bottom', 'top'],
368      ['right', 'left']].
369      every(
370      (_ref4) => {let [minProp, maxProp] = _ref4;return (
371          Math.min(...rects.map((_ref5) => {let { [minProp]: min } = _ref5;return min;})) -
372          Math.max(...rects.map((_ref6) => {let { [maxProp]: max } = _ref6;return max;})) >
373          0);});
374
375    }
376
377    function pointInRect(point, rect) {
378      return (
379        point.x <= rect.right &&
380        point.x >= rect.left &&
381        point.y <= rect.bottom &&
382        point.y >= rect.top);
383
384    }
385
386    const Dimensions = {
387      ratio(dimensions, prop, value) {
388        const aProp = prop === 'width' ? 'height' : 'width';
389
390        return {
391          [aProp]: dimensions[prop] ?
392          Math.round(value * dimensions[aProp] / dimensions[prop]) :
393          dimensions[aProp],
394          [prop]: value };
395
396      },
397
398      contain(dimensions, maxDimensions) {
399        dimensions = { ...dimensions };
400
401        each(
402        dimensions,
403        (_, prop) =>
404        dimensions =
405        dimensions[prop] > maxDimensions[prop] ?
406        this.ratio(dimensions, prop, maxDimensions[prop]) :
407        dimensions);
408
409
410        return dimensions;
411      },
412
413      cover(dimensions, maxDimensions) {
414        dimensions = this.contain(dimensions, maxDimensions);
415
416        each(
417        dimensions,
418        (_, prop) =>
419        dimensions =
420        dimensions[prop] < maxDimensions[prop] ?
421        this.ratio(dimensions, prop, maxDimensions[prop]) :
422        dimensions);
423
424
425        return dimensions;
426      } };
427
428
429    function getIndex(i, elements, current, finite) {if (current === void 0) {current = 0;}if (finite === void 0) {finite = false;}
430      elements = toNodes(elements);
431
432      const { length } = elements;
433
434      if (!length) {
435        return -1;
436      }
437
438      i = isNumeric(i) ?
439      toNumber(i) :
440      i === 'next' ?
441      current + 1 :
442      i === 'previous' ?
443      current - 1 :
444      elements.indexOf(toNode(i));
445
446      if (finite) {
447        return clamp(i, 0, length - 1);
448      }
449
450      i %= length;
451
452      return i < 0 ? i + length : i;
453    }
454
455    function memoize(fn) {
456      const cache = Object.create(null);
457      return (key) => cache[key] || (cache[key] = fn(key));
458    }
459
460    class Deferred {
461      constructor() {
462        this.promise = new Promise((resolve, reject) => {
463          this.reject = reject;
464          this.resolve = resolve;
465        });
466      }}
467
468    function attr(element, name, value) {
469      if (isObject(name)) {
470        for (const key in name) {
471          attr(element, key, name[key]);
472        }
473        return;
474      }
475
476      if (isUndefined(value)) {var _toNode;
477        return (_toNode = toNode(element)) == null ? void 0 : _toNode.getAttribute(name);
478      } else {
479        for (const el of toNodes(element)) {
480          if (isFunction(value)) {
481            value = value.call(el, attr(el, name));
482          }
483
484          if (value === null) {
485            removeAttr(el, name);
486          } else {
487            el.setAttribute(name, value);
488          }
489        }
490      }
491    }
492
493    function hasAttr(element, name) {
494      return toNodes(element).some((element) => element.hasAttribute(name));
495    }
496
497    function removeAttr(element, name) {
498      const elements = toNodes(element);
499      for (const attribute of name.split(' ')) {
500        for (const element of elements) {
501          element.removeAttribute(attribute);
502        }
503      }
504    }
505
506    function data(element, attribute) {
507      for (const name of [attribute, "data-" + attribute]) {
508        if (hasAttr(element, name)) {
509          return attr(element, name);
510        }
511      }
512    }
513
514    const voidElements = {
515      area: true,
516      base: true,
517      br: true,
518      col: true,
519      embed: true,
520      hr: true,
521      img: true,
522      input: true,
523      keygen: true,
524      link: true,
525      menuitem: true,
526      meta: true,
527      param: true,
528      source: true,
529      track: true,
530      wbr: true };
531
532    function isVoidElement(element) {
533      return toNodes(element).some((element) => voidElements[element.tagName.toLowerCase()]);
534    }
535
536    function isVisible(element) {
537      return toNodes(element).some(
538      (element) => element.offsetWidth || element.offsetHeight || element.getClientRects().length);
539
540    }
541
542    const selInput = 'input,select,textarea,button';
543    function isInput(element) {
544      return toNodes(element).some((element) => matches(element, selInput));
545    }
546
547    const selFocusable = selInput + ",a[href],[tabindex]";
548    function isFocusable(element) {
549      return matches(element, selFocusable);
550    }
551
552    function parent(element) {var _toNode;
553      return (_toNode = toNode(element)) == null ? void 0 : _toNode.parentElement;
554    }
555
556    function filter$1(element, selector) {
557      return toNodes(element).filter((element) => matches(element, selector));
558    }
559
560    function matches(element, selector) {
561      return toNodes(element).some((element) => element.matches(selector));
562    }
563
564    function closest(element, selector) {
565      if (startsWith(selector, '>')) {
566        selector = selector.slice(1);
567      }
568
569      return isElement(element) ?
570      element.closest(selector) :
571      toNodes(element).
572      map((element) => closest(element, selector)).
573      filter(Boolean);
574    }
575
576    function within(element, selector) {
577      return isString(selector) ?
578      matches(element, selector) || !!closest(element, selector) :
579      element === selector || toNode(selector).contains(toNode(element));
580    }
581
582    function parents(element, selector) {
583      const elements = [];
584
585      while (element = parent(element)) {
586        if (!selector || matches(element, selector)) {
587          elements.push(element);
588        }
589      }
590
591      return elements;
592    }
593
594    function children(element, selector) {
595      element = toNode(element);
596      const children = element ? toNodes(element.children) : [];
597      return selector ? filter$1(children, selector) : children;
598    }
599
600    function index(element, ref) {
601      return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);
602    }
603
604    function query(selector, context) {
605      return find(selector, getContext(selector, context));
606    }
607
608    function queryAll(selector, context) {
609      return findAll(selector, getContext(selector, context));
610    }
611
612    function find(selector, context) {
613      return toNode(_query(selector, context, 'querySelector'));
614    }
615
616    function findAll(selector, context) {
617      return toNodes(_query(selector, context, 'querySelectorAll'));
618    }
619
620    const contextSelectorRe = /(^|[^\\],)\s*[!>+~-]/;
621    const isContextSelector = memoize((selector) => selector.match(contextSelectorRe));
622
623    function getContext(selector, context) {if (context === void 0) {context = document;}
624      return isString(selector) && isContextSelector(selector) || isDocument(context) ?
625      context :
626      context.ownerDocument;
627    }
628
629    const contextSanitizeRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g;
630    const sanatize = memoize((selector) => selector.replace(contextSanitizeRe, '$1 *'));
631
632    function _query(selector, context, queryFn) {if (context === void 0) {context = document;}
633      if (!selector || !isString(selector)) {
634        return selector;
635      }
636
637      selector = sanatize(selector);
638
639      if (isContextSelector(selector)) {
640        const split = splitSelector(selector);
641        selector = '';
642        for (let sel of split) {
643          let ctx = context;
644
645          if (sel[0] === '!') {
646            const selectors = sel.substr(1).trim().split(' ');
647            ctx = closest(parent(context), selectors[0]);
648            sel = selectors.slice(1).join(' ').trim();
649            if (!sel.length && split.length === 1) {
650              return ctx;
651            }
652          }
653
654          if (sel[0] === '-') {
655            const selectors = sel.substr(1).trim().split(' ');
656            const prev = (ctx || context).previousElementSibling;
657            ctx = matches(prev, sel.substr(1)) ? prev : null;
658            sel = selectors.slice(1).join(' ');
659          }
660
661          if (ctx) {
662            selector += "" + (selector ? ',' : '') + domPath(ctx) + " " + sel;
663          }
664        }
665
666        context = document;
667      }
668
669      try {
670        return context[queryFn](selector);
671      } catch (e) {
672        return null;
673      }
674    }
675
676    const selectorRe = /.*?[^\\](?:,|$)/g;
677
678    const splitSelector = memoize((selector) =>
679    selector.match(selectorRe).map((selector) => selector.replace(/,$/, '').trim()));
680
681
682    function domPath(element) {
683      const names = [];
684      while (element.parentNode) {
685        const id = attr(element, 'id');
686        if (id) {
687          names.unshift("#" + escape(id));
688          break;
689        } else {
690          let { tagName } = element;
691          if (tagName !== 'HTML') {
692            tagName += ":nth-child(" + (index(element) + 1) + ")";
693          }
694          names.unshift(tagName);
695          element = element.parentNode;
696        }
697      }
698      return names.join(' > ');
699    }
700
701    function escape(css) {
702      return isString(css) ? CSS.escape(css) : '';
703    }
704
705    function on() {for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}
706      let [targets, types, selector, listener, useCapture = false] = getArgs(args);
707
708      if (listener.length > 1) {
709        listener = detail(listener);
710      }
711
712      if (useCapture != null && useCapture.self) {
713        listener = selfFilter(listener);
714      }
715
716      if (selector) {
717        listener = delegate(selector, listener);
718      }
719
720      for (const type of types) {
721        for (const target of targets) {
722          target.addEventListener(type, listener, useCapture);
723        }
724      }
725
726      return () => off(targets, types, listener, useCapture);
727    }
728
729    function off() {for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {args[_key2] = arguments[_key2];}
730      let [targets, types,, listener, useCapture = false] = getArgs(args);
731      for (const type of types) {
732        for (const target of targets) {
733          target.removeEventListener(type, listener, useCapture);
734        }
735      }
736    }
737
738    function once() {for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {args[_key3] = arguments[_key3];}
739      const [element, types, selector, listener, useCapture = false, condition] = getArgs(args);
740      const off = on(
741      element,
742      types,
743      selector,
744      (e) => {
745        const result = !condition || condition(e);
746        if (result) {
747          off();
748          listener(e, result);
749        }
750      },
751      useCapture);
752
753
754      return off;
755    }
756
757    function trigger(targets, event, detail) {
758      return toEventTargets(targets).every((target) =>
759      target.dispatchEvent(createEvent(event, true, true, detail)));
760
761    }
762
763    function createEvent(e, bubbles, cancelable, detail) {if (bubbles === void 0) {bubbles = true;}if (cancelable === void 0) {cancelable = false;}
764      if (isString(e)) {
765        e = new CustomEvent(e, { bubbles, cancelable, detail });
766      }
767
768      return e;
769    }
770
771    function getArgs(args) {
772      // Event targets
773      args[0] = toEventTargets(args[0]);
774
775      // Event types
776      if (isString(args[1])) {
777        args[1] = args[1].split(' ');
778      }
779
780      // Delegate?
781      if (isFunction(args[2])) {
782        args.splice(2, 0, false);
783      }
784
785      return args;
786    }
787
788    function delegate(selector, listener) {
789      return (e) => {
790        const current =
791        selector[0] === '>' ?
792        findAll(selector, e.currentTarget).
793        reverse().
794        filter((element) => within(e.target, element))[0] :
795        closest(e.target, selector);
796
797        if (current) {
798          e.current = current;
799          listener.call(this, e);
800        }
801      };
802    }
803
804    function detail(listener) {
805      return (e) => isArray(e.detail) ? listener(e, ...e.detail) : listener(e);
806    }
807
808    function selfFilter(listener) {
809      return function (e) {
810        if (e.target === e.currentTarget || e.target === e.current) {
811          return listener.call(null, e);
812        }
813      };
814    }
815
816    function isEventTarget(target) {
817      return target && 'addEventListener' in target;
818    }
819
820    function toEventTarget(target) {
821      return isEventTarget(target) ? target : toNode(target);
822    }
823
824    function toEventTargets(target) {
825      return isArray(target) ?
826      target.map(toEventTarget).filter(Boolean) :
827      isString(target) ?
828      findAll(target) :
829      isEventTarget(target) ?
830      [target] :
831      toNodes(target);
832    }
833
834    function isTouch(e) {
835      return e.pointerType === 'touch' || !!e.touches;
836    }
837
838    function getEventPos(e) {var _e$touches, _e$changedTouches;
839      const { clientX: x, clientY: y } = ((_e$touches = e.touches) == null ? void 0 : _e$touches[0]) || ((_e$changedTouches = e.changedTouches) == null ? void 0 : _e$changedTouches[0]) || e;
840
841      return { x, y };
842    }
843
844    function ajax(url, options) {
845      const env = {
846        data: null,
847        method: 'GET',
848        headers: {},
849        xhr: new XMLHttpRequest(),
850        beforeSend: noop,
851        responseType: '',
852        ...options };
853
854      return Promise.resolve().
855      then(() => env.beforeSend(env)).
856      then(() => send(url, env));
857    }
858
859    function send(url, env) {
860      return new Promise((resolve, reject) => {
861        const { xhr } = env;
862
863        for (const prop in env) {
864          if (prop in xhr) {
865            try {
866              xhr[prop] = env[prop];
867            } catch (e) {
868              // noop
869            }
870          }
871        }
872
873        xhr.open(env.method.toUpperCase(), url);
874
875        for (const header in env.headers) {
876          xhr.setRequestHeader(header, env.headers[header]);
877        }
878
879        on(xhr, 'load', () => {
880          if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
881            resolve(xhr);
882          } else {
883            reject(
884            assign(Error(xhr.statusText), {
885              xhr,
886              status: xhr.status }));
887
888
889          }
890        });
891
892        on(xhr, 'error', () => reject(assign(Error('Network Error'), { xhr })));
893        on(xhr, 'timeout', () => reject(assign(Error('Network Timeout'), { xhr })));
894
895        xhr.send(env.data);
896      });
897    }
898
899    function getImage(src, srcset, sizes) {
900      return new Promise((resolve, reject) => {
901        const img = new Image();
902
903        img.onerror = (e) => {
904          reject(e);
905        };
906        img.onload = () => {
907          resolve(img);
908        };
909
910        sizes && (img.sizes = sizes);
911        srcset && (img.srcset = srcset);
912        img.src = src;
913      });
914    }
915
916    const cssNumber = {
917      'animation-iteration-count': true,
918      'column-count': true,
919      'fill-opacity': true,
920      'flex-grow': true,
921      'flex-shrink': true,
922      'font-weight': true,
923      'line-height': true,
924      opacity: true,
925      order: true,
926      orphans: true,
927      'stroke-dasharray': true,
928      'stroke-dashoffset': true,
929      widows: true,
930      'z-index': true,
931      zoom: true };
932
933
934    function css(element, property, value, priority) {if (priority === void 0) {priority = '';}
935      const elements = toNodes(element);
936      for (const element of elements) {
937        if (isString(property)) {
938          property = propName(property);
939
940          if (isUndefined(value)) {
941            return getComputedStyle(element).getPropertyValue(property);
942          } else {
943            element.style.setProperty(
944            property,
945            isNumeric(value) && !cssNumber[property] ?
946            value + "px" :
947            value || isNumber(value) ?
948            value :
949            '',
950            priority);
951
952          }
953        } else if (isArray(property)) {
954          const props = {};
955          for (const prop of property) {
956            props[prop] = css(element, prop);
957          }
958          return props;
959        } else if (isObject(property)) {
960          priority = value;
961          each(property, (value, property) => css(element, property, value, priority));
962        }
963      }
964      return elements[0];
965    }
966
967    const propertyRe = /^\s*(["'])?(.*?)\1\s*$/;
968    function getCssVar(name, element) {if (element === void 0) {element = document.documentElement;}
969      return css(element, "--uk-" + name).replace(propertyRe, '$2');
970    }
971
972    // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty
973    const propName = memoize((name) => vendorPropName(name));
974
975    const cssPrefixes = ['webkit', 'moz'];
976
977    function vendorPropName(name) {
978      if (name[0] === '-') {
979        return name;
980      }
981
982      name = hyphenate(name);
983
984      const { style } = document.documentElement;
985
986      if (name in style) {
987        return name;
988      }
989
990      let i = cssPrefixes.length,
991      prefixedName;
992
993      while (i--) {
994        prefixedName = "-" + cssPrefixes[i] + "-" + name;
995        if (prefixedName in style) {
996          return prefixedName;
997        }
998      }
999    }
1000
1001    function addClass(element) {for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {args[_key - 1] = arguments[_key];}
1002      apply$1(element, args, 'add');
1003    }
1004
1005    function removeClass(element) {for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {args[_key2 - 1] = arguments[_key2];}
1006      apply$1(element, args, 'remove');
1007    }
1008
1009    function removeClasses(element, cls) {
1010      attr(element, 'class', (value) => (value || '').replace(new RegExp("\\b" + cls + "\\b", 'g'), ''));
1011    }
1012
1013    function replaceClass(element) {
1014      (arguments.length <= 1 ? undefined : arguments[1]) && removeClass(element, arguments.length <= 1 ? undefined : arguments[1]);
1015      (arguments.length <= 2 ? undefined : arguments[2]) && addClass(element, arguments.length <= 2 ? undefined : arguments[2]);
1016    }
1017
1018    function hasClass(element, cls) {
1019      [cls] = getClasses(cls);
1020      return !!cls && toNodes(element).some((node) => node.classList.contains(cls));
1021    }
1022
1023    function toggleClass(element, cls, force) {
1024      const classes = getClasses(cls);
1025
1026      if (!isUndefined(force)) {
1027        force = !!force;
1028      }
1029
1030      for (const node of toNodes(element)) {
1031        for (const cls of classes) {
1032          node.classList.toggle(cls, force);
1033        }
1034      }
1035    }
1036
1037    function apply$1(element, args, fn) {
1038      args = args.reduce((args, arg) => args.concat(getClasses(arg)), []);
1039
1040      for (const node of toNodes(element)) {
1041        node.classList[fn](...args);
1042      }
1043    }
1044
1045    function getClasses(str) {
1046      return String(str).split(/\s|,/).filter(Boolean);
1047    }
1048
1049    function transition(element, props, duration, timing) {if (duration === void 0) {duration = 400;}if (timing === void 0) {timing = 'linear';}
1050      return Promise.all(
1051      toNodes(element).map(
1052      (element) =>
1053      new Promise((resolve, reject) => {
1054        for (const name in props) {
1055          const value = css(element, name);
1056          if (value === '') {
1057            css(element, name, value);
1058          }
1059        }
1060
1061        const timer = setTimeout(() => trigger(element, 'transitionend'), duration);
1062
1063        once(
1064        element,
1065        'transitionend transitioncanceled',
1066        (_ref) => {let { type } = _ref;
1067          clearTimeout(timer);
1068          removeClass(element, 'uk-transition');
1069          css(element, {
1070            transitionProperty: '',
1071            transitionDuration: '',
1072            transitionTimingFunction: '' });
1073
1074          type === 'transitioncanceled' ? reject() : resolve(element);
1075        },
1076        { self: true });
1077
1078
1079        addClass(element, 'uk-transition');
1080        css(element, {
1081          transitionProperty: Object.keys(props).map(propName).join(','),
1082          transitionDuration: duration + "ms",
1083          transitionTimingFunction: timing,
1084          ...props });
1085
1086      })));
1087
1088
1089    }
1090
1091    const Transition = {
1092      start: transition,
1093
1094      stop(element) {
1095        trigger(element, 'transitionend');
1096        return Promise.resolve();
1097      },
1098
1099      cancel(element) {
1100        trigger(element, 'transitioncanceled');
1101      },
1102
1103      inProgress(element) {
1104        return hasClass(element, 'uk-transition');
1105      } };
1106
1107
1108    const animationPrefix = 'uk-animation-';
1109
1110    function animate$1(element, animation, duration, origin, out) {if (duration === void 0) {duration = 200;}
1111      return Promise.all(
1112      toNodes(element).map(
1113      (element) =>
1114      new Promise((resolve, reject) => {
1115        trigger(element, 'animationcanceled');
1116        const timer = setTimeout(() => trigger(element, 'animationend'), duration);
1117
1118        once(
1119        element,
1120        'animationend animationcanceled',
1121        (_ref2) => {let { type } = _ref2;
1122          clearTimeout(timer);
1123
1124          type === 'animationcanceled' ? reject() : resolve(element);
1125
1126          css(element, 'animationDuration', '');
1127          removeClasses(element, animationPrefix + "\\S*");
1128        },
1129        { self: true });
1130
1131
1132        css(element, 'animationDuration', duration + "ms");
1133        addClass(element, animation, animationPrefix + (out ? 'leave' : 'enter'));
1134
1135        if (startsWith(animation, animationPrefix)) {
1136          origin && addClass(element, "uk-transform-origin-" + origin);
1137          out && addClass(element, animationPrefix + "reverse");
1138        }
1139      })));
1140
1141
1142    }
1143
1144    const inProgress = new RegExp(animationPrefix + "(enter|leave)");
1145    const Animation = {
1146      in: animate$1,
1147
1148      out(element, animation, duration, origin) {
1149        return animate$1(element, animation, duration, origin, true);
1150      },
1151
1152      inProgress(element) {
1153        return inProgress.test(attr(element, 'class'));
1154      },
1155
1156      cancel(element) {
1157        trigger(element, 'animationcanceled');
1158      } };
1159
1160    const dirs$1 = {
1161      width: ['left', 'right'],
1162      height: ['top', 'bottom'] };
1163
1164
1165    function dimensions$1(element) {
1166      const rect = isElement(element) ?
1167      toNode(element).getBoundingClientRect() :
1168      { height: height(element), width: width(element), top: 0, left: 0 };
1169
1170      return {
1171        height: rect.height,
1172        width: rect.width,
1173        top: rect.top,
1174        left: rect.left,
1175        bottom: rect.top + rect.height,
1176        right: rect.left + rect.width };
1177
1178    }
1179
1180    function offset(element, coordinates) {
1181      const currentOffset = dimensions$1(element);
1182
1183      if (element) {
1184        const { scrollY, scrollX } = toWindow(element);
1185        const offsetBy = { height: scrollY, width: scrollX };
1186
1187        for (const dir in dirs$1) {
1188          for (const prop of dirs$1[dir]) {
1189            currentOffset[prop] += offsetBy[dir];
1190          }
1191        }
1192      }
1193
1194      if (!coordinates) {
1195        return currentOffset;
1196      }
1197
1198      const pos = css(element, 'position');
1199
1200      each(css(element, ['left', 'top']), (value, prop) =>
1201      css(
1202      element,
1203      prop,
1204      coordinates[prop] -
1205      currentOffset[prop] +
1206      toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value)));
1207
1208
1209    }
1210
1211    function position(element) {
1212      let { top, left } = offset(element);
1213
1214      const {
1215        ownerDocument: { body, documentElement },
1216        offsetParent } =
1217      toNode(element);
1218      let parent = offsetParent || documentElement;
1219
1220      while (
1221      parent && (
1222      parent === body || parent === documentElement) &&
1223      css(parent, 'position') === 'static')
1224      {
1225        parent = parent.parentNode;
1226      }
1227
1228      if (isElement(parent)) {
1229        const parentOffset = offset(parent);
1230        top -= parentOffset.top + toFloat(css(parent, 'borderTopWidth'));
1231        left -= parentOffset.left + toFloat(css(parent, 'borderLeftWidth'));
1232      }
1233
1234      return {
1235        top: top - toFloat(css(element, 'marginTop')),
1236        left: left - toFloat(css(element, 'marginLeft')) };
1237
1238    }
1239
1240    function offsetPosition(element) {
1241      const offset = [0, 0];
1242
1243      element = toNode(element);
1244
1245      do {
1246        offset[0] += element.offsetTop;
1247        offset[1] += element.offsetLeft;
1248
1249        if (css(element, 'position') === 'fixed') {
1250          const win = toWindow(element);
1251          offset[0] += win.scrollY;
1252          offset[1] += win.scrollX;
1253          return offset;
1254        }
1255      } while (element = element.offsetParent);
1256
1257      return offset;
1258    }
1259
1260    const height = dimension('height');
1261    const width = dimension('width');
1262
1263    function dimension(prop) {
1264      const propName = ucfirst(prop);
1265      return (element, value) => {
1266        if (isUndefined(value)) {
1267          if (isWindow(element)) {
1268            return element["inner" + propName];
1269          }
1270
1271          if (isDocument(element)) {
1272            const doc = element.documentElement;
1273            return Math.max(doc["offset" + propName], doc["scroll" + propName]);
1274          }
1275
1276          element = toNode(element);
1277
1278          value = css(element, prop);
1279          value = value === 'auto' ? element["offset" + propName] : toFloat(value) || 0;
1280
1281          return value - boxModelAdjust(element, prop);
1282        } else {
1283          return css(
1284          element,
1285          prop,
1286          !value && value !== 0 ? '' : +value + boxModelAdjust(element, prop) + 'px');
1287
1288        }
1289      };
1290    }
1291
1292    function boxModelAdjust(element, prop, sizing) {if (sizing === void 0) {sizing = 'border-box';}
1293      return css(element, 'boxSizing') === sizing ?
1294      dirs$1[prop].
1295      map(ucfirst).
1296      reduce(
1297      (value, prop) =>
1298      value +
1299      toFloat(css(element, "padding" + prop)) +
1300      toFloat(css(element, "border" + prop + "Width")),
1301      0) :
1302
1303      0;
1304    }
1305
1306    function flipPosition(pos) {
1307      for (const dir in dirs$1) {
1308        for (const i in dirs$1[dir]) {
1309          if (dirs$1[dir][i] === pos) {
1310            return dirs$1[dir][1 - i];
1311          }
1312        }
1313      }
1314      return pos;
1315    }
1316
1317    function toPx(value, property, element, offsetDim) {if (property === void 0) {property = 'width';}if (element === void 0) {element = window;}if (offsetDim === void 0) {offsetDim = false;}
1318      if (!isString(value)) {
1319        return toFloat(value);
1320      }
1321
1322      return parseCalc(value).reduce((result, value) => {
1323        const unit = parseUnit(value);
1324        if (unit) {
1325          value = percent(
1326          unit === 'vh' ?
1327          height(toWindow(element)) :
1328          unit === 'vw' ?
1329          width(toWindow(element)) :
1330          offsetDim ?
1331          element["offset" + ucfirst(property)] :
1332          dimensions$1(element)[property],
1333          value);
1334
1335        }
1336
1337        return result + toFloat(value);
1338      }, 0);
1339    }
1340
1341    const calcRe = /-?\d+(?:\.\d+)?(?:v[wh]|%|px)?/g;
1342    const parseCalc = memoize((calc) => calc.toString().replace(/\s/g, '').match(calcRe) || []);
1343    const unitRe$1 = /(?:v[hw]|%)$/;
1344    const parseUnit = memoize((str) => (str.match(unitRe$1) || [])[0]);
1345
1346    function percent(base, value) {
1347      return base * toFloat(value) / 100;
1348    }
1349
1350    function ready(fn) {
1351      if (document.readyState !== 'loading') {
1352        fn();
1353        return;
1354      }
1355
1356      once(document, 'DOMContentLoaded', fn);
1357    }
1358
1359    function isTag(element, tagName) {var _element$tagName;
1360      return (element == null ? void 0 : (_element$tagName = element.tagName) == null ? void 0 : _element$tagName.toLowerCase()) === tagName.toLowerCase();
1361    }
1362
1363    function empty(element) {
1364      return replaceChildren(element, '');
1365    }
1366
1367    function html(parent, html) {
1368      return isUndefined(html) ? $(parent).innerHTML : replaceChildren(parent, html);
1369    }
1370
1371    const replaceChildren = applyFn('replaceChildren');
1372    const prepend = applyFn('prepend');
1373    const append = applyFn('append');
1374    const before = applyFn('before');
1375    const after = applyFn('after');
1376
1377    function applyFn(fn) {
1378      return function (ref, element) {var _$;
1379        const nodes = toNodes(isString(element) ? fragment(element) : element);
1380        (_$ = $(ref)) == null ? void 0 : _$[fn](...nodes);
1381        return unwrapSingle(nodes);
1382      };
1383    }
1384
1385    function remove$1(element) {
1386      toNodes(element).forEach((element) => element.remove());
1387    }
1388
1389    function wrapAll(element, structure) {
1390      structure = toNode(before(element, structure));
1391
1392      while (structure.firstChild) {
1393        structure = structure.firstChild;
1394      }
1395
1396      append(structure, element);
1397
1398      return structure;
1399    }
1400
1401    function wrapInner(element, structure) {
1402      return toNodes(
1403      toNodes(element).map((element) =>
1404      element.hasChildNodes() ?
1405      wrapAll(toNodes(element.childNodes), structure) :
1406      append(element, structure)));
1407
1408
1409    }
1410
1411    function unwrap(element) {
1412      toNodes(element).
1413      map(parent).
1414      filter((value, index, self) => self.indexOf(value) === index).
1415      forEach((parent) => parent.replaceWith(...parent.childNodes));
1416    }
1417
1418    const fragmentRe = /^\s*<(\w+|!)[^>]*>/;
1419    const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
1420
1421    function fragment(html) {
1422      const matches = singleTagRe.exec(html);
1423      if (matches) {
1424        return document.createElement(matches[1]);
1425      }
1426
1427      const container = document.createElement('div');
1428      if (fragmentRe.test(html)) {
1429        container.insertAdjacentHTML('beforeend', html.trim());
1430      } else {
1431        container.textContent = html;
1432      }
1433
1434      return unwrapSingle(container.childNodes);
1435    }
1436
1437    function unwrapSingle(nodes) {
1438      return nodes.length > 1 ? nodes : nodes[0];
1439    }
1440
1441    function apply(node, fn) {
1442      if (!isElement(node)) {
1443        return;
1444      }
1445
1446      fn(node);
1447      node = node.firstElementChild;
1448      while (node) {
1449        const next = node.nextElementSibling;
1450        apply(node, fn);
1451        node = next;
1452      }
1453    }
1454
1455    function $(selector, context) {
1456      return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);
1457    }
1458
1459    function $$(selector, context) {
1460      return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);
1461    }
1462
1463    function isHtml(str) {
1464      return isString(str) && startsWith(str.trim(), '<');
1465    }
1466
1467    const inBrowser = typeof window !== 'undefined';
1468    const isRtl = inBrowser && attr(document.documentElement, 'dir') === 'rtl';
1469
1470    const hasTouch = inBrowser && 'ontouchstart' in window;
1471    const hasPointerEvents = inBrowser && window.PointerEvent;
1472
1473    const pointerDown = hasPointerEvents ? 'pointerdown' : hasTouch ? 'touchstart' : 'mousedown';
1474    const pointerMove = hasPointerEvents ? 'pointermove' : hasTouch ? 'touchmove' : 'mousemove';
1475    const pointerUp = hasPointerEvents ? 'pointerup' : hasTouch ? 'touchend' : 'mouseup';
1476    const pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouch ? '' : 'mouseenter';
1477    const pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouch ? '' : 'mouseleave';
1478    const pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';
1479
1480    /*
1481        Based on:
1482        Copyright (c) 2016 Wilson Page [email protected]
1483        https://github.com/wilsonpage/fastdom
1484    */
1485
1486    const fastdom = {
1487      reads: [],
1488      writes: [],
1489
1490      read(task) {
1491        this.reads.push(task);
1492        scheduleFlush();
1493        return task;
1494      },
1495
1496      write(task) {
1497        this.writes.push(task);
1498        scheduleFlush();
1499        return task;
1500      },
1501
1502      clear(task) {
1503        remove(this.reads, task);
1504        remove(this.writes, task);
1505      },
1506
1507      flush };
1508
1509
1510    function flush(recursion) {
1511      runTasks(fastdom.reads);
1512      runTasks(fastdom.writes.splice(0));
1513
1514      fastdom.scheduled = false;
1515
1516      if (fastdom.reads.length || fastdom.writes.length) {
1517        scheduleFlush(recursion + 1);
1518      }
1519    }
1520
1521    const RECURSION_LIMIT = 4;
1522    function scheduleFlush(recursion) {
1523      if (fastdom.scheduled) {
1524        return;
1525      }
1526
1527      fastdom.scheduled = true;
1528      if (recursion && recursion < RECURSION_LIMIT) {
1529        Promise.resolve().then(() => flush(recursion));
1530      } else {
1531        requestAnimationFrame(() => flush(1));
1532      }
1533    }
1534
1535    function runTasks(tasks) {
1536      let task;
1537      while (task = tasks.shift()) {
1538        try {
1539          task();
1540        } catch (e) {
1541          console.error(e);
1542        }
1543      }
1544    }
1545
1546    function remove(array, item) {
1547      const index = array.indexOf(item);
1548      return ~index && array.splice(index, 1);
1549    }
1550
1551    function MouseTracker() {}
1552
1553    MouseTracker.prototype = {
1554      positions: [],
1555
1556      init() {
1557        this.positions = [];
1558
1559        let position;
1560        this.unbind = on(document, 'mousemove', (e) => position = getEventPos(e));
1561        this.interval = setInterval(() => {
1562          if (!position) {
1563            return;
1564          }
1565
1566          this.positions.push(position);
1567
1568          if (this.positions.length > 5) {
1569            this.positions.shift();
1570          }
1571        }, 50);
1572      },
1573
1574      cancel() {var _this$unbind;
1575        (_this$unbind = this.unbind) == null ? void 0 : _this$unbind.call(this);
1576        this.interval && clearInterval(this.interval);
1577      },
1578
1579      movesTo(target) {
1580        if (this.positions.length < 2) {
1581          return false;
1582        }
1583
1584        const p = target.getBoundingClientRect();
1585        const { left, right, top, bottom } = p;
1586
1587        const [prevPosition] = this.positions;
1588        const position = last(this.positions);
1589        const path = [prevPosition, position];
1590
1591        if (pointInRect(position, p)) {
1592          return false;
1593        }
1594
1595        const diagonals = [
1596        [
1597        { x: left, y: top },
1598        { x: right, y: bottom }],
1599
1600        [
1601        { x: left, y: bottom },
1602        { x: right, y: top }]];
1603
1604
1605
1606        return diagonals.some((diagonal) => {
1607          const intersection = intersect(path, diagonal);
1608          return intersection && pointInRect(intersection, p);
1609        });
1610      } };
1611
1612
1613    // Inspired by http://paulbourke.net/geometry/pointlineplane/
1614    function intersect(_ref, _ref2) {let [{ x: x1, y: y1 }, { x: x2, y: y2 }] = _ref;let [{ x: x3, y: y3 }, { x: x4, y: y4 }] = _ref2;
1615      const denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);
1616
1617      // Lines are parallel
1618      if (denominator === 0) {
1619        return false;
1620      }
1621
1622      const ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;
1623
1624      if (ua < 0) {
1625        return false;
1626      }
1627
1628      // Return an object with the x and y coordinates of the intersection
1629      return { x: x1 + ua * (x2 - x1), y: y1 + ua * (y2 - y1) };
1630    }
1631
1632    function observeIntersection(targets, cb, options, intersecting) {if (intersecting === void 0) {intersecting = true;}
1633      const observer = new IntersectionObserver(
1634      intersecting ?
1635      (entries, observer) => {
1636        if (entries.some((entry) => entry.isIntersecting)) {
1637          cb(entries, observer);
1638        }
1639      } :
1640      cb,
1641      options);
1642
1643      for (const el of toNodes(targets)) {
1644        observer.observe(el);
1645      }
1646
1647      return observer;
1648    }
1649
1650    const hasResizeObserver = inBrowser && window.ResizeObserver;
1651    function observeResize(targets, cb, options) {if (options === void 0) {options = { box: 'border-box' };}
1652      if (hasResizeObserver) {
1653        return observe(ResizeObserver, targets, cb, options);
1654      }
1655
1656      // Fallback Safari < 13.1
1657      initResizeListener();
1658      listeners.add(cb);
1659
1660      return {
1661        disconnect() {
1662          listeners.delete(cb);
1663        } };
1664
1665    }
1666
1667    let listeners;
1668    function initResizeListener() {
1669      if (listeners) {
1670        return;
1671      }
1672
1673      listeners = new Set();
1674
1675      // throttle 'resize'
1676      let pendingResize;
1677      const handleResize = () => {
1678        if (pendingResize) {
1679          return;
1680        }
1681        pendingResize = true;
1682        fastdom.read(() => pendingResize = false);
1683        for (const listener of listeners) {
1684          listener();
1685        }
1686      };
1687
1688      on(window, 'load resize', handleResize);
1689      on(document, 'loadedmetadata load', handleResize, true);
1690    }
1691
1692    function observeMutation(targets, cb, options) {
1693      return observe(MutationObserver, targets, cb, options);
1694    }
1695
1696    function observe(Observer, targets, cb, options) {
1697      const observer = new Observer(cb);
1698      for (const el of toNodes(targets)) {
1699        observer.observe(el, options);
1700      }
1701
1702      return observer;
1703    }
1704
1705    const strats = {};
1706
1707    strats.events =
1708    strats.created =
1709    strats.beforeConnect =
1710    strats.connected =
1711    strats.beforeDisconnect =
1712    strats.disconnected =
1713    strats.destroy =
1714    concatStrat;
1715
1716    // args strategy
1717    strats.args = function (parentVal, childVal) {
1718      return childVal !== false && concatStrat(childVal || parentVal);
1719    };
1720
1721    // update strategy
1722    strats.update = function (parentVal, childVal) {
1723      return sortBy$1(
1724      concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal),
1725      'order');
1726
1727    };
1728
1729    // property strategy
1730    strats.props = function (parentVal, childVal) {
1731      if (isArray(childVal)) {
1732        const value = {};
1733        for (const key of childVal) {
1734          value[key] = String;
1735        }
1736        childVal = value;
1737      }
1738
1739      return strats.methods(parentVal, childVal);
1740    };
1741
1742    // extend strategy
1743    strats.computed = strats.methods = function (parentVal, childVal) {
1744      return childVal ? parentVal ? { ...parentVal, ...childVal } : childVal : parentVal;
1745    };
1746
1747    // data strategy
1748    strats.data = function (parentVal, childVal, vm) {
1749      if (!vm) {
1750        if (!childVal) {
1751          return parentVal;
1752        }
1753
1754        if (!parentVal) {
1755          return childVal;
1756        }
1757
1758        return function (vm) {
1759          return mergeFnData(parentVal, childVal, vm);
1760        };
1761      }
1762
1763      return mergeFnData(parentVal, childVal, vm);
1764    };
1765
1766    function mergeFnData(parentVal, childVal, vm) {
1767      return strats.computed(
1768      isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal,
1769      isFunction(childVal) ? childVal.call(vm, vm) : childVal);
1770
1771    }
1772
1773    // concat strategy
1774    function concatStrat(parentVal, childVal) {
1775      parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;
1776
1777      return childVal ?
1778      parentVal ?
1779      parentVal.concat(childVal) :
1780      isArray(childVal) ?
1781      childVal :
1782      [childVal] :
1783      parentVal;
1784    }
1785
1786    // default strategy
1787    function defaultStrat(parentVal, childVal) {
1788      return isUndefined(childVal) ? parentVal : childVal;
1789    }
1790
1791    function mergeOptions(parent, child, vm) {
1792      const options = {};
1793
1794      if (isFunction(child)) {
1795        child = child.options;
1796      }
1797
1798      if (child.extends) {
1799        parent = mergeOptions(parent, child.extends, vm);
1800      }
1801
1802      if (child.mixins) {
1803        for (const mixin of child.mixins) {
1804          parent = mergeOptions(parent, mixin, vm);
1805        }
1806      }
1807
1808      for (const key in parent) {
1809        mergeKey(key);
1810      }
1811
1812      for (const key in child) {
1813        if (!hasOwn(parent, key)) {
1814          mergeKey(key);
1815        }
1816      }
1817
1818      function mergeKey(key) {
1819        options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);
1820      }
1821
1822      return options;
1823    }
1824
1825    function parseOptions(options, args) {if (args === void 0) {args = [];}
1826      try {
1827        return options ?
1828        startsWith(options, '{') ?
1829        JSON.parse(options) :
1830        args.length && !includes(options, ':') ?
1831        { [args[0]]: options } :
1832        options.split(';').reduce((options, option) => {
1833          const [key, value] = option.split(/:(.*)/);
1834          if (key && !isUndefined(value)) {
1835            options[key.trim()] = value.trim();
1836          }
1837          return options;
1838        }, {}) :
1839        {};
1840      } catch (e) {
1841        return {};
1842      }
1843    }
1844
1845    function play(el) {
1846      if (isIFrame(el)) {
1847        call(el, { func: 'playVideo', method: 'play' });
1848      }
1849
1850      if (isHTML5(el)) {
1851        try {
1852          el.play().catch(noop);
1853        } catch (e) {
1854          // noop
1855        }
1856      }
1857    }
1858
1859    function pause(el) {
1860      if (isIFrame(el)) {
1861        call(el, { func: 'pauseVideo', method: 'pause' });
1862      }
1863
1864      if (isHTML5(el)) {
1865        el.pause();
1866      }
1867    }
1868
1869    function mute(el) {
1870      if (isIFrame(el)) {
1871        call(el, { func: 'mute', method: 'setVolume', value: 0 });
1872      }
1873
1874      if (isHTML5(el)) {
1875        el.muted = true;
1876      }
1877    }
1878
1879    function isVideo(el) {
1880      return isHTML5(el) || isIFrame(el);
1881    }
1882
1883    function isHTML5(el) {
1884      return isTag(el, 'video');
1885    }
1886
1887    function isIFrame(el) {
1888      return isTag(el, 'iframe') && (isYoutube(el) || isVimeo(el));
1889    }
1890
1891    function isYoutube(el) {
1892      return !!el.src.match(
1893      /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/);
1894
1895    }
1896
1897    function isVimeo(el) {
1898      return !!el.src.match(/vimeo\.com\/video\/.*/);
1899    }
1900
1901    async function call(el, cmd) {
1902      await enableApi(el);
1903      post(el, cmd);
1904    }
1905
1906    function post(el, cmd) {
1907      try {
1908        el.contentWindow.postMessage(JSON.stringify({ event: 'command', ...cmd }), '*');
1909      } catch (e) {
1910        // noop
1911      }
1912    }
1913
1914    const stateKey$1 = '_ukPlayer';
1915    let counter = 0;
1916    function enableApi(el) {
1917      if (el[stateKey$1]) {
1918        return el[stateKey$1];
1919      }
1920
1921      const youtube = isYoutube(el);
1922      const vimeo = isVimeo(el);
1923
1924      const id = ++counter;
1925      let poller;
1926
1927      return el[stateKey$1] = new Promise((resolve) => {
1928        youtube &&
1929        once(el, 'load', () => {
1930          const listener = () => post(el, { event: 'listening', id });
1931          poller = setInterval(listener, 100);
1932          listener();
1933        });
1934
1935        once(window, 'message', resolve, false, (_ref) => {let { data } = _ref;
1936          try {
1937            data = JSON.parse(data);
1938            return (
1939              data && (
1940              youtube && data.id === id && data.event === 'onReady' ||
1941              vimeo && Number(data.player_id) === id));
1942
1943          } catch (e) {
1944            // noop
1945          }
1946        });
1947
1948        el.src = "" + el.src + (includes(el.src, '?') ? '&' : '?') + (
1949        youtube ? 'enablejsapi=1' : "api=1&player_id=" + id);
1950
1951      }).then(() => clearInterval(poller));
1952    }
1953
1954    function isInView(element, offsetTop, offsetLeft) {if (offsetTop === void 0) {offsetTop = 0;}if (offsetLeft === void 0) {offsetLeft = 0;}
1955      if (!isVisible(element)) {
1956        return false;
1957      }
1958
1959      return intersectRect(
1960      ...scrollParents(element).
1961      map((parent) => {
1962        const { top, left, bottom, right } = offset(getViewport$1(parent));
1963
1964        return {
1965          top: top - offsetTop,
1966          left: left - offsetLeft,
1967          bottom: bottom + offsetTop,
1968          right: right + offsetLeft };
1969
1970      }).
1971      concat(offset(element)));
1972
1973    }
1974
1975    function scrollTop(element, top) {
1976      if (isWindow(element) || isDocument(element)) {
1977        element = getScrollingElement(element);
1978      } else {
1979        element = toNode(element);
1980      }
1981
1982      if (isUndefined(top)) {
1983        return element.scrollTop;
1984      } else {
1985        element.scrollTop = top;
1986      }
1987    }
1988
1989    function scrollIntoView(element, _temp) {let { offset: offsetBy = 0 } = _temp === void 0 ? {} : _temp;
1990      const parents = isVisible(element) ? scrollParents(element) : [];
1991      return parents.reduce(
1992      (fn, scrollElement, i) => {
1993        const { scrollTop, scrollHeight, offsetHeight } = scrollElement;
1994        const maxScroll = scrollHeight - getViewportClientHeight(scrollElement);
1995        const { height: elHeight, top: elTop } = offset(parents[i - 1] || element);
1996
1997        let top = Math.ceil(
1998        elTop - offset(getViewport$1(scrollElement)).top - offsetBy + scrollTop);
1999
2000
2001        if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {
2002          top += offsetBy;
2003        } else {
2004          offsetBy = 0;
2005        }
2006
2007        if (top > maxScroll) {
2008          offsetBy -= top - maxScroll;
2009          top = maxScroll;
2010        } else if (top < 0) {
2011          offsetBy -= top;
2012          top = 0;
2013        }
2014
2015        return () => scrollTo(scrollElement, top - scrollTop).then(fn);
2016      },
2017      () => Promise.resolve())();
2018
2019
2020      function scrollTo(element, top) {
2021        return new Promise((resolve) => {
2022          const scroll = element.scrollTop;
2023          const duration = getDuration(Math.abs(top));
2024          const start = Date.now();
2025
2026          (function step() {
2027            const percent = ease(clamp((Date.now() - start) / duration));
2028
2029            scrollTop(element, scroll + top * percent);
2030
2031            // scroll more if we have not reached our destination
2032            if (percent === 1) {
2033              resolve();
2034            } else {
2035              requestAnimationFrame(step);
2036            }
2037          })();
2038        });
2039      }
2040
2041      function getDuration(dist) {
2042        return 40 * Math.pow(dist, 0.375);
2043      }
2044
2045      function ease(k) {
2046        return 0.5 * (1 - Math.cos(Math.PI * k));
2047      }
2048    }
2049
2050    function scrolledOver(element, startOffset, endOffset) {if (startOffset === void 0) {startOffset = 0;}if (endOffset === void 0) {endOffset = 0;}
2051      if (!isVisible(element)) {
2052        return 0;
2053      }
2054
2055      const [scrollElement] = scrollParents(element, /auto|scroll/, true);
2056      const { scrollHeight, scrollTop } = scrollElement;
2057      const viewportHeight = getViewportClientHeight(scrollElement);
2058      const maxScroll = scrollHeight - viewportHeight;
2059      const elementOffsetTop = offsetPosition(element)[0] - offsetPosition(scrollElement)[0];
2060
2061      const start = Math.max(0, elementOffsetTop - viewportHeight + startOffset);
2062      const end = Math.min(maxScroll, elementOffsetTop + element.offsetHeight - endOffset);
2063
2064      return clamp((scrollTop - start) / (end - start));
2065    }
2066
2067    function scrollParents(element, overflowRe, scrollable) {if (overflowRe === void 0) {overflowRe = /auto|scroll|hidden/;}if (scrollable === void 0) {scrollable = false;}
2068      const scrollEl = getScrollingElement(element);
2069
2070      let ancestors = parents(element).reverse();
2071      ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);
2072
2073      const fixedIndex = findIndex(ancestors, (el) => css(el, 'position') === 'fixed');
2074      if (~fixedIndex) {
2075        ancestors = ancestors.slice(fixedIndex);
2076      }
2077
2078      return [scrollEl].
2079      concat(
2080      ancestors.filter(
2081      (parent) =>
2082      overflowRe.test(css(parent, 'overflow')) && (
2083      !scrollable || parent.scrollHeight > getViewportClientHeight(parent)))).
2084
2085
2086      reverse();
2087    }
2088
2089    function getViewport$1(scrollElement) {
2090      return scrollElement === getScrollingElement(scrollElement) ? window : scrollElement;
2091    }
2092
2093    // iOS 12 returns <body> as scrollingElement
2094    function getViewportClientHeight(scrollElement) {
2095      return (
2096      scrollElement === getScrollingElement(scrollElement) ?
2097      document.documentElement :
2098      scrollElement).
2099      clientHeight;
2100    }
2101
2102    function getScrollingElement(element) {
2103      const { document } = toWindow(element);
2104      return document.scrollingElement || document.documentElement;
2105    }
2106
2107    const dirs = {
2108      width: ['x', 'left', 'right'],
2109      height: ['y', 'top', 'bottom'] };
2110
2111
2112    function positionAt(
2113    element,
2114    target,
2115    elAttach,
2116    targetAttach,
2117    elOffset,
2118    targetOffset,
2119    flip,
2120    boundary)
2121    {
2122      elAttach = getPos(elAttach);
2123      targetAttach = getPos(targetAttach);
2124
2125      const flipped = { element: elAttach, target: targetAttach };
2126
2127      if (!element || !target) {
2128        return flipped;
2129      }
2130
2131      const dim = offset(element);
2132      const targetDim = offset(target);
2133      const position = targetDim;
2134
2135      moveTo(position, elAttach, dim, -1);
2136      moveTo(position, targetAttach, targetDim, 1);
2137
2138      elOffset = getOffsets(elOffset, dim.width, dim.height);
2139      targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);
2140
2141      elOffset['x'] += targetOffset['x'];
2142      elOffset['y'] += targetOffset['y'];
2143
2144      position.left += elOffset['x'];
2145      position.top += elOffset['y'];
2146
2147      if (flip) {
2148        let boundaries = scrollParents(element).map(getViewport$1);
2149
2150        if (boundary && !includes(boundaries, boundary)) {
2151          boundaries.unshift(boundary);
2152        }
2153
2154        boundaries = boundaries.map((el) => offset(el));
2155
2156        each(dirs, (_ref, prop) => {let [dir, align, alignFlip] = _ref;
2157          if (!(flip === true || includes(flip, dir))) {
2158            return;
2159          }
2160
2161          boundaries.some((boundary) => {
2162            const elemOffset =
2163            elAttach[dir] === align ?
2164            -dim[prop] :
2165            elAttach[dir] === alignFlip ?
2166            dim[prop] :
2167            0;
2168
2169            const targetOffset =
2170            targetAttach[dir] === align ?
2171            targetDim[prop] :
2172            targetAttach[dir] === alignFlip ?
2173            -targetDim[prop] :
2174            0;
2175
2176            if (
2177            position[align] < boundary[align] ||
2178            position[align] + dim[prop] > boundary[alignFlip])
2179            {
2180              const centerOffset = dim[prop] / 2;
2181              const centerTargetOffset =
2182              targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;
2183
2184              return (
2185                elAttach[dir] === 'center' && (
2186                apply(centerOffset, centerTargetOffset) ||
2187                apply(-centerOffset, -centerTargetOffset)) ||
2188                apply(elemOffset, targetOffset));
2189
2190            }
2191
2192            function apply(elemOffset, targetOffset) {
2193              const newVal = toFloat(
2194              (position[align] + elemOffset + targetOffset - elOffset[dir] * 2).toFixed(4));
2195
2196
2197              if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {
2198                position[align] = newVal;
2199
2200                for (const el of ['element', 'target']) {
2201                  if (elemOffset) {
2202                    flipped[el][dir] =
2203                    flipped[el][dir] === dirs[prop][1] ?
2204                    dirs[prop][2] :
2205                    dirs[prop][1];
2206                  }
2207                }
2208
2209                return true;
2210              }
2211            }
2212          });
2213        });
2214      }
2215
2216      offset(element, position);
2217
2218      return flipped;
2219    }
2220
2221    function moveTo(position, attach, dim, factor) {
2222      each(dirs, (_ref2, prop) => {let [dir, align, alignFlip] = _ref2;
2223        if (attach[dir] === alignFlip) {
2224          position[align] += dim[prop] * factor;
2225        } else if (attach[dir] === 'center') {
2226          position[align] += dim[prop] * factor / 2;
2227        }
2228      });
2229    }
2230
2231    function getPos(pos) {
2232      const x = /left|center|right/;
2233      const y = /top|center|bottom/;
2234
2235      pos = (pos || '').split(' ');
2236
2237      if (pos.length === 1) {
2238        pos = x.test(pos[0]) ?
2239        pos.concat('center') :
2240        y.test(pos[0]) ?
2241        ['center'].concat(pos) :
2242        ['center', 'center'];
2243      }
2244
2245      return {
2246        x: x.test(pos[0]) ? pos[0] : 'center',
2247        y: y.test(pos[1]) ? pos[1] : 'center' };
2248
2249    }
2250
2251    function getOffsets(offsets, width, height) {
2252      const [x, y] = (offsets || '').split(' ');
2253
2254      return {
2255        x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,
2256        y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0 };
2257
2258    }
2259
2260    var util = /*#__PURE__*/Object.freeze({
2261        __proto__: null,
2262        ajax: ajax,
2263        getImage: getImage,
2264        transition: transition,
2265        Transition: Transition,
2266        animate: animate$1,
2267        Animation: Animation,
2268        attr: attr,
2269        hasAttr: hasAttr,
2270        removeAttr: removeAttr,
2271        data: data,
2272        addClass: addClass,
2273        removeClass: removeClass,
2274        removeClasses: removeClasses,
2275        replaceClass: replaceClass,
2276        hasClass: hasClass,
2277        toggleClass: toggleClass,
2278        dimensions: dimensions$1,
2279        offset: offset,
2280        position: position,
2281        offsetPosition: offsetPosition,
2282        height: height,
2283        width: width,
2284        boxModelAdjust: boxModelAdjust,
2285        flipPosition: flipPosition,
2286        toPx: toPx,
2287        ready: ready,
2288        isTag: isTag,
2289        empty: empty,
2290        html: html,
2291        replaceChildren: replaceChildren,
2292        prepend: prepend,
2293        append: append,
2294        before: before,
2295        after: after,
2296        remove: remove$1,
2297        wrapAll: wrapAll,
2298        wrapInner: wrapInner,
2299        unwrap: unwrap,
2300        fragment: fragment,
2301        apply: apply,
2302        $: $,
2303        $$: $$,
2304        inBrowser: inBrowser,
2305        isRtl: isRtl,
2306        hasTouch: hasTouch,
2307        pointerDown: pointerDown,
2308        pointerMove: pointerMove,
2309        pointerUp: pointerUp,
2310        pointerEnter: pointerEnter,
2311        pointerLeave: pointerLeave,
2312        pointerCancel: pointerCancel,
2313        on: on,
2314        off: off,
2315        once: once,
2316        trigger: trigger,
2317        createEvent: createEvent,
2318        toEventTargets: toEventTargets,
2319        isTouch: isTouch,
2320        getEventPos: getEventPos,
2321        fastdom: fastdom,
2322        isVoidElement: isVoidElement,
2323        isVisible: isVisible,
2324        selInput: selInput,
2325        isInput: isInput,
2326        selFocusable: selFocusable,
2327        isFocusable: isFocusable,
2328        parent: parent,
2329        filter: filter$1,
2330        matches: matches,
2331        closest: closest,
2332        within: within,
2333        parents: parents,
2334        children: children,
2335        index: index,
2336        hasOwn: hasOwn,
2337        hyphenate: hyphenate,
2338        camelize: camelize,
2339        ucfirst: ucfirst,
2340        startsWith: startsWith,
2341        endsWith: endsWith,
2342        includes: includes,
2343        findIndex: findIndex,
2344        isArray: isArray,
2345        toArray: toArray,
2346        assign: assign,
2347        isFunction: isFunction,
2348        isObject: isObject,
2349        isPlainObject: isPlainObject,
2350        isWindow: isWindow,
2351        isDocument: isDocument,
2352        isNode: isNode,
2353        isElement: isElement,
2354        isBoolean: isBoolean,
2355        isString: isString,
2356        isNumber: isNumber,
2357        isNumeric: isNumeric,
2358        isEmpty: isEmpty,
2359        isUndefined: isUndefined,
2360        toBoolean: toBoolean,
2361        toNumber: toNumber,
2362        toFloat: toFloat,
2363        toNode: toNode,
2364        toNodes: toNodes,
2365        toWindow: toWindow,
2366        toMs: toMs,
2367        isEqual: isEqual,
2368        swap: swap,
2369        last: last,
2370        each: each,
2371        sortBy: sortBy$1,
2372        uniqueBy: uniqueBy,
2373        clamp: clamp,
2374        noop: noop,
2375        intersectRect: intersectRect,
2376        pointInRect: pointInRect,
2377        Dimensions: Dimensions,
2378        getIndex: getIndex,
2379        memoize: memoize,
2380        Deferred: Deferred,
2381        MouseTracker: MouseTracker,
2382        observeIntersection: observeIntersection,
2383        observeResize: observeResize,
2384        observeMutation: observeMutation,
2385        mergeOptions: mergeOptions,
2386        parseOptions: parseOptions,
2387        play: play,
2388        pause: pause,
2389        mute: mute,
2390        isVideo: isVideo,
2391        positionAt: positionAt,
2392        query: query,
2393        queryAll: queryAll,
2394        find: find,
2395        findAll: findAll,
2396        escape: escape,
2397        css: css,
2398        getCssVar: getCssVar,
2399        propName: propName,
2400        isInView: isInView,
2401        scrollTop: scrollTop,
2402        scrollIntoView: scrollIntoView,
2403        scrolledOver: scrolledOver,
2404        scrollParents: scrollParents,
2405        getViewport: getViewport$1,
2406        getViewportClientHeight: getViewportClientHeight,
2407        getScrollingElement: getScrollingElement
2408    });
2409
2410    function globalAPI (UIkit) {
2411      const DATA = UIkit.data;
2412
2413      UIkit.use = function (plugin) {
2414        if (plugin.installed) {
2415          return;
2416        }
2417
2418        plugin.call(null, this);
2419        plugin.installed = true;
2420
2421        return this;
2422      };
2423
2424      UIkit.mixin = function (mixin, component) {
2425        component = (isString(component) ? UIkit.component(component) : component) || this;
2426        component.options = mergeOptions(component.options, mixin);
2427      };
2428
2429      UIkit.extend = function (options) {
2430        options = options || {};
2431
2432        const Super = this;
2433        const Sub = function UIkitComponent(options) {
2434          this._init(options);
2435        };
2436
2437        Sub.prototype = Object.create(Super.prototype);
2438        Sub.prototype.constructor = Sub;
2439        Sub.options = mergeOptions(Super.options, options);
2440
2441        Sub.super = Super;
2442        Sub.extend = Super.extend;
2443
2444        return Sub;
2445      };
2446
2447      UIkit.update = function (element, e) {
2448        element = element ? toNode(element) : document.body;
2449
2450        for (const parentEl of parents(element).reverse()) {
2451          update(parentEl[DATA], e);
2452        }
2453
2454        apply(element, (element) => update(element[DATA], e));
2455      };
2456
2457      let container;
2458      Object.defineProperty(UIkit, 'container', {
2459        get() {
2460          return container || document.body;
2461        },
2462
2463        set(element) {
2464          container = $(element);
2465        } });
2466
2467
2468      function update(data, e) {
2469        if (!data) {
2470          return;
2471        }
2472
2473        for (const name in data) {
2474          if (data[name]._connected) {
2475            data[name]._callUpdate(e);
2476          }
2477        }
2478      }
2479    }
2480
2481    function hooksAPI (UIkit) {
2482      UIkit.prototype._callHook = function (hook) {var _this$$options$hook;
2483        (_this$$options$hook = this.$options[hook]) == null ? void 0 : _this$$options$hook.forEach((handler) => handler.call(this));
2484      };
2485
2486      UIkit.prototype._callConnected = function () {
2487        if (this._connected) {
2488          return;
2489        }
2490
2491        this._data = {};
2492        this._computed = {};
2493
2494        this._initProps();
2495
2496        this._callHook('beforeConnect');
2497        this._connected = true;
2498
2499        this._initEvents();
2500        this._initObservers();
2501
2502        this._callHook('connected');
2503        this._callUpdate();
2504      };
2505
2506      UIkit.prototype._callDisconnected = function () {
2507        if (!this._connected) {
2508          return;
2509        }
2510
2511        this._callHook('beforeDisconnect');
2512        this._disconnectObservers();
2513        this._unbindEvents();
2514        this._callHook('disconnected');
2515
2516        this._connected = false;
2517        delete this._watch;
2518      };
2519
2520      UIkit.prototype._callUpdate = function (e) {if (e === void 0) {e = 'update';}
2521        if (!this._connected) {
2522          return;
2523        }
2524
2525        if (e === 'update' || e === 'resize') {
2526          this._callWatches();
2527        }
2528
2529        if (!this.$options.update) {
2530          return;
2531        }
2532
2533        if (!this._updates) {
2534          this._updates = new Set();
2535          fastdom.read(() => {
2536            if (this._connected) {
2537              runUpdates.call(this, this._updates);
2538            }
2539            delete this._updates;
2540          });
2541        }
2542
2543        this._updates.add(e.type || e);
2544      };
2545
2546      UIkit.prototype._callWatches = function () {
2547        if (this._watch) {
2548          return;
2549        }
2550
2551        const initial = !hasOwn(this, '_watch');
2552
2553        this._watch = fastdom.read(() => {
2554          if (this._connected) {
2555            runWatches.call(this, initial);
2556          }
2557          this._watch = null;
2558        });
2559      };
2560
2561      function runUpdates(types) {
2562        for (const { read, write, events = [] } of this.$options.update) {
2563          if (!types.has('update') && !events.some((type) => types.has(type))) {
2564            continue;
2565          }
2566
2567          let result;
2568          if (read) {
2569            result = read.call(this, this._data, types);
2570
2571            if (result && isPlainObject(result)) {
2572              assign(this._data, result);
2573            }
2574          }
2575
2576          if (write && result !== false) {
2577            fastdom.write(() => write.call(this, this._data, types));
2578          }
2579        }
2580      }
2581
2582      function runWatches(initial) {
2583        const {
2584          $options: { computed } } =
2585        this;
2586        const values = { ...this._computed };
2587        this._computed = {};
2588
2589        for (const key in computed) {
2590          const { watch, immediate } = computed[key];
2591          if (
2592          watch && (
2593          initial && immediate ||
2594          hasOwn(values, key) && !isEqual(values[key], this[key])))
2595          {
2596            watch.call(this, this[key], values[key]);
2597          }
2598        }
2599      }
2600    }
2601
2602    function stateAPI (UIkit) {
2603      let uid = 0;
2604
2605      UIkit.prototype._init = function (options) {
2606        options = options || {};
2607        options.data = normalizeData(options, this.constructor.options);
2608
2609        this.$options = mergeOptions(this.constructor.options, options, this);
2610        this.$el = null;
2611        this.$props = {};
2612
2613        this._uid = uid++;
2614        this._initData();
2615        this._initMethods();
2616        this._initComputeds();
2617        this._callHook('created');
2618
2619        if (options.el) {
2620          this.$mount(options.el);
2621        }
2622      };
2623
2624      UIkit.prototype._initData = function () {
2625        const { data = {} } = this.$options;
2626
2627        for (const key in data) {
2628          this.$props[key] = this[key] = data[key];
2629        }
2630      };
2631
2632      UIkit.prototype._initMethods = function () {
2633        const { methods } = this.$options;
2634
2635        if (methods) {
2636          for (const key in methods) {
2637            this[key] = methods[key].bind(this);
2638          }
2639        }
2640      };
2641
2642      UIkit.prototype._initComputeds = function () {
2643        const { computed } = this.$options;
2644
2645        this._computed = {};
2646
2647        if (computed) {
2648          for (const key in computed) {
2649            registerComputed(this, key, computed[key]);
2650          }
2651        }
2652      };
2653
2654      UIkit.prototype._initProps = function (props) {
2655        let key;
2656
2657        props = props || getProps$1(this.$options, this.$name);
2658
2659        for (key in props) {
2660          if (!isUndefined(props[key])) {
2661            this.$props[key] = props[key];
2662          }
2663        }
2664
2665        const exclude = [this.$options.computed, this.$options.methods];
2666        for (key in this.$props) {
2667          if (key in props && notIn(exclude, key)) {
2668            this[key] = this.$props[key];
2669          }
2670        }
2671      };
2672
2673      UIkit.prototype._initEvents = function () {
2674        this._events = [];
2675        for (const event of this.$options.events || []) {
2676          if (hasOwn(event, 'handler')) {
2677            registerEvent(this, event);
2678          } else {
2679            for (const key in event) {
2680              registerEvent(this, event[key], key);
2681            }
2682          }
2683        }
2684      };
2685
2686      UIkit.prototype._unbindEvents = function () {
2687        this._events.forEach((unbind) => unbind());
2688        delete this._events;
2689      };
2690
2691      UIkit.prototype._initObservers = function () {
2692        this._observers = [initPropsObserver(this)];
2693
2694        if (this.$options.computed) {
2695          this.registerObserver(initChildListObserver(this));
2696        }
2697      };
2698
2699      UIkit.prototype.registerObserver = function (observer) {
2700        this._observers.push(observer);
2701      };
2702
2703      UIkit.prototype._disconnectObservers = function () {
2704        this._observers.forEach((observer) => observer == null ? void 0 : observer.disconnect());
2705      };
2706    }
2707
2708    function getProps$1(opts, name) {
2709      const data$1 = {};
2710      const { args = [], props = {}, el } = opts;
2711
2712      if (!props) {
2713        return data$1;
2714      }
2715
2716      for (const key in props) {
2717        const prop = hyphenate(key);
2718        let value = data(el, prop);
2719
2720        if (isUndefined(value)) {
2721          continue;
2722        }
2723
2724        value = props[key] === Boolean && value === '' ? true : coerce(props[key], value);
2725
2726        if (prop === 'target' && (!value || startsWith(value, '_'))) {
2727          continue;
2728        }
2729
2730        data$1[key] = value;
2731      }
2732
2733      const options = parseOptions(data(el, name), args);
2734
2735      for (const key in options) {
2736        const prop = camelize(key);
2737        if (props[prop] !== undefined) {
2738          data$1[prop] = coerce(props[prop], options[key]);
2739        }
2740      }
2741
2742      return data$1;
2743    }
2744
2745    function registerComputed(component, key, cb) {
2746      Object.defineProperty(component, key, {
2747        enumerable: true,
2748
2749        get() {
2750          const { _computed, $props, $el } = component;
2751
2752          if (!hasOwn(_computed, key)) {
2753            _computed[key] = (cb.get || cb).call(component, $props, $el);
2754          }
2755
2756          return _computed[key];
2757        },
2758
2759        set(value) {
2760          const { _computed } = component;
2761
2762          _computed[key] = cb.set ? cb.set.call(component, value) : value;
2763
2764          if (isUndefined(_computed[key])) {
2765            delete _computed[key];
2766          }
2767        } });
2768
2769    }
2770
2771    function registerEvent(component, event, key) {
2772      if (!isPlainObject(event)) {
2773        event = { name: key, handler: event };
2774      }
2775
2776      let { name, el, handler, capture, passive, delegate, filter, self } = event;
2777      el = isFunction(el) ? el.call(component) : el || component.$el;
2778
2779      if (isArray(el)) {
2780        el.forEach((el) => registerEvent(component, { ...event, el }, key));
2781        return;
2782      }
2783
2784      if (!el || filter && !filter.call(component)) {
2785        return;
2786      }
2787
2788      component._events.push(
2789      on(
2790      el,
2791      name,
2792      delegate ? isString(delegate) ? delegate : delegate.call(component) : null,
2793      isString(handler) ? component[handler] : handler.bind(component),
2794      { passive, capture, self }));
2795
2796
2797    }
2798
2799    function notIn(options, key) {
2800      return options.every((arr) => !arr || !hasOwn(arr, key));
2801    }
2802
2803    function coerce(type, value) {
2804      if (type === Boolean) {
2805        return toBoolean(value);
2806      } else if (type === Number) {
2807        return toNumber(value);
2808      } else if (type === 'list') {
2809        return toList(value);
2810      }
2811
2812      return type ? type(value) : value;
2813    }
2814
2815    function toList(value) {
2816      return isArray(value) ?
2817      value :
2818      isString(value) ?
2819      value.
2820      split(/,(?![^(]*\))/).
2821      map((value) => isNumeric(value) ? toNumber(value) : toBoolean(value.trim())) :
2822      [value];
2823    }
2824
2825    function normalizeData(_ref, _ref2) {let { data = {} } = _ref;let { args = [], props = {} } = _ref2;
2826      if (isArray(data)) {
2827        data = data.slice(0, args.length).reduce((data, value, index) => {
2828          if (isPlainObject(value)) {
2829            assign(data, value);
2830          } else {
2831            data[args[index]] = value;
2832          }
2833          return data;
2834        }, {});
2835      }
2836
2837      for (const key in data) {
2838        if (isUndefined(data[key])) {
2839          delete data[key];
2840        } else if (props[key]) {
2841          data[key] = coerce(props[key], data[key]);
2842        }
2843      }
2844
2845      return data;
2846    }
2847
2848    function initChildListObserver(component) {
2849      const { el } = component.$options;
2850
2851      const observer = new MutationObserver(() => component.$emit());
2852      observer.observe(el, {
2853        childList: true,
2854        subtree: true });
2855
2856
2857      return observer;
2858    }
2859
2860    function initPropsObserver(component) {
2861      const { $name, $options, $props } = component;
2862      const { attrs, props, el } = $options;
2863
2864      if (!props || attrs === false) {
2865        return;
2866      }
2867
2868      const attributes = isArray(attrs) ? attrs : Object.keys(props);
2869      const filter = attributes.map((key) => hyphenate(key)).concat($name);
2870
2871      const observer = new MutationObserver((records) => {
2872        const data = getProps$1($options, $name);
2873        if (
2874        records.some((_ref3) => {let { attributeName } = _ref3;
2875          const prop = attributeName.replace('data-', '');
2876          return (
2877          prop === $name ? attributes : [camelize(prop), camelize(attributeName)]).
2878          some((prop) => !isUndefined(data[prop]) && data[prop] !== $props[prop]);
2879        }))
2880        {
2881          component.$reset();
2882        }
2883      });
2884
2885      observer.observe(el, {
2886        attributes: true,
2887        attributeFilter: filter.concat(filter.map((key) => "data-" + key)) });
2888
2889
2890      return observer;
2891    }
2892
2893    function instanceAPI (UIkit) {
2894      const DATA = UIkit.data;
2895
2896      UIkit.prototype.$create = function (component, element, data) {
2897        return UIkit[component](element, data);
2898      };
2899
2900      UIkit.prototype.$mount = function (el) {
2901        const { name } = this.$options;
2902
2903        if (!el[DATA]) {
2904          el[DATA] = {};
2905        }
2906
2907        if (el[DATA][name]) {
2908          return;
2909        }
2910
2911        el[DATA][name] = this;
2912
2913        this.$el = this.$options.el = this.$options.el || el;
2914
2915        if (within(el, document)) {
2916          this._callConnected();
2917        }
2918      };
2919
2920      UIkit.prototype.$reset = function () {
2921        this._callDisconnected();
2922        this._callConnected();
2923      };
2924
2925      UIkit.prototype.$destroy = function (removeEl) {if (removeEl === void 0) {removeEl = false;}
2926        const { el, name } = this.$options;
2927
2928        if (el) {
2929          this._callDisconnected();
2930        }
2931
2932        this._callHook('destroy');
2933
2934        if (!(el != null && el[DATA])) {
2935          return;
2936        }
2937
2938        delete el[DATA][name];
2939
2940        if (!isEmpty(el[DATA])) {
2941          delete el[DATA];
2942        }
2943
2944        if (removeEl) {
2945          remove$1(this.$el);
2946        }
2947      };
2948
2949      UIkit.prototype.$emit = function (e) {
2950        this._callUpdate(e);
2951      };
2952
2953      UIkit.prototype.$update = function (element, e) {if (element === void 0) {element = this.$el;}
2954        UIkit.update(element, e);
2955      };
2956
2957      UIkit.prototype.$getComponent = UIkit.getComponent;
2958
2959      const componentName = memoize((name) => UIkit.prefix + hyphenate(name));
2960      Object.defineProperties(UIkit.prototype, {
2961        $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),
2962
2963        $name: {
2964          get() {
2965            return componentName(this.$options.name);
2966          } } });
2967
2968
2969    }
2970
2971    function componentAPI (UIkit) {
2972      const DATA = UIkit.data;
2973
2974      const components = {};
2975
2976      UIkit.component = function (name, options) {
2977        const id = hyphenate(name);
2978
2979        name = camelize(id);
2980
2981        if (!options) {
2982          if (isPlainObject(components[name])) {
2983            components[name] = UIkit.extend(components[name]);
2984          }
2985
2986          return components[name];
2987        }
2988
2989        UIkit[name] = function (element, data) {
2990          const component = UIkit.component(name);
2991
2992          return component.options.functional ?
2993          new component({ data: isPlainObject(element) ? element : [...arguments] }) :
2994          element ?
2995          $$(element).map(init)[0] :
2996          init();
2997
2998          function init(element) {
2999            const instance = UIkit.getComponent(element, name);
3000
3001            if (instance) {
3002              if (data) {
3003                instance.$destroy();
3004              } else {
3005                return instance;
3006              }
3007            }
3008
3009            return new component({ el: element, data });
3010          }
3011        };
3012
3013        const opt = isPlainObject(options) ? { ...options } : options.options;
3014
3015        opt.name = name;
3016
3017        opt.install == null ? void 0 : opt.install(UIkit, opt, name);
3018
3019        if (UIkit._initialized && !opt.functional) {
3020          fastdom.read(() => UIkit[name]("[uk-" + id + "],[data-uk-" + id + "]"));
3021        }
3022
3023        return components[name] = isPlainObject(options) ? opt : options;
3024      };
3025
3026      UIkit.getComponents = (element) => (element == null ? void 0 : element[DATA]) || {};
3027      UIkit.getComponent = (element, name) => UIkit.getComponents(element)[name];
3028
3029      UIkit.connect = (node) => {
3030        if (node[DATA]) {
3031          for (const name in node[DATA]) {
3032            node[DATA][name]._callConnected();
3033          }
3034        }
3035
3036        for (const attribute of node.attributes) {
3037          const name = getComponentName(attribute.name);
3038
3039          if (name && name in components) {
3040            UIkit[name](node);
3041          }
3042        }
3043      };
3044
3045      UIkit.disconnect = (node) => {
3046        for (const name in node[DATA]) {
3047          node[DATA][name]._callDisconnected();
3048        }
3049      };
3050    }
3051
3052    const getComponentName = memoize((attribute) => {
3053      return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-') ?
3054      camelize(attribute.replace('data-uk-', '').replace('uk-', '')) :
3055      false;
3056    });
3057
3058    const UIkit = function (options) {
3059      this._init(options);
3060    };
3061
3062    UIkit.util = util;
3063    UIkit.data = '__uikit__';
3064    UIkit.prefix = 'uk-';
3065    UIkit.options = {};
3066    UIkit.version = '3.13.7';
3067
3068    globalAPI(UIkit);
3069    hooksAPI(UIkit);
3070    stateAPI(UIkit);
3071    componentAPI(UIkit);
3072    instanceAPI(UIkit);
3073
3074    function Core () {
3075      if (!inBrowser) {
3076        return;
3077      }
3078
3079      let started = 0;
3080      on(
3081      document,
3082      'animationstart',
3083      (_ref) => {let { target } = _ref;
3084        if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {
3085          started++;
3086          css(document.documentElement, 'overflowX', 'hidden');
3087          setTimeout(() => {
3088            if (! --started) {
3089              css(document.documentElement, 'overflowX', '');
3090            }
3091          }, toMs(css(target, 'animationDuration')) + 100);
3092        }
3093      },
3094      true);
3095
3096    }
3097
3098    function boot (UIkit) {
3099      const { connect, disconnect } = UIkit;
3100
3101      if (!inBrowser || !window.MutationObserver) {
3102        return;
3103      }
3104
3105      fastdom.read(function () {
3106        if (document.body) {
3107          apply(document.body, connect);
3108        }
3109
3110        new MutationObserver((records) => records.forEach(applyChildListMutation)).observe(
3111        document,
3112        {
3113          childList: true,
3114          subtree: true });
3115
3116
3117
3118        new MutationObserver((records) => records.forEach(applyAttributeMutation)).observe(
3119        document,
3120        {
3121          attributes: true,
3122          subtree: true });
3123
3124
3125
3126        UIkit._initialized = true;
3127      });
3128
3129      function applyChildListMutation(_ref) {let { addedNodes, removedNodes } = _ref;
3130        for (const node of addedNodes) {
3131          apply(node, connect);
3132        }
3133
3134        for (const node of removedNodes) {
3135          apply(node, disconnect);
3136        }
3137      }
3138
3139      function applyAttributeMutation(_ref2) {var _UIkit$getComponent;let { target, attributeName } = _ref2;
3140        const name = getComponentName(attributeName);
3141
3142        if (!name || !(name in UIkit)) {
3143          return;
3144        }
3145
3146        if (hasAttr(target, attributeName)) {
3147          UIkit[name](target);
3148          return;
3149        }
3150
3151        (_UIkit$getComponent = UIkit.getComponent(target, name)) == null ? void 0 : _UIkit$getComponent.$destroy();
3152      }
3153    }
3154
3155    var Class = {
3156      connected() {
3157        !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);
3158      } };
3159
3160    var Lazyload = {
3161      methods: {
3162        lazyload(observeTargets, targets) {if (observeTargets === void 0) {observeTargets = this.$el;}if (targets === void 0) {targets = this.$el;}
3163          this.registerObserver(
3164          observeIntersection(observeTargets, (entries, observer) => {
3165            for (const el of toNodes(isFunction(targets) ? targets() : targets)) {
3166              $$('[loading="lazy"]', el).forEach((el) => removeAttr(el, 'loading'));
3167            }
3168            for (const el of entries.
3169            filter((_ref) => {let { isIntersecting } = _ref;return isIntersecting;}).
3170            map((_ref2) => {let { target } = _ref2;return target;})) {
3171              observer.unobserve(el);
3172            }
3173          }));
3174
3175        } } };
3176
3177    var Togglable = {
3178      props: {
3179        cls: Boolean,
3180        animation: 'list',
3181        duration: Number,
3182        origin: String,
3183        transition: String },
3184
3185
3186      data: {
3187        cls: false,
3188        animation: [false],
3189        duration: 200,
3190        origin: false,
3191        transition: 'linear',
3192        clsEnter: 'uk-togglabe-enter',
3193        clsLeave: 'uk-togglabe-leave',
3194
3195        initProps: {
3196          overflow: '',
3197          height: '',
3198          paddingTop: '',
3199          paddingBottom: '',
3200          marginTop: '',
3201          marginBottom: '' },
3202
3203
3204        hideProps: {
3205          overflow: 'hidden',
3206          height: 0,
3207          paddingTop: 0,
3208          paddingBottom: 0,
3209          marginTop: 0,
3210          marginBottom: 0 } },
3211
3212
3213
3214      computed: {
3215        hasAnimation(_ref) {let { animation } = _ref;
3216          return !!animation[0];
3217        },
3218
3219        hasTransition(_ref2) {let { animation } = _ref2;
3220          return this.hasAnimation && animation[0] === true;
3221        } },
3222
3223
3224      methods: {
3225        toggleElement(targets, toggle, animate) {
3226          return new Promise((resolve) =>
3227          Promise.all(
3228          toNodes(targets).map((el) => {
3229            const show = isBoolean(toggle) ? toggle : !this.isToggled(el);
3230
3231            if (!trigger(el, "before" + (show ? 'show' : 'hide'), [this])) {
3232              return Promise.reject();
3233            }
3234
3235            const promise = (
3236            isFunction(animate) ?
3237            animate :
3238            animate === false || !this.hasAnimation ?
3239            this._toggle :
3240            this.hasTransition ?
3241            toggleHeight(this) :
3242            toggleAnimation(this))(
3243            el, show);
3244
3245            const cls = show ? this.clsEnter : this.clsLeave;
3246
3247            addClass(el, cls);
3248
3249            trigger(el, show ? 'show' : 'hide', [this]);
3250
3251            const done = () => {
3252              removeClass(el, cls);
3253              trigger(el, show ? 'shown' : 'hidden', [this]);
3254              this.$update(el);
3255            };
3256
3257            return promise ?
3258            promise.then(done, () => {
3259              removeClass(el, cls);
3260              return Promise.reject();
3261            }) :
3262            done();
3263          })).
3264          then(resolve, noop));
3265
3266        },
3267
3268        isToggled(el) {if (el === void 0) {el = this.$el;}
3269          [el] = toNodes(el);
3270          return hasClass(el, this.clsEnter) ?
3271          true :
3272          hasClass(el, this.clsLeave) ?
3273          false :
3274          this.cls ?
3275          hasClass(el, this.cls.split(' ')[0]) :
3276          isVisible(el);
3277        },
3278
3279        _toggle(el, toggled) {
3280          if (!el) {
3281            return;
3282          }
3283
3284          toggled = Boolean(toggled);
3285
3286          let changed;
3287          if (this.cls) {
3288            changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);
3289            changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);
3290          } else {
3291            changed = toggled === el.hidden;
3292            changed && (el.hidden = !toggled);
3293          }
3294
3295          $$('[autofocus]', el).some((el) => isVisible(el) ? el.focus() || true : el.blur());
3296
3297          if (changed) {
3298            trigger(el, 'toggled', [toggled, this]);
3299            this.$update(el);
3300          }
3301        } } };
3302
3303
3304
3305    function toggleHeight(_ref3) {let { isToggled, duration, initProps, hideProps, transition, _toggle } = _ref3;
3306      return (el, show) => {
3307        const inProgress = Transition.inProgress(el);
3308        const inner = el.hasChildNodes() ?
3309        toFloat(css(el.firstElementChild, 'marginTop')) +
3310        toFloat(css(el.lastElementChild, 'marginBottom')) :
3311        0;
3312        const currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;
3313
3314        Transition.cancel(el);
3315
3316        if (!isToggled(el)) {
3317          _toggle(el, true);
3318        }
3319
3320        height(el, '');
3321
3322        // Update child components first
3323        fastdom.flush();
3324
3325        const endHeight = height(el) + (inProgress ? 0 : inner);
3326        height(el, currentHeight);
3327
3328        return (
3329        show ?
3330        Transition.start(
3331        el,
3332        { ...initProps, overflow: 'hidden', height: endHeight },
3333        Math.round(duration * (1 - currentHeight / endHeight)),
3334        transition) :
3335
3336        Transition.start(
3337        el,
3338        hideProps,
3339        Math.round(duration * (currentHeight / endHeight)),
3340        transition).
3341        then(() => _toggle(el, false))).
3342        then(() => css(el, initProps));
3343      };
3344    }
3345
3346    function toggleAnimation(cmp) {
3347      return (el, show) => {
3348        Animation.cancel(el);
3349
3350        const { animation, duration, _toggle } = cmp;
3351
3352        if (show) {
3353          _toggle(el, true);
3354          return Animation.in(el, animation[0], duration, cmp.origin);
3355        }
3356
3357        return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(() =>
3358        _toggle(el, false));
3359
3360      };
3361    }
3362
3363    var Accordion = {
3364      mixins: [Class, Lazyload, Togglable],
3365
3366      props: {
3367        targets: String,
3368        active: null,
3369        collapsible: Boolean,
3370        multiple: Boolean,
3371        toggle: String,
3372        content: String,
3373        transition: String,
3374        offset: Number },
3375
3376
3377      data: {
3378        targets: '> *',
3379        active: false,
3380        animation: [true],
3381        collapsible: true,
3382        multiple: false,
3383        clsOpen: 'uk-open',
3384        toggle: '> .uk-accordion-title',
3385        content: '> .uk-accordion-content',
3386        transition: 'ease',
3387        offset: 0 },
3388
3389
3390      computed: {
3391        items: {
3392          get(_ref, $el) {let { targets } = _ref;
3393            return $$(targets, $el);
3394          },
3395
3396          watch(items, prev) {
3397            items.forEach((el) => hide($(this.content, el), !hasClass(el, this.clsOpen)));
3398
3399            if (prev || hasClass(items, this.clsOpen)) {
3400              return;
3401            }
3402
3403            const active =
3404            this.active !== false && items[Number(this.active)] ||
3405            !this.collapsible && items[0];
3406
3407            if (active) {
3408              this.toggle(active, false);
3409            }
3410          },
3411
3412          immediate: true },
3413
3414
3415        toggles(_ref2) {let { toggle } = _ref2;
3416          return this.items.map((item) => $(toggle, item));
3417        } },
3418
3419
3420      connected() {
3421        this.lazyload();
3422      },
3423
3424      events: [
3425      {
3426        name: 'click',
3427
3428        delegate() {
3429          return this.targets + " " + this.$props.toggle;
3430        },
3431
3432        handler(e) {
3433          e.preventDefault();
3434          this.toggle(index(this.toggles, e.current));
3435        } }],
3436
3437
3438
3439      methods: {
3440        toggle(item, animate) {
3441          let items = [this.items[getIndex(item, this.items)]];
3442          const activeItems = filter$1(this.items, "." + this.clsOpen);
3443
3444          if (!this.multiple && !includes(activeItems, items[0])) {
3445            items = items.concat(activeItems);
3446          }
3447
3448          if (
3449          !this.collapsible &&
3450          activeItems.length < 2 &&
3451          !filter$1(items, ":not(." + this.clsOpen + ")").length)
3452          {
3453            return;
3454          }
3455
3456          for (const el of items) {
3457            this.toggleElement(el, !hasClass(el, this.clsOpen), async (el, show) => {
3458              toggleClass(el, this.clsOpen, show);
3459              attr($(this.$props.toggle, el), 'aria-expanded', show);
3460
3461              const content = $("" + (el._wrapper ? '> * ' : '') + this.content, el);
3462
3463              if (animate === false || !this.hasTransition) {
3464                hide(content, !show);
3465                return;
3466              }
3467
3468              if (!el._wrapper) {
3469                el._wrapper = wrapAll(content, "<div" + (show ? ' hidden' : '') + ">");
3470              }
3471
3472              hide(content, false);
3473              await toggleHeight(this)(el._wrapper, show);
3474              hide(content, !show);
3475
3476              delete el._wrapper;
3477              unwrap(content);
3478
3479              if (show) {
3480                const toggle = $(this.$props.toggle, el);
3481                fastdom.read(() => {
3482                  if (!isInView(toggle)) {
3483                    scrollIntoView(toggle, { offset: this.offset });
3484                  }
3485                });
3486              }
3487            });
3488          }
3489        } } };
3490
3491
3492
3493    function hide(el, hide) {
3494      el && (el.hidden = hide);
3495    }
3496
3497    var alert = {
3498      mixins: [Class, Togglable],
3499
3500      args: 'animation',
3501
3502      props: {
3503        close: String },
3504
3505
3506      data: {
3507        animation: [true],
3508        selClose: '.uk-alert-close',
3509        duration: 150,
3510        hideProps: { opacity: 0, ...Togglable.data.hideProps } },
3511
3512
3513      events: [
3514      {
3515        name: 'click',
3516
3517        delegate() {
3518          return this.selClose;
3519        },
3520
3521        handler(e) {
3522          e.preventDefault();
3523          this.close();
3524        } }],
3525
3526
3527
3528      methods: {
3529        async close() {
3530          await this.toggleElement(this.$el);
3531          this.$destroy(true);
3532        } } };
3533
3534    var Video = {
3535      args: 'autoplay',
3536
3537      props: {
3538        automute: Boolean,
3539        autoplay: Boolean },
3540
3541
3542      data: {
3543        automute: false,
3544        autoplay: true },
3545
3546
3547      connected() {
3548        this.inView = this.autoplay === 'inview';
3549
3550        if (this.inView && !hasAttr(this.$el, 'preload')) {
3551          this.$el.preload = 'none';
3552        }
3553
3554        if (this.automute) {
3555          mute(this.$el);
3556        }
3557
3558        this.registerObserver(observeIntersection(this.$el, () => this.$emit(), {}, false));
3559      },
3560
3561      update: {
3562        read() {
3563          if (!isVideo(this.$el)) {
3564            return false;
3565          }
3566
3567          return {
3568            visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',
3569            inView: this.inView && isInView(this.$el) };
3570
3571        },
3572
3573        write(_ref) {let { visible, inView } = _ref;
3574          if (!visible || this.inView && !inView) {
3575            pause(this.$el);
3576          } else if (this.autoplay === true || this.inView && inView) {
3577            play(this.$el);
3578          }
3579        } } };
3580
3581    var Resize = {
3582      connected() {var _this$$options$resize;
3583        this.registerObserver(
3584        observeResize(((_this$$options$resize = this.$options.resizeTargets) == null ? void 0 : _this$$options$resize.call(this)) || this.$el, () =>
3585        this.$emit('resize')));
3586
3587
3588      } };
3589
3590    var cover = {
3591      mixins: [Resize, Video],
3592
3593      props: {
3594        width: Number,
3595        height: Number },
3596
3597
3598      data: {
3599        automute: true },
3600
3601
3602      events: {
3603        'load loadedmetadata'() {
3604          this.$emit('resize');
3605        } },
3606
3607
3608      resizeTargets() {
3609        return [this.$el, parent(this.$el)];
3610      },
3611
3612      update: {
3613        read() {
3614          const el = this.$el;
3615          const { offsetHeight: height, offsetWidth: width } =
3616          getPositionedParent(el) || parent(el);
3617          const dim = Dimensions.cover(
3618          {
3619            width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth,
3620            height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight },
3621
3622          {
3623            width: width + (width % 2 ? 1 : 0),
3624            height: height + (height % 2 ? 1 : 0) });
3625
3626
3627
3628          if (!dim.width || !dim.height) {
3629            return false;
3630          }
3631
3632          return dim;
3633        },
3634
3635        write(_ref) {let { height, width } = _ref;
3636          css(this.$el, { height, width });
3637        },
3638
3639        events: ['resize'] } };
3640
3641
3642
3643    function getPositionedParent(el) {
3644      while (el = parent(el)) {
3645        if (css(el, 'position') !== 'static') {
3646          return el;
3647        }
3648      }
3649    }
3650
3651    var Container = {
3652      props: {
3653        container: Boolean },
3654
3655
3656      data: {
3657        container: true },
3658
3659
3660      computed: {
3661        container(_ref) {let { container } = _ref;
3662          return container === true && this.$container || container && $(container);
3663        } } };
3664
3665    var Position = {
3666      props: {
3667        pos: String,
3668        offset: null,
3669        flip: Boolean },
3670
3671
3672      data: {
3673        pos: "bottom-" + (isRtl ? 'right' : 'left'),
3674        flip: true,
3675        offset: false },
3676
3677
3678      connected() {
3679        this.pos = this.$props.pos.split('-').concat('center').slice(0, 2);
3680        this.dir = this.pos[0];
3681        this.align = this.pos[1];
3682      },
3683
3684      methods: {
3685        positionAt(element, target, boundary) {
3686          const axis = this.getAxis();
3687          const dir = this.pos[0];
3688          const align = this.pos[1];
3689
3690          let { offset: offset$1 } = this;
3691          if (!isNumeric(offset$1)) {
3692            const node = $(offset$1);
3693            offset$1 = node ?
3694            offset(node)[axis === 'x' ? 'left' : 'top'] -
3695            offset(target)[axis === 'x' ? 'right' : 'bottom'] :
3696            0;
3697          }
3698          offset$1 = toPx(offset$1) + toPx(getCssVar('position-offset', element));
3699
3700          const { x, y } = positionAt(
3701          element,
3702          target,
3703          axis === 'x' ? flipPosition(dir) + " " + align : align + " " + flipPosition(dir),
3704          axis === 'x' ? dir + " " + align : align + " " + dir,
3705          axis === 'x' ? "" + (
3706          dir === 'left' ? -offset$1 : offset$1) : " " + (
3707          dir === 'top' ? -offset$1 : offset$1),
3708          null,
3709          this.flip,
3710          boundary).
3711          target;
3712
3713          this.dir = axis === 'x' ? x : y;
3714          this.align = axis === 'x' ? y : x;
3715        },
3716
3717        getAxis() {
3718          return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';
3719        } } };
3720
3721    let active$1;
3722
3723    var drop = {
3724      mixins: [Container, Lazyload, Position, Togglable],
3725
3726      args: 'pos',
3727
3728      props: {
3729        mode: 'list',
3730        toggle: Boolean,
3731        boundary: Boolean,
3732        boundaryAlign: Boolean,
3733        delayShow: Number,
3734        delayHide: Number,
3735        clsDrop: String },
3736
3737
3738      data: {
3739        mode: ['click', 'hover'],
3740        toggle: '- *',
3741        boundary: true,
3742        boundaryAlign: false,
3743        delayShow: 0,
3744        delayHide: 800,
3745        clsDrop: false,
3746        animation: ['uk-animation-fade'],
3747        cls: 'uk-open',
3748        container: false },
3749
3750
3751      created() {
3752        this.tracker = new MouseTracker();
3753      },
3754
3755      connected() {
3756        this.clsDrop = this.$props.clsDrop || "uk-" + this.$options.name;
3757        addClass(this.$el, this.clsDrop);
3758
3759        if (this.toggle && !this.target) {
3760          this.target = this.$create('toggle', query(this.toggle, this.$el), {
3761            target: this.$el,
3762            mode: this.mode }).
3763          $el;
3764          attr(this.target, 'aria-haspopup', true);
3765          this.lazyload(this.target);
3766        }
3767      },
3768
3769      disconnected() {
3770        if (this.isActive()) {
3771          active$1 = null;
3772        }
3773      },
3774
3775      events: [
3776      {
3777        name: 'click',
3778
3779        delegate() {
3780          return "." + this.clsDrop + "-close";
3781        },
3782
3783        handler(e) {
3784          e.preventDefault();
3785          this.hide(false);
3786        } },
3787
3788
3789      {
3790        name: 'click',
3791
3792        delegate() {
3793          return 'a[href^="#"]';
3794        },
3795
3796        handler(_ref) {let { defaultPrevented, current: { hash } } = _ref;
3797          if (!defaultPrevented && hash && !within(hash, this.$el)) {
3798            this.hide(false);
3799          }
3800        } },
3801
3802
3803      {
3804        name: 'beforescroll',
3805
3806        handler() {
3807          this.hide(false);
3808        } },
3809
3810
3811      {
3812        name: 'toggle',
3813
3814        self: true,
3815
3816        handler(e, toggle) {
3817          e.preventDefault();
3818
3819          if (this.isToggled()) {
3820            this.hide(false);
3821          } else {
3822            this.show(toggle == null ? void 0 : toggle.$el, false);
3823          }
3824        } },
3825
3826
3827      {
3828        name: 'toggleshow',
3829
3830        self: true,
3831
3832        handler(e, toggle) {
3833          e.preventDefault();
3834          this.show(toggle == null ? void 0 : toggle.$el);
3835        } },
3836
3837
3838      {
3839        name: 'togglehide',
3840
3841        self: true,
3842
3843        handler(e) {
3844          e.preventDefault();
3845          if (!matches(this.$el, ':focus,:hover')) {
3846            this.hide();
3847          }
3848        } },
3849
3850
3851      {
3852        name: pointerEnter + " focusin",
3853
3854        filter() {
3855          return includes(this.mode, 'hover');
3856        },
3857
3858        handler(e) {
3859          if (!isTouch(e)) {
3860            this.clearTimers();
3861          }
3862        } },
3863
3864
3865      {
3866        name: pointerLeave + " focusout",
3867
3868        filter() {
3869          return includes(this.mode, 'hover');
3870        },
3871
3872        handler(e) {
3873          if (!isTouch(e) && e.relatedTarget) {
3874            this.hide();
3875          }
3876        } },
3877
3878
3879      {
3880        name: 'toggled',
3881
3882        self: true,
3883
3884        handler(e, toggled) {
3885          if (!toggled) {
3886            return;
3887          }
3888
3889          this.clearTimers();
3890          this.position();
3891        } },
3892
3893
3894      {
3895        name: 'show',
3896
3897        self: true,
3898
3899        handler() {
3900          active$1 = this;
3901
3902          this.tracker.init();
3903
3904          for (const handler of [
3905          on(
3906          document,
3907          pointerDown,
3908          (_ref2) => {let { target } = _ref2;return (
3909              !within(target, this.$el) &&
3910              once(
3911              document,
3912              pointerUp + " " + pointerCancel + " scroll",
3913              (_ref3) => {let { defaultPrevented, type, target: newTarget } = _ref3;
3914                if (
3915                !defaultPrevented &&
3916                type === pointerUp &&
3917                target === newTarget &&
3918                !(this.target && within(target, this.target)))
3919                {
3920                  this.hide(false);
3921                }
3922              },
3923              true));}),
3924
3925
3926
3927          on(document, 'keydown', (e) => {
3928            if (e.keyCode === 27) {
3929              this.hide(false);
3930            }
3931          }),
3932          on(window, 'resize', () => this.$emit('resize'))])
3933          {
3934            once(this.$el, 'hide', handler, { self: true });
3935          }
3936        } },
3937
3938
3939      {
3940        name: 'beforehide',
3941
3942        self: true,
3943
3944        handler() {
3945          this.clearTimers();
3946        } },
3947
3948
3949      {
3950        name: 'hide',
3951
3952        handler(_ref4) {let { target } = _ref4;
3953          if (this.$el !== target) {
3954            active$1 =
3955            active$1 === null && within(target, this.$el) && this.isToggled() ?
3956            this :
3957            active$1;
3958            return;
3959          }
3960
3961          active$1 = this.isActive() ? null : active$1;
3962          this.tracker.cancel();
3963        } }],
3964
3965
3966
3967      update: {
3968        write() {
3969          if (this.isToggled() && !hasClass(this.$el, this.clsEnter)) {
3970            this.position();
3971          }
3972        },
3973
3974        events: ['resize'] },
3975
3976
3977      methods: {
3978        show(target, delay) {if (target === void 0) {target = this.target;}if (delay === void 0) {delay = true;}
3979          if (this.isToggled() && target && this.target && target !== this.target) {
3980            this.hide(false);
3981          }
3982
3983          this.target = target;
3984
3985          this.clearTimers();
3986
3987          if (this.isActive()) {
3988            return;
3989          }
3990
3991          if (active$1) {
3992            if (delay && active$1.isDelaying) {
3993              this.showTimer = setTimeout(() => matches(target, ':hover') && this.show(), 10);
3994              return;
3995            }
3996
3997            let prev;
3998            while (active$1 && prev !== active$1 && !within(this.$el, active$1.$el)) {
3999              prev = active$1;
4000              active$1.hide(false);
4001            }
4002          }
4003
4004          if (this.container && parent(this.$el) !== this.container) {
4005            append(this.container, this.$el);
4006          }
4007
4008          this.showTimer = setTimeout(
4009          () => this.toggleElement(this.$el, true),
4010          delay && this.delayShow || 0);
4011
4012        },
4013
4014        hide(delay) {if (delay === void 0) {delay = true;}
4015          const hide = () => this.toggleElement(this.$el, false, false);
4016
4017          this.clearTimers();
4018
4019          this.isDelaying = getPositionedElements(this.$el).some((el) =>
4020          this.tracker.movesTo(el));
4021
4022
4023          if (delay && this.isDelaying) {
4024            this.hideTimer = setTimeout(this.hide, 50);
4025          } else if (delay && this.delayHide) {
4026            this.hideTimer = setTimeout(hide, this.delayHide);
4027          } else {
4028            hide();
4029          }
4030        },
4031
4032        clearTimers() {
4033          clearTimeout(this.showTimer);
4034          clearTimeout(this.hideTimer);
4035          this.showTimer = null;
4036          this.hideTimer = null;
4037          this.isDelaying = false;
4038        },
4039
4040        isActive() {
4041          return active$1 === this;
4042        },
4043
4044        position() {
4045          const boundary = query(this.boundary, this.$el) || window;
4046          removeClass(this.$el, this.clsDrop + "-stack");
4047          toggleClass(this.$el, this.clsDrop + "-boundary", this.boundaryAlign);
4048
4049          const boundaryOffset = offset(boundary);
4050          const targetOffset = offset(this.target);
4051          const alignTo = this.boundaryAlign ? boundaryOffset : targetOffset;
4052
4053          if (this.pos[1] === 'justify') {
4054            const prop = this.getAxis() === 'y' ? 'width' : 'height';
4055            css(this.$el, prop, alignTo[prop]);
4056          } else if (
4057          this.$el.offsetWidth >
4058          Math.max(boundaryOffset.right - alignTo.left, alignTo.right - boundaryOffset.left))
4059          {
4060            addClass(this.$el, this.clsDrop + "-stack");
4061          }
4062
4063          this.positionAt(this.$el, this.boundaryAlign ? boundary : this.target, boundary);
4064        } } };
4065
4066
4067
4068    function getPositionedElements(el) {
4069      const result = [];
4070      apply(el, (el) => css(el, 'position') !== 'static' && result.push(el));
4071      return result;
4072    }
4073
4074    var formCustom = {
4075      mixins: [Class],
4076
4077      args: 'target',
4078
4079      props: {
4080        target: Boolean },
4081
4082
4083      data: {
4084        target: false },
4085
4086
4087      computed: {
4088        input(_, $el) {
4089          return $(selInput, $el);
4090        },
4091
4092        state() {
4093          return this.input.nextElementSibling;
4094        },
4095
4096        target(_ref, $el) {let { target } = _ref;
4097          return (
4098            target && (
4099            target === true && parent(this.input) === $el && this.input.nextElementSibling ||
4100            $(target, $el)));
4101
4102        } },
4103
4104
4105      update() {var _input$files;
4106        const { target, input } = this;
4107
4108        if (!target) {
4109          return;
4110        }
4111
4112        let option;
4113        const prop = isInput(target) ? 'value' : 'textContent';
4114        const prev = target[prop];
4115        const value = (_input$files = input.files) != null && _input$files[0] ?
4116        input.files[0].name :
4117        matches(input, 'select') && (
4118        option = $$('option', input).filter((el) => el.selected)[0]) // eslint-disable-line prefer-destructuring
4119        ? option.textContent :
4120        input.value;
4121
4122        if (prev !== value) {
4123          target[prop] = value;
4124        }
4125      },
4126
4127      events: [
4128      {
4129        name: 'change',
4130
4131        handler() {
4132          this.$emit();
4133        } },
4134
4135
4136      {
4137        name: 'reset',
4138
4139        el() {
4140          return closest(this.$el, 'form');
4141        },
4142
4143        handler() {
4144          this.$emit();
4145        } }] };
4146
4147    var Margin = {
4148      mixins: [Resize],
4149
4150      props: {
4151        margin: String,
4152        firstColumn: Boolean },
4153
4154
4155      data: {
4156        margin: 'uk-margin-small-top',
4157        firstColumn: 'uk-first-column' },
4158
4159
4160      resizeTargets() {
4161        return this.$el.children;
4162      },
4163
4164      connected() {
4165        this.registerObserver(
4166        observeMutation(this.$el, () => this.$reset(), {
4167          childList: true }));
4168
4169
4170      },
4171
4172      update: {
4173        read() {
4174          const rows = getRows(this.$el.children);
4175
4176          return {
4177            rows,
4178            columns: getColumns(rows) };
4179
4180        },
4181
4182        write(_ref) {let { columns, rows } = _ref;
4183          for (const row of rows) {
4184            for (const column of row) {
4185              toggleClass(column, this.margin, rows[0] !== row);
4186              toggleClass(column, this.firstColumn, !!~columns[0].indexOf(column));
4187            }
4188          }
4189        },
4190
4191        events: ['resize'] } };
4192
4193
4194
4195    function getRows(items) {
4196      return sortBy(items, 'top', 'bottom');
4197    }
4198
4199    function getColumns(rows) {
4200      const columns = [];
4201
4202      for (const row of rows) {
4203        const sorted = sortBy(row, 'left', 'right');
4204        for (let j = 0; j < sorted.length; j++) {
4205          columns[j] = columns[j] ? columns[j].concat(sorted[j]) : sorted[j];
4206        }
4207      }
4208
4209      return isRtl ? columns.reverse() : columns;
4210    }
4211
4212    function sortBy(items, startProp, endProp) {
4213      const sorted = [[]];
4214
4215      for (const el of items) {
4216        if (!isVisible(el)) {
4217          continue;
4218        }
4219
4220        let dim = getOffset(el);
4221
4222        for (let i = sorted.length - 1; i >= 0; i--) {
4223          const current = sorted[i];
4224
4225          if (!current[0]) {
4226            current.push(el);
4227            break;
4228          }
4229
4230          let startDim;
4231          if (current[0].offsetParent === el.offsetParent) {
4232            startDim = getOffset(current[0]);
4233          } else {
4234            dim = getOffset(el, true);
4235            startDim = getOffset(current[0], true);
4236          }
4237
4238          if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {
4239            sorted.push([el]);
4240            break;
4241          }
4242
4243          if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) {
4244            current.push(el);
4245            break;
4246          }
4247
4248          if (i === 0) {
4249            sorted.unshift([el]);
4250            break;
4251          }
4252        }
4253      }
4254
4255      return sorted;
4256    }
4257
4258    function getOffset(element, offset) {if (offset === void 0) {offset = false;}
4259      let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;
4260
4261      if (offset) {
4262        [offsetTop, offsetLeft] = offsetPosition(element);
4263      }
4264
4265      return {
4266        top: offsetTop,
4267        left: offsetLeft,
4268        bottom: offsetTop + offsetHeight,
4269        right: offsetLeft + offsetWidth };
4270
4271    }
4272
4273    var Scroll = {
4274      connected() {
4275        registerScrollListener(this._uid, () => this.$emit('scroll'));
4276      },
4277
4278      disconnected() {
4279        unregisterScrollListener(this._uid);
4280      } };
4281
4282
4283    const scrollListeners = new Map();
4284    let unbindScrollListener;
4285    function registerScrollListener(id, listener) {
4286      unbindScrollListener =
4287      unbindScrollListener ||
4288      on(window, 'scroll', () =>
4288 scrollListeners.forEach((listener) => listener()), {
4289        passive: true,
4290        capture: true });
4291
4292
4293      scrollListeners.set(id, listener);
4294    }
4295
4296    function unregisterScrollListener(id) {
4297      scrollListeners.delete(id);
4298      if (unbindScrollListener && !scrollListeners.size) {
4299        unbindScrollListener();
4300        unbindScrollListener = null;
4301      }
4302    }
4303
4304    var grid = {
4305      extends: Margin,
4306
4307      mixins: [Class, Scroll],
4308
4309      name: 'grid',
4310
4311      props: {
4312        masonry: Boolean,
4313        parallax: Number },
4314
4315
4316      data: {
4317        margin: 'uk-grid-margin',
4318        clsStack: 'uk-grid-stack',
4319        masonry: false,
4320        parallax: 0 },
4321
4322
4323      connected() {
4324        this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');
4325      },
4326
4327      update: [
4328      {
4329        write(_ref) {let { columns } = _ref;
4330          toggleClass(this.$el, this.clsStack, columns.length < 2);
4331        },
4332
4333        events: ['resize'] },
4334
4335
4336      {
4337        read(data) {
4338          let { columns, rows } = data;
4339
4340          // Filter component makes elements positioned absolute
4341          if (
4342          !columns.length ||
4343          !this.masonry && !this.parallax ||
4344          positionedAbsolute(this.$el))
4345          {
4346            data.translates = false;
4347            return false;
4348          }
4349
4350          let translates = false;
4351
4352          const nodes = children(this.$el);
4353          const columnHeights = getColumnHeights(columns);
4354          const margin = getMarginTop(nodes, this.margin) * (rows.length - 1);
4355          const elHeight = Math.max(...columnHeights) + margin;
4356
4357          if (this.masonry) {
4358            columns = columns.map((column) => sortBy$1(column, 'offsetTop'));
4359            translates = getTranslates(rows, columns);
4360          }
4361
4362          let padding = Math.abs(this.parallax);
4363          if (padding) {
4364            padding = columnHeights.reduce(
4365            (newPadding, hgt, i) =>
4366            Math.max(
4367            newPadding,
4368            hgt + margin + (i % 2 ? padding : padding / 8) - elHeight),
4369
4370            0);
4371
4372          }
4373
4374          return { padding, columns, translates, height: translates ? elHeight : '' };
4375        },
4376
4377        write(_ref2) {let { height, padding } = _ref2;
4378          css(this.$el, 'paddingBottom', padding || '');
4379          height !== false && css(this.$el, 'height', height);
4380        },
4381
4382        events: ['resize'] },
4383
4384
4385      {
4386        read() {
4387          if (this.parallax && positionedAbsolute(this.$el)) {
4388            return false;
4389          }
4390
4391          return {
4392            scrolled: this.parallax ?
4393            scrolledOver(this.$el) * Math.abs(this.parallax) :
4394            false };
4395
4396        },
4397
4398        write(_ref3) {let { columns, scrolled, translates } = _ref3;
4399          if (scrolled === false && !translates) {
4400            return;
4401          }
4402
4403          columns.forEach((column, i) =>
4404          column.forEach((el, j) =>
4405          css(
4406          el,
4407          'transform',
4408          !scrolled && !translates ?
4409          '' : "translateY(" + (
4410
4411          (translates && -translates[i][j]) + (
4412          scrolled ? i % 2 ? scrolled : scrolled / 8 : 0)) + "px)")));
4413
4414
4415
4416
4417        },
4418
4419        events: ['scroll', 'resize'] }] };
4420
4421
4422
4423
4424    function positionedAbsolute(el) {
4425      return children(el).some((el) => css(el, 'position') === 'absolute');
4426    }
4427
4428    function getTranslates(rows, columns) {
4429      const rowHeights = rows.map((row) => Math.max(...row.map((el) => el.offsetHeight)));
4430
4431      return columns.map((elements) => {
4432        let prev = 0;
4433        return elements.map(
4434        (element, row) =>
4435        prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0);
4436
4437      });
4438    }
4439
4440    function getMarginTop(nodes, cls) {
4441      const [node] = nodes.filter((el) => hasClass(el, cls));
4442
4443      return toFloat(node ? css(node, 'marginTop') : css(nodes[0], 'paddingLeft'));
4444    }
4445
4446    function getColumnHeights(columns) {
4447      return columns.map((column) => column.reduce((sum, el) => sum + el.offsetHeight, 0));
4448    }
4449
4450    var heightMatch = {
4451      mixins: [Resize],
4452
4453      args: 'target',
4454
4455      props: {
4456        target: String,
4457        row: Boolean },
4458
4459
4460      data: {
4461        target: '> *',
4462        row: true,
4463        forceHeight: true },
4464
4465
4466      computed: {
4467        elements: {
4468          get(_ref, $el) {let { target } = _ref;
4469            return $$(target, $el);
4470          },
4471
4472          watch() {
4473            this.$reset();
4474          } } },
4475
4476
4477
4478      resizeTargets() {
4479        return this.elements;
4480      },
4481
4482      update: {
4483        read() {
4484          return {
4485            rows: (this.row ? getRows(this.elements) : [this.elements]).map(match$1) };
4486
4487        },
4488
4489        write(_ref2) {let { rows } = _ref2;
4490          for (const { heights, elements } of rows) {
4491            elements.forEach((el, i) => css(el, 'minHeight', heights[i]));
4492          }
4493        },
4494
4495        events: ['resize'] } };
4496
4497
4498
4499    function match$1(elements) {
4500      if (elements.length < 2) {
4501        return { heights: [''], elements };
4502      }
4503
4504      let heights = elements.map(getHeight);
4505      let max = Math.max(...heights);
4506      const hasMinHeight = elements.some((el) => el.style.minHeight);
4507      const hasShrunk = elements.some((el, i) => !el.style.minHeight && heights[i] < max);
4508
4509      if (hasMinHeight && hasShrunk) {
4510        css(elements, 'minHeight', '');
4511        heights = elements.map(getHeight);
4512        max = Math.max(...heights);
4513      }
4514
4515      heights = elements.map((el, i) =>
4516      heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max);
4517
4518
4519      return { heights, elements };
4520    }
4521
4522    function getHeight(element) {
4523      let style = false;
4524      if (!isVisible(element)) {
4525        style = element.style.display;
4526        css(element, 'display', 'block', 'important');
4527      }
4528
4529      const height = dimensions$1(element).height - boxModelAdjust(element, 'height', 'content-box');
4530
4531      if (style !== false) {
4532        css(element, 'display', style);
4533      }
4534
4535      return height;
4536    }
4537
4538    var heightViewport = {
4539      mixins: [Class, Resize],
4540
4541      props: {
4542        expand: Boolean,
4543        offsetTop: Boolean,
4544        offsetBottom: Boolean,
4545        minHeight: Number },
4546
4547
4548      data: {
4549        expand: false,
4550        offsetTop: false,
4551        offsetBottom: false,
4552        minHeight: 0 },
4553
4554
4555      resizeTargets() {
4556        // check for offsetTop change
4557        return [this.$el, document.documentElement];
4558      },
4559
4560      update: {
4561        read(_ref) {let { minHeight: prev } = _ref;
4562          if (!isVisible(this.$el)) {
4563            return false;
4564          }
4565
4566          let minHeight = '';
4567          const box = boxModelAdjust(this.$el, 'height', 'content-box');
4568
4569          if (this.expand) {
4570            minHeight = Math.max(
4571            height(window) - (
4572            dimensions$1(document.documentElement).height -
4573            dimensions$1(this.$el).height) -
4574            box,
4575            0);
4576
4577          } else {
4578            // on mobile devices (iOS and Android) window.innerHeight !== 100vh
4579            minHeight = 'calc(100vh';
4580
4581            if (this.offsetTop) {
4582              const { top } = offset(this.$el);
4583              minHeight += top > 0 && top < height(window) / 2 ? " - " + top + "px" : '';
4584            }
4585
4586            if (this.offsetBottom === true) {
4587              minHeight += " - " + dimensions$1(this.$el.nextElementSibling).height + "px";
4588            } else if (isNumeric(this.offsetBottom)) {
4589              minHeight += " - " + this.offsetBottom + "vh";
4590            } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {
4591              minHeight += " - " + toFloat(this.offsetBottom) + "px";
4592            } else if (isString(this.offsetBottom)) {
4593              minHeight += " - " + dimensions$1(query(this.offsetBottom, this.$el)).height + "px";
4594            }
4595
4596            minHeight += (box ? " - " + box + "px" : '') + ")";
4597          }
4598
4599          return { minHeight, prev };
4600        },
4601
4602        write(_ref2) {let { minHeight } = _ref2;
4603          css(this.$el, { minHeight });
4604
4605          if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {
4606            css(this.$el, 'minHeight', this.minHeight);
4607          }
4608        },
4609
4610        events: ['resize'] } };
4611
4612    var SVG = {
4613      args: 'src',
4614
4615      props: {
4616        id: Boolean,
4617        icon: String,
4618        src: String,
4619        style: String,
4620        width: Number,
4621        height: Number,
4622        ratio: Number,
4623        class: String,
4624        strokeAnimation: Boolean,
4625        focusable: Boolean, // IE 11
4626        attributes: 'list' },
4627
4628
4629      data: {
4630        ratio: 1,
4631        include: ['style', 'class', 'focusable'],
4632        class: '',
4633        strokeAnimation: false },
4634
4635
4636      beforeConnect() {
4637        this.class += ' uk-svg';
4638      },
4639
4640      connected() {
4641        if (!this.icon && includes(this.src, '#')) {
4642          [this.src, this.icon] = this.src.split('#');
4643        }
4644
4645        this.svg = this.getSvg().then((el) => {
4646          if (this._connected) {
4647            const svg = insertSVG(el, this.$el);
4648
4649            if (this.svgEl && svg !== this.svgEl) {
4650              remove$1(this.svgEl);
4651            }
4652
4653            this.applyAttributes(svg, el);
4654
4655            return this.svgEl = svg;
4656          }
4657        }, noop);
4658
4659        if (this.strokeAnimation) {
4660          this.svg.then((el) => {
4661            if (this._connected) {
4662              applyAnimation(el);
4663              this.registerObserver(
4664              observeIntersection(el, (records, observer) => {
4665                applyAnimation(el);
4666                observer.disconnect();
4667              }));
4668
4669            }
4670          });
4671        }
4672      },
4673
4674      disconnected() {
4675        this.svg.then((svg) => {
4676          if (this._connected) {
4677            return;
4678          }
4679
4680          if (isVoidElement(this.$el)) {
4681            this.$el.hidden = false;
4682          }
4683
4684          remove$1(svg);
4685          this.svgEl = null;
4686        });
4687
4688        this.svg = null;
4689      },
4690
4691      methods: {
4692        async getSvg() {
4693          if (isTag(this.$el, 'img') && !this.$el.complete && this.$el.loading === 'lazy') {
4694            return new Promise((resolve) =>
4695            once(this.$el, 'load', () => resolve(this.getSvg())));
4696
4697          }
4698
4699          return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject('SVG not found.');
4700        },
4701
4702        applyAttributes(el, ref) {
4703          for (const prop in this.$options.props) {
4704            if (includes(this.include, prop) && prop in this) {
4705              attr(el, prop, this[prop]);
4706            }
4707          }
4708
4709          for (const attribute in this.attributes) {
4710            const [prop, value] = this.attributes[attribute].split(':', 2);
4711            attr(el, prop, value);
4712          }
4713
4714          if (!this.id) {
4715            removeAttr(el, 'id');
4716          }
4717
4718          const props = ['width', 'height'];
4719          let dimensions = props.map((prop) => this[prop]);
4720
4721          if (!dimensions.some((val) => val)) {
4722            dimensions = props.map((prop) => attr(ref, prop));
4723          }
4724
4725          const viewBox = attr(ref, 'viewBox');
4726          if (viewBox && !dimensions.some((val) => val)) {
4727            dimensions = viewBox.split(' ').slice(2);
4728          }
4729
4730          dimensions.forEach((val, i) => attr(el, props[i], toFloat(val) * this.ratio || null));
4731        } } };
4732
4733
4734
4735    const loadSVG = memoize(async (src) => {
4736      if (src) {
4737        if (startsWith(src, 'data:')) {
4738          return decodeURIComponent(src.split(',')[1]);
4739        } else {
4740          return (await fetch(src)).text();
4741        }
4742      } else {
4743        return Promise.reject();
4744      }
4745    });
4746
4747    function parseSVG(svg, icon) {var _svg;
4748      if (icon && includes(svg, '<symbol')) {
4749        svg = parseSymbols(svg, icon) || svg;
4750      }
4751
4752      svg = $(svg.substr(svg.indexOf('<svg')));
4753      return ((_svg = svg) == null ? void 0 : _svg.hasChildNodes()) && svg;
4754    }
4755
4756    const symbolRe = /<symbol([^]*?id=(['"])(.+?)\2[^]*?<\/)symbol>/g;
4757    const symbols = {};
4758
4759    function parseSymbols(svg, icon) {
4760      if (!symbols[svg]) {
4761        symbols[svg] = {};
4762
4763        symbolRe.lastIndex = 0;
4764
4765        let match;
4766        while (match = symbolRe.exec(svg)) {
4767          symbols[svg][match[3]] = "<svg xmlns=\"http://www.w3.org/2000/svg\"" + match[1] + "svg>";
4768        }
4769      }
4770
4771      return symbols[svg][icon];
4772    }
4773
4774    function applyAnimation(el) {
4775      const length = getMaxPathLength(el);
4776
4777      if (length) {
4778        el.style.setProperty('--uk-animation-stroke', length);
4779      }
4780    }
4781
4782    function getMaxPathLength(el) {
4783      return Math.ceil(
4784      Math.max(
4785      0,
4786      ...$$('[stroke]', el).map((stroke) => {
4787        try {
4788          return stroke.getTotalLength();
4789        } catch (e) {
4790          return 0;
4791        }
4792      })));
4793
4794
4795    }
4796
4797    function insertSVG(el, root) {
4798      if (isVoidElement(root) || isTag(root, 'canvas')) {
4799        root.hidden = true;
4800
4801        const next = root.nextElementSibling;
4802        return equals(el, next) ? next : after(root, el);
4803      }
4804
4805      const last = root.lastElementChild;
4806      return equals(el, last) ? last : append(root, el);
4807    }
4808
4809    function equals(el, other) {
4810      return isTag(el, 'svg') && isTag(other, 'svg') && innerHTML(el) === innerHTML(other);
4811    }
4812
4813    function innerHTML(el) {
4814      return (
4815      el.innerHTML ||
4816      new XMLSerializer().serializeToString(el).replace(/<svg.*?>(.*?)<\/svg>/g, '$1')).
4817      replace(/\s/g, '');
4818    }
4819
4820    var closeIcon = "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></svg>";
4821
4822    var closeLarge = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>";
4823
4824    var marker = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></svg>";
4825
4826    var navbarToggleIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"/><rect y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></svg>";
4827
4828    var overlayIcon = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"/><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></svg>";
4829
4830    var paginationNext = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"/></svg>";
4831
4832    var paginationPrevious = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"/></svg>";
4833
4834    var searchIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>";
4835
4836    var searchLarge = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></svg>";
4837
4838    var searchNavbar = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>";
4839
4840    var slidenavNext = "<svg width=\"14\" height=\"24\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>";
4841
4842    var slidenavNextLarge = "<svg width=\"25\" height=\"40\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>";
4843
4844    var slidenavPrevious = "<svg width=\"14\" height=\"24\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>";
4845
4846    var slidenavPreviousLarge = "<svg width=\"25\" height=\"40\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></svg>";
4847
4848    var spinner = "<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"/></svg>";
4849
4850    var totop = "<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"/></svg>";
4851
4852    const icons = {
4853      spinner,
4854      totop,
4855      marker,
4856      'close-icon': closeIcon,
4857      'close-large': closeLarge,
4858      'navbar-toggle-icon': navbarToggleIcon,
4859      'overlay-icon': overlayIcon,
4860      'pagination-next': paginationNext,
4861      'pagination-previous': paginationPrevious,
4862      'search-icon': searchIcon,
4863      'search-large': searchLarge,
4864      'search-navbar': searchNavbar,
4865      'slidenav-next': slidenavNext,
4866      'slidenav-next-large': slidenavNextLarge,
4867      'slidenav-previous': slidenavPrevious,
4868      'slidenav-previous-large': slidenavPreviousLarge };
4869
4870
4871    const Icon = {
4872      install: install$3,
4873
4874      extends: SVG,
4875
4876      args: 'icon',
4877
4878      props: ['icon'],
4879
4880      data: {
4881        include: ['focusable'] },
4882
4883
4884      isIcon: true,
4885
4886      beforeConnect() {
4887        addClass(this.$el, 'uk-icon');
4888      },
4889
4890      methods: {
4891        async getSvg() {
4892          const icon = getIcon(this.icon);
4893
4894          if (!icon) {
4895            throw 'Icon not found.';
4896          }
4897
4898          return icon;
4899        } } };
4900
4901    const IconComponent = {
4902      args: false,
4903
4904      extends: Icon,
4905
4906      data: (vm) => ({
4907        icon: hyphenate(vm.constructor.options.name) }),
4908
4909
4910      beforeConnect() {
4911        addClass(this.$el, this.$name);
4912      } };
4913
4914
4915    const Slidenav = {
4916      extends: IconComponent,
4917
4918      beforeConnect() {
4919        addClass(this.$el, 'uk-slidenav');
4920        const icon = this.$props.icon;
4921        this.icon = hasClass(this.$el, 'uk-slidenav-large') ? icon + "-large" : icon;
4922      } };
4923
4924
4925    const Search = {
4926      extends: IconComponent,
4927
4928      beforeConnect() {
4929        this.icon =
4930        hasClass(this.$el, 'uk-search-icon') && parents(this.$el, '.uk-search-large').length ?
4931        'search-large' :
4932        parents(this.$el, '.uk-search-navbar').length ?
4933        'search-navbar' :
4934        this.$props.icon;
4935      } };
4936
4937
4938    const Close = {
4939      extends: IconComponent,
4940
4941      beforeConnect() {
4942        this.icon = "close-" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon');
4943      } };
4944
4945
4946    const Spinner = {
4947      extends: IconComponent,
4948
4949      methods: {
4950        async getSvg() {
4951          const icon = await Icon.methods.getSvg.call(this);
4952
4953          if (this.ratio !== 1) {
4954            css($('circle', icon), 'strokeWidth', 1 / this.ratio);
4955          }
4956
4957          return icon;
4958        } } };
4959
4960
4961
4962    const parsed = {};
4963    function install$3(UIkit) {
4964      UIkit.icon.add = (name, svg) => {
4965        const added = isString(name) ? { [name]: svg } : name;
4966        each(added, (svg, name) => {
4967          icons[name] = svg;
4968          delete parsed[name];
4969        });
4970
4971        if (UIkit._initialized) {
4972          apply(document.body, (el) =>
4973          each(UIkit.getComponents(el), (cmp) => {
4974            cmp.$options.isIcon && cmp.icon in added && cmp.$reset();
4975          }));
4976
4977        }
4978      };
4979    }
4980
4981    function getIcon(icon) {
4982      if (!icons[icon]) {
4983        return null;
4984      }
4985
4986      if (!parsed[icon]) {
4987        parsed[icon] = $((icons[applyRtl(icon)] || icons[icon]).trim());
4988      }
4989
4990      return parsed[icon].cloneNode(true);
4991    }
4992
4993    function applyRtl(icon) {
4994      return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;
4995    }
4996
4997    const nativeLazyLoad = inBrowser && 'loading' in HTMLImageElement.prototype;
4998
4999    var img = {
5000      args: 'dataSrc',
5001
5002      props: {
5003        dataSrc: String,
5004        sources: String,
5005        offsetTop: String,
5006        offsetLeft: String,
5007        target: String,
5008        loading: String },
5009
5010
5011      data: {
5012        dataSrc: '',
5013        sources: false,
5014        offsetTop: '50vh',
5015        offsetLeft: '50vw',
5016        target: false,
5017        loading: 'lazy' },
5018
5019
5020      connected() {
5021        if (this.loading !== 'lazy') {
5022          this.load();
5023          return;
5024        }
5025
5026        const target = [this.$el, ...queryAll(this.$props.target, this.$el)];
5027
5028        if (nativeLazyLoad && isImg(this.$el)) {
5029          this.$el.loading = 'lazy';
5030          setSrcAttrs(this.$el);
5031
5032          if (target.length === 1) {
5033            return;
5034          }
5035        }
5036
5037        ensureSrcAttribute(this.$el);
5038
5039        this.registerObserver(
5040        observeIntersection(
5041        target,
5042        (entries, observer) => {
5043          this.load();
5044          observer.disconnect();
5045        },
5046        {
5047          rootMargin: toPx(this.offsetTop, 'height') + "px " + toPx(
5048          this.offsetLeft,
5049          'width') + "px" }));
5050
5051
5052
5053
5054      },
5055
5056      disconnected() {
5057        if (this._data.image) {
5058          this._data.image.onload = '';
5059        }
5060      },
5061
5062      methods: {
5063        load() {
5064          if (this._data.image) {
5065            return this._data.image;
5066          }
5067
5068          const image = isImg(this.$el) ?
5069          this.$el :
5070          getImageFromElement(this.$el, this.dataSrc, this.sources);
5071
5072          removeAttr(image, 'loading');
5073          setSrcAttrs(this.$el, image.currentSrc);
5074          return this._data.image = image;
5075        } } };
5076
5077
5078
5079    function setSrcAttrs(el, src) {
5080      if (isImg(el)) {
5081        const parentNode = parent(el);
5082        const elements = isPicture(parentNode) ? children(parentNode) : [el];
5083        elements.forEach((el) => setSourceProps(el, el));
5084      } else if (src) {
5085        const change = !includes(el.style.backgroundImage, src);
5086        if (change) {
5087          css(el, 'backgroundImage', "url(" + escape(src) + ")");
5088          trigger(el, createEvent('load', false));
5089        }
5090      }
5091    }
5092
5093    const srcProps = ['data-src', 'data-srcset', 'sizes'];
5094    function setSourceProps(sourceEl, targetEl) {
5095      srcProps.forEach((prop) => {
5096        const value = data(sourceEl, prop);
5097        if (value) {
5098          attr(targetEl, prop.replace(/^(data-)+/, ''), value);
5099        }
5100      });
5101    }
5102
5103    function getImageFromElement(el, src, sources) {
5104      const img = new Image();
5105
5106      wrapInPicture(img, sources);
5107      setSourceProps(el, img);
5108      img.onload = () => {
5109        setSrcAttrs(el, img.currentSrc);
5110      };
5111      attr(img, 'src', src);
5112      return img;
5113    }
5114
5115    function wrapInPicture(img, sources) {
5116      sources = parseSources(sources);
5117
5118      if (sources.length) {
5119        const picture = fragment('<picture>');
5120        for (const attrs of sources) {
5121          const source = fragment('<source>');
5122          attr(source, attrs);
5123          append(picture, source);
5124        }
5125        append(picture, img);
5126      }
5127    }
5128
5129    function parseSources(sources) {
5130      if (!sources) {
5131        return [];
5132      }
5133
5134      if (startsWith(sources, '[')) {
5135        try {
5136          sources = JSON.parse(sources);
5137        } catch (e) {
5138          sources = [];
5139        }
5140      } else {
5141        sources = parseOptions(sources);
5142      }
5143
5144      if (!isArray(sources)) {
5145        sources = [sources];
5146      }
5147
5148      return sources.filter((source) => !isEmpty(source));
5149    }
5150
5151    function ensureSrcAttribute(el) {
5152      if (isImg(el) && !hasAttr(el, 'src')) {
5153        attr(el, 'src', 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"></svg>');
5154      }
5155    }
5156
5157    function isPicture(el) {
5158      return isTag(el, 'picture');
5159    }
5160
5161    function isImg(el) {
5162      return isTag(el, 'img');
5163    }
5164
5165    var Media = {
5166      props: {
5167        media: Boolean },
5168
5169
5170      data: {
5171        media: false },
5172
5173
5174      connected() {
5175        const media = toMedia(this.media);
5176        this.mediaObj = window.matchMedia(media);
5177        const handler = () => {
5178          this.matchMedia = this.mediaObj.matches;
5179          trigger(this.$el, createEvent('mediachange', false, true, [this.mediaObj]));
5180        };
5181        this.offMediaObj = on(this.mediaObj, 'change', () => {
5182          handler();
5183          this.$emit('resize');
5184        });
5185        handler();
5186      },
5187
5188      disconnected() {var _this$offMediaObj;
5189        (_this$offMediaObj = this.offMediaObj) == null ? void 0 : _this$offMediaObj.call(this);
5190      } };
5191
5192
5193    function toMedia(value) {
5194      if (isString(value)) {
5195        if (startsWith(value, '@')) {
5196          const name = "breakpoint-" + value.substr(1);
5197          value = toFloat(getCssVar(name));
5198        } else if (isNaN(value)) {
5199          return value;
5200        }
5201      }
5202
5203      return value && isNumeric(value) ? "(min-width: " + value + "px)" : '';
5204    }
5205
5206    var leader = {
5207      mixins: [Class, Media, Resize],
5208
5209      props: {
5210        fill: String },
5211
5212
5213      data: {
5214        fill: '',
5215        clsWrapper: 'uk-leader-fill',
5216        clsHide: 'uk-leader-hide',
5217        attrFill: 'data-fill' },
5218
5219
5220      computed: {
5221        fill(_ref) {let { fill } = _ref;
5222          return fill || getCssVar('leader-fill-content');
5223        } },
5224
5225
5226      connected() {
5227        [this.wrapper] = wrapInner(this.$el, "<span class=\"" + this.clsWrapper + "\">");
5228      },
5229
5230      disconnected() {
5231        unwrap(this.wrapper.childNodes);
5232      },
5233
5234      update: {
5235        read() {
5236          const width = Math.trunc(this.$el.offsetWidth / 2);
5237
5238          return {
5239            width,
5240            fill: this.fill,
5241            hide: !this.matchMedia };
5242
5243        },
5244
5245        write(_ref2) {let { width, fill, hide } = _ref2;
5246          toggleClass(this.wrapper, this.clsHide, hide);
5247          attr(this.wrapper, this.attrFill, new Array(width).join(fill));
5248        },
5249
5250        events: ['resize'] } };
5251
5252    const active = [];
5253
5254    var Modal = {
5255      mixins: [Class, Container, Togglable],
5256
5257      props: {
5258        selPanel: String,
5259        selClose: String,
5260        escClose: Boolean,
5261        bgClose: Boolean,
5262        stack: Boolean },
5263
5264
5265      data: {
5266        cls: 'uk-open',
5267        escClose: true,
5268        bgClose: true,
5269        overlay: true,
5270        stack: false },
5271
5272
5273      computed: {
5274        panel(_ref, $el) {let { selPanel } = _ref;
5275          return $(selPanel, $el);
5276        },
5277
5278        transitionElement() {
5279          return this.panel;
5280        },
5281
5282        bgClose(_ref2) {let { bgClose } = _ref2;
5283          return bgClose && this.panel;
5284        } },
5285
5286
5287      beforeDisconnect() {
5288        if (includes(active, this)) {
5289          this.toggleElement(this.$el, false, false);
5290        }
5291      },
5292
5293      events: [
5294      {
5295        name: 'click',
5296
5297        delegate() {
5298          return this.selClose;
5299        },
5300
5301        handler(e) {
5302          e.preventDefault();
5303          this.hide();
5304        } },
5305
5306
5307      {
5308        name: 'toggle',
5309
5310        self: true,
5311
5312        handler(e) {
5313          if (e.defaultPrevented) {
5314            return;
5315          }
5316
5317          e.preventDefault();
5318
5319          if (this.isToggled() === includes(active, this)) {
5320            this.toggle();
5321          }
5322        } },
5323
5324
5325      {
5326        name: 'beforeshow',
5327
5328        self: true,
5329
5330        handler(e) {
5331          if (includes(active, this)) {
5332            return false;
5333          }
5334
5335          if (!this.stack && active.length) {
5336            Promise.all(active.map((modal) => modal.hide())).then(this.show);
5337            e.preventDefault();
5338          } else {
5339            active.push(this);
5340          }
5341        } },
5342
5343
5344      {
5345        name: 'show',
5346
5347        self: true,
5348
5349        handler() {
5350          const docEl = document.documentElement;
5351
5352          if (width(window) > docEl.clientWidth && this.overlay) {
5353            css(document.body, 'overflowY', 'scroll');
5354          }
5355
5356          if (this.stack) {
5357            css(this.$el, 'zIndex', toFloat(css(this.$el, 'zIndex')) + active.length);
5358          }
5359
5360          addClass(docEl, this.clsPage);
5361
5362          if (this.bgClose) {
5363            once(
5364            this.$el,
5365            'hide',
5366            on(document, pointerDown, (_ref3) => {let { target } = _ref3;
5367              if (
5368              last(active) !== this ||
5369              this.overlay && !within(target, this.$el) ||
5370              within(target, this.panel))
5371              {
5372                return;
5373              }
5374
5375              once(
5376              document,
5377              pointerUp + " " + pointerCancel + " scroll",
5378              (_ref4) => {let { defaultPrevented, type, target: newTarget } = _ref4;
5379                if (
5380                !defaultPrevented &&
5381                type === pointerUp &&
5382                target === newTarget)
5383                {
5384                  this.hide();
5385                }
5386              },
5387              true);
5388
5389            }),
5390            { self: true });
5391
5392          }
5393
5394          if (this.escClose) {
5395            once(
5396            this.$el,
5397            'hide',
5398            on(document, 'keydown', (e) => {
5399              if (e.keyCode === 27 && last(active) === this) {
5400                this.hide();
5401              }
5402            }),
5403            { self: true });
5404
5405          }
5406        } },
5407
5408
5409      {
5410        name: 'shown',
5411
5412        self: true,
5413
5414        handler() {
5415          if (!isFocusable(this.$el)) {
5416            attr(this.$el, 'tabindex', '-1');
5417          }
5418
5419          if (!$(':focus', this.$el)) {
5420            this.$el.focus();
5421          }
5422        } },
5423
5424
5425      {
5426        name: 'hidden',
5427
5428        self: true,
5429
5430        handler() {
5431          if (includes(active, this)) {
5432            active.splice(active.indexOf(this), 1);
5433          }
5434
5435          if (!active.length) {
5436            css(document.body, 'overflowY', '');
5437          }
5438
5439          css(this.$el, 'zIndex', '');
5440
5441          if (!active.some((modal) => modal.clsPage === this.clsPage)) {
5442            removeClass(document.documentElement, this.clsPage);
5443          }
5444        } }],
5445
5446
5447
5448      methods: {
5449        toggle() {
5450          return this.isToggled() ? this.hide() : this.show();
5451        },
5452
5453        show() {
5454          if (this.container && parent(this.$el) !== this.container) {
5455            append(this.container, this.$el);
5456            return new Promise((resolve) =>
5457            requestAnimationFrame(() => this.show().then(resolve)));
5458
5459          }
5460
5461          return this.toggleElement(this.$el, true, animate(this));
5462        },
5463
5464        hide() {
5465          return this.toggleElement(this.$el, false, animate(this));
5466        } } };
5467
5468
5469
5470    function animate(_ref5) {let { transitionElement, _toggle } = _ref5;
5471      return (el, show) =>
5472      new Promise((resolve, reject) =>
5473      once(el, 'show hide', () => {
5474        el._reject && el._reject();
5475        el._reject = reject;
5476
5477        _toggle(el, show);
5478
5479        const off = once(
5480        transitionElement,
5481        'transitionstart',
5482        () => {
5483          once(transitionElement, 'transitionend transitioncancel', resolve, {
5484            self: true });
5485
5486          clearTimeout(timer);
5487        },
5488        { self: true });
5489
5490
5491        const timer = setTimeout(() => {
5492          off();
5493          resolve();
5494        }, toMs(css(transitionElement, 'transitionDuration')));
5495      })).
5496      then(() => delete el._reject);
5497    }
5498
5499    var modal = {
5500      install: install$2,
5501
5502      mixins: [Modal],
5503
5504      data: {
5505        clsPage: 'uk-modal-page',
5506        selPanel: '.uk-modal-dialog',
5507        selClose:
5508        '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full' },
5509
5510
5511      events: [
5512      {
5513        name: 'show',
5514
5515        self: true,
5516
5517        handler() {
5518          if (hasClass(this.panel, 'uk-margin-auto-vertical')) {
5519            addClass(this.$el, 'uk-flex');
5520          } else {
5521            css(this.$el, 'display', 'block');
5522          }
5523
5524          height(this.$el); // force reflow
5525        } },
5526
5527
5528      {
5529        name: 'hidden',
5530
5531        self: true,
5532
5533        handler() {
5534          css(this.$el, 'display', '');
5535          removeClass(this.$el, 'uk-flex');
5536        } }] };
5537
5538
5539
5540
5541    function install$2(_ref) {let { modal } = _ref;
5542      modal.dialog = function (content, options) {
5543        const dialog = modal("<div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">" +
5544
5545        content + "</div> </div>",
5546
5547        options);
5548
5549
5550        dialog.show();
5551
5552        on(
5553        dialog.$el,
5554        'hidden',
5555        async () => {
5556          await Promise.resolve();
5557          dialog.$destroy(true);
5558        },
5559        { self: true });
5560
5561
5562        return dialog;
5563      };
5564
5565      modal.alert = function (message, options) {
5566        return openDialog(
5567        (_ref2) => {let { labels } = _ref2;return "<div class=\"uk-modal-body\">" + (
5568          isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>" +
5569
5570
5571
5572          labels.ok + "</button> </div>";},
5573
5574
5575        options,
5576        (deferred) => deferred.resolve());
5577
5578      };
5579
5580      modal.confirm = function (message, options) {
5581        return openDialog(
5582        (_ref3) => {let { labels } = _ref3;return "<form> <div class=\"uk-modal-body\">" + (
5583          isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" +
5584
5585
5586          labels.cancel + "</button> <button class=\"uk-button uk-button-primary\" autofocus>" +
5587
5588          labels.ok + "</button> </div> </form>";},
5589
5590
5591        options,
5592        (deferred) => deferred.reject());
5593
5594      };
5595
5596      modal.prompt = function (message, value, options) {
5597        return openDialog(
5598        (_ref4) => {let { labels } = _ref4;return "<form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>" + (
5599
5600          isString(message) ? message : html(message)) + "</label> <input class=\"uk-input\" value=\"" + (
5601          value || '') + "\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" +
5602
5603
5604
5605          labels.cancel + "</button> <button class=\"uk-button uk-button-primary\">" +
5606
5607          labels.ok + "</button> </div> </form>";},
5608
5609
5610        options,
5611        (deferred) => deferred.resolve(null),
5612        (dialog) => $('input', dialog.$el).value);
5613
5614      };
5615
5616      modal.labels = {
5617        ok: 'Ok',
5618        cancel: 'Cancel' };
5619
5620
5621      function openDialog(tmpl, options, hideFn, submitFn) {
5622        options = { bgClose: false, escClose: true, labels: modal.labels, ...options };
5623
5624        const dialog = modal.dialog(tmpl(options), options);
5625        const deferred = new Deferred();
5626
5627        let resolved = false;
5628
5629        on(dialog.$el, 'submit', 'form', (e) => {
5630          e.preventDefault();
5631          deferred.resolve(submitFn == null ? void 0 : submitFn(dialog));
5632          resolved = true;
5633          dialog.hide();
5634        });
5635
5636        on(dialog.$el, 'hide', () => !resolved && hideFn(deferred));
5637
5638        deferred.promise.dialog = dialog;
5639
5640        return deferred.promise;
5641      }
5642    }
5643
5644    var nav = {
5645      extends: Accordion,
5646
5647      data: {
5648        targets: '> .uk-parent',
5649        toggle: '> a',
5650        content: '> ul' } };
5651
5652    const navItem = '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle';
5653
5654    var navbar = {
5655      mixins: [Class, Container],
5656
5657      props: {
5658        dropdown: String,
5659        mode: 'list',
5660        align: String,
5661        offset: Number,
5662        boundary: Boolean,
5663        boundaryAlign: Boolean,
5664        clsDrop: String,
5665        delayShow: Number,
5666        delayHide: Number,
5667        dropbar: Boolean,
5668        dropbarAnchor: Boolean,
5669        duration: Number },
5670
5671
5672      data: {
5673        dropdown: navItem,
5674        align: isRtl ? 'right' : 'left',
5675        clsDrop: 'uk-navbar-dropdown',
5676        mode: undefined,
5677        offset: undefined,
5678        delayShow: undefined,
5679        delayHide: undefined,
5680        boundaryAlign: undefined,
5681        flip: 'x',
5682        boundary: true,
5683        dropbar: false,
5684        dropbarAnchor: false,
5685        duration: 200,
5686        forceHeight: true,
5687        selMinHeight: navItem,
5688        container: false },
5689
5690
5691      computed: {
5692        boundary(_ref, $el) {let { boundary } = _ref;
5693          return boundary === true ? $el : boundary;
5694        },
5695
5696        dropbarAnchor(_ref2, $el) {let { dropbarAnchor } = _ref2;
5697          return query(dropbarAnchor, $el);
5698        },
5699
5700        pos(_ref3) {let { align } = _ref3;
5701          return "bottom-" + align;
5702        },
5703
5704        dropbar: {
5705          get(_ref4) {let { dropbar } = _ref4;
5706            if (!dropbar) {
5707              return null;
5708            }
5709
5710            dropbar =
5711            this._dropbar ||
5712            query(dropbar, this.$el) ||
5713            $('+ .uk-navbar-dropbar', this.$el);
5714
5715            return dropbar ? dropbar : this._dropbar = $('<div></div>');
5716          },
5717
5718          watch(dropbar) {
5719            addClass(dropbar, 'uk-navbar-dropbar');
5720          },
5721
5722          immediate: true },
5723
5724
5725        dropContainer(_, $el) {
5726          return this.container || $el;
5727        },
5728
5729        dropdowns: {
5730          get(_ref5, $el) {let { clsDrop } = _ref5;
5731            const dropdowns = $$("." + clsDrop, $el);
5732
5733            if (this.dropContainer !== $el) {
5734              for (const el of $$("." + clsDrop, this.dropContainer)) {var _this$getDropdown;
5735                const target = (_this$getDropdown = this.getDropdown(el)) == null ? void 0 : _this$getDropdown.target;
5736                if (!includes(dropdowns, el) && target && within(target, this.$el)) {
5737                  dropdowns.push(el);
5738                }
5739              }
5740            }
5741
5742            return dropdowns;
5743          },
5744
5745          watch(dropdowns) {
5746            this.$create(
5747            'drop',
5748            dropdowns.filter((el) => !this.getDropdown(el)),
5749            {
5750              ...this.$props,
5751              boundary: this.boundary,
5752              pos: this.pos,
5753              offset: this.dropbar || this.offset });
5754
5755
5756          },
5757
5758          immediate: true },
5759
5760
5761        toggles(_ref6, $el) {let { dropdown } = _ref6;
5762          return $$(dropdown, $el);
5763        } },
5764
5765
5766      disconnected() {
5767        this.dropbar && remove$1(this.dropbar);
5768        delete this._dropbar;
5769      },
5770
5771      events: [
5772      {
5773        name: 'mouseover focusin',
5774
5775        delegate() {
5776          return this.dropdown;
5777        },
5778
5779        handler(_ref7) {let { current } = _ref7;
5780          const active = this.getActive();
5781          if (
5782          active &&
5783          includes(active.mode, 'hover') &&
5784          active.target &&
5785          !within(active.target, current) &&
5786          !active.isDelaying)
5787          {
5788            active.hide(false);
5789          }
5790        } },
5791
5792
5793      {
5794        name: 'keydown',
5795
5796        delegate() {
5797          return this.dropdown;
5798        },
5799
5800        handler(e) {
5801          const { current, keyCode } = e;
5802          const active = this.getActive();
5803
5804          if (keyCode === keyMap.DOWN && hasAttr(current, 'aria-expanded')) {
5805            e.preventDefault();
5806
5807            if (!active || active.target !== current) {
5808              current.click();
5809              once(this.dropContainer, 'show', (_ref8) => {let { target } = _ref8;return (
5810                  focusFirstFocusableElement(target));});
5811
5812            } else {
5813              focusFirstFocusableElement(active.$el);
5814            }
5815          }
5816
5817          handleNavItemNavigation(e, this.toggles, active);
5818        } },
5819
5820
5821      {
5822        name: 'keydown',
5823
5824        el() {
5825          return this.dropContainer;
5826        },
5827
5828        delegate() {
5829          return "." + this.clsDrop;
5830        },
5831
5832        handler(e) {
5833          const { current, keyCode } = e;
5834
5835          if (!includes(this.dropdowns, current)) {
5836            return;
5837          }
5838
5839          const active = this.getActive();
5840          const elements = $$(selFocusable, current);
5841          const i = findIndex(elements, (el) => matches(el, ':focus'));
5842
5843          if (keyCode === keyMap.UP) {
5844            e.preventDefault();
5845            if (i > 0) {
5846              elements[i - 1].focus();
5847            }
5848          }
5849
5850          if (keyCode === keyMap.DOWN) {
5851            e.preventDefault();
5852            if (i < elements.length - 1) {
5853              elements[i + 1].focus();
5854            }
5855          }
5856
5857          if (keyCode === keyMap.ESC) {var _active$target;
5858            active == null ? void 0 : (_active$target = active.target) == null ? void 0 : _active$target.focus();
5859          }
5860
5861          handleNavItemNavigation(e, this.toggles, active);
5862        } },
5863
5864
5865      {
5866        name: 'mouseleave',
5867
5868        el() {
5869          return this.dropbar;
5870        },
5871
5872        filter() {
5873          return this.dropbar;
5874        },
5875
5876        handler() {
5877          const active = this.getActive();
5878
5879          if (
5880          active &&
5881          includes(active.mode, 'hover') &&
5882          !this.dropdowns.some((el) => matches(el, ':hover')))
5883          {
5884            active.hide();
5885          }
5886        } },
5887
5888
5889      {
5890        name: 'beforeshow',
5891
5892        el() {
5893          return this.dropContainer;
5894        },
5895
5896        filter() {
5897          return this.dropbar;
5898        },
5899
5900        handler(_, _ref9) {let { $el } = _ref9;
5901          if (!hasClass($el, this.clsDrop)) {
5902            return;
5903          }
5904
5905          if (!parent(this.dropbar)) {
5906            after(this.dropbarAnchor || this.$el, this.dropbar);
5907          }
5908
5909          addClass($el, this.clsDrop + "-dropbar");
5910        } },
5911
5912
5913      {
5914        name: 'show',
5915
5916        el() {
5917          return this.dropContainer;
5918        },
5919
5920        filter() {
5921          return this.dropbar;
5922        },
5923
5924        handler(_, _ref10) {let { $el, dir } = _ref10;
5925          if (!hasClass($el, this.clsDrop)) {
5926            return;
5927          }
5928
5929          if (dir === 'bottom') {
5930            this.transitionTo(
5931            offset($el).bottom -
5932            offset(this.dropbar).top +
5933            toFloat(css($el, 'marginBottom')),
5934            $el);
5935
5936          }
5937        } },
5938
5939
5940      {
5941        name: 'beforehide',
5942
5943        el() {
5944          return this.dropContainer;
5945        },
5946
5947        filter() {
5948          return this.dropbar;
5949        },
5950
5951        handler(e, _ref11) {let { $el } = _ref11;
5952          const active = this.getActive();
5953
5954          if (
5955          matches(this.dropbar, ':hover') &&
5956          (active == null ? void 0 : active.$el) === $el &&
5957          !this.toggles.some((el) => active.target !== el && matches(el, ':focus')))
5958          {
5959            e.preventDefault();
5960          }
5961        } },
5962
5963
5964      {
5965        name: 'hide',
5966
5967        el() {
5968          return this.dropContainer;
5969        },
5970
5971        filter() {
5972          return this.dropbar;
5973        },
5974
5975        handler(_, _ref12) {let { $el } = _ref12;
5976          if (!hasClass($el, this.clsDrop)) {
5977            return;
5978          }
5979
5980          const active = this.getActive();
5981
5982          if (!active || (active == null ? void 0 : active.$el) === $el) {
5983            this.transitionTo(0);
5984          }
5985        } }],
5986
5987
5988
5989      methods: {
5990        getActive() {
5991          return active$1 && within(active$1.target, this.$el) && active$1;
5992        },
5993
5994        transitionTo(newHeight, el) {
5995          const { dropbar } = this;
5996          const oldHeight = isVisible(dropbar) ? height(dropbar) : 0;
5997
5998          el = oldHeight < newHeight && el;
5999
6000          css(el, 'clip', "rect(0," + el.offsetWidth + "px," + oldHeight + "px,0)");
6001
6002          height(dropbar, oldHeight);
6003
6004          Transition.cancel([el, dropbar]);
6005          return Promise.all([
6006          Transition.start(dropbar, { height: newHeight }, this.duration),
6007          Transition.start(
6008          el,
6009          { clip: "rect(0," + el.offsetWidth + "px," + newHeight + "px,0
6009)" },
6010          this.duration)]).
6011
6012
6013          catch(noop).
6014          then(() => {
6015            css(el, { clip: '' });
6016            this.$update(dropbar);
6017          });
6018        },
6019
6020        getDropdown(el) {
6021          return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');
6022        } } };
6023
6024
6025
6026    function handleNavItemNavigation(e, toggles, active) {
6027      const { current, keyCode } = e;
6028      const target = (active == null ? void 0 : active.target) || current;
6029      const i = toggles.indexOf(target);
6030
6031      // Left
6032      if (keyCode === keyMap.LEFT && i > 0) {
6033        active == null ? void 0 : active.hide(false);
6034        toggles[i - 1].focus();
6035      }
6036
6037      // Right
6038      if (keyCode === keyMap.RIGHT && i < toggles.length - 1) {
6039        active == null ? void 0 : active.hide(false);
6040        toggles[i + 1].focus();
6041      }
6042
6043      if (keyCode === keyMap.TAB) {
6044        target.focus();
6045        active == null ? void 0 : active.hide(false);
6046      }
6047    }
6048
6049    function focusFirstFocusableElement(el) {
6050      if (!$(':focus', el)) {var _$;
6051        (_$ = $(selFocusable, el)) == null ? void 0 : _$.focus();
6052      }
6053    }
6054
6055    const keyMap = {
6056      TAB: 9,
6057      ESC: 27,
6058      LEFT: 37,
6059      UP: 38,
6060      RIGHT: 39,
6061      DOWN: 40 };
6062
6063    var Swipe = {
6064      props: {
6065        swiping: Boolean },
6066
6067
6068      data: {
6069        swiping: true },
6070
6071
6072      computed: {
6073        swipeTarget(props, $el) {
6074          return $el;
6075        } },
6076
6077
6078      connected() {
6079        if (!this.swiping) {
6080          return;
6081        }
6082
6083        registerEvent(this, {
6084          el: this.swipeTarget,
6085          name: pointerDown,
6086          passive: true,
6087          handler(e) {
6088            if (!isTouch(e)) {
6089              return;
6090            }
6091
6092            // Handle Swipe Gesture
6093            const pos = getEventPos(e);
6094            const target = 'tagName' in e.target ? e.target : parent(e.target);
6095            once(document, pointerUp + " " + pointerCancel + " scroll", (e) => {
6096              const { x, y } = getEventPos(e);
6097
6098              // swipe
6099              if (
6100              e.type !== 'scroll' && target && x && Math.abs(pos.x - x) > 100 ||
6101              y && Math.abs(pos.y - y) > 100)
6102              {
6103                setTimeout(() => {
6104                  trigger(target, 'swipe');
6105                  trigger(target, "swipe" + swipeDirection(pos.x, pos.y, x, y));
6106                });
6107              }
6108            });
6109          } });
6110
6111      } };
6112
6113
6114    function swipeDirection(x1, y1, x2, y2) {
6115      return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ?
6116      x1 - x2 > 0 ?
6117      'Left' :
6118      'Right' :
6119      y1 - y2 > 0 ?
6120      'Up' :
6121      'Down';
6122    }
6123
6124    var offcanvas = {
6125      mixins: [Modal, Swipe],
6126
6127      args: 'mode',
6128
6129      props: {
6130        mode: String,
6131        flip: Boolean,
6132        overlay: Boolean },
6133
6134
6135      data: {
6136        mode: 'slide',
6137        flip: false,
6138        overlay: false,
6139        clsPage: 'uk-offcanvas-page',
6140        clsContainer: 'uk-offcanvas-container',
6141        selPanel: '.uk-offcanvas-bar',
6142        clsFlip: 'uk-offcanvas-flip',
6143        clsContainerAnimation: 'uk-offcanvas-container-animation',
6144        clsSidebarAnimation: 'uk-offcanvas-bar-animation',
6145        clsMode: 'uk-offcanvas',
6146        clsOverlay: 'uk-offcanvas-overlay',
6147        selClose: '.uk-offcanvas-close',
6148        container: false },
6149
6150
6151      computed: {
6152        clsFlip(_ref) {let { flip, clsFlip } = _ref;
6153          return flip ? clsFlip : '';
6154        },
6155
6156        clsOverlay(_ref2) {let { overlay, clsOverlay } = _ref2;
6157          return overlay ? clsOverlay : '';
6158        },
6159
6160        clsMode(_ref3) {let { mode, clsMode } = _ref3;
6161          return clsMode + "-" + mode;
6162        },
6163
6164        clsSidebarAnimation(_ref4) {let { mode, clsSidebarAnimation } = _ref4;
6165          return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;
6166        },
6167
6168        clsContainerAnimation(_ref5) {let { mode, clsContainerAnimation } = _ref5;
6169          return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;
6170        },
6171
6172        transitionElement(_ref6) {let { mode } = _ref6;
6173          return mode === 'reveal' ? parent(this.panel) : this.panel;
6174        } },
6175
6176
6177      update: {
6178        read() {
6179          if (this.isToggled() && !isVisible(this.$el)) {
6180            this.hide();
6181          }
6182        },
6183
6184        events: ['resize'] },
6185
6186
6187      events: [
6188      {
6189        name: 'click',
6190
6191        delegate() {
6192          return 'a[href^="#"]';
6193        },
6194
6195        handler(_ref7) {let { current: { hash }, defaultPrevented } = _ref7;
6196          if (!defaultPrevented && hash && $(hash, document.body)) {
6197            this.hide();
6198          }
6199        } },
6200
6201
6202      {
6203        name: 'touchstart',
6204
6205        passive: true,
6206
6207        el() {
6208          return this.panel;
6209        },
6210
6211        handler(_ref8) {let { targetTouches } = _ref8;
6212          if (targetTouches.length === 1) {
6213            this.clientY = targetTouches[0].clientY;
6214          }
6215        } },
6216
6217
6218      {
6219        name: 'touchmove',
6220
6221        self: true,
6222        passive: false,
6223
6224        filter() {
6225          return this.overlay;
6226        },
6227
6228        handler(e) {
6229          e.cancelable && e.preventDefault();
6230        } },
6231
6232
6233      {
6234        name: 'touchmove',
6235
6236        passive: false,
6237
6238        el() {
6239          return this.panel;
6240        },
6241
6242        handler(e) {
6243          if (e.targetTouches.length !== 1) {
6244            return;
6245          }
6246
6247          const clientY = e.targetTouches[0].clientY - this.clientY;
6248          const { scrollTop, scrollHeight, clientHeight } = this.panel;
6249
6250          if (
6251          clientHeight >= scrollHeight ||
6252          scrollTop === 0 && clientY > 0 ||
6253          scrollHeight - scrollTop <= clientHeight && clientY < 0)
6254          {
6255            e.cancelable && e.preventDefault();
6256          }
6257        } },
6258
6259
6260      {
6261        name: 'show',
6262
6263        self: true,
6264
6265        handler() {
6266          if (this.mode === 'reveal' && !hasClass(parent(this.panel), this.clsMode)) {
6267            wrapAll(this.panel, '<div>');
6268            addClass(parent(this.panel), this.clsMode);
6269          }
6270
6271          css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');
6272          addClass(document.body, this.clsContainer, this.clsFlip);
6273          css(document.body, 'touch-action', 'pan-y pinch-zoom');
6274          css(this.$el, 'display', 'block');
6275          addClass(this.$el, this.clsOverlay);
6276          addClass(
6277          this.panel,
6278          this.clsSidebarAnimation,
6279          this.mode !== 'reveal' ? this.clsMode : '');
6280
6281
6282          height(document.body); // force reflow
6283          addClass(document.body, this.clsContainerAnimation);
6284
6285          this.clsContainerAnimation && suppressUserScale();
6286        } },
6287
6288
6289      {
6290        name: 'hide',
6291
6292        self: true,
6293
6294        handler() {
6295          removeClass(document.body, this.clsContainerAnimation);
6296          css(document.body, 'touch-action', '');
6297        } },
6298
6299
6300      {
6301        name: 'hidden',
6302
6303        self: true,
6304
6305        handler() {
6306          this.clsContainerAnimation && resumeUserScale();
6307
6308          if (this.mode === 'reveal') {
6309            unwrap(this.panel);
6310          }
6311
6312          removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);
6313          removeClass(this.$el, this.clsOverlay);
6314          css(this.$el, 'display', '');
6315          removeClass(document.body, this.clsContainer, this.clsFlip);
6316
6317          css(document.documentElement, 'overflowY', '');
6318        } },
6319
6320
6321      {
6322        name: 'swipeLeft swipeRight',
6323
6324        handler(e) {
6325          if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {
6326            this.hide();
6327          }
6328        } }] };
6329
6330
6331
6332
6333    // Chrome in responsive mode zooms page upon opening offcanvas
6334    function suppressUserScale() {
6335      getViewport().content += ',user-scalable=0';
6336    }
6337
6338    function resumeUserScale() {
6339      const viewport = getViewport();
6340      viewport.content = viewport.content.replace(/,user-scalable=0$/, '');
6341    }
6342
6343    function getViewport() {
6344      return (
6345        $('meta[name="viewport"]', document.head) || append(document.head, '<meta name="viewport">'));
6346
6347    }
6348
6349    var overflowAuto = {
6350      mixins: [Class, Resize],
6351
6352      props: {
6353        selContainer: String,
6354        selContent: String,
6355        minHeight: Number },
6356
6357
6358      data: {
6359        selContainer: '.uk-modal',
6360        selContent: '.uk-modal-dialog',
6361        minHeight: 150 },
6362
6363
6364      computed: {
6365        container(_ref, $el) {let { selContainer } = _ref;
6366          return closest($el, selContainer);
6367        },
6368
6369        content(_ref2, $el) {let { selContent } = _ref2;
6370          return closest($el, selContent);
6371        } },
6372
6373
6374      resizeTargets() {
6375        return [this.container, this.content];
6376      },
6377
6378      update: {
6379        read() {
6380          if (!this.content || !this.container || !isVisible(this.$el)) {
6381            return false;
6382          }
6383
6384          return {
6385            max: Math.max(
6386            this.minHeight,
6387            height(this.container) - (dimensions$1(this.content).height - height(this.$el))) };
6388
6389
6390        },
6391
6392        write(_ref3) {let { max } = _ref3;
6393          css(this.$el, { minHeight: this.minHeight, maxHeight: max });
6394        },
6395
6396        events: ['resize'] } };
6397
6398    var responsive = {
6399      mixins: [Resize],
6400
6401      props: ['width', 'height'],
6402
6403      resizeTargets() {
6404        return [this.$el, parent(this.$el)];
6405      },
6406
6407      connected() {
6408        addClass(this.$el, 'uk-responsive-width');
6409      },
6410
6411      update: {
6412        read() {
6413          return isVisible(this.$el) && this.width && this.height ?
6414          { width: width(parent(this.$el)), height: this.height } :
6415          false;
6416        },
6417
6418        write(dim) {
6419          height(
6420          this.$el,
6421          Dimensions.contain(
6422          {
6423            height: this.height,
6424            width: this.width },
6425
6426          dim).
6427          height);
6428
6429        },
6430
6431        events: ['resize'] } };
6432
6433    var scroll = {
6434      props: {
6435        offset: Number },
6436
6437
6438      data: {
6439        offset: 0 },
6440
6441
6442      methods: {
6443        async scrollTo(el) {
6444          el = el && $(el) || document.body;
6445
6446          if (trigger(this.$el, 'beforescroll', [this, el])) {
6447            await scrollIntoView(el, { offset: this.offset });
6448            trigger(this.$el, 'scrolled', [this, el]);
6449          }
6450        } },
6451
6452
6453      events: {
6454        click(e) {
6455          if (e.defaultPrevented) {
6456            return;
6457          }
6458
6459          e.preventDefault();
6460          this.scrollTo(getTargetElement(this.$el));
6461        } } };
6462
6463
6464
6465    function getTargetElement(el) {
6466      return document.getElementById(decodeURIComponent(el.hash).substring(1));
6467    }
6468
6469    const stateKey = '_ukScrollspy';
6470    var scrollspy = {
6471      mixins: [Scroll],
6472
6473      args: 'cls',
6474
6475      props: {
6476        cls: String,
6477        target: String,
6478        hidden: Boolean,
6479        offsetTop: Number,
6480        offsetLeft: Number,
6481        repeat: Boolean,
6482        delay: Number },
6483
6484
6485      data: () => ({
6486        cls: '',
6487        target: false,
6488        hidden: true,
6489        offsetTop: 0,
6490        offsetLeft: 0,
6491        repeat: false,
6492        delay: 0,
6493        inViewClass: 'uk-scrollspy-inview' }),
6494
6495
6496      computed: {
6497        elements: {
6498          get(_ref, $el) {let { target } = _ref;
6499            return target ? $$(target, $el) : [$el];
6500          },
6501
6502          watch(elements) {
6503            if (this.hidden) {
6504              css(filter$1(elements, ":not(." + this.inViewClass + ")"), 'visibility', 'hidden');
6505            }
6506          },
6507
6508          immediate: true } },
6509
6510
6511
6512      disconnected() {
6513        for (const el of this.elements) {var _el$stateKey;
6514          removeClass(el, this.inViewClass, ((_el$stateKey = el[stateKey]) == null ? void 0 : _el$stateKey.cls) || '');
6515          delete el[stateKey];
6516        }
6517      },
6518
6519      update: [
6520      {
6521        read() {
6522          for (const el of this.elements) {
6523            if (!el[stateKey]) {
6524              el[stateKey] = { cls: data(el, 'uk-scrollspy-class') || this.cls };
6525            }
6526
6527            if (!this.repeat && el[stateKey].show) {
6528              continue;
6529            }
6530
6531            el[stateKey].show = isInView(el, this.offsetTop, this.offsetLeft);
6532          }
6533        },
6534
6535        write(data) {
6536          for (const el of this.elements) {
6537            const state = el[stateKey];
6538
6539            if (state.show && !state.inview && !state.queued) {
6540              state.queued = true;
6541
6542              data.promise = (data.promise || Promise.resolve()).
6543              then(() => new Promise((resolve) => setTimeout(resolve, this.delay))).
6544              then(() => {
6545                this.toggle(el, true);
6546                setTimeout(() => {
6547                  state.queued = false;
6548                  this.$emit();
6549                }, 300);
6550              });
6551            } else if (!state.show && state.inview && !state.queued && this.repeat) {
6552              this.toggle(el, false);
6553            }
6554          }
6555        },
6556
6557        events: ['scroll', 'resize'] }],
6558
6559
6560
6561      methods: {
6562        toggle(el, inview) {
6563          const state = el[stateKey];
6564
6565          state.off == null ? void 0 : state.off();
6566
6567          css(el, 'visibility', !inview && this.hidden ? 'hidden' : '');
6568
6569          toggleClass(el, this.inViewClass, inview);
6570          toggleClass(el, state.cls);
6571
6572          if (/\buk-animation-/.test(state.cls)) {
6573            const removeAnimationClasses = () => removeClasses(el, 'uk-animation-[\\w-]+');
6574            if (inview) {
6575              state.off = once(el, 'animationcancel animationend', removeAnimationClasses);
6576            } else {
6577              removeAnimationClasses();
6578            }
6579          }
6580
6581          trigger(el, inview ? 'inview' : 'outview');
6582
6583          state.inview = inview;
6584
6585          this.$update(el);
6586        } } };
6587
6588    var scrollspyNav = {
6589      mixins: [Scroll],
6590
6591      props: {
6592        cls: String,
6593        closest: String,
6594        scroll: Boolean,
6595        overflow: Boolean,
6596        offset: Number },
6597
6598
6599      data: {
6600        cls: 'uk-active',
6601        closest: false,
6602        scroll: false,
6603        overflow: true,
6604        offset: 0 },
6605
6606
6607      computed: {
6608        links: {
6609          get(_, $el) {
6610            return $$('a[href^="#"]', $el).filter((el) => el.hash);
6611          },
6612
6613          watch(links) {
6614            if (this.scroll) {
6615              this.$create('scroll', links, { offset: this.offset || 0 });
6616            }
6617          },
6618
6619          immediate: true },
6620
6621
6622        elements(_ref) {let { closest: selector } = _ref;
6623          return closest(this.links, selector || '*');
6624        } },
6625
6626
6627      update: [
6628      {
6629        read() {
6630          const targets = this.links.map(getTargetElement).filter(Boolean);
6631
6632          const { length } = targets;
6633
6634          if (!length || !isVisible(this.$el)) {
6635            return false;
6636          }
6637
6638          const [scrollElement] = scrollParents(targets, /auto|scroll/, true);
6639          const { scrollTop, scrollHeight } = scrollElement;
6640          const max = scrollHeight - getViewportClientHeight(scrollElement);
6641          let active = false;
6642
6643          if (scrollTop === max) {
6644            active = length - 1;
6645          } else {
6646            for (const i in targets) {
6647              if (
6648              offset(targets[i]).top -
6649              offset(getViewport$1(scrollElement)).top -
6650              this.offset >
6651              0)
6652              {
6653                break;
6654              }
6655              active = +i;
6656            }
6657
6658            if (active === false && this.overflow) {
6659              active = 0;
6660            }
6661          }
6662
6663          return { active };
6664        },
6665
6666        write(_ref2) {let { active } = _ref2;
6667          const changed = active !== false && !hasClass(this.elements[active], this.cls);
6668
6669          this.links.forEach((el) => el.blur());
6670          for (const i in this.elements) {
6671            toggleClass(this.elements[i], this.cls, +i === active);
6672          }
6673
6674          if (changed) {
6675            trigger(this.$el, 'active', [active, this.elements[active]]);
6676          }
6677        },
6678
6679        events: ['scroll', 'resize'] }] };
6680
6681    var sticky = {
6682      mixins: [Class, Media, Resize, Scroll],
6683
6684      props: {
6685        position: String,
6686        top: null,
6687        bottom: Boolean,
6688        offset: String,
6689        animation: String,
6690        clsActive: String,
6691        clsInactive: String,
6692        clsFixed: String,
6693        clsBelow: String,
6694        selTarget: String,
6695        showOnUp: Boolean,
6696        targetOffset: Number },
6697
6698
6699      data: {
6700        position: 'top',
6701        top: 0,
6702        bottom: false,
6703        offset: 0,
6704        animation: '',
6705        clsActive: 'uk-active',
6706        clsInactive: '',
6707        clsFixed: 'uk-sticky-fixed',
6708        clsBelow: 'uk-sticky-below',
6709        selTarget: '',
6710        showOnUp: false,
6711        targetOffset: false },
6712
6713
6714      computed: {
6715        selTarget(_ref, $el) {let { selTarget } = _ref;
6716          return selTarget && $(selTarget, $el) || $el;
6717        } },
6718
6719
6720      resizeTargets() {
6721        return document.documentElement;
6722      },
6723
6724      connected() {
6725        this.placeholder =
6726        $('+ .uk-sticky-placeholder', this.$el) ||
6727        $('<div class="uk-sticky-placeholder"></div>');
6728        this.isFixed = false;
6729        this.setActive(false);
6730      },
6731
6732      disconnected() {
6733        if (this.isFixed) {
6734          this.hide();
6735          removeClass(this.selTarget, this.clsInactive);
6736        }
6737
6738        remove$1(this.placeholder);
6739        this.placeholder = null;
6740      },
6741
6742      events: [
6743      {
6744        name: 'load hashchange popstate',
6745
6746        el() {
6747          return window;
6748        },
6749
6750        filter() {
6751          return this.targetOffset !== false;
6752        },
6753
6754        handler() {
6755          if (!location.hash || scrollTop(window) === 0) {
6756            return;
6757          }
6758
6759          fastdom.read(() => {
6760            const targetOffset = offset($(location.hash));
6761            const elOffset = offset(this.$el);
6762
6763            if (this.isFixed && intersectRect(targetOffset, elOffset)) {
6764              scrollTop(
6765              window,
6766              targetOffset.top -
6767              elOffset.height -
6768              toPx(this.targetOffset, 'height') -
6769              toPx(this.offset, 'height'));
6770
6771            }
6772          });
6773        } }],
6774
6775
6776
6777      update: [
6778      {
6779        read(_ref2, types) {let { height: height$1, margin } = _ref2;
6780          this.inactive = !this.matchMedia || !isVisible(this.$el);
6781
6782          if (this.inactive) {
6783            return false;
6784          }
6785
6786          const hide = this.isActive && types.has('resize');
6787          if (hide) {
6788            css(this.selTarget, 'transition', '0s');
6789            this.hide();
6790          }
6791
6792          if (!this.isActive) {
6793            height$1 = offset(this.$el).height;
6794            margin = css(this.$el, 'margin');
6795          }
6796
6797          if (hide) {
6798            this.show();
6799            fastdom.write(() => css(this.selTarget, 'transition', ''));
6800          }
6801
6802          const referenceElement = this.isFixed ? this.placeholder : this.$el;
6803          const windowHeight = height(window);
6804
6805          let position = this.position;
6806          if (position === 'auto' && height$1 > windowHeight) {
6807            position = 'bottom';
6808          }
6809
6810          let offset$1 = toPx(this.offset, 'height', referenceElement);
6811          if (position === 'bottom') {
6812            offset$1 += windowHeight - height$1;
6813          }
6814
6815          const overflow = Math.max(0, height$1 + offset$1 - windowHeight);
6816          const topOffset = offset(referenceElement).top;
6817
6818          const top = parseProp(this.top, this.$el, topOffset);
6819          const bottom = parseProp(this.bottom, this.$el, topOffset + height$1, true);
6820
6821          const start = Math.max(top, topOffset) - offset$1;
6822          const end = bottom ?
6823          bottom - offset(this.$el).height + overflow - offset$1 :
6824          getScrollingElement(this.$el).scrollHeight - windowHeight;
6825
6826          return {
6827            start,
6828            end,
6829            offset: offset$1,
6830            overflow,
6831            topOffset,
6832            height: height$1,
6833            margin,
6834            width: dimensions$1(referenceElement).width,
6835            top: offsetPosition(referenceElement)[0] };
6836
6837        },
6838
6839        write(_ref3) {let { height, margin } = _ref3;
6840          const { placeholder } = this;
6841
6842          css(placeholder, { height, margin });
6843
6844          if (!within(placeholder, document)) {
6845            after(this.$el, placeholder);
6846            placeholder.hidden = true;
6847          }
6848        },
6849
6850        events: ['resize'] },
6851
6852
6853      {
6854        read(_ref4)
6855
6856
6857
6858
6859
6860
6861        {let { scroll: prevScroll = 0, dir: prevDir = 'down', overflow, overflowScroll = 0, start, end } = _ref4;
6862          const scroll = scrollTop(window);
6863          const dir = prevScroll <= scroll ? 'down' : 'up';
6864
6865          return {
6866            dir,
6867            prevDir,
6868            scroll,
6869            prevScroll,
6870            offsetParentTop: offset(this.$el.offsetParent).top,
6871            overflowScroll: clamp(
6872            overflowScroll + clamp(scroll, start, end) - clamp(prevScroll, start, end),
6873            0,
6874            overflow) };
6875
6876
6877        },
6878
6879        write(data, types) {
6880          const isScrollUpdate = types.has('scroll');
6881          const {
6882            initTimestamp = 0,
6883            dir,
6884            prevDir,
6885            scroll,
6886            prevScroll = 0,
6887            top,
6888            start,
6889            topOffset,
6890            height } =
6891          data;
6892
6893          if (
6894          scroll < 0 ||
6895          scroll === prevScroll && isScrollUpdate ||
6896          this.showOnUp && !isScrollUpdate && !this.isFixed)
6897          {
6898            return;
6899          }
6900
6901          const now = Date.now();
6902          if (now - initTimestamp > 300 || dir !== prevDir) {
6903            data.initScroll = scroll;
6904            data.initTimestamp = now;
6905          }
6906
6907          if (
6908          this.showOnUp &&
6909          !this.isFixed &&
6910          Math.abs(data.initScroll - scroll) <= 30 &&
6911          Math.abs(prevScroll - scroll) <= 10)
6912          {
6913            return;
6914          }
6915
6916          if (
6917          this.inactive ||
6918          scroll < start ||
6919          this.showOnUp && (
6920          scroll <= start ||
6921          dir === 'down' && isScrollUpdate ||
6922          dir === 'up' && !this.isFixed && scroll <= topOffset + height))
6923          {
6924            if (!this.isFixed) {
6925              if (Animation.inProgress(this.$el) && top > scroll) {
6926                Animation.cancel(this.$el);
6927                this.hide();
6928              }
6929
6930              return;
6931            }
6932
6933            this.isFixed = false;
6934
6935            if (this.animation && scroll > topOffset) {
6936              Animation.cancel(this.$el);
6937              Animation.out(this.$el, this.animation).then(() => this.hide(), noop);
6938            } else {
6939              this.hide();
6940            }
6941          } else if (this.isFixed) {
6942            this.update();
6943          } else if (this.animation && scroll > topOffset) {
6944            Animation.cancel(this.$el);
6945            this.show();
6946            Animation.in(this.$el, this.animation).catch(noop);
6947          } else {
6948            this.show();
6949          }
6950        },
6951
6952        events: ['resize', 'scroll'] }],
6953
6954
6955
6956      methods: {
6957        show() {
6958          this.isFixed = true;
6959          this.update();
6960          this.placeholder.hidden = false;
6961        },
6962
6963        hide() {
6964          this.setActive(false);
6965          removeClass(this.$el, this.clsFixed, this.clsBelow);
6966          css(this.$el, { position: '', top: '', width: '' });
6967          this.placeholder.hidden = true;
6968        },
6969
6970        update() {
6971          let {
6972            width,
6973            scroll = 0,
6974            overflow,
6975            overflowScroll = 0,
6976            start,
6977            end,
6978            offset,
6979            topOffset,
6980            height,
6981            offsetParentTop } =
6982          this._data;
6983          const active = start !== 0 || scroll > start;
6984          let position = 'fixed';
6985
6986          if (scroll > end) {
6987            offset += end - offsetParentTop;
6988            position = 'absolute';
6989          }
6990
6991          if (overflow) {
6992            offset -= overflowScroll;
6993          }
6994
6995          css(this.$el, {
6996            position,
6997            top: offset + "px",
6998            width });
6999
7000
7001          this.setActive(active);
7002          toggleClass(this.$el, this.clsBelow, scroll > topOffset + height);
7003          addClass(this.$el, this.clsFixed);
7004        },
7005
7006        setActive(active) {
7007          const prev = this.active;
7008          this.active = active;
7009          if (active) {
7010            replaceClass(this.selTarget, this.clsInactive, this.clsActive);
7011            prev !== active && trigger(this.$el, 'active');
7012          } else {
7013            replaceClass(this.selTarget, this.clsActive, this.clsInactive);
7014            prev !== active && trigger(this.$el, 'inactive');
7015          }
7016        } } };
7017
7018
7019
7020    function parseProp(value, el, propOffset, padding) {
7021      if (!value) {
7022        return 0;
7023      }
7024
7025      if (isString(value) && value.match(/^-?\d/)) {
7026        return propOffset + toPx(value);
7027      } else {
7028        const refElement = value === true ? parent(el) : query(value, el);
7029        return (
7030          offset(refElement).bottom - (
7031          padding && refElement && within(el, refElement) ?
7032          toFloat(css(refElement, 'paddingBottom')) :
7033          0));
7034
7035      }
7036    }
7037
7038    var Switcher = {
7039      mixins: [Lazyload, Swipe, Togglable],
7040
7041      args: 'connect',
7042
7043      props: {
7044        connect: String,
7045        toggle: String,
7046        itemNav: String,
7047        active: Number },
7048
7049
7050      data: {
7051        connect: '~.uk-switcher',
7052        toggle: '> * > :first-child',
7053        itemNav: false,
7054        active: 0,
7055        cls: 'uk-active',
7056        attrItem: 'uk-switcher-item' },
7057
7058
7059      computed: {
7060        connects: {
7061          get(_ref, $el) {let { connect } = _ref;
7062            return queryAll(connect, $el);
7063          },
7064
7065          watch(connects) {
7066            if (this.swiping) {
7067              css(connects, 'touch-action', 'pan-y pinch-zoom');
7068            }
7069
7070            const index = this.index();
7071            this.connects.forEach((el) =>
7072            children(el).forEach((child, i) => toggleClass(child, this.cls, i === index)));
7073
7074          },
7075
7076          immediate: true },
7077
7078
7079        toggles: {
7080          get(_ref2, $el) {let { toggle } = _ref2;
7081            return $$(toggle, $el).filter(
7082            (el) => !matches(el, '.uk-disabled *, .uk-disabled, [disabled]'));
7083
7084          },
7085
7086          watch(toggles) {
7087            const active = this.index();
7088            this.show(~active ? active : toggles[this.active] || toggles[0]);
7089          },
7090
7091          immediate: true },
7092
7093
7094        children() {
7095          return children(this.$el).filter((child) =>
7096          this.toggles.some((toggle) => within(toggle, child)));
7097
7098        },
7099
7100        swipeTarget() {
7101          return this.connects;
7102        } },
7103
7104
7105      connected() {
7106        this.lazyload(this.$el, this.connects);
7107
7108        // check for connects
7109        ready(() => this.$emit());
7110      },
7111
7112      events: [
7113      {
7114        name: 'click',
7115
7116        delegate() {
7117          return this.toggle;
7118        },
7119
7120        handler(e) {
7121          e.preventDefault();
7122          this.show(e.current);
7123        } },
7124
7125
7126      {
7127        name: 'click',
7128
7129        el() {
7130          return this.connects.concat(this.itemNav ? queryAll(this.itemNav, this.$el) : []);
7131        },
7132
7133        delegate() {
7134          return "[" + this.attrItem + "],[data-" + this.attrItem + "]";
7135        },
7136
7137        handler(e) {
7138          e.preventDefault();
7139          this.show(data(e.current, this.attrItem));
7140        } },
7141
7142
7143      {
7144        name: 'swipeRight swipeLeft',
7145
7146        filter() {
7147          return this.swiping;
7148        },
7149
7150        el() {
7151          return this.connects;
7152        },
7153
7154        handler(_ref3) {let { type } = _ref3;
7155          this.show(endsWith(type, 'Left') ? 'next' : 'previous');
7156        } }],
7157
7158
7159
7160      methods: {
7161        index() {
7162          return findIndex(this.children, (el) => hasClass(el, this.cls));
7163        },
7164
7165        show(item) {
7166          const prev = this.index();
7167          const next = getIndex(item, this.toggles, prev);
7168          const active = getIndex(this.children[next], children(this.$el));
7169          children(this.$el).forEach((child, i) => {
7170            toggleClass(child, this.cls, active === i);
7171            attr(this.toggles[i], 'aria-expanded', active === i);
7172          });
7173
7174          const animate = prev >= 0 && prev !== next;
7175          this.connects.forEach(async (_ref4) => {let { children } = _ref4;
7176            await this.toggleElement(
7177            toNodes(children).filter((child) => hasClass(child, this.cls)),
7178            false,
7179            animate);
7180
7181            await this.toggleElement(children[active], true, animate);
7182          });
7183        } } };
7184
7185    var tab = {
7186      mixins: [Class],
7187
7188      extends: Switcher,
7189
7190      props: {
7191        media: Boolean },
7192
7193
7194      data: {
7195        media: 960,
7196        attrItem: 'uk-tab-item' },
7197
7198
7199      connected() {
7200        const cls = hasClass(this.$el, 'uk-tab-left') ?
7201        'uk-tab-left' :
7202        hasClass(this.$el, 'uk-tab-right') ?
7203        'uk-tab-right' :
7204        false;
7205
7206        if (cls) {
7207          this.$create('toggle', this.$el, { cls, mode: 'media', media: this.media });
7208        }
7209      } };
7210
7211    const KEY_SPACE = 32;
7212
7213    var toggle = {
7214      mixins: [Lazyload, Media, Togglable],
7215
7216      args: 'target',
7217
7218      props: {
7219        href: String,
7220        target: null,
7221        mode: 'list',
7222        queued: Boolean },
7223
7224
7225      data: {
7226        href: false,
7227        target: false,
7228        mode: 'click',
7229        queued: true },
7230
7231
7232      computed: {
7233        target: {
7234          get(_ref, $el) {let { href, target } = _ref;
7235            target = queryAll(target || href, $el);
7236            return target.length && target || [$el];
7237          },
7238
7239          watch() {
7240            this.updateAria();
7241          },
7242
7243          immediate: true } },
7244
7245
7246
7247      connected() {
7248        if (!includes(this.mode, 'media') && !isFocusable(this.$el)) {
7249          attr(this.$el, 'tabindex', '0');
7250        }
7251
7252        this.lazyload(this.$el, this.target);
7253
7254        // check for target
7255        ready(() => this.$emit());
7256      },
7257
7258      events: [
7259      {
7260        name: pointerDown,
7261
7262        filter() {
7263          return includes(this.mode, 'hover');
7264        },
7265
7266        handler(e) {
7267          if (!isTouch(e) || this._showState) {
7268            return;
7269          }
7270
7271          // Clicking a button does not give it focus on all browsers and platforms
7272          // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#clicking_and_focus
7273          trigger(this.$el, 'focus');
7274          once(
7275          document,
7276          pointerDown,
7277          () => trigger(this.$el, 'blur'),
7278          true,
7279          (e) => !within(e.target, this.$el));
7280
7281
7282          // Prevent initial click to prevent double toggle through focus + click
7283          if (includes(this.mode, 'click')) {
7284            this._preventClick = true;
7285          }
7286        } },
7287
7288
7289      {
7290        name: pointerEnter + " " + pointerLeave + " focus blur",
7291
7292        filter() {
7293          return includes(this.mode, 'hover');
7294        },
7295
7296        handler(e) {
7297          if (isTouch(e)) {
7298            return;
7299          }
7300
7301          const show = includes([pointerEnter, 'focus'], e.type);
7302          const expanded = attr(this.$el, 'aria-expanded');
7303
7304          // Skip hide if still hovered or focused
7305          if (
7306          !show && (
7307          e.type === pointerLeave && matches(this.$el, ':focus') ||
7308          e.type === 'blur' && matches(this.$el, ':hover')))
7309          {
7310            return;
7311          }
7312
7313          // Skip if state does not change e.g. hover + focus received
7314          if (this._showState && show === (expanded !== this._showState)) {
7315            // Ensure reset if state has changed through click
7316            if (!show) {
7317              this._showState = null;
7318            }
7319            return;
7320          }
7321
7322          this._showState = show ? expanded : null;
7323
7324          this.toggle("toggle" + (show ? 'show' : 'hide'));
7325        } },
7326
7327
7328      {
7329        name: 'keydown',
7330
7331        filter() {
7332          return includes(this.mode, 'click') && !isTag(this.$el, 'input');
7333        },
7334
7335        handler(e) {
7336          if (e.keyCode === KEY_SPACE) {
7337            e.preventDefault();
7338            this.$el.click();
7339          }
7340        } },
7341
7342
7343      {
7344        name: 'click',
7345
7346        filter() {
7347          return includes(this.mode, 'click');
7348        },
7349
7350        handler(e) {
7351          if (this._preventClick) {
7352            return this._preventClick = null;
7353          }
7354
7355          let link;
7356          if (
7357          closest(e.target, 'a[href="#"], a[href=""]') ||
7358          (link = closest(e.target, 'a[href]')) && (
7359          attr(this.$el, 'aria-expanded') !== 'true' ||
7360          link.hash && matches(this.target, link.hash)))
7361          {
7362            e.preventDefault();
7363          }
7364
7365          this.toggle();
7366        } },
7367
7368
7369      {
7370        name: 'toggled',
7371
7372        self: true,
7373
7374        el() {
7375          return this.target;
7376        },
7377
7378        handler(e, toggled) {
7379          if (e.target === this.target[0]) {
7380            this.updateAria(toggled);
7381          }
7382        } },
7383
7384
7385      {
7386        name: 'mediachange',
7387
7388        filter() {
7389          return includes(this.mode, 'media');
7390        },
7391
7392        el() {
7393          return this.target;
7394        },
7395
7396        handler(e, mediaObj) {
7397          if (mediaObj.matches ^ this.isToggled(this.target)) {
7398            this.toggle();
7399          }
7400        } }],
7401
7402
7403
7404      methods: {
7405        async toggle(type) {
7406          if (!trigger(this.target, type || 'toggle', [this])) {
7407            return;
7408          }
7409
7410          if (!this.queued) {
7411            return this.toggleElement(this.target);
7412          }
7413
7414          const leaving = this.target.filter((el) => hasClass(el, this.clsLeave));
7415
7416          if (leaving.length) {
7417            for (const el of this.target) {
7418              const isLeaving = includes(leaving, el);
7419              this.toggleElement(el, isLeaving, isLeaving);
7420            }
7421            return;
7422          }
7423
7424          const toggled = this.target.filter(this.isToggled);
7425          await this.toggleElement(toggled, false);
7426          await this.toggleElement(
7427          this.target.filter((el) => !includes(toggled, el)),
7428          true);
7429
7430        },
7431
7432        updateAria(toggled) {
7433          if (includes(this.mode, 'media')) {
7434            return;
7435          }
7436
7437          attr(
7438          this.$el,
7439          'aria-expanded',
7440          isBoolean(toggled) ? toggled : this.isToggled(this.target));
7441
7442        } } };
7443
7444    var components$1 = /*#__PURE__*/Object.freeze({
7445        __proto__: null,
7446        Accordion: Accordion,
7447        Alert: alert,
7448        Cover: cover,
7449        Drop: drop,
7450        Dropdown: drop,
7451        FormCustom: formCustom,
7452        Grid: grid,
7453        HeightMatch: heightMatch,
7454        HeightViewport: heightViewport,
7455        Icon: Icon,
7456        Img: img,
7457        Leader: leader,
7458        Margin: Margin,
7459        Modal: modal,
7460        Nav: nav,
7461        Navbar: navbar,
7462        Offcanvas: offcanvas,
7463        OverflowAuto: overflowAuto,
7464        Responsive: responsive,
7465        Scroll: scroll,
7466        Scrollspy: scrollspy,
7467        ScrollspyNav: scrollspyNav,
7468        Sticky: sticky,
7469        Svg: SVG,
7470        Switcher: Switcher,
7471        Tab: tab,
7472        Toggle: toggle,
7473        Video: Video,
7474        Close: Close,
7475        Spinner: Spinner,
7476        SlidenavNext: Slidenav,
7477        SlidenavPrevious: Slidenav,
7478        SearchIcon: Search,
7479        Marker: IconComponent,
7480        NavbarToggleIcon: IconComponent,
7481        OverlayIcon: IconComponent,
7482        PaginationNext: IconComponent,
7483        PaginationPrevious: IconComponent,
7484        Totop: IconComponent
7485    });
7486
7487    // register components
7488    each(components$1, (component, name) => UIkit.component(name, component));
7489
7490    // core functionality
7491    UIkit.use(Core);
7492
7493    boot(UIkit);
7494
7495    const units = ['days', 'hours', 'minutes', 'seconds'];
7496
7497    var countdown = {
7498      mixins: [Class],
7499
7500      props: {
7501        date: String,
7502        clsWrapper: String },
7503
7504
7505      data: {
7506        date: '',
7507        clsWrapper: '.uk-countdown-%unit%' },
7508
7509
7510      connected() {
7511        this.date = Date.parse(this.$props.date);
7512        this.start();
7513      },
7514
7515      disconnected() {
7516        this.stop();
7517      },
7518
7519      events: [
7520      {
7521        name: 'visibilitychange',
7522
7523        el() {
7524          return document;
7525        },
7526
7527        handler() {
7528          if (document.hidden) {
7529            this.stop();
7530          } else {
7531            this.start();
7532          }
7533        } }],
7534
7535
7536
7537      methods: {
7538        start() {
7539          this.stop();
7540          this.update();
7541          this.timer = setInterval(this.update, 1000);
7542        },
7543
7544        stop() {
7545          clearInterval(this.timer);
7546        },
7547
7548        update() {
7549          const timespan = getTimeSpan(this.date);
7550
7551          if (!this.date || timespan.total <= 0) {
7552            this.stop();
7553
7554            timespan.days = timespan.hours = timespan.minutes = timespan.seconds = 0;
7555          }
7556
7557          for (const unit of units) {
7558            const el = $(this.clsWrapper.replace('%unit%', unit), this.$el);
7559
7560            if (!el) {
7561              continue;
7562            }
7563
7564            let digits = String(Math.trunc(timespan[unit]));
7565
7566            digits = digits.length < 2 ? "0" + digits : digits;
7567
7568            if (el.textContent !== digits) {
7569              digits = digits.split('');
7570
7571              if (digits.length !== el.children.length) {
7572                html(el, digits.map(() => '<span></span>').join(''));
7573              }
7574
7575              digits.forEach((digit, i) => el.children[i].textContent = digit);
7576            }
7577          }
7578        } } };
7579
7580
7581
7582    function getTimeSpan(date) {
7583      const total = date - Date.now();
7584
7585      return {
7586        total,
7587        seconds: total / 1000 % 60,
7588        minutes: total / 1000 / 60 % 60,
7589        hours: total / 1000 / 60 / 60 % 24,
7590        days: total / 1000 / 60 / 60 / 24 };
7591
7592    }
7593
7594    const clsLeave = 'uk-transition-leave';
7595    const clsEnter = 'uk-transition-enter';
7596
7597    function fade(action, target, duration, stagger) {if (stagger === void 0) {stagger = 0;}
7598      const index = transitionIndex(target, true);
7599      const propsIn = { opacity: 1 };
7600      const propsOut = { opacity: 0 };
7601
7602      const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
7603
7604      const leaveFn = wrapIndexFn(() => {
7605        addClass(target, clsLeave);
7606
7607        return Promise.all(
7608        getTransitionNodes(target).map(
7609        (child, i) =>
7610        new Promise((resolve) =>
7611        setTimeout(
7612        () =>
7613        Transition.start(child, propsOut, duration / 2, 'ease').then(
7614        resolve),
7615
7616        i * stagger)))).
7617
7618
7619
7620        then(() => removeClass(target, clsLeave));
7621      });
7622
7623      const enterFn = wrapIndexFn(() => {
7624        const oldHeight = height(target);
7625
7626        addClass(target, clsEnter);
7627        action();
7628
7629        css(children(target), { opacity: 0 });
7630
7631        // Ensure UIkit updates have propagated
7632        return new Promise((resolve) =>
7633        requestAnimationFrame(() => {
7634          const nodes = children(target);
7635          const newHeight = height(target);
7636
7637          // Ensure Grid cells do not stretch when height is applied
7638          css(target, 'alignContent', 'flex-start');
7639          height(target, oldHeight);
7640
7641          const transitionNodes = getTransitionNodes(target);
7642          css(nodes, propsOut);
7643
7644          const transitions = transitionNodes.map(
7645          (child, i) =>
7646          new Promise((resolve) =>
7647          setTimeout(
7648          () =>
7649          Transition.start(child, propsIn, duration / 2, 'ease').then(
7650          resolve),
7651
7652          i * stagger)));
7653
7654
7655
7656
7657          if (oldHeight !== newHeight) {
7658            transitions.push(
7659            Transition.start(
7660            target,
7661            { height: newHeight },
7662            duration / 2 + transitionNodes.length * stagger,
7663            'ease'));
7664
7665
7666          }
7667
7668          Promise.all(transitions).then(() => {
7669            removeClass(target, clsEnter);
7670            if (index === transitionIndex(target)) {
7671              css(target, { height: '', alignContent: '' });
7672              css(nodes, { opacity: '' });
7673              delete target.dataset.transition;
7674            }
7675            resolve();
7676          });
7677        }));
7678
7679      });
7680
7681      return hasClass(target, clsLeave) ?
7682      waitTransitionend(target).then(enterFn) :
7683      hasClass(target, clsEnter) ?
7684      waitTransitionend(target).then(leaveFn).then(enterFn) :
7685      leaveFn().then(enterFn);
7686    }
7687
7688    function transitionIndex(target, next) {
7689      if (next) {
7690        target.dataset.transition = 1 + transitionIndex(target);
7691      }
7692
7693      return toNumber(target.dataset.transition) || 0;
7694    }
7695
7696    function waitTransitionend(target) {
7697      return Promise.all(
7698      children(target).
7699      filter(Transition.inProgress).
7700      map(
7701      (el) =>
7702      new Promise((resolve) => once(el, 'transitionend transitioncanceled', resolve))));
7703
7704
7705    }
7706
7707    function getTransitionNodes(target) {
7708      return getRows(children(target)).reduce(
7709      (nodes, row) =>
7710      nodes.concat(
7711      sortBy$1(
7712      row.filter((el) => isInView(el)),
7713      'offsetLeft')),
7714
7715
7716      []);
7717
7718    }
7719
7720    function slide (action, target, duration) {
7721      return new Promise((resolve) =>
7722      requestAnimationFrame(() => {
7723        let nodes = children(target);
7724
7725        // Get current state
7726        const currentProps = nodes.map((el) => getProps(el, true));
7727        const targetProps = css(target, ['height', 'padding']);
7728
7729        // Cancel previous animations
7730        Transition.cancel(target);
7731        nodes.forEach(Transition.cancel);
7732        reset(target);
7733
7734        // Adding, sorting, removing nodes
7735        action();
7736
7737        // Find new nodes
7738        nodes = nodes.concat(children(target).filter((el) => !includes(nodes, el)));
7739
7740        // Wait for update to propagate
7741        Promise.resolve().then(() => {
7742          // Force update
7743          fastdom.flush();
7744
7745          // Get new state
7746          const targetPropsTo = css(target, ['height', 'padding']);
7747          const [propsTo, propsFrom] = getTransitionProps(target, nodes, currentProps);
7748
7749          // Reset to previous state
7750          nodes.forEach((el, i) => propsFrom[i] && css(el, propsFrom[i]));
7751          css(target, { display: 'block', ...targetProps });
7752
7753          // Start transitions on next frame
7754          requestAnimationFrame(() => {
7755            const transitions = nodes.
7756            map(
7757            (el, i) =>
7758            parent(el) === target &&
7759            Transition.start(el, propsTo[i], duration, 'ease')).
7760
7761            concat(Transition.start(target, targetPropsTo, duration, 'ease'));
7762
7763            Promise.all(transitions).
7764            then(() => {
7765              nodes.forEach(
7766              (el, i) =>
7767              parent(el) === target &&
7768              css(el, 'display', propsTo[i].opacity === 0 ? 'none' : ''));
7769
7770              reset(target);
7771            }, noop).
7772            then(resolve);
7773          });
7774        });
7775      }));
7776
7777    }
7778
7779    function getProps(el, opacity) {
7780      const zIndex = css(el, 'zIndex');
7781
7782      return isVisible(el) ?
7783      {
7784        display: '',
7785        opacity: opacity ? css(el, 'opacity') : '0',
7786        pointerEvents: 'none',
7787        position: 'absolute',
7788        zIndex: zIndex === 'auto' ? index(el) : zIndex,
7789        ...getPositionWithMargin(el) } :
7790
7791      false;
7792    }
7793
7794    function getTransitionProps(target, nodes, currentProps) {
7795      const propsTo = nodes.map((el, i) =>
7796      parent(el) && i in currentProps ?
7797      currentProps[i] ?
7798      isVisible(el) ?
7799      getPositionWithMargin(el) :
7800      { opacity: 0 } :
7801      { opacity: isVisible(el) ? 1 : 0 } :
7802      false);
7803
7804
7805      const propsFrom = propsTo.map((props, i) => {
7806        const from = parent(nodes[i]) === target && (currentProps[i] || getProps(nodes[i]));
7807
7808        if (!from) {
7809          return false;
7810        }
7811
7812        if (!props) {
7813          delete from.opacity;
7814        } else if (!('opacity' in props)) {
7815          const { opacity } = from;
7816
7817          if (opacity % 1) {
7818            props.opacity = 1;
7819          } else {
7820            delete from.opacity;
7821          }
7822        }
7823
7824        return from;
7825      });
7826
7827      return [propsTo, propsFrom];
7828    }
7829
7830    function reset(el) {
7831      css(el.children, {
7832        height: '',
7833        left: '',
7834        opacity: '',
7835        pointerEvents: '',
7836        position: '',
7837        top: '',
7838        marginTop: '',
7839        marginLeft: '',
7840        transform: '',
7841        width: '',
7842        zIndex: '' });
7843
7844      css(el, { height: '', display: '', padding: '' });
7845    }
7846
7847    function getPositionWithMargin(el) {
7848      const { height, width } = offset(el);
7849      const { top, left } = position(el);
7850      const { marginLeft, marginTop } = css(el, ['marginTop', 'marginLeft']);
7851
7852      return { top, left, height, width, marginLeft, marginTop, transform: '' };
7853    }
7854
7855    var Animate = {
7856      props: {
7857        duration: Number,
7858        animation: Boolean },
7859
7860
7861      data: {
7862        duration: 150,
7863        animation: 'slide' },
7864
7865
7866      methods: {
7867        animate(action, target) {if (target === void 0) {target = this.$el;}
7868          const name = this.animation;
7869          const animationFn =
7870          name === 'fade' ?
7871          fade :
7872          name === 'delayed-fade' ?
7873          function () {for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}return fade(...args, 40);} :
7874          name ?
7875          slide :
7876          () => {
7877            action();
7878            return Promise.resolve();
7879          };
7880
7881          return animationFn(action, target, this.duration).then(
7882          () => this.$update(target, 'resize'),
7883          noop);
7884
7885        } } };
7886
7887    var filter = {
7888      mixins: [Animate],
7889
7890      args: 'target',
7891
7892      props: {
7893        target: Boolean,
7894        selActive: Boolean },
7895
7896
7897      data: {
7898        target: null,
7899        selActive: false,
7900        attrItem: 'uk-filter-control',
7901        cls: 'uk-active',
7902        duration: 250 },
7903
7904
7905      computed: {
7906        toggles: {
7907          get(_ref, $el) {let { attrItem } = _ref;
7908            return $$("[" + attrItem + "],[data-" + attrItem + "]", $el);
7909          },
7910
7911          watch() {
7912            this.updateState();
7913
7914            if (this.selActive !== false) {
7915              const actives = $$(this.selActive, this.$el);
7916              this.toggles.forEach((el) => toggleClass(el, this.cls, includes(actives, el)));
7917            }
7918          },
7919
7920          immediate: true },
7921
7922
7923        children: {
7924          get(_ref2, $el) {let { target } = _ref2;
7925            return $$(target + " > *", $el);
7926          },
7927
7928          watch(list, old) {
7929            if (old && !isEqualList(list, old)) {
7930              this.updateState();
7931            }
7932          },
7933
7934          immediate: true } },
7935
7936
7937
7938      events: [
7939      {
7940        name: 'click',
7941
7942        delegate() {
7943          return "[" + this.attrItem + "],[data-" + this.attrItem + "]";
7944        },
7945
7946        handler(e) {
7947          e.preventDefault();
7948          this.apply(e.current);
7949        } }],
7950
7951
7952
7953      methods: {
7954        apply(el) {
7955          const prevState = this.getState();
7956          const newState = mergeState(el, this.attrItem, this.getState());
7957
7958          if (!isEqualState(prevState, newState)) {
7959            this.setState(newState);
7960          }
7961        },
7962
7963        getState() {
7964          return this.toggles.
7965          filter((item) => hasClass(item, this.cls)).
7966          reduce((state, el) => mergeState(el, this.attrItem, state), {
7967            filter: { '': '' },
7968            sort: [] });
7969
7970        },
7971
7972        setState(state, animate) {if (animate === void 0) {animate = true;}
7973          state = { filter: { '': '' }, sort: [], ...state };
7974
7975          trigger(this.$el, 'beforeFilter', [this, state]);
7976
7977          this.toggles.forEach((el) =>
7978          toggleClass(el, this.cls, !!matchFilter(el, this.attrItem, state)));
7979
7980
7981          Promise.all(
7982          $$(this.target, this.$el).map((target) => {
7983            const filterFn = () => {
7984              applyState(state, target, children(target));
7985              this.$update(this.$el);
7986            };
7987            return animate ? this.animate(filterFn, target) : filterFn();
7988          })).
7989          then(() => trigger(this.$el, 'afterFilter', [this]));
7990        },
7991
7992        updateState() {
7993          fastdom.write(() => this.setState(this.getState(), false));
7994        } } };
7995
7996
7997
7998    function getFilter(el, attr) {
7999      return parseOptions(data(el, attr), ['filter']);
8000    }
8001
8002    function isEqualState(stateA, stateB) {
8003      return ['filter', 'sort'].every((prop) => isEqual(stateA[prop], stateB[prop]));
8004    }
8005
8006    function applyState(state, target, children) {
8007      const selector = getSelector(state);
8008
8009      children.forEach((el) => css(el, 'display', selector && !matches(el, selector) ? 'none' : ''));
8010
8011      const [sort, order] = state.sort;
8012
8013      if (sort) {
8014        const sorted = sortItems(children, sort, order);
8015        if (!isEqual(sorted, children)) {
8016          append(target, sorted);
8017        }
8018      }
8019    }
8020
8021    function mergeState(el, attr, state) {
8022      const filterBy = getFilter(el, attr);
8023      const { filter, group, sort, order = 'asc' } = filterBy;
8024
8025      if (filter || isUndefined(sort)) {
8026        if (group) {
8027          if (filter) {
8028            delete state.filter[''];
8029            state.filter[group] = filter;
8030          } else {
8031            delete state.filter[group];
8032
8033            if (isEmpty(state.filter) || '' in state.filter) {
8034              state.filter = { '': filter || '' };
8035            }
8036          }
8037        } else {
8038          state.filter = { '': filter || '' };
8039        }
8040      }
8041
8042      if (!isUndefined(sort)) {
8043        state.sort = [sort, order];
8044      }
8045
8046      return state;
8047    }
8048
8049    function matchFilter(
8050    el,
8051    attr, _ref3)
8052
8053    {let { filter: stateFilter = { '': '' }, sort: [stateSort, stateOrder] } = _ref3;
8054      const { filter = '', group = '', sort, order = 'asc' } = getFilter(el, attr);
8055
8056      return isUndefined(sort) ?
8057      group in stateFilter && filter === stateFilter[group] ||
8058      !filter && group && !(group in stateFilter) && !stateFilter[''] :
8059      stateSort === sort && stateOrder === order;
8060    }
8061
8062    function isEqualList(listA, listB) {
8063      return listA.length === listB.length && listA.every((el) => ~listB.indexOf(el));
8064    }
8065
8066    function getSelector(_ref4) {let { filter } = _ref4;
8067      let selector = '';
8068      each(filter, (value) => selector += value || '');
8069      return selector;
8070    }
8071
8072    function sortItems(nodes, sort, order) {
8073      return [...nodes].sort(
8074      (a, b) =>
8075      data(a, sort).localeCompare(data(b, sort), undefined, { numeric: true }) * (
8076      order === 'asc' || -1));
8077
8078    }
8079
8080    var Animations$2 = {
8081      slide: {
8082        show(dir) {
8083          return [{ transform: translate(dir * -100) }, { transform: translate() }];
8084        },
8085
8086        percent(current) {
8087          return translated(current);
8088        },
8089
8090        translate(percent, dir) {
8091          return [
8092          { transform: translate(dir * -100 * percent) },
8093          { transform: translate(dir * 100 * (1 - percent)) }];
8094
8095        } } };
8096
8097
8098
8099    function translated(el) {
8100      return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;
8101    }
8102
8103    function translate(value, unit) {if (value === void 0) {value = 0;}if (unit === void 0) {unit = '%';}
8104      value += value ? unit : '';
8105      return "translate3d(" + value + ", 0, 0)";
8106    }
8107
8108    function scale3d(value) {
8109      return "scale3d(" + value + ", " + value + ", 1)";
8110    }
8111
8112    var Animations$1 = {
8113      ...Animations$2,
8114      fade: {
8115        show() {
8116          return [{ opacity: 0 }, { opacity: 1 }];
8117        },
8118
8119        percent(current) {
8120          return 1 - css(current, 'opacity');
8121        },
8122
8123        translate(percent) {
8124          return [{ opacity: 1 - percent }, { opacity: percent }];
8125        } },
8126
8127
8128      scale: {
8129        show() {
8130          return [
8131          { opacity: 0, transform: scale3d(1 - 0.2) },
8132          { opacity: 1, transform: scale3d(1) }];
8133
8134        },
8135
8136        percent(current) {
8137          return 1 - css(current, 'opacity');
8138        },
8139
8140        translate(percent) {
8141          return [
8142          { opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },
8143          { opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) }];
8144
8145        } } };
8146
8147    function Transitioner$1(prev, next, dir, _ref) {let { animation, easing } = _ref;
8148      const { percent, translate, show = noop } = animation;
8149      const props = show(dir);
8150      const deferred = new Deferred();
8151
8152      return {
8153        dir,
8154
8155        show(duration, percent, linear) {if (percent === void 0) {percent = 0;}
8156          const timing = linear ? 'linear' : easing;
8157          duration -= Math.round(duration * clamp(percent, -1, 1));
8158
8159          this.translate(percent);
8160
8161          triggerUpdate$1(next, 'itemin', { percent, duration, timing, dir });
8162          triggerUpdate$1(prev, 'itemout', { percent: 1 - percent, duration, timing, dir });
8163
8164          Promise.all([
8165          Transition.start(next, props[1], duration, timing),
8166          Transition.start(prev, props[0], duration, timing)]).
8167          then(() => {
8168            this.reset();
8169            deferred.resolve();
8170          }, noop);
8171
8172          return deferred.promise;
8173        },
8174
8175        cancel() {
8176          Transition.cancel([next, prev]);
8177        },
8178
8179        reset() {
8180          for (const prop in props[0]) {
8181            css([next, prev], prop, '');
8182          }
8183        },
8184
8185        forward(duration, percent) {if (percent === void 0) {percent = this.percent();}
8186          Transition.cancel([next, prev]);
8187          return this.show(duration, percent, true);
8188        },
8189
8190        translate(percent) {
8191          this.reset();
8192
8193          const props = translate(percent, dir);
8194          css(next, props[1]);
8195          css(prev, props[0]);
8196          triggerUpdate$1(next, 'itemtranslatein', { percent, dir });
8197          triggerUpdate$1(prev, 'itemtranslateout', { percent: 1 - percent, dir });
8198        },
8199
8200        percent() {
8201          return percent(prev || next, next, dir);
8202        },
8203
8204        getDistance() {
8205          return prev == null ? void 0 : prev.offsetWidth;
8206        } };
8207
8208    }
8209
8210    function triggerUpdate$1(el, type, data) {
8211      trigger(el, createEvent(type, false, false, data));
8212    }
8213
8214    var SliderAutoplay = {
8215      props: {
8216        autoplay: Boolean,
8217        autoplayInterval: Number,
8218        pauseOnHover: Boolean },
8219
8220
8221      data: {
8222        autoplay: false,
8223        autoplayInterval: 7000,
8224        pauseOnHover: true },
8225
8226
8227      connected() {
8228        this.autoplay && this.startAutoplay();
8229      },
8230
8231      disconnected() {
8232        this.stopAutoplay();
8233      },
8234
8235      update() {
8236        attr(this.slides, 'tabindex', '-1');
8237      },
8238
8239      events: [
8240      {
8241        name: 'visibilitychange',
8242
8243        el() {
8244          return document;
8245        },
8246
8247        filter() {
8248          return this.autoplay;
8249        },
8250
8251        handler() {
8252          if (document.hidden) {
8253            this.stopAutoplay();
8254          } else {
8255            this.startAutoplay();
8256          }
8257        } }],
8258
8259
8260
8261      methods: {
8262        startAutoplay() {
8263          this.stopAutoplay();
8264
8265          this.interval = setInterval(
8266          () =>
8267          (!this.draggable || !$(':focus', this.$el)) && (
8268          !this.pauseOnHover || !matches(this.$el, ':hover')) &&
8269          !this.stack.length &&
8270          this.show('next'),
8271          this.autoplayInterval);
8272
8273        },
8274
8275        stopAutoplay() {
8276          this.interval && clearInterval(this.interval);
8277        } } };
8278
8279    var SliderDrag = {
8280      props: {
8281        draggable: Boolean },
8282
8283
8284      data: {
8285        draggable: true,
8286        threshold: 10 },
8287
8288
8289      created() {
8290        for (const key of ['start', 'move', 'end']) {
8291          const fn = this[key];
8292          this[key] = (e) => {
8293            const pos = getEventPos(e).x * (isRtl ? -1 : 1);
8294
8295            this.prevPos = pos === this.pos ? this.prevPos : this.pos;
8296            this.pos = pos;
8297
8298            fn(e);
8299          };
8300        }
8301      },
8302
8303      events: [
8304      {
8305        name: pointerDown,
8306
8307        delegate() {
8308          return this.selSlides;
8309        },
8310
8311        handler(e) {
8312          if (
8313          !this.draggable ||
8314          !isTouch(e) && hasTextNodesOnly(e.target) ||
8315          closest(e.target, selInput) ||
8316          e.button > 0 ||
8317          this.length < 2)
8318          {
8319            return;
8320          }
8321
8322          this.start(e);
8323        } },
8324
8325
8326      {
8327        name: 'dragstart',
8328
8329        handler(e) {
8330          e.preventDefault();
8331        } }],
8332
8333
8334
8335      methods: {
8336        start() {
8337          this.drag = this.pos;
8338
8339          if (this._transitioner) {
8340            this.percent = this._transitioner.percent();
8341            this.drag += this._transitioner.getDistance() * this.percent * this.dir;
8342
8343            this._transitioner.cancel();
8344            this._transitioner.translate(this.percent);
8345
8346            this.dragging = true;
8347
8348            this.stack = [];
8349          } else {
8350            this.prevIndex = this.index;
8351          }
8352
8353          on(document, pointerMove, this.move, { passive: false });
8354
8355          // 'input' event is triggered by video controls
8356          on(document, pointerUp + " " + pointerCancel + " input", this.end, true);
8357
8358          css(this.list, 'userSelect', 'none');
8359        },
8360
8361        move(e) {
8362          const distance = this.pos - this.drag;
8363
8364          if (
8365          distance === 0 ||
8366          this.prevPos === this.pos ||
8367          !this.dragging && Math.abs(distance) < this.threshold)
8368          {
8369            return;
8370          }
8371
8372          // prevent click event
8373          css(this.list, 'pointerEvents', 'none');
8374
8375          e.cancelable && e.preventDefault();
8376
8377          this.dragging = true;
8378          this.dir = distance < 0 ? 1 : -1;
8379
8380          const { slides } = this;
8381          let { prevIndex } = this;
8382          let dis = Math.abs(distance);
8383          let nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);
8384          let width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;
8385
8386          while (nextIndex !== prevIndex && dis > width) {
8387            this.drag -= width * this.dir;
8388
8389            prevIndex = nextIndex;
8390            dis -= width;
8391            nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);
8392            width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;
8393          }
8394
8395          this.percent = dis / width;
8396
8397          const prev = slides[prevIndex];
8398          const next = slides[nextIndex];
8399          const changed = this.index !== nextIndex;
8400          const edge = prevIndex === nextIndex;
8401
8402          let itemShown;
8403
8404          [this.index, this.prevIndex].
8405          filter((i) => !includes([nextIndex, prevIndex], i)).
8406          forEach((i) => {
8407            trigger(slides[i], 'itemhidden', [this]);
8408
8409            if (edge) {
8410              itemShown = true;
8411              this.prevIndex = prevIndex;
8412            }
8413          });
8414
8415          if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {
8416            trigger(slides[this.index], 'itemshown', [this]);
8417          }
8418
8419          if (changed) {
8420            this.prevIndex = prevIndex;
8421            this.index = nextIndex;
8422
8423            !edge && trigger(prev, 'beforeitemhide', [this]);
8424            trigger(next, 'beforeitemshow', [this]);
8425          }
8426
8427          this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);
8428
8429          if (changed) {
8430            !edge && trigger(prev, 'itemhide', [this]);
8431            trigger(next, 'itemshow', [this]);
8432          }
8433        },
8434
8435        end() {
8436          off(document, pointerMove, this.move, { passive: false });
8437          off(document, pointerUp + " " + pointerCancel + " input", this.end, true);
8438
8439          if (this.dragging) {
8440            this.dragging = null;
8441
8442            if (this.index === this.prevIndex) {
8443              this.percent = 1 - this.percent;
8444              this.dir *= -1;
8445              this._show(false, this.index, true);
8446              this._transitioner = null;
8447            } else {
8448              const dirChange =
8449              (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 ===
8450              this.prevPos > this.pos;
8451              this.index = dirChange ? this.index : this.prevIndex;
8452
8453              if (dirChange) {
8454                this.percent = 1 - this.percent;
8455              }
8456
8457              this.show(
8458              this.dir > 0 && !dirChange || this.dir < 0 && dirChange ?
8459              'next' :
8460              'previous',
8461              true);
8462
8463            }
8464          }
8465
8466          css(this.list, { userSelect: '', pointerEvents: '' });
8467
8468          this.drag = this.percent = null;
8469        } } };
8470
8471
8472
8473    function hasTextNodesOnly(el) {
8474      return !el.children.length && el.childNodes.length;
8475    }
8476
8477    var SliderNav = {
8478      data: {
8479        selNav: false },
8480
8481
8482      computed: {
8483        nav(_ref, $el) {let { selNav } = _ref;
8484          return $(selNav, $el);
8485        },
8486
8487        selNavItem(_ref2) {let { attrItem } = _ref2;
8488          return "[" + attrItem + "],[data-" + attrItem + "]";
8489        },
8490
8491        navItems(_, $el) {
8492          return $$(this.selNavItem, $el);
8493        } },
8494
8495
8496      update: {
8497        write() {
8498          if (this.nav && this.length !== this.nav.children.length) {
8499            html(
8500            this.nav,
8501            this.slides.
8502            map((_, i) => "<li " + this.attrItem + "=\"" + i + "\"><a href></a></li>").
8503            join(''));
8504
8505          }
8506
8507          this.navItems.concat(this.nav).forEach((el) => el && (el.hidden = !this.maxIndex));
8508
8509          this.updateNav();
8510        },
8511
8512        events: ['resize'] },
8513
8514
8515      events: [
8516      {
8517        name: 'click',
8518
8519        delegate() {
8520          return this.selNavItem;
8521        },
8522
8523        handler(e) {
8524          e.preventDefault();
8525          this.show(data(e.current, this.attrItem));
8526        } },
8527
8528
8529      {
8530        name: 'itemshow',
8531        handler: 'updateNav' }],
8532
8533
8534
8535      methods: {
8536        updateNav() {
8537          const i = this.getValidIndex();
8538          for (const el of this.navItems) {
8539            const cmd = data(el, this.attrItem);
8540
8541            toggleClass(el, this.clsActive, toNumber(cmd) === i);
8542            toggleClass(
8543            el,
8544            'uk-invisible',
8545            this.finite && (
8546            cmd === 'previous' && i === 0 || cmd === 'next' && i >= this.maxIndex));
8547
8548          }
8549        } } };
8550
8551    var Slider = {
8552      mixins: [SliderAutoplay, SliderDrag, SliderNav, Resize],
8553
8554      props: {
8555        clsActivated: Boolean,
8556        easing: String,
8557        index: Number,
8558        finite: Boolean,
8559        velocity: Number,
8560        selSlides: String },
8561
8562
8563      data: () => ({
8564        easing: 'ease',
8565        finite: false,
8566        velocity: 1,
8567        index: 0,
8568        prevIndex: -1,
8569        stack: [],
8570        percent: 0,
8571        clsActive: 'uk-active',
8572        clsActivated: false,
8573        Transitioner: false,
8574        transitionOptions: {} }),
8575
8576
8577      connected() {
8578        this.prevIndex = -1;
8579        this.index = this.getValidIndex(this.$props.index);
8580        this.stack = [];
8581      },
8582
8583      disconnected() {
8584        removeClass(this.slides, this.clsActive);
8585      },
8586
8587      computed: {
8588        duration(_ref, $el) {let { velocity } = _ref;
8589          return speedUp($el.offsetWidth / velocity);
8590        },
8591
8592        list(_ref2, $el) {let { selList } = _ref2;
8593          return $(selList, $el);
8594        },
8595
8596        maxIndex() {
8597          return this.length - 1;
8598        },
8599
8600        selSlides(_ref3) {let { selList, selSlides } = _ref3;
8601          return selList + " " + (selSlides || '> *');
8602        },
8603
8604        slides: {
8605          get() {
8606            return $$(this.selSlides, this.$el);
8607          },
8608
8609          watch() {
8610            this.$reset();
8611          } },
8612
8613
8614        length() {
8615          return this.slides.length;
8616        } },
8617
8618
8619      methods: {
8620        show(index, force) {if (force === void 0) {force = false;}
8621          if (this.dragging || !this.length) {
8622            return;
8623          }
8624
8625          const { stack } = this;
8626          const queueIndex = force ? 0 : stack.length;
8627          const reset = () => {
8628            stack.splice(queueIndex, 1);
8629
8630            if (stack.length) {
8631              this.show(stack.shift(), true);
8632            }
8633          };
8634
8635          stack[force ? 'unshift' : 'push'](index);
8636
8637          if (!force && stack.length > 1) {
8638            if (stack.length === 2) {
8639              this._transitioner.forward(Math.min(this.duration, 200));
8640            }
8641
8642            return;
8643          }
8644
8645          const prevIndex = this.getIndex(this.index);
8646          const prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];
8647          const nextIndex = this.getIndex(index, this.index);
8648          const next = this.slides[nextIndex];
8649
8650          if (prev === next) {
8651            reset();
8652            return;
8653          }
8654
8655          this.dir = getDirection(index, prevIndex);
8656          this.prevIndex = prevIndex;
8657          this.index = nextIndex;
8658
8659          if (
8660          prev && !trigger(prev, 'beforeitemhide', [this]) ||
8661          !trigger(next, 'beforeitemshow', [this, prev]))
8662          {
8663            this.index = this.prevIndex;
8664            reset();
8665            return;
8666          }
8667
8668          const promise = this._show(prev, next, force).then(() => {
8669            prev && trigger(prev, 'itemhidden', [this]);
8670            trigger(next, 'itemshown', [this]);
8671
8672            return new Promise((resolve) => {
8673              fastdom.write(() => {
8674                stack.shift();
8675                if (stack.length) {
8676                  this.show(stack.shift(), true);
8677                } else {
8678                  this._transitioner = null;
8679                }
8680                resolve();
8681              });
8682            });
8683          });
8684
8685          prev && trigger(prev, 'itemhide', [this]);
8686          trigger(next, 'itemshow', [this]);
8687
8688          return promise;
8689        },
8690
8691        getIndex(index, prev) {if (index === void 0) {index = this.index;}if (prev === void 0) {prev = this.index;}
8692          return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);
8693        },
8694
8695        getValidIndex(index, prevIndex) {if (index === void 0) {index = this.index;}if (prevIndex === void 0) {prevIndex = this.prevIndex;}
8696          return this.getIndex(index, prevIndex);
8697        },
8698
8699        _show(prev, next, force) {
8700          this._transitioner = this._getTransitioner(prev, next, this.dir, {
8701            easing: force ?
8702            next.offsetWidth < 600 ?
8703            'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */ :
8704            'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */ :
8705            this.easing,
8706            ...this.transitionOptions });
8707
8708
8709          if (!force && !prev) {
8710            this._translate(1);
8711            return Promise.resolve();
8712          }
8713
8714          const { length } = this.stack;
8715          return this._transitioner[length > 1 ? 'forward' : 'show'](
8716          length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration,
8717          this.percent);
8718
8719        },
8720
8721        _getDistance(prev, next) {
8722          return this._getTransitioner(prev, prev !== next && next).getDistance();
8723        },
8724
8725        _translate(percent, prev, next) {if (prev === void 0) {prev = this.prevIndex;}if (next === void 0) {next = this.index;}
8726          const transitioner = this._getTransitioner(prev !== next ? prev : false, next);
8727          transitioner.translate(percent);
8728          return transitioner;
8729        },
8730
8731        _getTransitioner(
8732        prev,
8733        next,
8734        dir,
8735        options)
8736        {if (prev === void 0) {prev = this.prevIndex;}if (next === void 0) {next = this.index;}if (dir === void 0) {dir = this.dir || 1;}if (options === void 0) {options = this.transitionOptions;}
8737          return new this.Transitioner(
8738          isNumber(prev) ? this.slides[prev] : prev,
8739          isNumber(next) ? this.slides[next] : next,
8740          dir * (isRtl ? -1 : 1),
8741          options);
8742
8743        } } };
8744
8745
8746
8747    function getDirection(index, prevIndex) {
8748      return index === 'next' ? 1 : index === 'previous' ? -1 : index < prevIndex ? -1 : 1;
8749    }
8750
8751    function speedUp(x) {
8752      return 0.5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)
8753    }
8754
8755    var Slideshow = {
8756      mixins: [Slider],
8757
8758      props: {
8759        animation: String },
8760
8761
8762      data: {
8763        animation: 'slide',
8764        clsActivated: 'uk-transition-active',
8765        Animations: Animations$2,
8766        Transitioner: Transitioner$1 },
8767
8768
8769      computed: {
8770        animation(_ref) {let { animation, Animations } = _ref;
8771          return { ...(Animations[animation] || Animations.slide), name: animation };
8772        },
8773
8774        transitionOptions() {
8775          return { animation: this.animation };
8776        } },
8777
8778
8779      events: {
8780        beforeitemshow(_ref2) {let { target } = _ref2;
8781          addClass(target, this.clsActive);
8782        },
8783
8784        itemshown(_ref3) {let { target } = _ref3;
8785          addClass(target, this.clsActivated);
8786        },
8787
8788        itemhidden(_ref4) {let { target } = _ref4;
8789          removeClass(target, this.clsActive, this.clsActivated);
8790        } } };
8791
8792    var LightboxPanel = {
8793      mixins: [Container, Modal, Togglable, Slideshow],
8794
8795      functional: true,
8796
8797      props: {
8798        delayControls: Number,
8799        preload: Number,
8800        videoAutoplay: Boolean,
8801        template: String },
8802
8803
8804      data: () => ({
8805        preload: 1,
8806        videoAutoplay: false,
8807        delayControls: 3000,
8808        items: [],
8809        cls: 'uk-open',
8810        clsPage: 'uk-lightbox-page',
8811        selList: '.uk-lightbox-items',
8812        attrItem: 'uk-lightbox-item',
8813        selClose: '.uk-close-large',
8814        selCaption: '.uk-lightbox-caption',
8815        pauseOnHover: false,
8816        velocity: 2,
8817        Animations: Animations$1,
8818        template: "<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-sli
8818de-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\"></div> </div>" }),
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829      created() {
8830        const $el = $(this.template);
8831        const list = $(this.selList, $el);
8832        this.items.forEach(() => append(list, '<li>'));
8833
8834        this.$mount(append(this.container, $el));
8835      },
8836
8837      computed: {
8838        caption(_ref, $el) {let { selCaption } = _ref;
8839          return $(selCaption, $el);
8840        } },
8841
8842
8843      events: [
8844      {
8845        name: pointerMove + " " + pointerDown + " keydown",
8846
8847        handler: 'showControls' },
8848
8849
8850      {
8851        name: 'click',
8852
8853        self: true,
8854
8855        delegate() {
8856          return this.selSlides;
8857        },
8858
8859        handler(e) {
8860          if (e.defaultPrevented) {
8861            return;
8862          }
8863
8864          this.hide();
8865        } },
8866
8867
8868      {
8869        name: 'shown',
8870
8871        self: true,
8872
8873        handler() {
8874          this.showControls();
8875        } },
8876
8877
8878      {
8879        name: 'hide',
8880
8881        self: true,
8882
8883        handler() {
8884          this.hideControls();
8885
8886          removeClass(this.slides, this.clsActive);
8887          Transition.stop(this.slides);
8888        } },
8889
8890
8891      {
8892        name: 'hidden',
8893
8894        self: true,
8895
8896        handler() {
8897          this.$destroy(true);
8898        } },
8899
8900
8901      {
8902        name: 'keyup',
8903
8904        el() {
8905          return document;
8906        },
8907
8908        handler(e) {
8909          if (!this.isToggled(this.$el) || !this.draggable) {
8910            return;
8911          }
8912
8913          switch (e.keyCode) {
8914            case 37:
8915              this.show('previous');
8916              break;
8917            case 39:
8918              this.show('next');
8919              break;}
8920
8921        } },
8922
8923
8924      {
8925        name: 'beforeitemshow',
8926
8927        handler(e) {
8928          if (this.isToggled()) {
8929            return;
8930          }
8931
8932          this.draggable = false;
8933
8934          e.preventDefault();
8935
8936          this.toggleElement(this.$el, true, false);
8937
8938          this.animation = Animations$1['scale'];
8939          removeClass(e.target, this.clsActive);
8940          this.stack.splice(1, 0, this.index);
8941        } },
8942
8943
8944      {
8945        name: 'itemshow',
8946
8947        handler() {
8948          html(this.caption, this.getItem().caption || '');
8949
8950          for (let j = -this.preload; j <= this.preload; j++) {
8951            this.loadItem(this.index + j);
8952          }
8953        } },
8954
8955
8956      {
8957        name: 'itemshown',
8958
8959        handler() {
8960          this.draggable = this.$props.draggable;
8961        } },
8962
8963
8964      {
8965        name: 'itemload',
8966
8967        async handler(_, item) {
8968          const { source: src, type, alt = '', poster, attrs = {} } = item;
8969
8970          this.setItem(item, '<span uk-spinner></span>');
8971
8972          if (!src) {
8973            return;
8974          }
8975
8976          let matches;
8977          const iframeAttrs = {
8978            frameborder: '0',
8979            allow: 'autoplay',
8980            allowfullscreen: '',
8981            style: 'max-width: 100%; box-sizing: border-box;',
8982            'uk-responsive': '',
8983            'uk-video': "" + this.videoAutoplay };
8984
8985
8986          // Image
8987          if (type === 'image' || src.match(/\.(avif|jpe?g|a?png|gif|svg|webp)($|\?)/i)) {
8988            try {
8989              const { width, height } = await getImage(src, attrs.srcset, attrs.size);
8990              this.setItem(item, createEl('img', { src, width, height, alt, ...attrs }));
8991            } catch (e) {
8992              this.setError(item);
8993            }
8994
8995            // Video
8996          } else if (type === 'video' || src.match(/\.(mp4|webm|ogv)($|\?)/i)) {
8997            const video = createEl('video', {
8998              src,
8999              poster,
9000              controls: '',
9001              playsinline: '',
9002              'uk-video': "" + this.videoAutoplay,
9003              ...attrs });
9004
9005
9006            on(video, 'loadedmetadata', () => {
9007              attr(video, { width: video.videoWidth, height: video.videoHeight });
9008              this.setItem(item, video);
9009            });
9010            on(video, 'error', () => this.setError(item));
9011
9012            // Iframe
9013          } else if (type === 'iframe' || src.match(/\.(html|php)($|\?)/i)) {
9014            this.setItem(
9015            item,
9016            createEl('iframe', {
9017              src,
9018              frameborder: '0',
9019              allowfullscreen: '',
9020              class: 'uk-lightbox-iframe',
9021              ...attrs }));
9022
9023
9024
9025            // YouTube
9026          } else if (
9027          matches = src.match(
9028          /\/\/(?:.*?youtube(-nocookie)?\..*?[?&]v=|youtu\.be\/)([\w-]{11})[&?]?(.*)?/))
9029
9030          {
9031            this.setItem(
9032            item,
9033            createEl('iframe', {
9034              src: "https://www.youtube" + (matches[1] || '') + ".com/embed/" + matches[2] + (
9035              matches[3] ? "?" + matches[3] : ''),
9036
9037              width: 1920,
9038              height: 1080,
9039              ...iframeAttrs,
9040              ...attrs }));
9041
9042
9043
9044            // Vimeo
9045          } else if (matches = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/)) {
9046            try {
9047              const { height, width } = await (
9048              await fetch("https://vimeo.com/api/oembed.json?maxwidth=1920&url=" +
9049              encodeURI(
9050              src),
9051
9052              {
9053                credentials: 'omit' })).
9054
9055
9056              json();
9057
9058              this.setItem(
9059              item,
9060              createEl('iframe', {
9061                src: "https://player.vimeo.com/video/" + matches[1] + (
9062                matches[2] ? "?" + matches[2] : ''),
9063
9064                width,
9065                height,
9066                ...iframeAttrs,
9067                ...attrs }));
9068
9069
9070            } catch (e) {
9071              this.setError(item);
9072            }
9073          }
9074        } }],
9075
9076
9077
9078      methods: {
9079        loadItem(index) {if (index === void 0) {index = this.index;}
9080          const item = this.getItem(index);
9081
9082          if (!this.getSlide(item).childElementCount) {
9083            trigger(this.$el, 'itemload', [item]);
9084          }
9085        },
9086
9087        getItem(index) {if (index === void 0) {index = this.index;}
9088          return this.items[getIndex(index, this.slides)];
9089        },
9090
9091        setItem(item, content) {
9092          trigger(this.$el, 'itemloaded', [this, html(this.getSlide(item), content)]);
9093        },
9094
9095        getSlide(item) {
9096          return this.slides[this.items.indexOf(item)];
9097        },
9098
9099        setError(item) {
9100          this.setItem(item, '<span uk-icon="icon: bolt; ratio: 2"></span>');
9101        },
9102
9103        showControls() {
9104          clearTimeout(this.controlsTimer);
9105          this.controlsTimer = setTimeout(this.hideControls, this.delayControls);
9106
9107          addClass(this.$el, 'uk-active', 'uk-transition-active');
9108        },
9109
9110        hideControls() {
9111          removeClass(this.$el, 'uk-active', 'uk-transition-active');
9112        } } };
9113
9114
9115
9116    function createEl(tag, attrs) {
9117      const el = fragment("<" + tag + ">");
9118      attr(el, attrs);
9119      return el;
9120    }
9121
9122    var lightbox = {
9123      install: install$1,
9124
9125      props: { toggle: String },
9126
9127      data: { toggle: 'a' },
9128
9129      computed: {
9130        toggles: {
9131          get(_ref, $el) {let { toggle } = _ref;
9132            return $$(toggle, $el);
9133          },
9134
9135          watch() {
9136            this.hide();
9137          } } },
9138
9139
9140
9141      disconnected() {
9142        this.hide();
9143      },
9144
9145      events: [
9146      {
9147        name: 'click',
9148
9149        delegate() {
9150          return this.toggle + ":not(.uk-disabled)";
9151        },
9152
9153        handler(e) {
9154          e.preventDefault();
9155          this.show(e.current);
9156        } }],
9157
9158
9159
9160      methods: {
9161        show(index) {
9162          const items = uniqueBy(this.toggles.map(toItem), 'source');
9163
9164          if (isElement(index)) {
9165            const { source }
9165 = toItem(index);
9166            index = findIndex(items, (_ref2) => {let { source: src } = _ref2;return source === src;});
9167          }
9168
9169          this.panel = this.panel || this.$create('lightboxPanel', { ...this.$props, items });
9170
9171          on(this.panel.$el, 'hidden', () => this.panel = false);
9172
9173          return this.panel.show(index);
9174        },
9175
9176        hide() {var _this$panel;
9177          return (_this$panel = this.panel) == null ? void 0 : _this$panel.hide();
9178        } } };
9179
9180
9181
9182    function install$1(UIkit, Lightbox) {
9183      if (!UIkit.lightboxPanel) {
9184        UIkit.component('lightboxPanel', LightboxPanel);
9185      }
9186
9187      assign(Lightbox.props, UIkit.component('lightboxPanel').options.props);
9188    }
9189
9190    function toItem(el) {
9191      const item = {};
9192
9193      for (const attr of ['href', 'caption', 'type', 'poster', 'alt', 'attrs']) {
9194        item[attr === 'href' ? 'source' : attr] = data(el, attr);
9195      }
9196
9197      item.attrs = parseOptions(item.attrs);
9198
9199      return item;
9200    }
9201
9202    var notification = {
9203      mixins: [Container],
9204
9205      functional: true,
9206
9207      args: ['message', 'status'],
9208
9209      data: {
9210        message: '',
9211        status: '',
9212        timeout: 5000,
9213        group: null,
9214        pos: 'top-center',
9215        clsContainer: 'uk-notification',
9216        clsClose: 'uk-notification-close',
9217        clsMsg: 'uk-notification-message' },
9218
9219
9220      install,
9221
9222      computed: {
9223        marginProp(_ref) {let { pos } = _ref;
9224          return "margin" + (startsWith(pos, 'top') ? 'Top' : 'Bottom');
9225        },
9226
9227        startProps() {
9228          return { opacity: 0, [this.marginProp]: -this.$el.offsetHeight };
9229        } },
9230
9231
9232      created() {
9233        const container =
9234        $("." + this.clsContainer + "-" + this.pos, this.container) ||
9235        append(
9236        this.container, "<div class=\"" +
9237        this.clsContainer + " " + this.clsContainer + "-" + this.pos + "\" style=\"display: block\"></div>");
9238
9239
9240        this.$mount(
9241        append(
9242        container, "<div class=\"" +
9243        this.clsMsg + (this.status ? " " + this.clsMsg + "-" + this.status : '') + "\"> <a href class=\"" +
9244        this.clsClose + "\" data-uk-close></a> <div>" +
9245        this.message + "</div> </div>"));
9246
9247
9248
9249      },
9250
9251      async connected() {
9252        const margin = toFloat(css(this.$el, this.marginProp));
9253        await Transition.start(css(this.$el, this.startProps), {
9254          opacity: 1,
9255          [this.marginProp]: margin });
9256
9257
9258        if (this.timeout) {
9259          this.timer = setTimeout(this.close, this.timeout);
9260        }
9261      },
9262
9263      events: {
9264        click(e) {
9265          if (closest(e.target, 'a[href="#"],a[href=""]')) {
9266            e.preventDefault();
9267          }
9268          this.close();
9269        },
9270
9271        [pointerEnter]() {
9272          if (this.timer) {
9273            clearTimeout(this.timer);
9274          }
9275        },
9276
9277        [pointerLeave]() {
9278          if (this.timeout) {
9279            this.timer = setTimeout(this.close, this.timeout);
9280          }
9281        } },
9282
9283
9284      methods: {
9285        async close(immediate) {
9286          const removeFn = (el) => {
9287            const container = parent(el);
9288
9289            trigger(el, 'close', [this]);
9290            remove$1(el);
9291
9292            if (!(container != null && container.hasChildNodes())) {
9293              remove$1(container);
9294            }
9295          };
9296
9297          if (this.timer) {
9298            clearTimeout(this.timer);
9299          }
9300
9301          if (!immediate) {
9302            await Transition.start(this.$el, this.startProps);
9303          }
9304
9305          removeFn(this.$el);
9306        } } };
9307
9308
9309
9310    function install(UIkit) {
9311      UIkit.notification.closeAll = function (group, immediate) {
9312        apply(document.body, (el) => {
9313          const notification = UIkit.getComponent(el, 'notification');
9314          if (notification && (!group || group === notification.group)) {
9315            notification.close(immediate);
9316          }
9317        });
9318      };
9319    }
9320
9321    const props = {
9322      x: transformFn,
9323      y: transformFn,
9324      rotate: transformFn,
9325      scale: transformFn,
9326      color: colorFn,
9327      backgroundColor: colorFn,
9328      borderColor: colorFn,
9329      blur: filterFn,
9330      hue: filterFn,
9331      fopacity: filterFn,
9332      grayscale: filterFn,
9333      invert: filterFn,
9334      saturate: filterFn,
9335      sepia: filterFn,
9336      opacity: cssPropFn,
9337      stroke: strokeFn,
9338      bgx: backgroundFn,
9339      bgy: backgroundFn };
9340
9341
9342    const { keys } = Object;
9343
9344    var Parallax = {
9345      mixins: [Media],
9346
9347      props: fillObject(keys(props), 'list'),
9348
9349      data: fillObject(keys(props), undefined),
9350
9351      computed: {
9352        props(properties, $el) {
9353          return keys(props).reduce((result, prop) => {
9354            if (!isUndefined(properties[prop])) {
9355              result[prop] = props[prop](prop, $el, properties[prop].slice());
9356            }
9357            return result;
9358          }, {});
9359        } },
9360
9361
9362      events: {
9363        load() {
9364          this.$emit();
9365        } },
9366
9367
9368      methods: {
9369        reset() {
9370          each(this.getCss(0), (_, prop) => css(this.$el, prop, ''));
9371        },
9372
9373        getCss(percent) {
9374          const css = { transform: '', filter: '' };
9375          for (const prop in this.props) {
9376            this.props[prop](css, percent);
9377          }
9378          return css;
9379        } } };
9380
9381
9382
9383    function transformFn(prop, el, stops) {
9384      const unit = getUnit(stops) || { x: 'px', y: 'px', rotate: 'deg' }[prop] || '';
9385      let transformFn;
9386
9387      if (prop === 'x' || prop === 'y') {
9388        prop = "translate" + ucfirst(prop);
9389        transformFn = (stop) => toFloat(toFloat(stop).toFixed(unit === 'px' ? 0 : 6));
9390      }
9391
9392      if (stops.length === 1) {
9393        stops.unshift(prop === 'scale' ? 1 : 0);
9394      }
9395
9396      stops = parseStops(stops, transformFn);
9397
9398      return (css, percent) => {
9399        css.transform += " " + prop + "(" + getValue(stops, percent) + unit + ")";
9400      };
9401    }
9402
9403    function colorFn(prop, el, stops) {
9404      if (stops.length === 1) {
9405        stops.unshift(getCssValue(el, prop, ''));
9406      }
9407
9408      stops = parseStops(stops, (stop) => parseColor(el, stop));
9409
9410      return (css, percent) => {
9411        const [start, end, p] = getStop(stops, percent);
9412        const value = start.
9413        map((value, i) => {
9414          value += p * (end[i] - value);
9415          return i === 3 ? toFloat(value) : parseInt(value, 10);
9416        }).
9417        join(',');
9418        css[prop] = "rgba(" + value + ")";
9419      };
9420    }
9421
9422    function parseColor(el, color) {
9423      return getCssValue(el, 'color', color).
9424      split(/[(),]/g).
9425      slice(1, -1).
9426      concat(1).
9427      slice(0, 4).
9428      map(toFloat);
9429    }
9430
9431    function filterFn(prop, el, stops) {
9432      if (stops.length === 1) {
9433        stops.unshift(0);
9434      }
9435
9436      const unit = getUnit(stops) || { blur: 'px', hue: 'deg' }[prop] || '%';
9437      prop = { fopacity: 'opacity', hue: 'hue-rotate' }[prop] || prop;
9438      stops = parseStops(stops);
9439
9440      return (css, percent) => {
9441        const value = getValue(stops, percent);
9442        css.filter += " " + prop + "(" + (value + unit) + ")";
9443      };
9444    }
9445
9446    function cssPropFn(prop, el, stops) {
9447      if (stops.length === 1) {
9448        stops.unshift(getCssValue(el, prop, ''));
9449      }
9450
9451      stops = parseStops(stops);
9452
9453      return (css, percent) => {
9454        css[prop] = getValue(stops, percent);
9455      };
9456    }
9457
9458    function strokeFn(prop, el, stops) {
9459      if (stops.length === 1) {
9460        stops.unshift(0);
9461      }
9462
9463      const unit = getUnit(stops);
9464      const length = getMaxPathLength(el);
9465      stops = parseStops(stops.reverse(), (stop) => {
9466        stop = toFloat(stop);
9467        return unit === '%' ? stop * length / 100 : stop;
9468      });
9469
9470      if (!stops.some((_ref) => {let [value] = _ref;return value;})) {
9471        return noop;
9472      }
9473
9474      css(el, 'strokeDasharray', length);
9475
9476      return (css, percent) => {
9477        css.strokeDashoffset = getValue(stops, percent);
9478      };
9479    }
9480
9481    function backgroundFn(prop, el, stops) {
9482      if (stops.length === 1) {
9483        stops.unshift(0);
9484      }
9485
9486      prop = prop.substr(-1);
9487      const attr = prop === 'y' ? 'height' : 'width';
9488      stops = parseStops(stops, (stop) => toPx(stop, attr, el));
9489
9490      const bgPos = getCssValue(el, "background-position-" + prop, '');
9491
9492      return getCssValue(el, 'backgroundSize', '') === 'cover' ?
9493      backgroundCoverFn(prop, el, stops, bgPos, attr) :
9494      setBackgroundPosFn(prop, stops, bgPos);
9495    }
9496
9497    function backgroundCoverFn(prop, el, stops, bgPos, attr) {
9498      const dimImage = getBackgroundImageDimensions(el);
9499
9500      if (!dimImage.width) {
9501        return noop;
9502      }
9503
9504      const values = stops.map((_ref2) => {let [value] = _ref2;return value;});
9505      const min = Math.min(...values);
9506      const max = Math.max(...values);
9507      const down = values.indexOf(min) < values.indexOf(max);
9508
9509      const diff = max - min;
9510      let pos = (down ? -diff : 0) - (down ? min : max);
9511
9512      const dimEl = {
9513        width: el.offsetWidth,
9514        height: el.offsetHeight };
9515
9516
9517      const baseDim = Dimensions.cover(dimImage, dimEl);
9518      const span = baseDim[attr] - dimEl[attr];
9519
9520      if (span < diff) {
9521        dimEl[attr] = baseDim[attr] + diff - span;
9522      } else if (span > diff) {
9523        const posPercentage = dimEl[attr] / toPx(bgPos, attr, el, true);
9524
9525        if (posPercentage) {
9526          pos -= (span - diff) / posPercentage;
9527        }
9528      }
9529
9530      const dim = Dimensions.cover(dimImage, dimEl);
9531
9532      const fn = setBackgroundPosFn(prop, stops, pos + "px");
9533      return (css, percent) => {
9534        fn(css, percent);
9535        css.backgroundSize = dim.width + "px " + dim.height + "px";
9536        css.backgroundRepeat = 'no-repeat';
9537      };
9538    }
9539
9540    function setBackgroundPosFn(prop, stops, pos) {
9541      return function (css, percent) {
9542        css["background-position-" + prop] = "calc(" + pos + " + " + getValue(stops, percent) + "px)";
9543      };
9544    }
9545
9546    const dimensions = {};
9547    function getBackgroundImageDimensions(el) {
9548      const src = css(el, 'backgroundImage').replace(/^none|url\(["']?(.+?)["']?\)$/, '$1');
9549
9550      if (dimensions[src]) {
9551        return dimensions[src];
9552      }
9553
9554      const image = new Image();
9555      if (src) {
9556        image.src = src;
9557
9558        if (!image.naturalWidth) {
9559          image.onload = () => {
9560            dimensions[src] = toDimensions(image);
9561            trigger(el, createEvent('load', false));
9562          };
9563          return toDimensions(image);
9564        }
9565      }
9566
9567      return dimensions[src] = toDimensions(image);
9568    }
9569
9570    function toDimensions(image) {
9571      return {
9572        width: image.naturalWidth,
9573        height: image.naturalHeight };
9574
9575    }
9576
9577    function parseStops(stops, fn) {if (fn === void 0) {fn = toFloat;}
9578      const result = [];
9579      const { length } = stops;
9580      let nullIndex = 0;
9581      for (let i = 0; i < length; i++) {
9582        let [value, percent] = isString(stops[i]) ? stops[i].trim().split(' ') : [stops[i]];
9583        value = fn(value);
9584        percent = percent ? toFloat(percent) / 100 : null;
9585
9586        if (i === 0) {
9587          if (percent === null) {
9588            percent = 0;
9589          } else if (percent) {
9590            result.push([value, 0]);
9591          }
9592        } else if (i === length - 1) {
9593          if (percent === null) {
9594            percent = 1;
9595          } else if (percent !== 1) {
9596            result.push([value, percent]);
9597            percent = 1;
9598          }
9599        }
9600
9601        result.push([value, percent]);
9602
9603        if (percent === null) {
9604          nullIndex++;
9605        } else if (nullIndex) {
9606          const leftPercent = result[i - nullIndex - 1][1];
9607          const p = (percent - leftPercent) / (nullIndex + 1);
9608          for (let j = nullIndex; j > 0; j--) {
9609            result[i - j][1] = leftPercent + p * (nullIndex - j + 1);
9610          }
9611
9612          nullIndex = 0;
9613        }
9614      }
9615
9616      return result;
9617    }
9618
9619    function getStop(stops, percent) {
9620      const index = findIndex(stops.slice(1), (_ref3) => {let [, targetPercent] = _ref3;return percent <= targetPercent;}) + 1;
9621      return [
9622      stops[index - 1][0],
9623      stops[index][0],
9624      (percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1])];
9625
9626    }
9627
9628    function getValue(stops, percent) {
9629      const [start, end, p] = getStop(stops, percent);
9630      return isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end;
9631    }
9632
9633    const unitRe = /^-?\d+([^\s]*)/;
9634    function getUnit(stops, defaultUnit) {
9635      for (const stop of stops) {
9636        const match = stop.match == null ? void 0 : stop.match(unitRe);
9637        if (match) {
9638          return match[1];
9639        }
9640      }
9641      return defaultUnit;
9642    }
9643
9644    function getCssValue(el, prop, value) {
9645      const prev = el.style[prop];
9646      const val = css(css(el, prop, value), prop);
9647      el.style[prop] = prev;
9648      return val;
9649    }
9650
9651    function fillObject(keys, value) {
9652      return keys.reduce((data, prop) => {
9653        data[prop] = value;
9654        return data;
9655      }, {});
9656    }
9657
9658    var parallax = {
9659      mixins: [Parallax, Resize, Scroll],
9660
9661      props: {
9662        target: String,
9663        viewport: Number, // Deprecated
9664        easing: Number,
9665        start: String,
9666        end: String },
9667
9668
9669      data: {
9670        target: false,
9671        viewport: 1,
9672        easing: 1,
9673        start: 0,
9674        end: 0 },
9675
9676
9677      computed: {
9678        target(_ref, $el) {let { target } = _ref;
9679          return getOffsetElement(target && query(target, $el) || $el);
9680        },
9681
9682        start(_ref2) {let { start } = _ref2;
9683          return toPx(start, 'height', this.target, true);
9684        },
9685
9686        end(_ref3) {let { end, viewport } = _ref3;
9687          return toPx(
9688          end || (viewport = (1 - viewport) * 100) && viewport + "vh+" + viewport + "%",
9689          'height',
9690          this.target,
9691          true);
9692
9693        } },
9694
9695
9696      update: {
9697        read(_ref4, types) {let { percent } = _ref4;
9698          if (!types.has('scroll')) {
9699            percent = false;
9700          }
9701
9702          if (!this.matchMedia) {
9703            return;
9704          }
9705
9706          const prev = percent;
9707          percent = ease(scrolledOver(this.target, this.start, this.end), this.easing);
9708
9709          return {
9710            percent,
9711            style: prev === percent ? false : this.getCss(percent) };
9712
9713        },
9714
9715        write(_ref5) {let { style } = _ref5;
9716          if (!this.matchMedia) {
9717            this.reset();
9718            return;
9719          }
9720
9721          style && css(this.$el, style);
9722        },
9723
9724        events: ['scroll', 'resize'] } };
9725
9726
9727
9728    function ease(percent, easing) {
9729      return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, -easing + 1);
9730    }
9731
9732    // SVG elements do not inherit from HTMLElement
9733    function getOffsetElement(el) {
9734      return el ? 'offsetTop' in el ? el : getOffsetElement(parent(el)) : document.documentElement;
9735    }
9736
9737    var SliderReactive = {
9738      update: {
9739        write() {
9740          if (this.stack.length || this.dragging) {
9741            return;
9742          }
9743
9744          const index = this.getValidIndex(this.index);
9745
9746          if (!~this.prevIndex || this.index !== index) {
9747            this.show(index);
9748          }
9749        },
9750
9751        events: ['resize'] } };
9752
9753    var SliderPreload = {
9754      mixins: [Lazyload],
9755
9756      connected() {
9757        this.lazyload(this.slides, this.getAdjacentSlides);
9758      } };
9759
9760    function Transitioner (prev, next, dir, _ref) {let { center, easing, list } = _ref;
9761      const deferred = new Deferred();
9762
9763      const from = prev ?
9764      getLeft(prev, list, center) :
9765      getLeft(next, list, center) + dimensions$1(next).width * dir;
9766      const to = next ?
9767      getLeft(next, list, center) :
9768      from + dimensions$1(prev).width * dir * (isRtl ? -1 : 1);
9769
9770      return {
9771        dir,
9772
9773        show(duration, percent, linear) {if (percent === void 0) {percent = 0;}
9774          const timing = linear ? 'linear' : easing;
9775          duration -= Math.round(duration * clamp(percent, -1, 1));
9776
9777          this.translate(percent);
9778
9779          percent = prev ? percent : clamp(percent, 0, 1);
9780          triggerUpdate(this.getItemIn(), 'itemin', { percent, duration, timing, dir });
9781          prev &&
9782          triggerUpdate(this.getItemIn(true), 'itemout', {
9783            percent: 1 - percent,
9784            duration,
9785            timing,
9786            dir });
9787
9788
9789          Transition.start(
9790          list,
9791          { transform: translate(-to * (isRtl ? -1 : 1), 'px') },
9792          duration,
9793          timing).
9794          then(deferred.resolve, noop);
9795
9796          return deferred.promise;
9797        },
9798
9799        cancel() {
9800          Transition.cancel(list);
9801        },
9802
9803        reset() {
9804          css(list, 'transform', '');
9805        },
9806
9807        forward(duration, percent) {if (percent === void 0) {percent = this.percent();}
9808          Transition.cancel(list);
9809          return this.show(duration, percent, true);
9810        },
9811
9812        translate(percent) {
9813          const distance = this.getDistance() * dir * (isRtl ? -1 : 1);
9814
9815          css(
9816          list,
9817          'transform',
9818          translate(
9819          clamp(
9820          -to + (distance - distance * percent),
9821          -getWidth(list),
9822          dimensions$1(list).width) * (
9823          isRtl ? -1 : 1),
9824          'px'));
9825
9826
9827
9828          const actives = this.getActives();
9829          const itemIn = this.getItemIn();
9830          const itemOut = this.getItemIn(true);
9831
9832          percent = prev ? clamp(percent, -1, 1) : 0;
9833
9834          for (const slide of children(list)) {
9835            const isActive = includes(actives, slide);
9836            const isIn = slide === itemIn;
9837            const isOut = slide === itemOut;
9838            const translateIn =
9839            isIn ||
9840            !isOut && (
9841            isActive ||
9842            dir * (isRtl ? -1 : 1) === -1 ^
9843            getElLeft(slide, list) > getElLeft(prev || next));
9844
9845            triggerUpdate(slide, "itemtranslate" + (translateIn ? 'in' : 'out'), {
9846              dir,
9847              percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0 });
9848
9849          }
9850        },
9851
9852        percent() {
9853          return Math.abs(
9854          (css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));
9855
9856        },
9857
9858        getDistance() {
9859          return Math.abs(to - from);
9860        },
9861
9862        getItemIn(out) {if (out === void 0) {out = false;}
9863          let actives = this.getActives();
9864          let nextActives = inView(list, getLeft(next || prev, list, center));
9865
9866          if (out) {
9867            const temp = actives;
9868            actives = nextActives;
9869            nextActives = temp;
9870          }
9871
9872          return nextActives[findIndex(nextActives, (el) => !includes(actives, el))];
9873        },
9874
9875        getActives() {
9876          return inView(list, getLeft(prev || next, list, center));
9877        } };
9878
9879    }
9880
9881    function getLeft(el, list, center) {
9882      const left = getElLeft(el, list);
9883
9884      return center ? left - centerEl(el, list) : Math.min(left, getMax(list));
9885    }
9886
9887    function getMax(list) {
9888      return Math.max(0, getWidth(list) - dimensions$1(list).width);
9889    }
9890
9891    function getWidth(list) {
9892      return children(list).reduce((right, el) => dimensions$1(el).width + right, 0);
9893    }
9894
9895    function centerEl(el, list) {
9896      return dimensions$1(list).width / 2 - dimensions$1(el).width / 2;
9897    }
9898
9899    function getElLeft(el, list) {
9900      return (
9901        el &&
9902        (position(el).left + (isRtl ? dimensions$1(el).width - dimensions$1(list).width : 0)) * (
9903        isRtl ? -1 : 1) ||
9904        0);
9905
9906    }
9907
9908    function inView(list, listLeft) {
9909      listLeft -= 1;
9910      const listWidth = dimensions$1(list).width;
9911      const listRight = listLeft + listWidth + 2;
9912
9913      return children(list).filter((slide) => {
9914        const slideLeft = getElLeft(slide, list);
9915        const slideRight = slideLeft + Math.min(dimensions$1(slide).width, listWidth);
9916
9917        return slideLeft >= listLeft && slideRight <= listRight;
9918      });
9919    }
9920
9921    function triggerUpdate(el, type, data) {
9922      trigger(el, createEvent(type, false, false, data));
9923    }
9924
9925    var slider = {
9926      mixins: [Class, Slider, SliderReactive, SliderPreload],
9927
9928      props: {
9929        center: Boolean,
9930        sets: Boolean },
9931
9932
9933      data: {
9934        center: false,
9935        sets: false,
9936        attrItem: 'uk-slider-item',
9937        selList: '.uk-slider-items',
9938        selNav: '.uk-slider-nav',
9939        clsContainer: 'uk-slider-container',
9940        Transitioner },
9941
9942
9943      computed: {
9944        avgWidth() {
9945          return getWidth(this.list) / this.length;
9946        },
9947
9948        finite(_ref) {let { finite } = _ref;
9949          return (
9950            finite ||
9951            Math.ceil(getWidth(this.list)) <
9952            Math.trunc(dimensions$1(this.list).width + getMaxElWidth(this.list) + this.center));
9953
9954        },
9955
9956        maxIndex() {
9957          if (!this.finite || this.center && !this.sets) {
9958            return this.length - 1;
9959          }
9960
9961          if (this.center) {
9962            return last(this.sets);
9963          }
9964
9965          let lft = 0;
9966          const max = getMax(this.list);
9967          const index = findIndex(this.slides, (el) => {
9968            if (lft >= max) {
9969              return true;
9970            }
9971
9972            lft += dimensions$1(el).width;
9973          });
9974
9975          return ~index ? index : this.length - 1;
9976        },
9977
9978        sets(_ref2) {let { sets: enabled } = _ref2;
9979          if (!enabled) {
9980            return;
9981          }
9982
9983          let left = 0;
9984          const sets = [];
9985          const width = dimensions$1(this.list).width;
9986          for (let i in this.slides) {
9987            const slideWidth = dimensions$1(this.slides[i]).width;
9988
9989            if (left + slideWidth > width) {
9990              left = 0;
9991            }
9992
9993            if (this.center) {
9994              if (
9995              left < width / 2 &&
9996              left + slideWidth + dimensions$1(this.slides[+i + 1]).width / 2 > width / 2)
9997              {
9998                sets.push(+i);
9999                left = width / 2 - slideWidth / 2;
10000              }
10001            } else if (left === 0) {
10002              sets.push(Math.min(+i, this.maxIndex));
10003            }
10004
10005            left += slideWidth;
10006          }
10007
10008          if (sets.length) {
10009            return sets;
10010          }
10011        },
10012
10013        transitionOptions() {
10014          return {
10015            center: this.center,
10016            list: this.list };
10017
10018        } },
10019
10020
10021      connected() {
10022        toggleClass(this.$el, this.clsContainer, !$("." + this.clsContainer, this.$el));
10023      },
10024
10025      update: {
10026        write() {
10027          for (const el of this.navItems) {
10028            const index = toNumber(data(el, this.attrItem));
10029            if (index !== false) {
10030              el.hidden =
10031              !this.maxIndex ||
10032              index > this.maxIndex ||
10033              this.sets && !includes(this.sets, index);
10034            }
10035          }
10036
10037          if (this.length && !this.dragging && !this.stack.length) {
10038            this.reorder();
10039            this._translate(1);
10040          }
10041
10042          this.updateActiveClasses();
10043        },
10044
10045        events: ['resize'] },
10046
10047
10048      events: {
10049        beforeitemshow(e) {
10050          if (
10051          !this.dragging &&
10052          this.sets &&
10053          this.stack.length < 2 &&
10054          !includes(this.sets, this.index))
10055          {
10056            this.index = this.getValidIndex();
10057          }
10058
10059          const diff = Math.abs(
10060          this.index -
10061          this.prevIndex + (
10062          this.dir > 0 && this.index < this.prevIndex ||
10063          this.dir < 0 && this.index > this.prevIndex ?
10064          (this.maxIndex + 1) * this.dir :
10065          0));
10066
10067
10068          if (!this.dragging && diff > 1) {
10069            for (let i = 0; i < diff; i++) {
10070              this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');
10071            }
10072
10073            e.preventDefault();
10074            return;
10075          }
10076
10077          const index =
10078          this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;
10079          this.duration =
10080          speedUp(this.avgWidth / this.velocity) * (
10081          dimensions$1(this.slides[index]).width / this.avgWidth);
10082
10083          this.reorder();
10084        },
10085
10086        itemshow() {
10087          if (~this.prevIndex) {
10088            addClass(this._getTransitioner().getItemIn(), this.clsActive);
10089          }
10090        },
10091
10092        itemshown() {
10093          this.updateActiveClasses();
10094        } },
10095
10096
10097      methods: {
10098        reorder() {
10099          if (this.finite) {
10100            css(this.slides, 'order', '');
10101            return;
10102          }
10103
10104          const index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;
10105
10106          this.slides.forEach((slide, i) =>
10107          css(
10108          slide,
10109          'order',
10110          this.dir > 0 && i < index ? 1 : this.dir < 0 && i >= this.index ? -1 : ''));
10111
10112
10113
10114          if (!this.center) {
10115            return;
10116          }
10117
10118          const next = this.slides[index];
10119          let width = dimensions$1(this.list).width / 2 - dimensions$1(next).width / 2;
10120          let j = 0;
10121
10122          while (width > 0) {
10123            const slideIndex = this.getIndex(--j + index, index);
10124            const slide = this.slides[slideIndex];
10125
10126            css(slide, 'order', slideIndex > index ? -2 : -1);
10127            width -= dimensions$1(slide).width;
10128          }
10129        },
10130
10131        updateActiveClasses() {
10132          const actives = this._getTransitioner(this.index).getActives();
10133          const activeClasses = [
10134          this.clsActive,
10135          (!this.sets || includes(this.sets, toFloat(this.index))) && this.clsActivated ||
10136          ''];
10137
10138          for (const slide of this.slides) {
10139            toggleClass(slide, activeClasses, includes(actives, slide));
10140          }
10141        },
10142
10143        getValidIndex(index, prevIndex) {if (index === void 0) {index = this.index;}if (prevIndex === void 0) {prevIndex = this.prevIndex;}
10144          index = this.getIndex(index, prevIndex);
10145
10146          if (!this.sets) {
10147            return index;
10148          }
10149
10150          let prev;
10151
10152          do {
10153            if (includes(this.sets, index)) {
10154              return index;
10155            }
10156
10157            prev = index;
10158            index = this.getIndex(index + this.dir, prevIndex);
10159          } while (index !== prev);
10160
10161          return index;
10162        },
10163
10164        getAdjacentSlides() {
10165          const { width } = dimensions$1(this.list);
10166          const left = -width;
10167          const right = width * 2;
10168          const slideWidth = dimensions$1(this.slides[this.index]).width;
10169          const slideLeft = this.center ? width / 2 - slideWidth / 2 : 0;
10170          const slides = new Set();
10171          for (const i of [-1, 1]) {
10172            let currentLeft = slideLeft + (i > 0 ? slideWidth : 0);
10173            let j = 0;
10174            do {
10175              const slide = this.slides[this.getIndex(this.index + i + j++ * i)];
10176              currentLeft += dimensions$1(slide).width * i;
10177              slides.add(slide);
10178            } while (this.slides.length > j && currentLeft > left && currentLeft < right);
10179          }
10180          return Array.from(slides);
10181        } } };
10182
10183
10184
10185    function getMaxElWidth(list) {
10186      return Math.max(0, ...children(list).map((el) => dimensions$1(el).width));
10187    }
10188
10189    var sliderParallax = {
10190      mixins: [Parallax],
10191
10192      data: {
10193        selItem: '!li' },
10194
10195
10196      beforeConnect() {
10197        this.item = query(this.selItem, this.$el);
10198      },
10199
10200      disconnected() {
10201        this.item = null;
10202      },
10203
10204      events: [
10205      {
10206        name: 'itemin itemout',
10207
10208        self: true,
10209
10210        el() {
10211          return this.item;
10212        },
10213
10214        handler(_ref) {let { type, detail: { percent, duration, timing, dir } } = _ref;
10215          fastdom.read(() => {
10216            const propsFrom = this.getCss(getCurrentPercent(type, dir, percent));
10217            const propsTo = this.getCss(isIn(type) ? 0.5 : dir > 0 ? 1 : 0);
10218            fastdom.write(() => {
10219              css(this.$el, propsFrom);
10220              Transition.start(this.$el, propsTo, duration, timing).catch(noop);
10221            });
10222          });
10223        } },
10224
10225
10226      {
10227        name: 'transitioncanceled transitionend',
10228
10229        self: true,
10230
10231        el() {
10232          return this.item;
10233        },
10234
10235        handler() {
10236          Transition.cancel(this.$el);
10237        } },
10238
10239
10240      {
10241        name: 'itemtranslatein itemtranslateout',
10242
10243        self: true,
10244
10245        el() {
10246          return this.item;
10247        },
10248
10249        handler(_ref2) {let { type, detail: { percent, dir } } = _ref2;
10250          fastdom.read(() => {
10251            const props = this.getCss(getCurrentPercent(type, dir, percent));
10252            fastdom.write(() => css(this.$el, props));
10253          });
10254        } }] };
10255
10256
10257
10258
10259    function isIn(type) {
10260      return endsWith(type, 'in');
10261    }
10262
10263    function getCurrentPercent(type, dir, percent) {
10264      percent /= 2;
10265
10266      return isIn(type) ^ dir < 0 ? percent : 1 - percent;
10267    }
10268
10269    var Animations = {
10270      ...Animations$2,
10271      fade: {
10272        show() {
10273          return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }];
10274        },
10275
10276        percent(current) {
10277          return 1 - css(current, 'opacity');
10278        },
10279
10280        translate(percent) {
10281          return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }];
10282        } },
10283
10284
10285      scale: {
10286        show() {
10287          return [{ opacity: 0, transform: scale3d(1 + 0.5), zIndex: 0 }, { zIndex: -1 }];
10288        },
10289
10290        percent(current) {
10291          return 1 - css(current, 'opacity');
10292        },
10293
10294        translate(percent) {
10295          return [
10296          { opacity: 1 - percent, transform: scale3d(1 + 0.5 * percent), zIndex: 0 },
10297          { zIndex: -1 }];
10298
10299        } },
10300
10301
10302      pull: {
10303        show(dir) {
10304          return dir < 0 ?
10305          [
10306          { transform: translate(30), zIndex: -1 },
10307          { transform: translate(), zIndex: 0 }] :
10308
10309          [
10310          { transform: translate(-100), zIndex: 0 },
10311          { transform: translate(), zIndex: -1 }];
10312
10313        },
10314
10315        percent(current, next, dir) {
10316          return dir < 0 ? 1 - translated(next) : translated(current);
10317        },
10318
10319        translate(percent, dir) {
10320          return dir < 0 ?
10321          [
10322          { transform: translate(30 * percent), zIndex: -1 },
10323          { transform: translate(-100 * (1 - percent)), zIndex: 0 }] :
10324
10325          [
10326          { transform: translate(-percent * 100), zIndex: 0 },
10327          { transform: translate(30 * (1 - percent)), zIndex: -1 }];
10328
10329        } },
10330
10331
10332      push: {
10333        show(dir) {
10334          return dir < 0 ?
10335          [
10336          { transform: translate(100), zIndex: 0 },
10337          { transform: translate(), zIndex: -1 }] :
10338
10339          [
10340          { transform: translate(-30), zIndex: -1 },
10341          { transform: translate(), zIndex: 0 }];
10342
10343        },
10344
10345        percent(current, next, dir) {
10346          return dir > 0 ? 1 - translated(next) : translated(current);
10347        },
10348
10349        translate(percent, dir) {
10350          return dir < 0 ?
10351          [
10352          { transform: translate(percent * 100), zIndex: 0 },
10353          { transform: translate(-30 * (1 - percent)), zIndex: -1 }] :
10354
10355          [
10356          { transform: translate(-30 * percent), zIndex: -1 },
10357          { transform: translate(100 * (1 - percent)), zIndex: 0 }];
10358
10359        } } };
10360
10361    var slideshow = {
10362      mixins: [Class, Slideshow, SliderReactive, SliderPreload],
10363
10364      props: {
10365        ratio: String,
10366        minHeight: Number,
10367        maxHeight: Number },
10368
10369
10370      data: {
10371        ratio: '16:9',
10372        minHeight: false,
10373        maxHeight: false,
10374        selList: '.uk-slideshow-items',
10375        attrItem: 'uk-slideshow-item',
10376        selNav: '.uk-slideshow-nav',
10377        Animations },
10378
10379
10380      update: {
10381        read() {
10382          if (!this.list) {
10383            return false;
10384          }
10385
10386          let [width, height] = this.ratio.split(':').map(Number);
10387
10388          height = height * this.list.offsetWidth / width || 0;
10389
10390          if (this.minHeight) {
10391            height = Math.max(this.minHeight, height);
10392          }
10393
10394          if (this.maxHeight) {
10395            height = Math.min(this.maxHeight, height);
10396          }
10397
10398          return { height: height - boxModelAdjust(this.list, 'height', 'content-box') };
10399        },
10400
10401        write(_ref) {let { height } = _ref;
10402          height > 0 && css(this.list, 'minHeight', height);
10403        },
10404
10405        events: ['resize'] },
10406
10407
10408      methods: {
10409        getAdjacentSlides() {
10410          return [1, -1].map((i) =>
10410 this.slides[this.getIndex(this.index + i)]);
10411        } } };
10412
10413    var sortable = {
10414      mixins: [Class, Animate],
10415
10416      props: {
10417        group: String,
10418        threshold: Number,
10419        clsItem: String,
10420        clsPlaceholder: String,
10421        clsDrag: String,
10422        clsDragState: String,
10423        clsBase: String,
10424        clsNoDrag: String,
10425        clsEmpty: String,
10426        clsCustom: String,
10427        handle: String },
10428
10429
10430      data: {
10431        group: false,
10432        threshold: 5,
10433        clsItem: 'uk-sortable-item',
10434        clsPlaceholder: 'uk-sortable-placeholder',
10435        clsDrag: 'uk-sortable-drag',
10436        clsDragState: 'uk-drag',
10437        clsBase: 'uk-sortable',
10438        clsNoDrag: 'uk-sortable-nodrag',
10439        clsEmpty: 'uk-sortable-empty',
10440        clsCustom: '',
10441        handle: false,
10442        pos: {} },
10443
10444
10445      created() {
10446        for (const key of ['init', 'start', 'move', 'end']) {
10447          const fn = this[key];
10448          this[key] = (e) => {
10449            assign(this.pos, getEventPos(e));
10450            fn(e);
10451          };
10452        }
10453      },
10454
10455      events: {
10456        name: pointerDown,
10457        passive: false,
10458        handler: 'init' },
10459
10460
10461      computed: {
10462        target() {
10463          return (this.$el.tBodies || [this.$el])[0];
10464        },
10465
10466        items() {
10467          return children(this.target);
10468        },
10469
10470        isEmpty: {
10471          get() {
10472            return isEmpty(this.items);
10473          },
10474
10475          watch(empty) {
10476            toggleClass(this.target, this.clsEmpty, empty);
10477          },
10478
10479          immediate: true },
10480
10481
10482        handles: {
10483          get(_ref, el) {let { handle } = _ref;
10484            return handle ? $$(handle, el) : this.items;
10485          },
10486
10487          watch(handles, prev) {
10488            css(prev, { touchAction: '', userSelect: '' });
10489            css(handles, { touchAction: hasTouch ? 'none' : '', userSelect: 'none' }); // touchAction set to 'none' causes a performance drop in Chrome 80
10490          },
10491
10492          immediate: true } },
10493
10494
10495
10496      update: {
10497        write(data) {
10498          if (!this.drag || !parent(this.placeholder)) {
10499            return;
10500          }
10501
10502          const {
10503            pos: { x, y },
10504            origin: { offsetTop, offsetLeft },
10505            placeholder } =
10506          this;
10507
10508          css(this.drag, {
10509            top: y - offsetTop,
10510            left: x - offsetLeft });
10511
10512
10513          const sortable = this.getSortable(document.elementFromPoint(x, y));
10514
10515          if (!sortable) {
10516            return;
10517          }
10518
10519          const { items } = sortable;
10520
10521          if (items.some(Transition.inProgress)) {
10522            return;
10523          }
10524
10525          const target = findTarget(items, { x, y });
10526
10527          if (items.length && (!target || target === placeholder)) {
10528            return;
10529          }
10530
10531          const previous = this.getSortable(placeholder);
10532          const insertTarget = findInsertTarget(
10533          sortable.target,
10534          target,
10535          placeholder,
10536          x,
10537          y,
10538          sortable === previous && data.moved !== target);
10539
10540
10541          if (insertTarget === false) {
10542            return;
10543          }
10544
10545          if (insertTarget && placeholder === insertTarget) {
10546            return;
10547          }
10548
10549          if (sortable !== previous) {
10550            previous.remove(placeholder);
10551            data.moved = target;
10552          } else {
10553            delete data.moved;
10554          }
10555
10556          sortable.insert(placeholder, insertTarget);
10557
10558          this.touched.add(sortable);
10559        },
10560
10561        events: ['move'] },
10562
10563
10564      methods: {
10565        init(e) {
10566          const { target, button, defaultPrevented } = e;
10567          const [placeholder] = this.items.filter((el) => within(target, el));
10568
10569          if (
10570          !placeholder ||
10571          defaultPrevented ||
10572          button > 0 ||
10573          isInput(target) ||
10574          within(target, "." + this.clsNoDrag) ||
10575          this.handle && !within(target, this.handle))
10576          {
10577            return;
10578          }
10579
10580          e.preventDefault();
10581
10582          this.touched = new Set([this]);
10583          this.placeholder = placeholder;
10584          this.origin = { target, index: index(placeholder), ...this.pos };
10585
10586          on(document, pointerMove, this.move);
10587          on(document, pointerUp, this.end);
10588
10589          if (!this.threshold) {
10590            this.start(e);
10591          }
10592        },
10593
10594        start(e) {
10595          this.drag = appendDrag(this.$container, this.placeholder);
10596          const { left, top } = this.placeholder.getBoundingClientRect();
10597          assign(this.origin, { offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top });
10598
10599          addClass(this.drag, this.clsDrag, this.clsCustom);
10600          addClass(this.placeholder, this.clsPlaceholder);
10601          addClass(this.items, this.clsItem);
10602          addClass(document.documentElement, this.clsDragState);
10603
10604          trigger(this.$el, 'start', [this, this.placeholder]);
10605
10606          trackScroll(this.pos);
10607
10608          this.move(e);
10609        },
10610
10611        move(e) {
10612          if (this.drag) {
10613            this.$emit('move');
10614          } else if (
10615          Math.abs(this.pos.x - this.origin.x) > this.threshold ||
10616          Math.abs(this.pos.y - this.origin.y) > this.threshold)
10617          {
10618            this.start(e);
10619          }
10620        },
10621
10622        end() {
10623          off(document, pointerMove, this.move);
10624          off(document, pointerUp, this.end);
10625
10626          if (!this.drag) {
10627            return;
10628          }
10629
10630          untrackScroll();
10631
10632          const sortable = this.getSortable(this.placeholder);
10633
10634          if (this === sortable) {
10635            if (this.origin.index !== index(this.placeholder)) {
10636              trigger(this.$el, 'moved', [this, this.placeholder]);
10637            }
10638          } else {
10639            trigger(sortable.$el, 'added', [sortable, this.placeholder]);
10640            trigger(this.$el, 'removed', [this, this.placeholder]);
10641          }
10642
10643          trigger(this.$el, 'stop', [this, this.placeholder]);
10644
10645          remove$1(this.drag);
10646          this.drag = null;
10647
10648          for (const { clsPlaceholder, clsItem } of this.touched) {
10649            for (const sortable of this.touched) {
10650              removeClass(sortable.items, clsPlaceholder, clsItem);
10651            }
10652          }
10653          this.touched = null;
10654          removeClass(document.documentElement, this.clsDragState);
10655        },
10656
10657        insert(element, target) {
10658          addClass(this.items, this.clsItem);
10659
10660          const insert = () => target ? before(target, element) : append(this.target, element);
10661
10662          this.animate(insert);
10663        },
10664
10665        remove(element) {
10666          if (!within(element, this.target)) {
10667            return;
10668          }
10669
10670          this.animate(() => remove$1(element));
10671        },
10672
10673        getSortable(element) {
10674          do {
10675            const sortable = this.$getComponent(element, 'sortable');
10676
10677            if (
10678            sortable && (
10679            sortable === this || this.group !== false && sortable.group === this.group))
10680            {
10681              return sortable;
10682            }
10683          } while (element = parent(element));
10684        } } };
10685
10686
10687
10688    let trackTimer;
10689    function trackScroll(pos) {
10690      let last = Date.now();
10691      trackTimer = setInterval(() => {
10692        let { x, y } = pos;
10693        y += scrollTop(window);
10694
10695        const dist = (Date.now() - last) * 0.3;
10696        last = Date.now();
10697
10698        scrollParents(document.elementFromPoint(x, pos.y), /auto|scroll/).
10699        reverse().
10700        some((scrollEl) => {
10701          let { scrollTop: scroll, scrollHeight } = scrollEl;
10702
10703          const { top, bottom, height } = offset(getViewport$1(scrollEl));
10704
10705          if (top < y && top + 35 > y) {
10706            scroll -= dist;
10707          } else if (bottom > y && bottom - 35 < y) {
10708            scroll += dist;
10709          } else {
10710            return;
10711          }
10712
10713          if (scroll > 0 && scroll < scrollHeight - height) {
10714            scrollTop(scrollEl, scroll);
10715            return true;
10716          }
10717        });
10718      }, 15);
10719    }
10720
10721    function untrackScroll() {
10722      clearInterval(trackTimer);
10723    }
10724
10725    function appendDrag(container, element) {
10726      const clone = append(
10727      container,
10728      element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\/>$)/g, '$1div$2'));
10729
10730
10731      css(clone, 'margin', '0', 'important');
10732      css(clone, {
10733        boxSizing: 'border-box',
10734        width: element.offsetWidth,
10735        height: element.offsetHeight,
10736        padding: css(element, 'padding') });
10737
10738
10739      height(clone.firstElementChild, height(element.firstElementChild));
10740
10741      return clone;
10742    }
10743
10744    function findTarget(items, point) {
10745      return items[findIndex(items, (item) => pointInRect(point, item.getBoundingClientRect()))];
10746    }
10747
10748    function findInsertTarget(list, target, placeholder, x, y, sameList) {
10749      if (!children(list).length) {
10750        return;
10751      }
10752
10753      const rect = target.getBoundingClientRect();
10754      if (!sameList) {
10755        if (!isHorizontal(list, placeholder)) {
10756          return y < rect.top + rect.height / 2 ? target : target.nextElementSibling;
10757        }
10758
10759        return target;
10760      }
10761
10762      const placeholderRect = placeholder.getBoundingClientRect();
10763      const sameRow = linesIntersect(
10764      [rect.top, rect.bottom],
10765      [placeholderRect.top, placeholderRect.bottom]);
10766
10767
10768      const pointerPos = sameRow ? x : y;
10769      const lengthProp = sameRow ? 'width' : 'height';
10770      const startProp = sameRow ? 'left' : 'top';
10771      const endProp = sameRow ? 'right' : 'bottom';
10772
10773      const diff =
10774      placeholderRect[lengthProp] < rect[lengthProp] ?
10775      rect[lengthProp] - placeholderRect[lengthProp] :
10776      0;
10777
10778      if (placeholderRect[startProp] < rect[startProp]) {
10779        if (diff && pointerPos < rect[startProp] + diff) {
10780          return false;
10781        }
10782
10783        return target.nextElementSibling;
10784      }
10785
10786      if (diff && pointerPos > rect[endProp] - diff) {
10787        return false;
10788      }
10789
10790      return target;
10791    }
10792
10793    function isHorizontal(list, placeholder) {
10794      const single = children(list).length === 1;
10795
10796      if (single) {
10797        append(list, placeholder);
10798      }
10799
10800      const items = children(list);
10801      const isHorizontal = items.some((el, i) => {
10802        const rectA = el.getBoundingClientRect();
10803        return items.slice(i + 1).some((el) => {
10804          const rectB = el.getBoundingClientRect();
10805          return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);
10806        });
10807      });
10808
10809      if (single) {
10810        remove$1(placeholder);
10811      }
10812
10813      return isHorizontal;
10814    }
10815
10816    function linesIntersect(lineA, lineB) {
10817      return lineA[1] > lineB[0] && lineB[1] > lineA[0];
10818    }
10819
10820    var tooltip = {
10821      mixins: [Container, Togglable, Position],
10822
10823      args: 'title',
10824
10825      props: {
10826        delay: Number,
10827        title: String },
10828
10829
10830      data: {
10831        pos: 'top',
10832        title: '',
10833        delay: 0,
10834        animation: ['uk-animation-scale-up'],
10835        duration: 100,
10836        cls: 'uk-active' },
10837
10838
10839      beforeConnect() {
10840        this._hasTitle = hasAttr(this.$el, 'title');
10841        attr(this.$el, 'title', '');
10842        this.updateAria(false);
10843        makeFocusable(this.$el);
10844      },
10845
10846      disconnected() {
10847        this.hide();
10848        attr(this.$el, 'title', this._hasTitle ? this.title : null);
10849      },
10850
10851      methods: {
10852        show() {
10853          if (this.isToggled(this.tooltip || null) || !this.title) {
10854            return;
10855          }
10856
10857          this._unbind = once(
10858          document, "show keydown " +
10859          pointerDown,
10860          this.hide,
10861          false,
10862          (e) =>
10863          e.type === pointerDown && !within(e.target, this.$el) ||
10864          e.type === 'keydown' && e.keyCode === 27 ||
10865          e.type === 'show' && e.detail[0] !== this && e.detail[0].$name === this.$name);
10866
10867
10868          clearTimeout(this.showTimer);
10869          this.showTimer = setTimeout(this._show, this.delay);
10870        },
10871
10872        async hide() {
10873          if (matches(this.$el, 'input:focus')) {
10874            return;
10875          }
10876
10877          clearTimeout(this.showTimer);
10878
10879          if (!this.isToggled(this.tooltip || null)) {
10880            return;
10881          }
10882
10883          await this.toggleElement(this.tooltip, false, false);
10884          remove$1(this.tooltip);
10885          this.tooltip = null;
10886          this._unbind();
10887        },
10888
10889        _show() {
10890          this.tooltip = append(
10891          this.container, "<div class=\"uk-" +
10892          this.$options.name + "\"> <div class=\"uk-" +
10893          this.$options.name + "-inner\">" + this.title + "</div> </div>");
10894
10895
10896
10897          on(this.tooltip, 'toggled', (e, toggled) => {
10898            this.updateAria(toggled);
10899
10900            if (!toggled) {
10901              return;
10902            }
10903
10904            this.positionAt(this.tooltip, this.$el);
10905
10906            this.origin =
10907            this.getAxis() === 'y' ?
10908            flipPosition(this.dir) + "-" + this.align :
10909            this.align + "-" + flipPosition(this.dir);
10910          });
10911
10912          this.toggleElement(this.tooltip, true);
10913        },
10914
10915        updateAria(toggled) {
10916          attr(this.$el, 'aria-expanded', toggled);
10917        } },
10918
10919
10920      events: {
10921        focus: 'show',
10922        blur: 'hide',
10923
10924        [pointerEnter + " " + pointerLeave](e) {
10925          if (!isTouch(e)) {
10926            this[e.type === pointerEnter ? 'show' : 'hide']();
10927          }
10928        },
10929
10930        // Clicking a button does not give it focus on all browsers and platforms
10931        // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#clicking_and_focus
10932        [pointerDown](e) {
10933          if (isTouch(e)) {
10934            this.show();
10935          }
10936        } } };
10937
10938
10939
10940    function makeFocusable(el) {
10941      if (!isFocusable(el)) {
10942        attr(el, 'tabindex', '0');
10943      }
10944    }
10945
10946    var upload = {
10947      props: {
10948        allow: String,
10949        clsDragover: String,
10950        concurrent: Number,
10951        maxSize: Number,
10952        method: String,
10953        mime: String,
10954        msgInvalidMime: String,
10955        msgInvalidName: String,
10956        msgInvalidSize: String,
10957        multiple: Boolean,
10958        name: String,
10959        params: Object,
10960        type: String,
10961        url: String },
10962
10963
10964      data: {
10965        allow: false,
10966        clsDragover: 'uk-dragover',
10967        concurrent: 1,
10968        maxSize: 0,
10969        method: 'POST',
10970        mime: false,
10971        msgInvalidMime: 'Invalid File Type: %s',
10972        msgInvalidName: 'Invalid File Name: %s',
10973        msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',
10974        multiple: false,
10975        name: 'files[]',
10976        params: {},
10977        type: '',
10978        url: '',
10979        abort: noop,
10980        beforeAll: noop,
10981        beforeSend: noop,
10982        complete: noop,
10983        completeAll: noop,
10984        error: noop,
10985        fail: noop,
10986        load: noop,
10987        loadEnd: noop,
10988        loadStart: noop,
10989        progress: noop },
10990
10991
10992      events: {
10993        change(e) {
10994          if (!matches(e.target, 'input[type="file"]')) {
10995            return;
10996          }
10997
10998          e.preventDefault();
10999
11000          if (e.target.files) {
11001            this.upload(e.target.files);
11002          }
11003
11004          e.target.value = '';
11005        },
11006
11007        drop(e) {
11008          stop(e);
11009
11010          const transfer = e.dataTransfer;
11011
11012          if (!(transfer != null && transfer.files)) {
11013            return;
11014          }
11015
11016          removeClass(this.$el, this.clsDragover);
11017
11018          this.upload(transfer.files);
11019        },
11020
11021        dragenter(e) {
11022          stop(e);
11023        },
11024
11025        dragover(e) {
11026          stop(e);
11027          addClass(this.$el, this.clsDragover);
11028        },
11029
11030        dragleave(e) {
11031          stop(e);
11032          removeClass(this.$el, this.clsDragover);
11033        } },
11034
11035
11036      methods: {
11037        async upload(files) {
11038          files = toArray(files);
11039
11040          if (!files.length) {
11041            return;
11042          }
11043
11044          trigger(this.$el, 'upload', [files]);
11045
11046          for (const file of files) {
11047            if (this.maxSize && this.maxSize * 1000 < file.size) {
11048              this.fail(this.msgInvalidSize.replace('%s', this.maxSize));
11049              return;
11050            }
11051
11052            if (this.allow && !match(this.allow, file.name)) {
11053              this.fail(this.msgInvalidName.replace('%s', this.allow));
11054              return;
11055            }
11056
11057            if (this.mime && !match(this.mime, file.type)) {
11058              this.fail(this.msgInvalidMime.replace('%s', this.mime));
11059              return;
11060            }
11061          }
11062
11063          if (!this.multiple) {
11064            files = files.slice(0, 1);
11065          }
11066
11067          this.beforeAll(this, files);
11068
11069          const chunks = chunk(files, this.concurrent);
11070          const upload = async (files) => {
11071            const data = new FormData();
11072
11073            files.forEach((file) => data.append(this.name, file));
11074
11075            for (const key in this.params) {
11076              data.append(key, this.params[key]);
11077            }
11078
11079            try {
11080              const xhr = await ajax(this.url, {
11081                data,
11082                method: this.method,
11083                responseType: this.type,
11084                beforeSend: (env) => {
11085                  const { xhr } = env;
11086                  xhr.upload && on(xhr.upload, 'progress', this.progress);
11087                  for (const type of ['loadStart', 'load', 'loadEnd', 'abort']) {
11088                    on(xhr, type.toLowerCase(), this[type]);
11089                  }
11090
11091                  return this.beforeSend(env);
11092                } });
11093
11094
11095              this.complete(xhr);
11096
11097              if (chunks.length) {
11098                await upload(chunks.shift());
11099              } else {
11100                this.completeAll(xhr);
11101              }
11102            } catch (e) {
11103              this.error(e);
11104            }
11105          };
11106
11107          await upload(chunks.shift());
11108        } } };
11109
11110
11111
11112    function match(pattern, path) {
11113      return path.match(
11114      new RegExp("^" +
11115      pattern.
11116      replace(/\//g, '\\/').
11117      replace(/\*\*/g, '(\\/[^\\/]+)*').
11118      replace(/\*/g, '[^\\/]+').
11119      replace(/((?!\\))\?/g, '$1.') + "$",
11120      'i'));
11121
11122
11123    }
11124
11125    function chunk(files, size) {
11126      const chunks = [];
11127      for (let i = 0; i < files.length; i += size) {
11128        chunks.push(files.slice(i, i + size));
11129      }
11130      return chunks;
11131    }
11132
11133    function stop(e) {
11134      e.preventDefault();
11135      e.stopPropagation();
11136    }
11137
11138    var components = /*#__PURE__*/Object.freeze({
11139        __proto__: null,
11140        Countdown: countdown,
11141        Filter: filter,
11142        Lightbox: lightbox,
11143        LightboxPanel: LightboxPanel,
11144        Notification: notification,
11145        Parallax: parallax,
11146        Slider: slider,
11147        SliderParallax: sliderParallax,
11148        Slideshow: slideshow,
11149        SlideshowParallax: sliderParallax,
11150        Sortable: sortable,
11151        Tooltip: tooltip,
11152        Upload: upload
11153    });
11154
11155    each(components, (component, name) => UIkit.component(name, component));
11156
11157    return UIkit;
11158
11159}));
11160
11161},{}],3:[function(require,module,exports){
11162'use strict';
11163
11164require('./utils/utils');
11165
11166var _uikit = require('uikit');
11167
11168var _uikit2 = _interopRequireDefault(_uikit);
11169
11170var _uikitIcons = require('uikit/dist/js/uikit-icons');
11171
11172var _uikitIcons2 = _interopRequireDefault(_uikitIcons);
11173
11174function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11175
11176_uikit2.default.use(_uikitIcons2.default);
11177
11178(function ($) {
11179
11180    var init = function init() {
11181        onloadActions();
11182        greatMenu();
11183        footerLinks();
11184    };
11185
11186    $(document).ready(function () {
11187        init();
11188    });
11189
11190    $(window).resize(function () {});
11191
11192    var onloadActions = function onloadActions() {
11193        //get params from url if is page menu /navega/ to open the menu
11194        var queryParams = window.location.search;
11195        if (queryParams.length) {
11196            var urlParams = new URLSearchParams(queryParams);
11197            var page = urlParams.get('pagina');
11198            var linkVar = $('#great-menu .page-item-' + page).children('a');
11199
11200            if (window.matchMedia("(max-width: 767px)").matches) {
11201                // The viewport is less than 768 pixels wide
11202                executeClickLink_mobile(linkVar);
11203            } else {
11204                // The viewport is at least 768 pixels wide
11205                executeClickLink(linkVar, 'fromId');
11206            }
11207        }
11208    };
11209
11210    var footerLinks = function footerLinks(e) {
11211        /* links in footer that have children are redirected to the great menu */
11212        $('.pre-footer a').click(function (e) {
11213
11214            if ($(this).parent('li').hasClass('page_item_has_children')) {
11215                e.preventDefault();
11216                var classList = $(this).parent('li').attr('class').split(/\s+/);
11217                for (var i = 0; i < classList.length; i++) {
11218                    var item = classList[i];
11219                    if (item.includes('page-item-') == true) {
11220                        var id_post = item.length - 10;
11221                        var newURL = window.location.protocol + "//" + window.location.host + "/navega/?pagina=" + item.slice(-id_post);
11222                        location.href = newURL;
11223                    }
11224                };
11225            }
11226        });
11227    };
11228
11229    var greatMenu = function greatMenu(e) {
11230        // console.log("Bon dia! main js carregat. Delete me when I was working");
11231
11232        $('#great-menu.tabs a').click(function (e) {
11233
11234            if ($(this).parent('li').hasClass('page_item_has_children')) {
11235                e.preventDefault();
11236                if (window.matchMedia("(max-width: 767px)").matches) {
11237                    // The viewport is less than 768 pixels wide
11238
11239                    executeClickLink_mobile($(this));
11240                } else {
11241                    // The viewport is at least 768 pixels wide
11242
11243                    executeClickLink($(this), 'normal');
11244                }
11245            }
11246        });
11247    };
11248
11249    var executeClickLink = function executeClickLink(thisObj, type) {
11250        if (thisObj.hasClass('active')) {
11251            thisObj.next('ul').removeClass('active');
11252            thisObj.removeClass('active');
11253        } else {
11254            //removing classes
11255            $('#great-menu.tabs ul').removeClass('active');
11256            $('#great-menu.tabs a').removeClass('active');
11257            $('#great-menu.tabs li.page_item_has_children').removeClass('first-level second-level active');
11258            //adding classes
11259            thisObj.addClass('active');
11260            thisObj.closest('ul').addClass('active');
11261            thisObj.closest('ul li').addClass('active');
11262            thisObj.parents('.page_item_has_children').last().addClass('first-level');
11263            if (!thisObj.closest('.page_item_has_children').hasClass('first-level')) {
11264                thisObj.closest('.page_item_has_children').addClass('second-level');
11265            }
11266            thisObj.parents('li.page_item_has_children').last().children('a').addClass('active');
11267            thisObj.next('ul').addClass('active');
11268
11269            if (type == 'fromId') {
11270                //adding title in parent and sublevel if comes from footer or home
11271                var firstText = thisObj.parents('li.page_item_has_children').last().children('a').text();
11272                var firstLevelTitle = '<p class="subtitle">' + firstText + '</p>';
11273                if (thisObj.closest('ul.children').children('p.subtitle').length == 0) {
11274                    thisObj.closest('ul.children').prepend(firstLevelTitle);
11275                }
11276                var levelTitle = '<p class="subtitle">' + thisObj.text() + '</p>';
11277                if (thisObj.next('ul.children.active').children('p.subtitle').length === 0) {
11278                    thisObj.next('ul.children.active').prepend(levelTitle);
11279                }
11280            } else {
11281                //adding title in sublevels
11282                var levelTitle = '<p class="subtitle">' + thisObj.text() + '</p>';
11283                if (thisObj.next('ul').children('p.subtitle').length == 0) {
11284                    thisObj.next('ul').prepend(levelTitle);
11285                }
11286            }
11287
11288            //calculating the highest column ul to change the hight of the div
11289            var previousCss = thisObj.next('ul').attr("style");
11290            thisObj.next('ul').css({
11291                visibility: 'hidden',
11292                display: 'block'
11293            });
11294            var nextUlHeight = thisObj.next('ul').height();
11295            var prevUlHeight = thisObj.closest('ul').height();
11296            var firstUlHeight = $("#great-menu > .menu > ul").height();
11297            thisObj.next('ul').attr("style", previousCss ? previousCss : "");
11298            var largest = Math.max(nextUlHeight, prevUlHeight, firstUlHeight);
11299            $("#great-menu").height(largest);
11300        }
11301    };
11302
11303    var executeClickLink_mobile = function executeClickLink_mobile(thisObj) {
11304        if (thisObj.hasClass('active')) {
11305            thisObj.parent('li').siblings().removeClass('inactive');
11306            thisObj.next('ul').removeClass('active');
11307            thisObj.removeClass('active');
11308        } else {
11309
11310            //removing classes
11311            $('#great-menu.tabs ul').removeClass('active');
11312            $('#great-menu.tabs a').removeClass('active');
11313            $('#great-menu.tabs li.page_item_has_children').removeClass('first-level second-level active');
11314
11315            //adding classes
11316            thisObj.addClass('active');
11317            thisObj.parents('li.page_item_has_children').last().children('a').addClass('active');
11318            thisObj.closest('ul').addClass('active');
11319            thisObj.parent('li').addClass('active');
11320            thisObj.parent('li').siblings().addClass('inactive');
11321            thisObj.next('ul').addClass('active');
11322        }
11323    };
11324})(jQuery);
11325
11326/*
11327 if($(this).parent('li').hasClass('page_item_has_children')) {
11328        //    console.log("passo per aqui");
11329            e.preventDefault();
11330            //removing classes
11331            $('#great-menu.tabs ul').removeClass('active');
11332            $('#great-menu.tabs a').removeClass('active');
11333            $('#great-menu.tabs li.page_item_has_children').removeClass('first-level second-level active');
11334            //adding classes
11335            $(this).addClass('active');
11336            $(this).closest('ul').addClass('active');
11337            $(this).closest('ul li').addClass('active');
11338            $(this).parents('.page_item_has_children').last().addClass('first-level');
11339            if(!$(this).closest('.page_item_has_children').hasClass('first-level')) {
11340                $(this).closest('.page_item_has_children').addClass('second-level');
11341            }
11342           
11343            $(this).parents('li.page_item_has_children').last().children('a').addClass('active');
11344            $(this).next('ul').addClass('active');
11345
11346            //adding title 
11347            //ToDO: control only one time
11348            var levelTitle = '<p class="subtitle">' + $(this).text() + '</p>';
11349            if(!$(this).next('ul').children('p.subtitle').length) {
11350                $(this).next('ul').prepend(levelTitle);
11351            } else {
11352                console.log("true ");
11353            }
11354            //calculating height
11355            var previousCss  = $(this).next('ul').attr("style");
11356            $(this).next('ul').css({
11357                visibility: 'hidden',
11358                display:    'block'
11359            });
11360            var nextUlHeight = $(this).next('ul').height();
11361            console.log(nextUlHeight);
11362            console.log($(this).text());
11363            $(this).next('ul').attr("style", previousCss ? previousCss : "");
11364            if($("#great-menu").height() < nextUlHeight) {
11365                $("#great-menu").height(nextUlHeight + 80);
11366            }
11367        } 
11368*/
11369
11370},{"./utils/utils":6,"uikit":2,"uikit/dist/js/uikit-icons":1}],4:[function(require,module,exports){
11371'use strict';
11372
11373/**
11374 * File navigation.js.
11375 *
11376 * Handles toggling the navigation menu for small screens and enables TAB key
11377 * navigation support for dropdown menus.
11378 */
11379(function () {
11380	var container, button, menu, links, i, len;
11381
11382	container = document.getElementById('site-navigation');
11383	if (!container) {
11384		return;
11385	}
11386
11387	button = container.getElementsByTagName('button')[0];
11388	if ('undefined' === typeof button) {
11389		return;
11390	}
11391
11392	menu = container.getElementsByTagName('ul')[0];
11393
11394	// Hide menu toggle button if menu is empty and return early.
11395	if ('undefined' === typeof menu) {
11396		button.style.display = 'none';
11397		return;
11398	}
11399
11400	menu.setAttribute('aria-expanded', 'false');
11401	if (-1 === menu.className.indexOf('nav-menu')) {
11402		menu.className += ' nav-menu';
11403	}
11404
11405	button.onclick = function () {
11406		if (-1 !== container.className.indexOf('toggled')) {
11407			container.className = container.className.replace(' toggled', '');
11408			button.setAttribute('aria-expanded', 'false');
11409			menu.setAttribute('aria-expanded', 'false');
11410		} else {
11411			container.className += ' toggled';
11412			button.setAttribute('aria-expanded', 'true');
11413			menu.setAttribute('aria-expanded', 'true');
11414		}
11415	};
11416
11417	// Get all the link elements within the menu.
11418	links = menu.getElementsByTagName('a');
11419
11420	// Each time a menu link is focused or blurred, toggle focus.
11421	for (i = 0, len = links.length; i < len; i++) {
11422		links[i].addEventListener('focus', toggleFocus, true);
11423		links[i].addEventListener('blur', toggleFocus, true);
11424	}
11425
11426	/**
11427  * Sets or removes .focus class on an element.
11428  */
11429	function toggleFocus() {
11430		var self = this;
11431
11432		// Move up through the ancestors of the current link until we hit .nav-menu.
11433		while (-1 === self.className.indexOf('nav-menu')) {
11434
11435			// On li elements toggle the class .focus.
11436			if ('li' === self.tagName.toLowerCase()) {
11437				if (-1 !== self.className.indexOf('focus')) {
11438					self.className = self.className.replace(' focus', '');
11439				} else {
11440					self.className += ' focus';
11441				}
11442			}
11443
11444			self = self.parentElement;
11445		}
11446	}
11447
11448	/**
11449  * Toggles `focus` class to allow submenu access on tablets.
11450  */
11451	(function (container) {
11452		var touchStartFn,
11453		    i,
11454		    parentLink = container.querySelectorAll('.menu-item-has-children > a, .page_item_has_children > a');
11455
11456		if ('ontouchstart' in window) {
11457			touchStartFn = function touchStartFn(e) {
11458				var menuItem = this.parentNode,
11459				    i;
11460
11461				if (!menuItem.classList.contains('focus')) {
11462					e.preventDefault();
11463					for (i = 0; i < menuItem.parentNode.children.length; ++i) {
11464						if (menuItem === menuItem.parentNode.children[i]) {
11465							continue;
11466						}
11467						menuItem.parentNode.children[i].classList.remove('focus');
11468					}
11469					menuItem.classList.add('focus');
11470				} else {
11471					menuItem.classList.remove('focus');
11472				}
11473			};
11474
11475			for (i = 0; i < parentLink.length; ++i) {
11476				parentLink[i].addEventListener('touchstart', touchStartFn, false);
11477			}
11478		}
11479	})(container);
11480})();
11481
11482},{}],5:[function(require,module,exports){
11483'use strict';
11484
11485/**
11486 * File skip-link-focus-fix.js.
11487 *
11488 * Helps with accessibility for keyboard only users.
11489 *
11490 * Learn more: https://git.io/vWdr2
11491 */
11492(function () {
11493	var isIe = /(trident|msie)/i.test(navigator.userAgent);
11494
11495	if (isIe && document.getElementById && window.addEventListener) {
11496		window.addEventListener('hashchange', function () {
11497			var id = location.hash.substring(1),
11498			    element;
11499
11500			if (!/^[A-z0-9_-]+$/.test(id)) {
11501				return;
11502			}
11503
11504			element = document.getElementById(id);
11505
11506			if (element) {
11507				if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {
11508					element.tabIndex = -1;
11509				}
11510
11511				element.focus();
11512			}
11513		}, false);
11514	}
11515})();
11516
11517},{}],6:[function(require,module,exports){
11518'use strict';
11519
11520require('./navigation');
11521
11522require('./skip-link-focus-fix');
11523
11524},{"./navigation":4,"./skip-link-focus-fix":5}]},{},[3]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.