tsichart-core 1.0.5 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +80 -0
  3. package/dist/index.d.ts +1744 -0
  4. package/dist/index.js +14284 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.mjs +14209 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/dist/{tsiclient.css → styles/index.css} +9498 -9497
  9. package/dist/styles/index.css.map +1 -0
  10. package/package.json +115 -124
  11. package/README.MD +0 -171
  12. package/dist/AggregateExpression.d.ts +0 -13
  13. package/dist/AggregateExpression.js +0 -70
  14. package/dist/AvailabilityChart-C8ewvn3T.js +0 -488
  15. package/dist/AvailabilityChart.d.ts +0 -59
  16. package/dist/AvailabilityChart.js +0 -26
  17. package/dist/ChartComponent-Dg8P-BTZ.js +0 -302
  18. package/dist/ChartComponent-ONNW31RL.d.ts +0 -80
  19. package/dist/ChartComponentData-DBW8_FnY.d.ts +0 -47
  20. package/dist/ChartDataOptions-CNTSB636.js +0 -49
  21. package/dist/ChartDataOptions-D0BJuRZy.d.ts +0 -38
  22. package/dist/ChartVisualizationComponent-CTs5Q_sg.js +0 -23
  23. package/dist/ChartVisualizationComponent-CpR8xZla.d.ts +0 -8
  24. package/dist/ColorPicker-0p6vkATj.js +0 -120
  25. package/dist/ColorPicker.d.ts +0 -28
  26. package/dist/ColorPicker.js +0 -6
  27. package/dist/Component-BgifJdKl.js +0 -401
  28. package/dist/Component-DXwYPoSo.d.ts +0 -226
  29. package/dist/ContextMenu-wqGGgAzp.js +0 -197
  30. package/dist/DateTimeButton-D7N8XG0S.js +0 -38
  31. package/dist/DateTimeButton-DfJL5kvr.d.ts +0 -16
  32. package/dist/DateTimeButtonRange-BM_J646m.js +0 -71
  33. package/dist/DateTimeButtonRange.d.ts +0 -19
  34. package/dist/DateTimeButtonRange.js +0 -15
  35. package/dist/DateTimeButtonSingle-BxMSitQG.js +0 -48
  36. package/dist/DateTimeButtonSingle.d.ts +0 -17
  37. package/dist/DateTimeButtonSingle.js +0 -14
  38. package/dist/DateTimePicker-BgTi-DY9.js +0 -532
  39. package/dist/DateTimePicker.d.ts +0 -69
  40. package/dist/DateTimePicker.js +0 -13
  41. package/dist/EllipsisMenu-CxJ0LoVm.js +0 -116
  42. package/dist/EllipsisMenu.d.ts +0 -20
  43. package/dist/EllipsisMenu.js +0 -6
  44. package/dist/Enums-DWpaQlXk.d.ts +0 -12
  45. package/dist/EventsTable-CsnBvvIW.js +0 -553
  46. package/dist/EventsTable.d.ts +0 -34
  47. package/dist/EventsTable.js +0 -10
  48. package/dist/GeoProcessGraphic-CUBMHIHX.js +0 -145
  49. package/dist/GeoProcessGraphic.d.ts +0 -34
  50. package/dist/GeoProcessGraphic.js +0 -7
  51. package/dist/Grid-uoHKTet9.js +0 -874
  52. package/dist/Grid.d.ts +0 -43
  53. package/dist/Grid.js +0 -6
  54. package/dist/GroupedBarChart-Bc3cGhgz.js +0 -579
  55. package/dist/GroupedBarChart.d.ts +0 -22
  56. package/dist/GroupedBarChart.js +0 -17
  57. package/dist/GroupedBarChartData-B7BTM9JH.d.ts +0 -20
  58. package/dist/GroupedBarChartData-Ml5JJimg.js +0 -121
  59. package/dist/Heatmap-5gFc_AVW.js +0 -524
  60. package/dist/Heatmap.d.ts +0 -31
  61. package/dist/Heatmap.js +0 -14
  62. package/dist/Hierarchy-C5ueDsus.js +0 -260
  63. package/dist/Hierarchy.d.ts +0 -39
  64. package/dist/Hierarchy.js +0 -6
  65. package/dist/HierarchyNavigation-C3Pwt0D6.js +0 -336
  66. package/dist/HierarchyNavigation.d.ts +0 -34
  67. package/dist/HierarchyNavigation.js +0 -6
  68. package/dist/HistoryPlayback-D09bter3.js +0 -175
  69. package/dist/HistoryPlayback-DmJ6u7lU.d.ts +0 -68
  70. package/dist/Interfaces-R_1l9lIT.d.ts +0 -6
  71. package/dist/Legend-gCIrAytG.js +0 -497
  72. package/dist/LineChart-CzDp5ULB.js +0 -3181
  73. package/dist/LineChart.d.ts +0 -163
  74. package/dist/LineChart.js +0 -18
  75. package/dist/ModelAutocomplete-lU71Ndju.js +0 -100
  76. package/dist/ModelAutocomplete.d.ts +0 -12
  77. package/dist/ModelAutocomplete.js +0 -7
  78. package/dist/ModelSearch-OF4DygOJ.js +0 -189
  79. package/dist/ModelSearch.d.ts +0 -23
  80. package/dist/ModelSearch.js +0 -9
  81. package/dist/PieChart-XLc9Itne.js +0 -258
  82. package/dist/PieChart.d.ts +0 -26
  83. package/dist/PieChart.js +0 -17
  84. package/dist/PlaybackControls-DbG9gExy.js +0 -195
  85. package/dist/PlaybackControls.d.ts +0 -39
  86. package/dist/PlaybackControls.js +0 -13
  87. package/dist/ProcessGraphic-Cft1b4Mf.js +0 -154
  88. package/dist/ProcessGraphic.d.ts +0 -31
  89. package/dist/ProcessGraphic.js +0 -7
  90. package/dist/ScatterPlot-CdnqSHq2.js +0 -924
  91. package/dist/ScatterPlot.d.ts +0 -115
  92. package/dist/ScatterPlot.js +0 -17
  93. package/dist/SingleDateTimePicker-Ddr-ogTk.js +0 -213
  94. package/dist/SingleDateTimePicker.d.ts +0 -45
  95. package/dist/SingleDateTimePicker.js +0 -12
  96. package/dist/Slider-CX0nvlqx.js +0 -186
  97. package/dist/Slider.d.ts +0 -31
  98. package/dist/Slider.js +0 -6
  99. package/dist/TemporalXAxisComponent-DXmMekYq.js +0 -129
  100. package/dist/TemporalXAxisComponent-PIeiJYUr.d.ts +0 -23
  101. package/dist/TimezonePicker-CQpXR5eb.js +0 -58
  102. package/dist/TimezonePicker.d.ts +0 -16
  103. package/dist/TimezonePicker.js +0 -10
  104. package/dist/Tooltip-C13k0eeH.js +0 -104
  105. package/dist/TsqExpression.d.ts +0 -36
  106. package/dist/TsqExpression.js +0 -89
  107. package/dist/UXClient-Bn1afElm.js +0 -230
  108. package/dist/UXClient.d.ts +0 -74
  109. package/dist/UXClient.js +0 -47
  110. package/dist/Utils-BcQeZOM3.d.ts +0 -104
  111. package/dist/Utils-DDGqSryb.js +0 -1138
  112. package/dist/Utils.d.ts +0 -7
  113. package/dist/Utils.js +0 -7
  114. package/dist/_tslib-BYFmvNeL.js +0 -96
  115. package/dist/pikaday-jh_aVtJs.js +0 -1252
  116. package/dist/tsiclient.cjs.js +0 -3
  117. package/dist/tsiclient.cjs.js.LICENSE.txt +0 -19
  118. package/dist/tsiclient.cjs.js.map +0 -1
  119. package/dist/tsiclient.d.ts +0 -46
  120. package/dist/tsiclient.esm.js +0 -3
  121. package/dist/tsiclient.esm.js.LICENSE.txt +0 -19
  122. package/dist/tsiclient.esm.js.map +0 -1
  123. package/dist/tsiclient.js +0 -58
  124. package/dist/tsiclient.min.css +0 -6
  125. package/dist/tsiclient.min.css.map +0 -1
  126. package/dist/tsiclient.umd.js +0 -3
  127. package/dist/tsiclient.umd.js.LICENSE.txt +0 -19
  128. package/dist/tsiclient.umd.js.map +0 -1
  129. package/dist/tsiclient.umd.min.js +0 -3
  130. package/dist/tsiclient.umd.min.js.LICENSE.txt +0 -19
  131. package/dist/tsiclient.umd.min.js.map +0 -1
  132. package/tsiclient.css +0 -17323
  133. package/tsiclient.d.ts +0 -46
  134. package/tsiclient.js +0 -58
  135. package/tsiclient.min.css +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../packages/pikaday/pikaday.js"],"sourcesContent":["/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\n */\n(function (root, factory)\n{\n 'use strict';\n\n var moment;\n if (typeof exports === 'object') {\n // CommonJS module\n // Load moment.js as an optional dependency\n try { moment = require('moment'); } catch (e) {}\n module.exports = factory(moment);\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function (req)\n {\n // Load moment.js as an optional dependency\n var id = 'moment';\n try { moment = req(id); } catch (e) {}\n return factory(moment);\n });\n } else {\n root.Pikaday = factory(root.moment);\n }\n}(this, function (moment)\n{\n 'use strict';\n\n /**\n * feature detection and helper functions\n */\n var hasMoment = typeof moment === 'function',\n\n hasEventListeners = !!window.addEventListener,\n\n document = window.document,\n\n sto = window.setTimeout,\n\n addEvent = function(el, e, callback, capture)\n {\n if (hasEventListeners) {\n el.addEventListener(e, callback, !!capture);\n } else {\n el.attachEvent('on' + e, callback);\n }\n },\n\n removeEvent = function(el, e, callback, capture)\n {\n if (hasEventListeners) {\n el.removeEventListener(e, callback, !!capture);\n } else {\n el.detachEvent('on' + e, callback);\n }\n },\n\n trim = function(str)\n {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n },\n\n hasClass = function(el, cn)\n {\n return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n },\n\n addClass = function(el, cn)\n {\n if (!hasClass(el, cn)) {\n el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n }\n },\n\n removeClass = function(el, cn)\n {\n el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n },\n\n isArray = function(obj)\n {\n return (/Array/).test(Object.prototype.toString.call(obj));\n },\n\n isDate = function(obj)\n {\n return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n },\n\n isWeekend = function(date)\n {\n var day = date.getDay();\n return day === 0 || day === 6;\n },\n\n isLeapYear = function(year)\n {\n // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n },\n\n getDaysInMonth = function(year, month)\n {\n return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n },\n\n setToStartOfDay = function(date)\n {\n if (isDate(date)) date.setHours(0,0,0,0);\n },\n\n compareDates = function(a,b)\n {\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n return a.getTime() === b.getTime();\n },\n\n extend = function(to, from, overwrite)\n {\n var prop, hasProp;\n for (prop in from) {\n hasProp = to[prop] !== undefined;\n if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n if (isDate(from[prop])) {\n if (overwrite) {\n to[prop] = new Date(from[prop].getTime());\n }\n }\n else if (isArray(from[prop])) {\n if (overwrite) {\n to[prop] = from[prop].slice(0);\n }\n } else {\n to[prop] = extend({}, from[prop], overwrite);\n }\n } else if (overwrite || !hasProp) {\n to[prop] = from[prop];\n }\n }\n return to;\n },\n\n fireEvent = function(el, eventName, data)\n {\n var ev;\n\n if (document.createEvent) {\n ev = document.createEvent('HTMLEvents');\n ev.initEvent(eventName, true, false);\n ev = extend(ev, data);\n el.dispatchEvent(ev);\n } else if (document.createEventObject) {\n ev = document.createEventObject();\n ev = extend(ev, data);\n el.fireEvent('on' + eventName, ev);\n }\n },\n\n adjustCalendar = function(calendar) {\n if (calendar.month < 0) {\n calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n calendar.month += 12;\n }\n if (calendar.month > 11) {\n calendar.year += Math.floor(Math.abs(calendar.month)/12);\n calendar.month -= 12;\n }\n return calendar;\n },\n\n /**\n * defaults and localisation\n */\n defaults = {\n\n // bind the picker to a form field\n field: null,\n\n // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n bound: undefined,\n\n // position of the datepicker, relative to the field (default to bottom & left)\n // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n position: 'bottom left',\n\n // automatically fit in the viewport even if it means repositioning from the position option\n reposition: true,\n\n // the default output format for `.toString()` and `field` value\n format: 'YYYY-MM-DD',\n\n // the toString function which gets passed a current date object and format\n // and returns a string\n toString: null,\n\n // used to create date object from current input string\n parse: null,\n\n // the initial date to view when first opened\n defaultDate: null,\n\n // make the `defaultDate` the initial selected value\n setDefaultDate: false,\n\n // first day of week (0: Sunday, 1: Monday etc)\n firstDay: 0,\n\n // the default flag for moment's strict date parsing\n formatStrict: false,\n\n // the minimum/earliest date that can be selected\n minDate: null,\n // the maximum/latest date that can be selected\n maxDate: null,\n\n // number of years either side, or array of upper/lower range\n yearRange: 10,\n\n // show week numbers at head of row\n showWeekNumber: false,\n\n // Week picker mode\n pickWholeWeek: false,\n\n // used internally (don't config outside)\n minYear: 0,\n maxYear: 9999,\n minMonth: undefined,\n maxMonth: undefined,\n\n startRange: null,\n endRange: null,\n\n isRTL: false,\n\n // Additional text to append to the year in the calendar title\n yearSuffix: '',\n\n // Render the month after year in the calendar title\n showMonthAfterYear: false,\n\n // Render days of the calendar grid that fall in the next or previous month\n showDaysInNextAndPreviousMonths: false,\n\n // Allows user to select days that fall in the next or previous month\n enableSelectionDaysInNextAndPreviousMonths: false,\n\n // how many months are visible\n numberOfMonths: 1,\n\n // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n // only used for the first display or when a selected date is not visible\n mainCalendar: 'left',\n\n // Specify a DOM element to render the calendar in\n container: undefined,\n\n // Blur field when date is selected\n blurFieldOnSelect : true,\n\n // internationalization\n i18n: {\n previousMonth : 'Previous Month',\n nextMonth : 'Next Month',\n months : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n weekdays : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n },\n\n // Theme Classname\n theme: null,\n\n // events array\n events: [],\n\n // callback function\n onSelect: null,\n onOpen: null,\n onClose: null,\n onDraw: null,\n\n // Enable keyboard input\n keyboardInput: true\n },\n\n\n /**\n * templating functions to abstract HTML rendering\n */\n renderDayName = function(opts, day, abbr)\n {\n day += opts.firstDay;\n while (day >= 7) {\n day -= 7;\n }\n return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n },\n\n renderDay = function(opts)\n {\n var arr = [];\n var ariaSelected = 'false';\n if (opts.isEmpty) {\n if (opts.showDaysInNextAndPreviousMonths) {\n arr.push('is-outside-current-month');\n\n if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n arr.push('is-selection-disabled');\n }\n\n } else {\n return '<td class=\"is-empty\"></td>';\n }\n }\n if (opts.isDisabled) {\n arr.push('is-disabled');\n }\n if (opts.isToday) {\n arr.push('is-today');\n }\n if (opts.isSelected) {\n arr.push('is-selected');\n ariaSelected = 'true';\n }\n if (opts.hasEvent) {\n arr.push('has-event');\n }\n if (opts.isInRange) {\n arr.push('is-inrange');\n }\n if (opts.isStartRange) {\n arr.push('is-startrange');\n }\n if (opts.isEndRange) {\n arr.push('is-endrange');\n }\n return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n '<button tabIndex=\"-1\" class=\"pika-button pika-day\" type=\"button\" ' +\n 'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n opts.day +\n '</button>' +\n '</td>';\n },\n\n renderWeek = function (d, m, y) {\n // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\n var onejan = new Date(y, 0, 1),\n weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7);\n return '<td class=\"pika-week\">' + weekNum + '</td>';\n },\n\n renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n {\n return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n },\n\n renderBody = function(rows)\n {\n return '<tbody>' + rows.join('') + '</tbody>';\n },\n\n renderHead = function(opts)\n {\n var i, arr = [];\n if (opts.showWeekNumber) {\n arr.push('<th></th>');\n }\n for (i = 0; i < 7; i++) {\n arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n }\n return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n },\n\n renderTitle = function(instance, c, year, month, refYear, randId)\n {\n var i, j, arr,\n opts = instance._o,\n isMinYear = year === opts.minYear,\n isMaxYear = year === opts.maxYear,\n html = '<div id=\"' + randId + '\" class=\"pika-title\">',\n monthHtml,\n yearHtml,\n prev = true,\n next = true;\n\n for (arr = [], i = 0; i < 12; i++) {\n arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n (i === month ? ' selected=\"selected\"': '') +\n ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? 'disabled=\"disabled\"' : '') + '>' +\n opts.i18n.months[i] + '</option>');\n }\n\n monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select aria-label=\"select month\" class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\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\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n }\n }\n yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select aria-label=\"select year\" class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n prev = false;\n }\n\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n next = false;\n }\n\n if (c === 0) {\n html += '<button tabIndex=\"-1\" class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n }\n if (c === (instance._o.numberOfMonths - 1) ) {\n html += '<button tabIndex=\"-1\" class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n }\n\n return html += '</div>';\n },\n\n renderTable = function(opts, data, randId)\n {\n return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n },\n\n\n /**\n * Pikaday constructor\n */\n Pikaday = function(options)\n {\n var self = this,\n opts = self.config(options);\n\n self._onMouseDown = function(e)\n {\n if (!self._v) {\n return;\n }\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n\n if (!hasClass(target, 'is-disabled')) {\n if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n if (opts.bound) {\n sto(function() {\n self.hide();\n if (opts.blurFieldOnSelect && opts.field) {\n opts.field.blur();\n }\n }, 100);\n }\n }\n else if (hasClass(target, 'pika-prev')) {\n self.prevMonth();\n }\n else if (hasClass(target, 'pika-next')) {\n self.nextMonth();\n }\n }\n if (!hasClass(target, 'pika-select')) {\n // if this is touch event prevent mouse events emulation\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n return false;\n }\n } else {\n self._c = true;\n }\n };\n\n self._onChange = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n if (hasClass(target, 'pika-select-month')) {\n self.gotoMonth(target.value);\n }\n else if (hasClass(target, 'pika-select-year')) {\n self.gotoYear(target.value);\n }\n };\n\n self._onKeyChange = function(e)\n {\n e = e || window.event;\n // ignore if event comes from input box\n if (self.isVisible() && e.target && e.target.type !== 'text') {\n\n switch(e.keyCode){\n case 13:\n case 27:\n if (opts.field) {\n opts.field.blur();\n }\n break;\n case 37:\n e.preventDefault();\n self.adjustDate('subtract', 1);\n break;\n case 38:\n self.adjustDate('subtract', 7);\n break;\n case 39:\n self.adjustDate('add', 1);\n break;\n case 40:\n self.adjustDate('add', 7);\n break;\n }\n }\n };\n\n self._onInputChange = function(e)\n {\n var date;\n\n if (e.firedBy === self) {\n return;\n }\n if (opts.parse) {\n date = opts.parse(opts.field.value, opts.format);\n } else if (hasMoment) {\n date = moment(opts.field.value, opts.format, opts.formatStrict);\n date = (date && date.isValid()) ? date.toDate() : null;\n }\n else {\n date = new Date(Date.parse(opts.field.value));\n }\n // if (isDate(date)) {\n // self.setDate(date);\n // }\n // if (!self._v) {\n // self.show();\n // }\n };\n\n self._onInputFocus = function()\n {\n self.show();\n };\n\n self._onInputClick = function()\n {\n self.show();\n };\n\n self._onInputBlur = function()\n {\n // IE allows pika div to gain focus; catch blur the input field\n var pEl = document.activeElement;\n do {\n if (hasClass(pEl, 'pika-single')) {\n return;\n }\n }\n while ((pEl = pEl.parentNode));\n\n if (!self._c) {\n self._b = sto(function() {\n self.hide();\n }, 50);\n }\n self._c = false;\n };\n\n self._onClick = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement,\n pEl = target;\n if (!target) {\n return;\n }\n if (!hasEventListeners && hasClass(target, 'pika-select')) {\n if (!target.onchange) {\n target.setAttribute('onchange', 'return;');\n addEvent(target, 'change', self._onChange);\n }\n }\n do {\n if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n return;\n }\n }\n while ((pEl = pEl.parentNode));\n if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n self.hide();\n }\n };\n\n self.el = document.createElement('div');\n self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n addEvent(self.el, 'mousedown', self._onMouseDown, true);\n addEvent(self.el, 'touchend', self._onMouseDown, true);\n addEvent(self.el, 'change', self._onChange);\n\n if (opts.keyboardInput) {\n addEvent(document, 'keydown', self._onKeyChange);\n }\n\n if (opts.field) {\n if (opts.container) {\n opts.container.appendChild(self.el);\n } else if (opts.bound) {\n document.body.appendChild(self.el);\n } else {\n opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n }\n addEvent(opts.field, 'change', self._onInputChange);\n\n if (!opts.defaultDate) {\n if (hasMoment && opts.field.value) {\n opts.defaultDate = moment(opts.field.value, opts.format).toDate();\n } else {\n opts.defaultDate = new Date(Date.parse(opts.field.value));\n }\n opts.setDefaultDate = true;\n }\n }\n\n var defDate = opts.defaultDate;\n\n if (isDate(defDate)) {\n if (opts.setDefaultDate) {\n self.setDate(defDate, true);\n } else {\n self.gotoDate(defDate);\n }\n } else {\n self.gotoDate(new Date());\n }\n\n if (opts.bound) {\n this.hide();\n self.el.className += ' is-bound';\n addEvent(opts.trigger, 'click', self._onInputClick);\n addEvent(opts.trigger, 'focus', self._onInputFocus);\n addEvent(opts.trigger, 'blur', self._onInputBlur);\n } else {\n this.show();\n }\n };\n\n\n /**\n * public Pikaday API\n */\n Pikaday.prototype = {\n\n\n /**\n * configure functionality\n */\n config: function(options)\n {\n if (!this._o) {\n this._o = extend({}, defaults, true);\n }\n\n var opts = extend(this._o, options, true);\n\n opts.isRTL = !!opts.isRTL;\n\n opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n opts.disableWeekends = !!opts.disableWeekends;\n\n opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n var nom = parseInt(opts.numberOfMonths, 10) || 1;\n opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n if (!isDate(opts.minDate)) {\n opts.minDate = false;\n }\n if (!isDate(opts.maxDate)) {\n opts.maxDate = false;\n }\n if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n opts.maxDate = opts.minDate = false;\n }\n if (opts.minDate) {\n this.setMinDate(opts.minDate);\n }\n if (opts.maxDate) {\n this.setMaxDate(opts.maxDate);\n }\n\n if (isArray(opts.yearRange)) {\n var fallback = new Date().getFullYear() - 10;\n opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n } else {\n opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n if (opts.yearRange > 100) {\n opts.yearRange = 100;\n }\n }\n\n return opts;\n },\n\n /**\n * return a formatted string of the current selection (using Moment.js if available)\n */\n toString: function(format)\n {\n format = format || this._o.format;\n if (!isDate(this._d)) {\n return '';\n }\n if (this._o.toString) {\n return this._o.toString(this._d, format);\n }\n if (hasMoment) {\n return moment(this._d).format(format);\n }\n return this._d.toDateString();\n },\n\n /**\n * return a Moment.js object of the current selection (if available)\n */\n getMoment: function()\n {\n return hasMoment ? moment(this._d) : null;\n },\n\n /**\n * set the current selection from a Moment.js object (if available)\n */\n setMoment: function(date, preventOnSelect)\n {\n if (hasMoment && moment.isMoment(date)) {\n this.setDate(date.toDate(), preventOnSelect);\n }\n },\n\n /**\n * return a Date object of the current selection\n */\n getDate: function()\n {\n return isDate(this._d) ? new Date(this._d.getTime()) : null;\n },\n\n /**\n * set the current selection\n */\n setDate: function(date, preventOnSelect)\n {\n if (!date) {\n this._d = null;\n\n if (this._o.field) {\n this._o.field.value = '';\n fireEvent(this._o.field, 'change', { firedBy: this });\n }\n\n return this.draw();\n }\n if (typeof date === 'string') {\n date = new Date(Date.parse(date));\n }\n if (!isDate(date)) {\n return;\n }\n\n var min = this._o.minDate,\n max = this._o.maxDate;\n\n if (isDate(min) && date < min) {\n date = min;\n } else if (isDate(max) && date > max) {\n date = max;\n }\n\n this._d = new Date(date.getTime());\n setToStartOfDay(this._d);\n this.gotoDate(this._d);\n\n if (this._o.field) {\n this._o.field.value = this.toString();\n fireEvent(this._o.field, 'change', { firedBy: this });\n }\n if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n this._o.onSelect.call(this, this.getDate());\n }\n },\n\n /**\n * change view to a specific date\n */\n gotoDate: function(date)\n {\n var newCalendar = true;\n\n if (!isDate(date)) {\n return;\n }\n\n if (this.calendars) {\n var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n visibleDate = date.getTime();\n // get the end of the month\n lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n }\n\n if (newCalendar) {\n this.calendars = [{\n month: date.getMonth(),\n year: date.getFullYear()\n }];\n if (this._o.mainCalendar === 'right') {\n this.calendars[0].month += 1 - this._o.numberOfMonths;\n }\n }\n\n this.adjustCalendars();\n },\n\n adjustDate: function(sign, days) {\n\n var day = this.getDate() || new Date();\n var difference = parseInt(days)*24*60*60*1000;\n\n var newDay;\n\n if (sign === 'add') {\n newDay = new Date(day.valueOf() + difference);\n } else if (sign === 'subtract') {\n newDay = new Date(day.valueOf() - difference);\n }\n\n this.setDate(newDay);\n },\n\n adjustCalendars: function() {\n this.calendars[0] = adjustCalendar(this.calendars[0]);\n for (var c = 1; c < this._o.numberOfMonths; c++) {\n this.calendars[c] = adjustCalendar({\n month: this.calendars[0].month + c,\n year: this.calendars[0].year\n });\n }\n this.draw();\n },\n\n gotoToday: function()\n {\n this.gotoDate(new Date());\n },\n\n /**\n * change view to a specific month (zero-index, e.g. 0: January)\n */\n gotoMonth: function(month)\n {\n if (!isNaN(month)) {\n this.calendars[0].month = parseInt(month, 10);\n this.adjustCalendars();\n }\n },\n\n nextMonth: function()\n {\n this.calendars[0].month++;\n this.adjustCalendars();\n },\n\n prevMonth: function()\n {\n this.calendars[0].month--;\n this.adjustCalendars();\n },\n\n /**\n * change view to a specific full year (e.g. \"2012\")\n */\n gotoYear: function(year)\n {\n if (!isNaN(year)) {\n this.calendars[0].year = parseInt(year, 10);\n this.adjustCalendars();\n }\n },\n\n /**\n * change the minDate\n */\n setMinDate: function(value)\n {\n if(value instanceof Date) {\n setToStartOfDay(value);\n this._o.minDate = value;\n this._o.minYear = value.getFullYear();\n this._o.minMonth = value.getMonth();\n } else {\n this._o.minDate = defaults.minDate;\n this._o.minYear = defaults.minYear;\n this._o.minMonth = defaults.minMonth;\n this._o.startRange = defaults.startRange;\n }\n\n this.draw();\n },\n\n /**\n * change the maxDate\n */\n setMaxDate: function(value)\n {\n if(value instanceof Date) {\n setToStartOfDay(value);\n this._o.maxDate = value;\n this._o.maxYear = value.getFullYear();\n this._o.maxMonth = value.getMonth();\n } else {\n this._o.maxDate = defaults.maxDate;\n this._o.maxYear = defaults.maxYear;\n this._o.maxMonth = defaults.maxMonth;\n this._o.endRange = defaults.endRange;\n }\n\n this.draw();\n },\n\n setStartRange: function(value)\n {\n this._o.startRange = value;\n },\n\n setEndRange: function(value)\n {\n this._o.endRange = value;\n },\n\n /**\n * refresh the HTML\n */\n draw: function(force)\n {\n if (!this._v && !force) {\n return;\n }\n var opts = this._o,\n minYear = opts.minYear,\n maxYear = opts.maxYear,\n minMonth = opts.minMonth,\n maxMonth = opts.maxMonth,\n html = '',\n randId;\n\n if (this._y <= minYear) {\n this._y = minYear;\n if (!isNaN(minMonth) && this._m < minMonth) {\n this._m = minMonth;\n }\n }\n if (this._y >= maxYear) {\n this._y = maxYear;\n if (!isNaN(maxMonth) && this._m > maxMonth) {\n this._m = maxMonth;\n }\n }\n\n for (var c = 0; c < opts.numberOfMonths; c++) {\n randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n html += '<div class=\"pika-lendar\">' + 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) + '</div>';\n }\n\n this.el.innerHTML = html;\n\n if (opts.bound) {\n if(opts.field.type !== 'hidden') {\n sto(function() {\n opts.trigger.focus();\n }, 1);\n }\n }\n\n if (typeof this._o.onDraw === 'function') {\n this._o.onDraw(this);\n }\n\n if (opts.bound) {\n // let the screen reader user know to use arrow keys\n opts.field.setAttribute('aria-label', 'Use the arrow keys to pick a date');\n }\n },\n\n adjustPosition: function()\n {\n var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect;\n\n if (this._o.container) return;\n\n this.el.style.position = 'absolute';\n\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\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) ||\n (\n this._o.position.indexOf('right') > -1 &&\n left - width + field.offsetWidth > 0\n )\n ) {\n left = left - width + field.offsetWidth;\n }\n if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n (\n this._o.position.indexOf('top') > -1 &&\n top - height - field.offsetHeight > 0\n )\n ) {\n top = top - height - field.offsetHeight;\n }\n\n this.el.style.left = left + 'px';\n this.el.style.top = top + 'px';\n },\n\n /**\n * render HTML for a particular month\n */\n render: function(year, month, randId)\n {\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 {\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) ||\n (opts.maxDate && day > opts.maxDate) ||\n (opts.disableWeekends && isWeekend(day)) ||\n (opts.disableDayFn && opts.disableDayFn(day));\n\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\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\n if (opts.pickWholeWeek && isSelected) {\n isWeekSelected = true;\n }\n\n row.push(renderDay(dayConfig));\n\n if (++r === 7) {\n if (opts.showWeekNumber) {\n row.unshift(renderWeek(i - before, month, year));\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\n isVisible: function()\n {\n return this._v;\n },\n\n show: function()\n {\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\n hide: function()\n {\n var v = this._v;\n if (v !== false) {\n if (this._o.bound) {\n removeEvent(document, 'click', this._onClick);\n }\n this.el.style.position = 'static'; // reset\n this.el.style.left = 'auto';\n this.el.style.top = 'auto';\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 /**\n * GAME OVER\n */\n destroy: function()\n {\n var opts = this._o;\n\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 };\n\n return Pikaday;\n}));"],"names":["this"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}