',\n monthHtml,\n yearHtml,\n prev = true,\n next = true;\n for (arr = [], i = 0; i < 12; i++) {\n arr.push('
opts.maxMonth ? ' disabled=\"disabled\"' : '') + '>' + opts.i18n.months[i] + ' ');\n }\n monthHtml = '
' + opts.i18n.months[month] + '' + arr.join('') + '
';\n if (isArray(opts.yearRange)) {\n i = opts.yearRange[0];\n j = opts.yearRange[1] + 1;\n } else {\n i = year - opts.yearRange;\n j = 1 + year + opts.yearRange;\n }\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push('
' + i + ' ');\n }\n }\n yearHtml = '
' + year + opts.yearSuffix + '' + arr.join('') + '
';\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n prev = false;\n }\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n next = false;\n }\n if (c === 0) {\n html += '
' + opts.i18n.previousMonth + ' ';\n }\n if (c === instance._o.numberOfMonths - 1) {\n html += '
' + opts.i18n.nextMonth + ' ';\n }\n return html += '
';\n },\n renderTable = function (opts, data, randId) {\n return '' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '
';\n }\n this.el.innerHTML = html;\n if (opts.bound) {\n if (opts.field.type !== 'hidden') {\n sto(function () {\n opts.trigger.focus();\n }, 1);\n }\n }\n if (typeof this._o.onDraw === 'function') {\n this._o.onDraw(this);\n }\n if (opts.bound) {\n // let the screen reader user know to use arrow keys\n opts.field.setAttribute('aria-label', opts.ariaLabel);\n }\n },\n adjustPosition: function () {\n var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n if (this._o.container) return;\n this.el.style.position = 'absolute';\n field = this._o.trigger;\n pEl = field;\n width = this.el.offsetWidth;\n height = this.el.offsetHeight;\n viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n leftAligned = true;\n bottomAligned = true;\n if (typeof field.getBoundingClientRect === 'function') {\n clientRect = field.getBoundingClientRect();\n left = clientRect.left + window.pageXOffset;\n top = clientRect.bottom + window.pageYOffset;\n } else {\n left = pEl.offsetLeft;\n top = pEl.offsetTop + pEl.offsetHeight;\n while (pEl = pEl.offsetParent) {\n left += pEl.offsetLeft;\n top += pEl.offsetTop;\n }\n }\n\n // default position is bottom & left\n if (this._o.reposition && left + width > viewportWidth || this._o.position.indexOf('right') > -1 && left - width + field.offsetWidth > 0) {\n left = left - width + field.offsetWidth;\n leftAligned = false;\n }\n if (this._o.reposition && top + height > viewportHeight + scrollTop || this._o.position.indexOf('top') > -1 && top - height - field.offsetHeight > 0) {\n top = top - height - field.offsetHeight;\n bottomAligned = false;\n }\n this.el.style.left = left + 'px';\n this.el.style.top = top + 'px';\n addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n },\n /**\n * render HTML for a particular month\n */\n render: function (year, month, randId) {\n var opts = this._o,\n now = new Date(),\n days = getDaysInMonth(year, month),\n before = new Date(year, month, 1).getDay(),\n data = [],\n row = [];\n setToStartOfDay(now);\n if (opts.firstDay > 0) {\n before -= opts.firstDay;\n if (before < 0) {\n before += 7;\n }\n }\n var previousMonth = month === 0 ? 11 : month - 1,\n nextMonth = month === 11 ? 0 : month + 1,\n yearOfPreviousMonth = month === 0 ? year - 1 : year,\n yearOfNextMonth = month === 11 ? year + 1 : year,\n daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n var cells = days + before,\n after = cells;\n while (after > 7) {\n after -= 7;\n }\n cells += 7 - after;\n var isWeekSelected = false;\n for (var i = 0, r = 0; i < cells; i++) {\n var day = new Date(year, month, 1 + (i - before)),\n isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n isToday = compareDates(day, now),\n hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n isEmpty = i < before || i >= days + before,\n dayNumber = 1 + (i - before),\n monthNumber = month,\n yearNumber = year,\n isStartRange = opts.startRange && compareDates(opts.startRange, day),\n isEndRange = opts.endRange && compareDates(opts.endRange, day),\n isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n isDisabled = opts.minDate && day < opts.minDate || opts.maxDate && day > opts.maxDate || opts.disableWeekends && isWeekend(day) || opts.disableDayFn && opts.disableDayFn(day);\n if (isEmpty) {\n if (i < before) {\n dayNumber = daysInPreviousMonth + dayNumber;\n monthNumber = previousMonth;\n yearNumber = yearOfPreviousMonth;\n } else {\n dayNumber = dayNumber - days;\n monthNumber = nextMonth;\n yearNumber = yearOfNextMonth;\n }\n }\n var dayConfig = {\n day: dayNumber,\n month: monthNumber,\n year: yearNumber,\n hasEvent: hasEvent,\n isSelected: isSelected,\n isToday: isToday,\n isDisabled: isDisabled,\n isEmpty: isEmpty,\n isStartRange: isStartRange,\n isEndRange: isEndRange,\n isInRange: isInRange,\n showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n };\n if (opts.pickWholeWeek && isSelected) {\n isWeekSelected = true;\n }\n row.push(renderDay(dayConfig));\n if (++r === 7) {\n if (opts.showWeekNumber) {\n row.unshift(renderWeek(i - before, month, year, opts.firstWeekOfYearMinDays));\n }\n data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n row = [];\n r = 0;\n isWeekSelected = false;\n }\n }\n return renderTable(opts, data, randId);\n },\n isVisible: function () {\n return this._v;\n },\n show: function () {\n if (!this.isVisible()) {\n this._v = true;\n this.draw();\n removeClass(this.el, 'is-hidden');\n if (this._o.bound) {\n addEvent(document, 'click', this._onClick);\n this.adjustPosition();\n }\n if (typeof this._o.onOpen === 'function') {\n this._o.onOpen.call(this);\n }\n }\n },\n hide: function () {\n var v = this._v;\n if (v !== false) {\n if (this._o.bound) {\n removeEvent(document, 'click', this._onClick);\n }\n if (!this._o.container) {\n this.el.style.position = 'static'; // reset\n this.el.style.left = 'auto';\n this.el.style.top = 'auto';\n }\n addClass(this.el, 'is-hidden');\n this._v = false;\n if (v !== undefined && typeof this._o.onClose === 'function') {\n this._o.onClose.call(this);\n }\n }\n },\n /**\n * GAME OVER\n */\n destroy: function () {\n var opts = this._o;\n this.hide();\n removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n removeEvent(this.el, 'touchend', this._onMouseDown, true);\n removeEvent(this.el, 'change', this._onChange);\n if (opts.keyboardInput) {\n removeEvent(document, 'keydown', this._onKeyChange);\n }\n if (opts.field) {\n removeEvent(opts.field, 'change', this._onInputChange);\n if (opts.bound) {\n removeEvent(opts.trigger, 'click', this._onInputClick);\n removeEvent(opts.trigger, 'focus', this._onInputFocus);\n removeEvent(opts.trigger, 'blur', this._onInputBlur);\n }\n }\n if (this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n }\n };\n return Pikaday;\n});","// Generated by CoffeeScript 1.10.0\nvar feedback, matching, scoring, time, time_estimates, zxcvbn;\nmatching = require('./matching');\nscoring = require('./scoring');\ntime_estimates = require('./time_estimates');\nfeedback = require('./feedback');\ntime = function () {\n return new Date().getTime();\n};\nzxcvbn = function (password, user_inputs) {\n var arg, attack_times, i, len, matches, prop, ref, result, sanitized_inputs, start, val;\n if (user_inputs == null) {\n user_inputs = [];\n }\n start = time();\n sanitized_inputs = [];\n for (i = 0, len = user_inputs.length; i < len; i++) {\n arg = user_inputs[i];\n if ((ref = typeof arg) === \"string\" || ref === \"number\" || ref === \"boolean\") {\n sanitized_inputs.push(arg.toString().toLowerCase());\n }\n }\n matching.set_user_input_dictionary(sanitized_inputs);\n matches = matching.omnimatch(password);\n result = scoring.most_guessable_match_sequence(password, matches);\n result.calc_time = time() - start;\n attack_times = time_estimates.estimate_attack_times(result.guesses);\n for (prop in attack_times) {\n val = attack_times[prop];\n result[prop] = val;\n }\n result.feedback = feedback.get_feedback(result.score, result.sequence);\n return result;\n};\nmodule.exports = zxcvbn;","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));","//TODO: This is should be removed when fixed on Chameleon\n\ndocument.addEventListener('click', function(event) {\n var button = document.getElementById('user-dropdown-button')\n var dropdownMenu = button.nextElementSibling;\n\n if (event.target.parentElement === button) {\n dropdownMenu.classList.toggle('visible');\n } else {\n dropdownMenu.classList.remove('visible');\n }\n})\n","var map = {\n\t\"./avatar_upload_controller.js\": 149,\n\t\"./backup_codes_controller.js\": 150,\n\t\"./confirm_modal_controller.js\": 152,\n\t\"./datepicker_controller.js\": 153,\n\t\"./deletion_modal_controller.js\": 156,\n\t\"./direct_upload_controller.js\": 173,\n\t\"./flash_message_controller.js\": 157,\n\t\"./focus_controller.js\": 158,\n\t\"./main_email_controller.js\": 159,\n\t\"./modal_controller.js\": 3,\n\t\"./password_strength_controller.js\": 160,\n\t\"./popup_controller.js\": 165,\n\t\"./profile_completion_controller.js\": 166,\n\t\"./search_controller.js\": 167,\n\t\"./timezone_controller.js\": 168,\n\t\"./unavailable_controller.js\": 171\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 148;","import { Controller } from 'stimulus'\nimport i18nSetup from \"../i18n-setup\"\n\nexport default class AvatarUploadController extends Controller {\n static targets = [ 'input', 'image', 'message']\n\n initialize() {\n this.i18n = i18nSetup()\n }\n\n upload() {\n const image = this.imageTarget;\n const file = this.inputTarget.files[0];\n const fileNameTest = /\\.(jpe?g|png|gif)$/i.test(file.name);\n const fileSizeTest = file.size <= 1048576;\n\n if (fileNameTest && fileSizeTest) {\n var reader = new FileReader();\n\n $(this.messageTarget).hide();\n\n reader.onload = function(e) {\n $(image).attr('src', e.target.result);\n }\n\n reader.readAsDataURL(file);\n } else {\n this.showError(fileNameTest, fileSizeTest);\n }\n }\n\n showError(fileNameTest, fileSizeTest) {\n let message = \"\";\n\n if (fileNameTest === false) {\n message = this.i18n.t('web.javascript.image.type')\n }\n else if (fileSizeTest === false) {\n message = this.i18n.t('web.javascript.image.size', { min: '0 bytes', max: '1 MB' })\n }\n\n $(this.messageTarget).text(message)\n $(this.messageTarget).show();\n }\n\n}\n","import { Controller } from 'stimulus'\nimport {} from 'jQuery.print'\n\nexport default class BackupCodesController extends Controller {\n static targets = ['codes', 'downloadUrl', 'copyBtn']\n\n copy() {\n const clipboard = new ClipboardJS(this.codesTarget)\n clipboard.on('success', () => {\n this.showPopup()\n this.enableNext()\n })\n return false\n }\n\n download() {\n window.open(this.downloadUrlTarget.value, '_blank')\n this.enableNext()\n return false\n }\n\n print(event) {\n const printable = event.target.dataset.printable\n if (printable)\n $(printable).print({\n globalStyles: true,\n mediaPrint: true,\n iframe: true,\n noPrintSelector: '.no-print',\n })\n else\n window.print()\n this.enableNext()\n return false\n }\n\n enableNext() {\n $('#bt-next').removeClass('disabled')\n }\n\n showPopup() {\n let popupSettings = {\n on: 'click',\n delay: {\n show: 50,\n hide: 200\n },\n exclusive: true,\n position: 'top right',\n variation: 'inverted',\n context: $(this.copyBtnTarget),\n }\n\n this.destroyPopup();\n\n $(this.copyBtnTarget).popup(popupSettings).popup('show')\n\n this.hidePopup();\n }\n\n hidePopup() {\n this.timeout = setTimeout(() => {\n this.destroyPopup();\n }, 750)\n }\n\n destroyPopup() {\n if ( $(this.copyBtnTarget).find('.ui.popup').length > 0) {\n $(this.copyBtnTarget).find('.ui.popup').remove()\n clearTimeout(this.timeout)\n }\n }\n}\n","/* @license \r\n * jQuery.print, version 1.5.1\r\n * (c) Sathvik Ponangi, Doers' Guild\r\n * Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)\r\n *--------------------------------------------------------------------------*/\n(function ($) {\n \"use strict\";\n\n // A nice closure for our definitions\n function getjQueryObject(string) {\n // Make string a vaild jQuery thing\n var jqObj = $(\"\");\n try {\n jqObj = $(string).clone();\n } catch (e) {\n jqObj = $(\"