UNPKG

@input-output-hk/front-end-site-components

Version:
243 lines (227 loc) 37.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _styledComponents = require("styled-components"); var _theme = require("@input-output-hk/front-end-core-libraries/build/theme"); function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n html {\n max-width: 100%;\n overflow-x: hidden;\n background-color: ", ";\n box-sizing: border-box;\n font-size: 62.5%;\n }\n\n *,\n *:before,\n *:after {\n box-sizing:inherit;\n }\n\n hr {\n height: 0.1rem;\n color: ", ";\n background-color: ", ";\n border: none;\n }\n\n body {\n color: ", ";\n margin: 0;\n background-color: ", ";\n -ms-overflow-style: -ms-autohiding-scrollbar;\n min-height: 100vh;\n }\n\n body,\n input,\n textarea {\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", "\n }\n\n h1 {\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", "\n }\n\n h2 {\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", "\n }\n\n h3 {\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", "\n }\n\n h4 {\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", "\n }\n\n h5 {\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", "\n }\n\n h6 {\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n line-height: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n ", "\n }\n\n small {\n color: ", ";\n }\n\n ul,\n ol {\n list-style-position: inside;\n margin-left:0;\n padding: 0;\n }\n\n a {\n outline-width: 0.5rem;\n color: ", ";\n transition: color 0.1s ease-in-out;\n text-decoration: none;\n\n &:hover {\n color: ", ";\n }\n }\n\n img {\n max-width: 100%;\n height: auto;\n }\n"]); _templateObject = function _templateObject() { return data; }; return data; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function getProperty(key) { return key.replace(/([A-Z])/g, function (_, upper) { return "-".concat(upper.toLowerCase()); }); } function getResponsiveFontCSS(font, baseFontSize, defaultLetterSpacing) { var baseCSS = ''; var excludedKeys = ['font-family', 'font-size', 'font-weight', 'line-height', 'letter-spacing', 'text-transform']; var responsiveKeys = []; Object.keys(font).forEach(function (key) { if (key.match(/^@/)) { responsiveKeys.push(key); } else if (!excludedKeys.includes(key)) { baseCSS += "".concat(getProperty(key), ": ").concat(font[key], ";"); } }); var responsiveConfig = {}; responsiveKeys.forEach(function (key) { responsiveConfig[key] = _objectSpread({}, font[key]); if (responsiveConfig[key].fontSize !== undefined) responsiveConfig[key].fontSize = (0, _theme.getFontSize)(responsiveConfig[key].fontSize, baseFontSize); if (responsiveConfig[key].letterSpacing !== undefined) responsiveConfig[key].letterSpacing = (0, _theme.getLetterSpacing)(responsiveConfig[key].letterSpacing, defaultLetterSpacing); }); var responsiveCSS = Object.keys(responsiveConfig).map(function (query) { var styles = Object.keys(responsiveConfig[query]).map(function (key) { return "".concat(getProperty(key), ": ").concat(responsiveConfig[query][key], ";"); }).join(''); return "".concat(query, " { ").concat(styles, " }"); }).join(''); return "".concat(baseCSS).concat(responsiveCSS); } function getNumericValue(value, defaultValue) { if (value === undefined || value === null) return defaultValue; return value; } var _default = (0, _styledComponents.createGlobalStyle)(_templateObject(), function (_ref) { var theme = _ref.theme; return theme.colors.background["default"]; }, function (_ref2) { var theme = _ref2.theme; return theme.colors.text.primary; }, function (_ref3) { var theme = _ref3.theme; return theme.colors.text.primary; }, function (_ref4) { var theme = _ref4.theme; return theme.colors.text.primary; }, function (_ref5) { var theme = _ref5.theme; return theme.colors.background["default"]; }, function (_ref6) { var theme = _ref6.theme; return theme.typography.body.fontFamily || theme.typography.fontFamily; }, function (_ref7) { var theme = _ref7.theme; return (0, _theme.getFontSize)(theme.typography.body.fontSize, theme.typography.baseFontSize); }, function (_ref8) { var theme = _ref8.theme; return getNumericValue(theme.typography.body.fontWeight, theme.typography.fontWeight); }, function (_ref9) { var theme = _ref9.theme; return getNumericValue(theme.typography.body.lineHeight, theme.typography.lineHeight); }, function (_ref10) { var theme = _ref10.theme; return (0, _theme.getLetterSpacing)(theme.typography.body.letterSpacing, theme.typography.letterSpacing); }, function (_ref11) { var theme = _ref11.theme; return theme.typography.body.textTransform || theme.typography.textTransform; }, function (_ref12) { var theme = _ref12.theme; return getResponsiveFontCSS(theme.typography.body, theme.typography.baseFontSize); }, function (_ref13) { var theme = _ref13.theme; return theme.typography.h1.fontFamily || theme.typography.fontFamily; }, function (_ref14) { var theme = _ref14.theme; return (0, _theme.getFontSize)(theme.typography.h1.fontSize, theme.typography.baseFontSize); }, function (_ref15) { var theme = _ref15.theme; return getNumericValue(theme.typography.h1.fontWeight, theme.typography.fontWeight); }, function (_ref16) { var theme = _ref16.theme; return getNumericValue(theme.typography.h1.lineHeight, theme.typography.lineHeight); }, function (_ref17) { var theme = _ref17.theme; return (0, _theme.getLetterSpacing)(theme.typography.h1.letterSpacing, theme.typography.letterSpacing); }, function (_ref18) { var theme = _ref18.theme; return theme.typography.h1.textTransform || theme.typography.textTransform; }, function (_ref19) { var theme = _ref19.theme; return getResponsiveFontCSS(theme.typography.h1, theme.typography.baseFontSize); }, function (_ref20) { var theme = _ref20.theme; return theme.typography.h2.fontFamily || theme.typography.fontFamily; }, function (_ref21) { var theme = _ref21.theme; return (0, _theme.getFontSize)(theme.typography.h2.fontSize, theme.typography.baseFontSize); }, function (_ref22) { var theme = _ref22.theme; return getNumericValue(theme.typography.h2.fontWeight, theme.typography.fontWeight); }, function (_ref23) { var theme = _ref23.theme; return getNumericValue(theme.typography.h2.lineHeight, theme.typography.lineHeight); }, function (_ref24) { var theme = _ref24.theme; return (0, _theme.getLetterSpacing)(theme.typography.h2.letterSpacing, theme.typography.letterSpacing); }, function (_ref25) { var theme = _ref25.theme; return theme.typography.h2.textTransform || theme.typography.textTransform; }, function (_ref26) { var theme = _ref26.theme; return getResponsiveFontCSS(theme.typography.h2, theme.typography.baseFontSize); }, function (_ref27) { var theme = _ref27.theme; return theme.typography.h3.fontFamily || theme.typography.fontFamily; }, function (_ref28) { var theme = _ref28.theme; return (0, _theme.getFontSize)(theme.typography.h3.fontSize, theme.typography.baseFontSize); }, function (_ref29) { var theme = _ref29.theme; return getNumericValue(theme.typography.h3.fontWeight, theme.typography.fontWeight); }, function (_ref30) { var theme = _ref30.theme; return getNumericValue(theme.typography.h3.lineHeight, theme.typography.lineHeight); }, function (_ref31) { var theme = _ref31.theme; return (0, _theme.getLetterSpacing)(theme.typography.h3.letterSpacing, theme.typography.letterSpacing); }, function (_ref32) { var theme = _ref32.theme; return theme.typography.h3.textTransform || theme.typography.textTransform; }, function (_ref33) { var theme = _ref33.theme; return getResponsiveFontCSS(theme.typography.h3, theme.typography.baseFontSize); }, function (_ref34) { var theme = _ref34.theme; return theme.typography.h4.fontFamily || theme.typography.fontFamily; }, function (_ref35) { var theme = _ref35.theme; return (0, _theme.getFontSize)(theme.typography.h4.fontSize, theme.typography.baseFontSize); }, function (_ref36) { var theme = _ref36.theme; return getNumericValue(theme.typography.h4.fontWeight, theme.typography.fontWeight); }, function (_ref37) { var theme = _ref37.theme; return getNumericValue(theme.typography.h4.lineHeight, theme.typography.lineHeight); }, function (_ref38) { var theme = _ref38.theme; return (0, _theme.getLetterSpacing)(theme.typography.h4.letterSpacing, theme.typography.letterSpacing); }, function (_ref39) { var theme = _ref39.theme; return theme.typography.h4.textTransform || theme.typography.textTransform; }, function (_ref40) { var theme = _ref40.theme; return getResponsiveFontCSS(theme.typography.h4, theme.typography.baseFontSize); }, function (_ref41) { var theme = _ref41.theme; return theme.typography.h5.fontFamily || theme.typography.fontFamily; }, function (_ref42) { var theme = _ref42.theme; return (0, _theme.getFontSize)(theme.typography.h5.fontSize, theme.typography.baseFontSize); }, function (_ref43) { var theme = _ref43.theme; return getNumericValue(theme.typography.h5.fontWeight, theme.typography.fontWeight); }, function (_ref44) { var theme = _ref44.theme; return getNumericValue(theme.typography.h5.lineHeight, theme.typography.lineHeight); }, function (_ref45) { var theme = _ref45.theme; return (0, _theme.getLetterSpacing)(theme.typography.h5.letterSpacing, theme.typography.letterSpacing); }, function (_ref46) { var theme = _ref46.theme; return theme.typography.h5.textTransform || theme.typography.textTransform; }, function (_ref47) { var theme = _ref47.theme; return getResponsiveFontCSS(theme.typography.h5, theme.typography.baseFontSize); }, function (_ref48) { var theme = _ref48.theme; return theme.typography.h6.fontFamily || theme.typography.fontFamily; }, function (_ref49) { var theme = _ref49.theme; return (0, _theme.getFontSize)(theme.typography.h6.fontSize, theme.typography.baseFontSize); }, function (_ref50) { var theme = _ref50.theme; return getNumericValue(theme.typography.h6.fontWeight, theme.typography.fontWeight); }, function (_ref51) { var theme = _ref51.theme; return getNumericValue(theme.typography.h6.lineHeight, theme.typography.lineHeight); }, function (_ref52) { var theme = _ref52.theme; return (0, _theme.getLetterSpacing)(theme.typography.h6.letterSpacing, theme.typography.letterSpacing); }, function (_ref53) { var theme = _ref53.theme; return theme.typography.h6.textTransform || theme.typography.textTransform; }, function (_ref54) { var theme = _ref54.theme; return getResponsiveFontCSS(theme.typography.h6, theme.typography.baseFontSize); }, function (_ref55) { var theme = _ref55.theme; return theme.colors.text.secondary; }, function (_ref56) { var theme = _ref56.theme; return theme.colors.primary.main; }, function (_ref57) { var theme = _ref57.theme; return theme.colors.primary.light; }); exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TdHlsZXMuanMiXSwibmFtZXMiOlsiZ2V0UHJvcGVydHkiLCJrZXkiLCJyZXBsYWNlIiwiXyIsInVwcGVyIiwidG9Mb3dlckNhc2UiLCJnZXRSZXNwb25zaXZlRm9udENTUyIsImZvbnQiLCJiYXNlRm9udFNpemUiLCJkZWZhdWx0TGV0dGVyU3BhY2luZyIsImJhc2VDU1MiLCJleGNsdWRlZEtleXMiLCJyZXNwb25zaXZlS2V5cyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwibWF0Y2giLCJwdXNoIiwiaW5jbHVkZXMiLCJyZXNwb25zaXZlQ29uZmlnIiwiZm9udFNpemUiLCJ1bmRlZmluZWQiLCJsZXR0ZXJTcGFjaW5nIiwicmVzcG9uc2l2ZUNTUyIsIm1hcCIsInF1ZXJ5Iiwic3R5bGVzIiwiam9pbiIsImdldE51bWVyaWNWYWx1ZSIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiY3JlYXRlR2xvYmFsU3R5bGUiLCJ0aGVtZSIsImNvbG9ycyIsImJhY2tncm91bmQiLCJ0ZXh0IiwicHJpbWFyeSIsInR5cG9ncmFwaHkiLCJib2R5IiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0IiwidGV4dFRyYW5zZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsInNlY29uZGFyeSIsIm1haW4iLCJsaWdodCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FBVCxDQUFzQkMsR0FBdEIsRUFBMkI7QUFDekIsU0FBT0EsR0FBRyxDQUFDQyxPQUFKLENBQVksVUFBWixFQUF3QixVQUFDQyxDQUFELEVBQUlDLEtBQUo7QUFBQSxzQkFBa0JBLEtBQUssQ0FBQ0MsV0FBTixFQUFsQjtBQUFBLEdBQXhCLENBQVA7QUFDRDs7QUFFRCxTQUFTQyxvQkFBVCxDQUErQkMsSUFBL0IsRUFBcUNDLFlBQXJDLEVBQW1EQyxvQkFBbkQsRUFBeUU7QUFDdkUsTUFBSUMs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LEtBQUssQ0FBQ0MsTUFBTixDQUFhRyxPQUFiLENBQXFCZSxLQUFwQztBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVHbG9iYWxTdHlsZSB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuaW1wb3J0IHsgZ2V0Rm9udFNpemUsIGdldExldHRlclNwYWNpbmcgfSBmcm9tICdAaW5wdXQtb3V0cHV0LWhrL2Zyb250LWVuZC1jb3JlLWxpYnJhcmllcy9idWlsZC90aGVtZSdcblxuZnVuY3Rpb24gZ2V0UHJvcGVydHkgKGtleSkge1xuICByZXR1cm4ga2V5LnJlcGxhY2UoLyhbQS1aXSkvZywgKF8sIHVwcGVyKSA9PiBgLSR7dXBwZXIudG9Mb3dlckNhc2UoKX1gKVxufVxuXG5mdW5jdGlvbiBnZXRSZXNwb25zaXZlRm9udENTUyAoZm9udCwgYmFzZUZvbnRTaXplLCBkZWZhdWx0TGV0dGVyU3BhY2luZykge1xuICBsZXQgYmFzZUNTUyA9ICcnXG4gIGNvbnN0IGV4Y2x1ZGVkS2V5cyA9IFsgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtc2l6ZScsICdmb250LXdlaWdodCcsICdsaW5lLWhlaWdodCcsICdsZXR0ZXItc3BhY2luZycsICd0ZXh0LXRyYW5zZm9ybScgXVxuICBjb25zdCByZXNwb25zaXZlS2V5cyA9IFtdXG4gIE9iamVjdC5rZXlzKGZvbnQpLmZvckVhY2goa2V5ID0+IHtcbiAgICBpZiAoa2V5Lm1hdGNoKC9eQC8pKSB7XG4gICAgICByZXNwb25zaXZlS2V5cy5wdXNoKGtleSlcbiAgICB9IGVsc2UgaWYgKCFleGNsdWRlZEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgYmFzZUNTUyArPSBgJHtnZXRQcm9wZXJ0eShrZXkpfTogJHtmb250W2tleV19O2BcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgcmVzcG9uc2l2ZUNvbmZpZyA9IHt9XG4gIHJlc3BvbnNpdmVLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICByZXNwb25zaXZlQ29uZmlnW2tleV0gPSB7IC4uLmZvbnRba2V5XSB9XG4gICAgaWYgKHJlc3BvbnNpdmVDb25maWdba2V5XS5mb250U2l6ZSAhPT0gdW5kZWZpbmVkKSByZXNwb25zaXZlQ29uZmlnW2tleV0uZm9udFNpemUgPSBnZXRGb250U2l6ZShyZXNwb25zaXZlQ29uZmlnW2tleV0uZm9udFNpemUsIGJhc2VGb250U2l6ZSlcbiAgICBpZiAocmVzcG9uc2l2ZUNvbmZpZ1trZXldLmxldHRlclNwYWNpbmcgIT09IHVuZGVmaW5lZCkgcmVzcG9uc2l2ZUNvbmZpZ1trZXldLmxldHRlclNwYWNpbmcgPSBnZXRMZXR0ZXJTcGFjaW5nKHJlc3BvbnNpdmVDb25maWdba2V5XS5sZXR0ZXJTcGFjaW5nLCBkZWZhdWx0TGV0dGVyU3BhY2luZylcbiAgfSlcblxuICBjb25zdCByZXNwb25zaXZlQ1NTID0gT2JqZWN0LmtleXMocmVzcG9uc2l2ZUNvbmZpZykubWFwKHF1ZXJ5ID0+IHtcbiAgICBjb25zdCBzdHlsZXMgPSBPYmplY3Qua2V5cyhyZXNwb25zaXZlQ29uZmlnW3F1ZXJ5XSkubWFwKGtleSA9PiB7XG4gICAgICByZXR1cm4gYCR7Z2V0UHJvcGVydHkoa2V5KX06ICR7cmVzcG9uc2l2ZUNvbmZpZ1txdWVyeV1ba2V5XX07YFxuICAgIH0pLmpvaW4oJycpXG5cbiAgICByZXR1cm4gYCR7cXVlcnl9IHsgJHtzdHlsZXN9IH1gXG4gIH0pLmpvaW4oJycpXG5cbiAgcmV0dXJuIGAke2Jhc2VDU1N9JHtyZXNwb25zaXZlQ1NTfWBcbn1cblxuZnVuY3Rpb24gZ2V0TnVtZXJpY1ZhbHVlICh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gZGVmYXVsdFZhbHVlXG4gIHJldHVybiB2YWx1ZVxufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVHbG9iYWxTdHlsZWBcbiAgaHRtbCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5iYWNrZ3JvdW5kLmRlZmF1bHR9O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZm9udC1zaXplOiA2Mi41JTtcbiAgfVxuXG4gICosXG4gICo6YmVmb3JlLFxuICAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOmluaGVyaXQ7XG4gIH1cblxuICBociB7XG4gICAgaGVpZ2h0OiAwLjFyZW07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnRleHQucHJpbWFyeX07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMudGV4dC5wcmltYXJ5fTtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cblxuICBib2R5IHtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMudGV4dC5wcmltYXJ5fTtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMuYmFja2dyb3VuZC5kZWZhdWx0fTtcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgfVxuXG4gIGJvZHksXG4gIGlucHV0LFxuICB0ZXh0YXJlYSB7XG4gICAgZm9udC1mYW1pbHk6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudHlwb2dyYXBoeS5ib2R5LmZvbnRGYW1pbHkgfHwgdGhlbWUudHlwb2dyYXBoeS5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0Rm9udFNpemUodGhlbWUudHlwb2dyYXBoeS5ib2R5LmZvbnRTaXplLCB0aGVtZS50eXBvZ3JhcGh5LmJhc2VGb250U2l6ZSl9O1xuICAgIGZvbnQtd2VpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IGdldE51bWVyaWNWYWx1ZSh0aGVtZS50eXBvZ3JhcGh5LmJvZHkuZm9udFdlaWdodCwgdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0KX07XG4gICAgbGluZS1oZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0TnVtZXJpY1ZhbHVlKHRoZW1lLnR5cG9ncmFwaHkuYm9keS5saW5lSGVpZ2h0LCB0aGVtZS50eXBvZ3JhcGh5LmxpbmVIZWlnaHQpfTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHsoeyB0aGVtZSB9KSA9PiBnZXRMZXR0ZXJTcGFjaW5nKHRoZW1lLnR5cG9ncmFwaHkuYm9keS5sZXR0ZXJTcGFjaW5nLCB0aGVtZS50eXBvZ3JhcGh5LmxldHRlclNwYWNpbmcpfTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50eXBvZ3JhcGh5LmJvZHkudGV4dFRyYW5zZm9ybSB8fCB0aGVtZS50eXBvZ3JhcGh5LnRleHRUcmFuc2Zvcm19O1xuICAgICR7KHsgdGhlbWUgfSkgPT4gZ2V0UmVzcG9uc2l2ZUZvbnRDU1ModGhlbWUudHlwb2dyYXBoeS5ib2R5LCB0aGVtZS50eXBvZ3JhcGh5LmJhc2VGb250U2l6ZSl9XG4gIH1cblxuICBoMSB7XG4gICAgZm9udC1mYW1pbHk6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudHlwb2dyYXBoeS5oMS5mb250RmFtaWx5IHx8IHRoZW1lLnR5cG9ncmFwaHkuZm9udEZhbWlseX07XG4gICAgZm9udC1zaXplOiAkeyh7IHRoZW1lIH0pID0+IGdldEZvbnRTaXplKHRoZW1lLnR5cG9ncmFwaHkuaDEuZm9udFNpemUsIHRoZW1lLnR5cG9ncmFwaHkuYmFzZUZvbnRTaXplKX07XG4gICAgZm9udC13ZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0TnVtZXJpY1ZhbHVlKHRoZW1lLnR5cG9ncmFwaHkuaDEuZm9udFdlaWdodCwgdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0KX07XG4gICAgbGluZS1oZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0TnVtZXJpY1ZhbHVlKHRoZW1lLnR5cG9ncmFwaHkuaDEubGluZUhlaWdodCwgdGhlbWUudHlwb2dyYXBoeS5saW5lSGVpZ2h0KX07XG4gICAgbGV0dGVyLXNwYWNpbmc6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0TGV0dGVyU3BhY2luZyh0aGVtZS50eXBvZ3JhcGh5LmgxLmxldHRlclNwYWNpbmcsIHRoZW1lLnR5cG9ncmFwaHkubGV0dGVyU3BhY2luZyl9O1xuICAgIHRleHQtdHJhbnNmb3JtOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnR5cG9ncmFwaHkuaDEudGV4dFRyYW5zZm9ybSB8fCB0aGVtZS50eXBvZ3JhcGh5LnRleHRUcmFuc2Zvcm19O1xuICAgICR7KHsgdGhlbWUgfSkgPT4gZ2V0UmVzcG9uc2l2ZUZvbnRDU1ModGhlbWUudHlwb2dyYXBoeS5oMSwgdGhlbWUudHlwb2dyYXBoeS5iYXNlRm9udFNpemUpfVxuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtZmFtaWx5OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnR5cG9ncmFwaHkuaDIuZm9udEZhbWlseSB8fCB0aGVtZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHl9O1xuICAgIGZvbnQtc2l6ZTogJHsoeyB0aGVtZSB9KSA9PiBnZXRGb250U2l6ZSh0aGVtZS50eXBvZ3JhcGh5LmgyLmZvbnRTaXplLCB0aGVtZS50eXBvZ3JhcGh5LmJhc2VGb250U2l6ZSl9O1xuICAgIGZvbnQtd2VpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IGdldE51bWVyaWNWYWx1ZSh0aGVtZS50eXBvZ3JhcGh5LmgyLmZvbnRXZWlnaHQsIHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodCl9O1xuICAgIGxpbmUtaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IGdldE51bWVyaWNWYWx1ZSh0aGVtZS50eXBvZ3JhcGh5LmgyLmxpbmVIZWlnaHQsIHRoZW1lLnR5cG9ncmFwaHkubGluZUhlaWdodCl9O1xuICAgIGxldHRlci1zcGFjaW5nOiAkeyh7IHRoZW1lIH0pID0+IGdldExldHRlclNwYWNpbmcodGhlbWUudHlwb2dyYXBoeS5oMi5sZXR0ZXJTcGFjaW5nLCB0aGVtZS50eXBvZ3JhcGh5LmxldHRlclNwYWNpbmcpfTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50eXBvZ3JhcGh5LmgyLnRleHRUcmFuc2Zvcm0gfHwgdGhlbWUudHlwb2dyYXBoeS50ZXh0VHJhbnNmb3JtfTtcbiAgICAkeyh7IHRoZW1lIH0pID0+IGdldFJlc3BvbnNpdmVGb250Q1NTKHRoZW1lLnR5cG9ncmFwaHkuaDIsIHRoZW1lLnR5cG9ncmFwaHkuYmFzZUZvbnRTaXplKX1cbiAgfVxuXG4gIGgzIHtcbiAgICBmb250LWZhbWlseTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50eXBvZ3JhcGh5LmgzLmZvbnRGYW1pbHkgfHwgdGhlbWUudHlwb2dyYXBoeS5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0Rm9udFNpemUodGhlbWUudHlwb2dyYXBoeS5oMy5mb250U2l6ZSwgdGhlbWUudHlwb2dyYXBoeS5iYXNlRm9udFNpemUpfTtcbiAgICBmb250LXdlaWdodDogJHsoeyB0aGVtZSB9KSA9PiBnZXROdW1lcmljVmFsdWUodGhlbWUudHlwb2dyYXBoeS5oMy5mb250V2VpZ2h0LCB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHQpfTtcbiAgICBsaW5lLWhlaWdodDogJHsoeyB0aGVtZSB9KSA9PiBnZXROdW1lcmljVmFsdWUodGhlbWUudHlwb2dyYXBoeS5oMy5saW5lSGVpZ2h0LCB0aGVtZS50eXBvZ3JhcGh5LmxpbmVIZWlnaHQpfTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHsoeyB0aGVtZSB9KSA9PiBnZXRMZXR0ZXJTcGFjaW5nKHRoZW1lLnR5cG9ncmFwaHkuaDMubGV0dGVyU3BhY2luZywgdGhlbWUudHlwb2dyYXBoeS5sZXR0ZXJTcGFjaW5nKX07XG4gICAgdGV4dC10cmFuc2Zvcm06ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudHlwb2dyYXBoeS5oMy50ZXh0VHJhbnNmb3JtIHx8IHRoZW1lLnR5cG9ncmFwaHkudGV4dFRyYW5zZm9ybX07XG4gICAgJHsoeyB0aGVtZSB9KSA9PiBnZXRSZXNwb25zaXZlRm9udENTUyh0aGVtZS50eXBvZ3JhcGh5LmgzLCB0aGVtZS50eXBvZ3JhcGh5LmJhc2VGb250U2l6ZSl9XG4gIH1cblxuICBoNCB7XG4gICAgZm9udC1mYW1pbHk6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudHlwb2dyYXBoeS5oNC5mb250RmFtaWx5IHx8IHRoZW1lLnR5cG9ncmFwaHkuZm9udEZhbWlseX07XG4gICAgZm9udC1zaXplOiAkeyh7IHRoZW1lIH0pID0+IGdldEZvbnRTaXplKHRoZW1lLnR5cG9ncmFwaHkuaDQuZm9udFNpemUsIHRoZW1lLnR5cG9ncmFwaHkuYmFzZUZvbnRTaXplKX07XG4gICAgZm9udC13ZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0TnVtZXJpY1ZhbHVlKHRoZW1lLnR5cG9ncmFwaHkuaDQuZm9udFdlaWdodCwgdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0KX07XG4gICAgbGluZS1oZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0TnVtZXJpY1ZhbHVlKHRoZW1lLnR5cG9ncmFwaHkuaDQubGluZUhlaWdodCwgdGhlbWUudHlwb2dyYXBoeS5saW5lSGVpZ2h0KX07XG4gICAgbGV0dGVyLXNwYWNpbmc6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0TGV0dGVyU3BhY2luZyh0aGVtZS50eXBvZ3JhcGh5Lmg0LmxldHRlclNwYWNpbmcsIHRoZW1lLnR5cG9ncmFwaHkubGV0dGVyU3BhY2luZyl9O1xuICAgIHRleHQtdHJhbnNmb3JtOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnR5cG9ncmFwaHkuaDQudGV4dFRyYW5zZm9ybSB8fCB0aGVtZS50eXBvZ3JhcGh5LnRleHRUcmFuc2Zvcm19O1xuICAgICR7KHsgdGhlbWUgfSkgPT4gZ2V0UmVzcG9uc2l2ZUZvbnRDU1ModGhlbWUudHlwb2dyYXBoeS5oNCwgdGhlbWUudHlwb2dyYXBoeS5iYXNlRm9udFNpemUpfVxuICB9XG5cbiAgaDUge1xuICAgIGZvbnQtZmFtaWx5OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnR5cG9ncmFwaHkuaDUuZm9udEZhbWlseSB8fCB0aGVtZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHl9O1xuICAgIGZvbnQtc2l6ZTogJHsoeyB0aGVtZSB9KSA9PiBnZXRGb250U2l6ZSh0aGVtZS50eXBvZ3JhcGh5Lmg1LmZvbnRTaXplLCB0aGVtZS50eXBvZ3JhcGh5LmJhc2VGb250U2l6ZSl9O1xuICAgIGZvbnQtd2VpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IGdldE51bWVyaWNWYWx1ZSh0aGVtZS50eXBvZ3JhcGh5Lmg1LmZvbnRXZWlnaHQsIHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodCl9O1xuICAgIGxpbmUtaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IGdldE51bWVyaWNWYWx1ZSh0aGVtZS50eXBvZ3JhcGh5Lmg1LmxpbmVIZWlnaHQsIHRoZW1lLnR5cG9ncmFwaHkubGluZUhlaWdodCl9O1xuICAgIGxldHRlci1zcGFjaW5nOiAkeyh7IHRoZW1lIH0pID0+IGdldExldHRlclNwYWNpbmcodGhlbWUudHlwb2dyYXBoeS5oNS5sZXR0ZXJTcGFjaW5nLCB0aGVtZS50eXBvZ3JhcGh5LmxldHRlclNwYWNpbmcpfTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50eXBvZ3JhcGh5Lmg1LnRleHRUcmFuc2Zvcm0gfHwgdGhlbWUudHlwb2dyYXBoeS50ZXh0VHJhbnNmb3JtfTtcbiAgICAkeyh7IHRoZW1lIH0pID0+IGdldFJlc3BvbnNpdmVGb250Q1NTKHRoZW1lLnR5cG9ncmFwaHkuaDUsIHRoZW1lLnR5cG9ncmFwaHkuYmFzZUZvbnRTaXplKX1cbiAgfVxuXG4gIGg2IHtcbiAgICBmb250LWZhbWlseTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS50eXBvZ3JhcGh5Lmg2LmZvbnRGYW1pbHkgfHwgdGhlbWUudHlwb2dyYXBoeS5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6ICR7KHsgdGhlbWUgfSkgPT4gZ2V0Rm9udFNpemUodGhlbWUudHlwb2dyYXBoeS5oNi5mb250U2l6ZSwgdGhlbWUudHlwb2dyYXBoeS5iYXNlRm9udFNpemUpfTtcbiAgICBmb250LXdlaWdodDogJHsoeyB0aGVtZSB9KSA9PiBnZXROdW1lcmljVmFsdWUodGhlbWUudHlwb2dyYXBoeS5oNi5mb250V2VpZ2h0LCB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHQpfTtcbiAgICBsaW5lLWhlaWdodDogJHsoeyB0aGVtZSB9KSA9PiBnZXROdW1lcmljVmFsdWUodGhlbWUudHlwb2dyYXBoeS5oNi5saW5lSGVpZ2h0LCB0aGVtZS50eXBvZ3JhcGh5LmxpbmVIZWlnaHQpfTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHsoeyB0aGVtZSB9KSA9PiBnZXRMZXR0ZXJTcGFjaW5nKHRoZW1lLnR5cG9ncmFwaHkuaDYubGV0dGVyU3BhY2luZywgdGhlbWUudHlwb2dyYXBoeS5sZXR0ZXJTcGFjaW5nKX07XG4gICAgdGV4dC10cmFuc2Zvcm06ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUudHlwb2dyYXBoeS5oNi50ZXh0VHJhbnNmb3JtIHx8IHRoZW1lLnR5cG9ncmFwaHkudGV4dFRyYW5zZm9ybX07XG4gICAgJHsoeyB0aGVtZSB9KSA9PiBnZXRSZXNwb25zaXZlRm9udENTUyh0aGVtZS50eXBvZ3JhcGh5Lmg2LCB0aGVtZS50eXBvZ3JhcGh5LmJhc2VGb250U2l6ZSl9XG4gIH1cblxuICBzbWFsbCB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnRleHQuc2Vjb25kYXJ5fTtcbiAgfVxuXG4gIHVsLFxuICBvbCB7XG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlO1xuICAgIG1hcmdpbi1sZWZ0OjA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIGEge1xuICAgIG91dGxpbmUtd2lkdGg6IDAuNXJlbTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMucHJpbWFyeS5tYWlufTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjFzIGVhc2UtaW4tb3V0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkubGlnaHR9O1xuICAgIH1cbiAgfVxuXG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuYFxuIl19