@digitransit-component/digitransit-component-datetimepicker 1.0.0 → 1.0.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.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,i,a,l,o,r,s,d,c,u){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=_(t),m=_(n),f=_(i),y=_(a),b=_(o),g=_(r),h=_(s),x=_(d),v=_(c),w=_(u);var k={parseTypedTime:function(e){let t=e;return 3===t.length&&t.split("").every((e=>Number.isInteger(Number(e))))&&(t=Number(t.slice(0,2))<=23?`${t.slice(0,2)}:${t[2]}`:`${t[0]}:${t.slice(1)}`),t}};var E={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function C({value:e,onChange:t,getDisplay:i,timeChoices:a,validate:l,id:o,label:r,icon:s,disableTyping:d,timeZone:c,datePicker:u}){f.default.tz.setDefault(c);const[_,p]=n.useState(i(e)),[y,b]=n.useState(!1);n.useEffect((()=>p(i(e))),[e]);const g=e=>{const n=Number(e);!Number.isNaN(n)&&f.default(n).isValid()&&f.default(n).valueOf()===n&&t(n)};const h=a.map((e=>({value:e.toString(),label:i(e)}))),v=h.reduce(((t,n)=>Math.abs(e-t.value)<Math.abs(e-n.value)?t:n)),w=`${o}-input`,C=`${o}-label`;return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["combobox-container"],htmlFor:w},m.default.createElement("span",{className:E["sr-only"],id:C},r," ",_),s,m.default.createElement(x.default,{"aria-labelledby":C,ariaLiveMessages:{guidance:()=>".",onChange:()=>"",onFilter:()=>"",onFocus:({context:e,label:t})=>"menu"===e?t:""},options:h,inputId:w,onChange:t=>{if(y){const t=l(_,e);null!==t?(g(t),b(!1)):(p(i(e)),b(!1))}else g(t.value)},components:{IndicatorsContainer:()=>null},className:E["datetimepicker-select-container"],classNamePrefix:"datetimepicker-select",onInputChange:(e,{action:t})=>{var n;if(!d&&(!/[a-zA-Z§ÄäÖö\s]/g.test(n=e)&&(/^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$/.test(n)||n.length<5))&&"input-change"===t){const t=k.parseTypedTime(e);p(t),b(!0)}},inputValue:!d&&_,value:v,filterOption:(e,t)=>!!u||(t.length<1||t.length>5||((e,t)=>{const n=t.length<=2?t:t.split(":")[0],i=/^([0-1]?[0-9]|2[0-3])$/.test(n),a=1===n.length?"0".concat(t):t;return!i||e.label.split(":")[0]===a.split(":")[0]})(e,t)),controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:e=>{d||e.target.select()},onBlur:()=>{if(y){const t=l(_,e);null!==t?(g(t),b(!1)):(p(i(e)),b(!1))}},onKeyDown:e=>{["ArrowDown","ArrowUp"].includes(e.key)&&b(!1)},isSearchable:!d})))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus):not(:active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button, .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f4f4f5;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button, .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #dddddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #dddddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #dddddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #dddddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #ffffff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0px;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n color: #333333;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(C.propTypes={value:p.default.number.isRequired,onChange:p.default.func.isRequired,getDisplay:p.default.func.isRequired,timeChoices:p.default.arrayOf(p.default.number).isRequired,validate:p.default.func.isRequired,id:p.default.string.isRequired,label:p.default.node.isRequired,icon:p.default.node.isRequired,disableTyping:p.default.bool,timeZone:p.default.string,datePicker:p.default.bool}),C.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki",datePicker:!1};const R={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt"}};const F=["ref"];function N({value:e,getDisplay:t,onChange:i,itemCount:a,startTime:l,id:o,label:r,icon:s,timeZone:d}){f.default.tz.setDefault(d);const[c,u]=n.useState(!1),_=n.useRef(null),p=Array(a).fill().map(((e,t)=>f.default(l).add(t,"day").valueOf())),y=p.map((t=>e-t)).findIndex((e=>e<6e4));n.useLayoutEffect((()=>{c&&_.current&&(_.current.scrollTop=50*y)}),[e,c]);const b=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),g=`${o}-input`,h=`${o}-label`;return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["input-container"],htmlFor:g},m.default.createElement("span",null,s),m.default.createElement("span",{className:E["sr-only"],id:h},r),b?m.default.createElement(m.default.Fragment,null,m.default.createElement("select",{className:E["mobile-input-display"],onChange:e=>i(Number(e.target.value)),value:e},p.map((e=>m.default.createElement("option",{key:e,value:e},t(e)))))):m.default.createElement(w.default,{id:o,suggestions:p,getSuggestionValue:e=>e.toString(),renderSuggestion:e=>t(e),onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,inputProps:{value:t(e),onChange:(e,{newValue:t})=>{i(Number(t))},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},"aria-labelledby":h,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=function(e,t){if(null==e)return{};var n,i,a={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,F);return m.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(_.current=e,n(e))}}),t)},theme:E})))}function P({value:e,getDisplay:t,onChange:i,id:a,label:l,icon:o,timeZone:r,validate:s}){const[d,c]=n.useState(t(e));f.default.tz.setDefault(r);const u=`${a}-input`,_=`${a}-label`,p=n.useRef(null);return n.useLayoutEffect((()=>{p.current&&p.current.focus()}),[]),m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["input-container"],htmlFor:u},m.default.createElement("span",null,o),m.default.createElement("span",{className:E["sr-only"],id:_},l),m.default.createElement("input",{id:u,inputMode:"numeric",type:"text",maxLength:"6",className:E["time-input-mobile"],value:d,onFocus:e=>{e.target.setSelectionRange(0,0)},onChange:t=>{let n=t.target.value;if(n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===d&&(n=n.charAt(0)),n.length>5)return;const a=k.parseTypedTime(n);c(a);const l=s(a,e);l&&i(l)},ref:p})))}function S({departureOrArrival:e,onNowClick:t,lang:i,color:a,timeZone:l,onSubmit:o,onCancel:r,timestamp:s,getTimeDisplay:d,dateSelectItemCount:c,getDateDisplay:u,validateTime:_,fontWeights:p}){f.default.tz.setDefault(l);const y={lng:i},[x,w]=n.useState(s),[k,C]=n.useState(e);const[R]=n.useState(b.default("datetimepicker-")),F=f.default().startOf("day").hour(f.default(x).hour()).minute(f.default(x).minute()).valueOf();return m.default.createElement(v.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:E["mobile-modal-content"],overlayClassName:E["mobile-modal-overlay"]},m.default.createElement("div",{style:{"--color":`${a}`,"--font-weight-medium":p.medium}},m.default.createElement("div",{className:E["top-row"]},m.default.createElement("h3",{className:E["modal-title"]},g.default.t("choose-time",y)),m.default.createElement("button",{type:"button",className:E["departure-now-button"],onClick:t},g.default.t("departure-now",y))),m.default.createElement("div",{className:E["tab-row"]},m.default.createElement("label",{htmlFor:`${R}-modal-departure`,className:`${E["radio-tab-label"]}\n ${E["departure"===k?"active":void 0]}`},g.default.t("departure",y),m.default.createElement("input",{id:`${R}-modal-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:E["radio-textbutton"],onChange:()=>{C("departure")},checked:"departure"===k})),m.default.createElement("label",{htmlFor:`${R}-modal-arrival`,className:`${E["radio-tab-label"]}\n ${E["arrival"===k?"active":void 0]}`},g.default.t("arrival",y),m.default.createElement("input",{id:`${R}-modal-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:E["radio-textbutton"],onChange:()=>{C("arrival")},checked:"arrival"===k}))),m.default.createElement("div",{className:E["input-row"]},m.default.createElement(N,{value:x,getDisplay:u,onChange:function(e){w(e)},itemCount:c,startTime:F,id:`${R}-date`,label:g.default.t("date",y),icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["date-input-icon"]}`},m.default.createElement(h.default,{img:"calendar",color:a})),timeZone:l}),m.default.createElement(P,{value:x,getDisplay:d,onChange:function(e){w(e)},id:`${R}-time`,label:g.default.t("time",y),icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},m.default.createElement(h.default,{img:"time",color:a})),timeZone:l,validate:_})),m.default.createElement("div",{className:E["buttons-row"]},m.default.createElement("button",{type:"button",className:E["ready-button"],onClick:()=>o(x,k)},g.default.t("ready",y)),m.default.createElement("button",{type:"button",className:E["cancel-button"],onClick:r},g.default.t("cancel",y)))))}function G({timestamp:e,onTimeChange:t,onDateChange:i,departureOrArrival:a,onNowClick:l,onDepartureClick:o,onArrivalClick:r,embedWhenClosed:s,embedWhenOpen:d,lang:c,color:u,timeZone:_,onModalSubmit:p,fontWeights:y,serviceTimeRange:x,onOpen:v,onClose:w,openPicker:k}){f.default.tz.setDefault(_);const[F,N]=n.useState(k||!1),[P,G]=n.useState(e||f.default().valueOf()),[O,q]=n.useState(null),[W]=n.useState(b.default("datetimepicker-")),[T]=n.useState(function(){const e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)}()&&function(){if("undefined"==typeof window||null===window)return!1;const e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}()),$=n.useRef(),X=n.useRef(),A=n.useRef(),z={lng:c};n.useEffect((()=>{Object.keys(R).forEach((e=>g.default.addResourceBundle(e,"translation",R[c])))}),[]),n.useEffect((()=>{f.default.locale(c)}),[c]);const D=null===e;n.useEffect((()=>{D?G(f.default().valueOf()):(O&&(clearInterval(O),q(null)),G(e))}),[e]),n.useEffect((()=>{if(!D)return;O&&clearInterval(O);const e=setInterval((()=>{const t=f.default().valueOf();f.default(P).isSame(t,"minute")||(clearInterval(e),q(null),G(t))}),5e3);return q(e),()=>clearInterval(e)}),[P]);const Z=n.useRef();n.useEffect((()=>{Z.current=F}));const V=e=>{const t=f.default(e);let n;return n=t.isSame(f.default(),"day")?g.default.t("today",z):t.isSame(f.default().add(1,"day"),"day")?g.default.t("tomorrow",z):t.format("dd D.M."),n=`${n.charAt(0).toUpperCase()}${n.slice(1)}`,n},L=e=>f.default(e).format("HH:mm"),M=(e,t)=>{const n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){const e=n.includes(".")?".":":",i=n.split(e),a=Number(i[0]),l=!Number.isNaN(a)&&a>=0&&a<=23,o=Number(i[1]);if(!(!Number.isNaN(o)&&o>=0&&o<=59)||!l)return null;return f.default(t).hours(a).minutes(o).valueOf()}return null},I=f.default(P),j=f.default(P).startOf("day").valueOf();let H=[];const Y=f.default(j);for(;Y.isSame(j,"day");)H.push(Y.valueOf()),Y.add(15,"minutes");if(null===e){const e=3e5,t=Math.ceil(P/e)*e,n=Array(7).fill().map(((n,i)=>t+i*e)),i=H.map((e=>P-e)).findIndex((e=>e<=0));H.splice(i,0,...n),H=Array.from(new Set(H))}const U=f.default().startOf("day").hour(I.hour()).minute(I.minute()).valueOf(),K=Array(x).fill().map(((e,t)=>f.default(U).add(t,"day").valueOf()));function B(){A.current&&(A.current.innerHTML=g.default.t("accessible-closed",z),setTimeout((()=>{A.current.innerHTML=null}),100))}return m.default.createElement("fieldset",{className:E["dt-datetimepicker"],id:`${W}-root`,style:{"--color":`${u}`,"--font-weight-medium":y.medium}},m.default.createElement("legend",{className:E["sr-only"]},g.default.t("accessible-title",z)),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-update-instructions",z)),m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:F?`${E.hidden} datetimepicker-top-row`:`${E["top-row-container"]} ${E.closed} datetimepicker-top-row`},m.default.createElement("label",{className:E["label-open"],htmlFor:`${W}-open`},m.default.createElement("span",{className:E["time-icon"]},m.default.createElement(h.default,{img:"time",color:u})),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-open",z)),m.default.createElement("span",{role:"alert",className:E["sr-only"],ref:A}),m.default.createElement("button",{id:`${W}-open`,type:"button",className:`${E.textbutton} ${E.active} ${E["open-button"]}`,"aria-controls":`${W}-root`,"aria-expanded":"false",onClick:()=>{N(!0),A.current&&(A.current.innerHTML=g.default.t("accessible-opened",z),setTimeout((()=>{A.current.innerHTML=null}),100)),v&&v()},ref:$},m.default.createElement("span",null,D&&"departure"===a?g.default.t("departure-now",z):m.default.createElement(m.default.Fragment,null,g.default.t("departure"===a?"departure":"arrival",z),` ${f.default().isSame(f.default(P),"day")?"":V(P).toLowerCase()} ${L(P)}`)),m.default.createElement("span",{className:E["dropdown-icon"]},m.default.createElement(h.default,{img:"arrow-dropdown",color:u})))),m.default.createElement("span",{className:E["right-edge"]},s)),m.default.createElement("div",null)),T?F&&m.default.createElement(S,{departureOrArrival:a,onNowClick:()=>{N(!1),B(),l()},lang:c,color:u,onSubmit:(e,t)=>{p(e,t),N(!1),B()},onCancel:()=>{N(!1),B(),w&&w()},getTimeDisplay:L,timeZone:_,timestamp:P,getDateDisplay:V,dateSelectItemCount:x,getDisplay:L,validateTime:M,fontWeights:y}):m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:`${E["datetimepicker-open-container"]} ${F?"":E.hidden}`},m.default.createElement("div",{className:F?`${E["top-row-container"]} datetimepicker-top-row`:`${E.hidden} datetimepicker-top-row`}," ",m.default.createElement("span",{role:"alert",className:E["sr-only"],ref:A}),m.default.createElement("span",null),m.default.createElement("span",{className:E["departure-or-arrival-container"]},m.default.createElement("label",{htmlFor:`${W}-departure`,className:`${E["radio-textbutton-label"]}\n ${E["departure"===a?"active":void 0]}`},g.default.t("departure",z),m.default.createElement("input",{id:`${W}-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:E["radio-textbutton"],onChange:()=>{o()},checked:"departure"===a})),m.default.createElement("label",{htmlFor:`${W}-arrival`,className:`${E["radio-textbutton-label"]}\n ${E["arrival"===a?"active":void 0]}`},g.default.t("arrival",z),m.default.createElement("input",{id:`${W}-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:E["radio-textbutton"],onChange:()=>{r()},checked:"arrival"===a}))),m.default.createElement("button",{id:`${W}-now`,type:"button",className:E["departure-now-button"],onClick:()=>{N(!1),B(),w&&w(),l()},ref:X},g.default.t("departure-now",z)),m.default.createElement("span",{className:E["right-edge"]},m.default.createElement("button",{type:"button",className:E["close-button"],"aria-controls":`${W}-root`,"aria-expanded":"true",onClick:()=>{N(!1),B(),w&&w()}},m.default.createElement("span",{className:E["close-icon"]},m.default.createElement(h.default,{img:"close",color:u})),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-close",z))))),m.default.createElement("div",{className:F?`${E["picker-container"]}`:`${E.hidden} datetimepicker-top-row`},m.default.createElement(m.default.Fragment,null,m.default.createElement("span",{className:E["combobox-left"]},m.default.createElement(C,{value:P,onChange:e=>{i(e)},getDisplay:V,timeChoices:K,validate:()=>null,icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["date-input-icon"]}`},m.default.createElement(h.default,{img:"calendar",color:u})),id:`${W}-date`,label:g.default.t("date",z),disableTyping:!0,timeZone:_,datePicker:!0})),m.default.createElement("span",{className:E["combobox-right"]},m.default.createElement(C,{value:P,onChange:e=>{t(e)},getDisplay:L,timeChoices:H,validate:M,icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},m.default.createElement(h.default,{img:"time",color:u})),id:`${W}-time`,label:g.default.t("time",z),timeZone:_}))))),m.default.createElement("span",{className:F?"":E.hidden},d),m.default.createElement("div",{className:F?"datetimepicker-bottom-row-open":""})))}function O({realtime:e,initialArriveBy:t,initialTimestamp:i,onDepartureClick:a,onArrivalClick:l,onTimeChange:o,onDateChange:r,onNowClick:s,embedWhenClosed:d,embedWhenOpen:c,lang:u,color:_,timeZone:p,fontWeights:b,serviceTimeRange:g,onOpen:h,onClose:x,openPicker:v}){f.default.locale(u),f.default.tz.setDefault(p);const w=e?null:f.default().valueOf(),[k,E]=n.useState(i?1e3*i:w),[C,R]=n.useState(!0===t?"arrival":"departure");n.useEffect((()=>{const e=null===k&&void 0===i,n=null===k||void 0===i,a=Math.round(k/1e3)===i;!e&&(n||!a)&&E(void 0===i?null:1e3*i),!t==("arrival"===C)&&R(!0===t?"arrival":"departure")}),[i,t]);const F=y.default((e=>{if(null===e)return E(f.default().valueOf()),void o(Math.round(f.default().valueOf()/1e3),"arrival"===C);E(e),o(Math.round(e/1e3),"arrival"===C)}),10),N=y.default((e=>{if(null===e)return E(f.default().valueOf()),void r(Math.round(f.default().valueOf()/1e3),"arrival"===C);E(e),r(Math.round(e/1e3),"arrival"===C)}),10);return m.default.createElement(G,{timestamp:k,onTimeChange:F,onDateChange:N,departureOrArrival:C,onNowClick:()=>{R("departure");const t=e?null:f.default().valueOf();E(t),s(Math.round(t/1e3))},onDepartureClick:()=>{let e=!1,t=k;if(null===k){const n=f.default().valueOf();E(n),t=n,e=!0}"departure"!==C&&(R("departure"),e=!0),e&&a(Math.round(t/1e3))},onArrivalClick:()=>{let e=!1,t=k;if(null===k){const n=f.default().valueOf();E(n),t=n,e=!0}"arrival"!==C&&(R("arrival"),e=!0),e&&l(Math.round(t/1e3))},embedWhenClosed:d,embedWhenOpen:c,lang:u,color:_,timeZone:p,onModalSubmit:(e,t)=>{E(e),R(t),o(e/1e3,"arrival"===t,!0)},fontWeights:b,serviceTimeRange:g,onOpen:h,onClose:x,openPicker:v})}"production"!==process.env.NODE_ENV&&(N.propTypes={value:p.default.number.isRequired,getDisplay:p.default.func.isRequired,onChange:p.default.func.isRequired,itemCount:p.default.number.isRequired,startTime:p.default.number.isRequired,id:p.default.string.isRequired,label:p.default.string.isRequired,icon:p.default.node,dateTimeCombined:p.default.bool,timeZone:p.default.string}),N.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(P.propTypes={value:p.default.number.isRequired,getDisplay:p.default.func.isRequired,onChange:p.default.func.isRequired,id:p.default.string.isRequired,label:p.default.string.isRequired,icon:p.default.node,timeZone:p.default.string,validate:p.default.func.isRequired}),P.defaultProps={icon:null,timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"en",resources:{}}),Object.keys(R).forEach((e=>g.default.addResourceBundle(e,"translation",R[e]))),"production"!==process.env.NODE_ENV&&(S.propTypes={timeZone:p.default.string,departureOrArrival:p.default.oneOf(["departure","arrival"]).isRequired,onNowClick:p.default.func.isRequired,lang:p.default.string.isRequired,color:p.default.string,onSubmit:p.default.func.isRequired,onCancel:p.default.func.isRequired,timestamp:p.default.number.isRequired,getTimeDisplay:p.default.func.isRequired,dateSelectItemCount:p.default.number.isRequired,getDateDisplay:p.default.func.isRequired,validateTime:p.default.func.isRequired,fontWeights:p.default.shape({medium:p.default.number.isRequired}).isRequired}),S.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(G.propTypes={timestamp:p.default.number,timeZone:p.default.string,onTimeChange:p.default.func.isRequired,onDateChange:p.default.func.isRequired,departureOrArrival:p.default.oneOf(["departure","arrival"]).isRequired,onNowClick:p.default.func.isRequired,onDepartureClick:p.default.func.isRequired,onArrivalClick:p.default.func.isRequired,embedWhenClosed:p.default.node,embedWhenOpen:p.default.node,lang:p.default.string.isRequired,color:p.default.string,onModalSubmit:p.default.func.isRequired,fontWeights:p.default.shape({medium:p.default.number.isRequired}).isRequired,serviceTimeRange:p.default.number,onOpen:p.default.func,onClose:p.default.func,openPicker:p.default.bool}),G.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",serviceTimeRange:30,onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(O.propTypes={realtime:p.default.bool,initialTimestamp:p.default.number,initialArriveBy:p.default.bool,onDepartureClick:p.default.func.isRequired,onArrivalClick:p.default.func.isRequired,onTimeChange:p.default.func.isRequired,onDateChange:p.default.func.isRequired,onNowClick:p.default.func.isRequired,embedWhenClosed:p.default.node,embedWhenOpen:p.default.node,lang:p.default.string,color:p.default.string,timeZone:p.default.string,fontWeights:p.default.shape({medium:p.default.number}),serviceTimeRange:p.default.number,onOpen:p.default.func,onClose:p.default.func,openPicker:p.default.bool}),O.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0},e.default=O,Object.defineProperty(e,"__esModule",{value:!0})}));
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzL3V0aWxzLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGVza3RvcERhdGV0aW1lcGlja2VyLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZURhdGVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9tb2JpbGVEZXRlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVQaWNrZXJNb2RhbC5qcyIsIi4uL3NyYy9oZWxwZXJzL0RhdGV0aW1lcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGFuZGxlIHR5cGluZyB0aW1lIGFuZCBhZGRpbmcgbmVjZXNzYXJ5IDpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZWRWYWx1ZVxuICpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcGFyc2VUeXBlZFRpbWUodHlwZWRWYWx1ZSkge1xuICBsZXQgYWN0dWFsVmFsdWUgPSB0eXBlZFZhbHVlO1xuICBpZiAoXG4gICAgYWN0dWFsVmFsdWUubGVuZ3RoID09PSAzICYmXG4gICAgYWN0dWFsVmFsdWUuc3BsaXQoJycpLmV2ZXJ5KG4gPT4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIobikpKVxuICApIHtcbiAgICAvLyBhZGQgJzonIGlmIHVzZXIgdHlwZXMgdGhyZWUgbnVtYmVycyBpbiBhIHJvd1xuICAgIGlmIChOdW1iZXIoYWN0dWFsVmFsdWUuc2xpY2UoMCwgMikpIDw9IDIzKSB7XG4gICAgICBhY3R1YWxWYWx1ZSA9IGAke2FjdHVhbFZhbHVlLnNsaWNlKDAsIDIpfToke2FjdHVhbFZhbHVlWzJdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWVbMF19OiR7YWN0dWFsVmFsdWUuc2xpY2UoMSl9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjdHVhbFZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7IHBhcnNlVHlwZWRUaW1lIH07XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IGEgZGF0ZSBvciB0aW1lIGlucHV0IG9uIGRlc2t0b3AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge051bWJlcn0gcHJvcHMudmFsdWUgICAgQ3VycmVudGx5IHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25DaGFuZ2UgICAgIFRoaXMgaXMgY2FsbGVkIHdpdGggbmV3IHRpbWVzdGFtcCB3aGVuIGlucHV0IGlzIGNoYW5nZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLmdldERpc3BsYXkgICBGdW5jdGlvbiB0byBnZXQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZnJvbSBhIHRpbWVzdGFtcFxuICogQHBhcmFtIHthcnJheX0gICAgcHJvcHMudGltZUNob2ljZXMgIEFycmF5IG9mIHRpbWVzdGFtcHMgdG8gY2hvb3NlIGZyb21cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHZhbGlkYXRlICAgICAgICAgICBGdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCB3aGVuIHVzZXIgdHlwZXMgc29tZXRoaW5nIGFuZCBoaXRzIGVudGVyLiBQYXJhbWV0ZXIgaXMgaW5wdXQgYXMgc3RyaW5nc3RyaW5nLCByZXR1cm4gbnVtYmVyIHRpbWVzdGFtcCBpZiBpbnB1dCBpcyB2YWxpZCBvciBudWxsIGlmIGludmFsaWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgICAgICAgICAgICAgICAgICAgSWQgcHJlZml4IGZvciBsYWJlbHMgYW5kIGFyaWEgYXR0cmlidXRlcy4gU2hvdWxkIGJlIHVuaXF1ZSBpbiBwYWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgICAgICAgICAgICAgICAgVGV4dCB0byBzaG93IGFzIGlucHV0IGxhYmVsXG4gKiBAcGFyYW0ge25vZGV9IGljb24gICAgICAgICAgICAgICAgICAgSlNYIGZvciBpY29uIHRvIHNob3cgaW4gaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZVR5cGluZyAgICAgICBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHR5cGluZyBpbiB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGF0ZVBpY2tlciAgICAgICAgICBJcyB0aGUgcGlja2VyIERhdGVQaWNrZXIgb3IgVGltZVBpY2tlclxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGVza3RvcERhdGV0aW1lcGlja2VyXG4gKiAgIHZhbHVlPXsxNTkwMTMzODIzMDAwfVxuICogICBvbkNoYW5nZT17dGltZXN0YW1wID0+IHVwZGF0ZSh0aW1lc3RhbXApfVxuICogICBnZXREaXNwbGF5PXt0aW1lc3RhbXAgPT4gZm9ybWF0VGltZSh0aW1lc3RhbXApfVxuICogICB0aW1lQ2hvaWNlcz17WzE1OTAxMzM4MjMwMDBdfVxuICogICB2YWxpZGF0ZT0oaW5wdXQgPT4gdmFsaWRhdGVUaW1lU3RyaW5nKGlucHV0KSlcbiAqICAgaWQ9XCJ0aW1laW5wdXRcIlxuICogICBpY29uPVwiPEljb24gLz5cIlxuICogICBkaXNhYmxlVHlwaW5nPXtmYWxzZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqICAgZGF0ZVBpY2tlcj17dHJ1ZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqL1xuZnVuY3Rpb24gRGVza3RvcERhdGV0aW1lcGlja2VyKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBnZXREaXNwbGF5LFxuICB0aW1lQ2hvaWNlcyxcbiAgdmFsaWRhdGUsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgZGlzYWJsZVR5cGluZyxcbiAgdGltZVpvbmUsXG4gIGRhdGVQaWNrZXIsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgW2Rpc3BsYXlWYWx1ZSwgY2hhbmdlRGlzcGxheVZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW3R5cGluZywgc2V0VHlwaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKSwgW3ZhbHVlXSk7XG5cbiAgLy8gbmV3VmFsdWUgaXMgc3RyaW5nXG4gIGNvbnN0IGhhbmRsZVRpbWVzdGFtcCA9IG5ld1ZhbHVlID0+IHtcbiAgICBjb25zdCBhc051bWJlciA9IE51bWJlcihuZXdWYWx1ZSk7XG4gICAgaWYgKFxuICAgICAgTnVtYmVyLmlzTmFOKGFzTnVtYmVyKSB8fFxuICAgICAgIW1vbWVudChhc051bWJlcikuaXNWYWxpZCgpIHx8XG4gICAgICBtb21lbnQoYXNOdW1iZXIpLnZhbHVlT2YoKSAhPT0gYXNOdW1iZXJcbiAgICApIHtcbiAgICAgIC8vIFRPRE8gaGFuZGxlIGVycm9yP1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkNoYW5nZShhc051bWJlcik7XG4gIH07XG4gIGZ1bmN0aW9uIGlzVmFsaWRJbnB1dChzdHIpIHtcbiAgICBjb25zdCBjbG9ja1JlZ2V4ID0gL14oWzAtMV0/WzAtOV18MlswLTNdKTpbMC01XVswLTldJC87XG4gICAgY29uc3QgcmVnZXggPSAvW2EtekEtWsKnw4TDpMOWw7ZcXHNdL2c7XG4gICAgaWYgKHJlZ2V4LnRlc3Qoc3RyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gY2xvY2tSZWdleC50ZXN0KHN0cikgfHwgc3RyLmxlbmd0aCA8IDU7XG4gIH1cbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9IChuZXdWYWx1ZSwgeyBhY3Rpb24gfSkgPT4ge1xuICAgIGlmIChkaXNhYmxlVHlwaW5nIHx8ICFpc1ZhbGlkSW5wdXQobmV3VmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdpbnB1dC1jaGFuZ2UnKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWQgPSB1dGlscy5wYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUodmFsaWRhdGVkKTtcbiAgICAgIHNldFR5cGluZyh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9wdGlvbnMgPSB0aW1lQ2hvaWNlcy5tYXAodCA9PiB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHQudG9TdHJpbmcoKSwgbGFiZWw6IGdldERpc3BsYXkodCkgfTtcbiAgfSk7XG4gIGNvbnN0IGNsb3Nlc3RPcHRpb24gPSBvcHRpb25zLnJlZHVjZSgoYSwgYikgPT5cbiAgICBNYXRoLmFicyh2YWx1ZSAtIGEudmFsdWUpIDwgTWF0aC5hYnModmFsdWUgLSBiLnZhbHVlKSA/IGEgOiBiLFxuICApO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IGZpbHRlck9wdGlvbnMgPSAob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgIGNvbnN0IGhvdXIgPSBpbnB1dC5sZW5ndGggPD0gMiA/IGlucHV0IDogaW5wdXQuc3BsaXQoJzonKVswXTtcbiAgICBjb25zdCBpc1ZhbGlkSG91ciA9IC9eKFswLTFdP1swLTldfDJbMC0zXSkkLy50ZXN0KGhvdXIpO1xuICAgIGNvbnN0IGNvbXAgPSBob3VyLmxlbmd0aCA9PT0gMSA/ICcwJy5jb25jYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgcmV0dXJuIGlzVmFsaWRIb3VyXG4gICAgICA/IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzBdID09PSBjb21wLnNwbGl0KCc6JylbMF1cbiAgICAgIDogdHJ1ZTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IGlkPXtsYWJlbElkfT5cbiAgICAgICAgICB7bGFiZWx9IHtkaXNwbGF5VmFsdWV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2ljb259XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsSWR9XG4gICAgICAgICAgYXJpYUxpdmVNZXNzYWdlcz17e1xuICAgICAgICAgICAgZ3VpZGFuY2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuICcuJzsgLy8gdGhpcyBjYW4ndCBiZSBlbXB0eSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkNoYW5nZTogKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25GaWx0ZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRm9jdXM6ICh7IGNvbnRleHQsIGxhYmVsOiBpdGVtTGFiZWwgfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoY29udGV4dCA9PT0gJ21lbnUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1MYWJlbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH19XG4gICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICBpbnB1dElkPXtpbnB1dElkfVxuICAgICAgICAgIG9uQ2hhbmdlPXt0aW1lID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdmFsaWRhdGUoZGlzcGxheVZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIGlmICh2YWxpZGF0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodmFsaWRhdGVkKTtcbiAgICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHZhbHVlXG4gICAgICAgICAgICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh0aW1lLnZhbHVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgIEluZGljYXRvcnNDb250YWluZXI6ICgpID0+IG51bGwsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snZGF0ZXRpbWVwaWNrZXItc2VsZWN0LWNvbnRhaW5lciddfVxuICAgICAgICAgIGNsYXNzTmFtZVByZWZpeD1cImRhdGV0aW1lcGlja2VyLXNlbGVjdFwiXG4gICAgICAgICAgb25JbnB1dENoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgICBpbnB1dFZhbHVlPXshZGlzYWJsZVR5cGluZyAmJiBkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgdmFsdWU9e2Nsb3Nlc3RPcHRpb259XG4gICAgICAgICAgZmlsdGVyT3B0aW9uPXsob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGVQaWNrZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoIDwgMSB8fCBpbnB1dC5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlck9wdGlvbnMob3B0aW9uLCBpbnB1dCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWU9e2Rpc2FibGVUeXBpbmd9XG4gICAgICAgICAgdGFiU2VsZWN0c1ZhbHVlPXtmYWxzZX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgICAgb25Gb2N1cz17ZSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRpc2FibGVUeXBpbmcpIHtcbiAgICAgICAgICAgICAgZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkJsdXI9eygpID0+IHtcbiAgICAgICAgICAgIC8vIHJlbW92aW5nIGZvY3VzIGFsc28gbG9ja3MgaW4gdmFsdWVcbiAgICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdmFsaWRhdGUoZGlzcGxheVZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIGlmICh2YWxpZGF0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodmFsaWRhdGVkKTtcbiAgICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25LZXlEb3duPXtlID0+IHtcbiAgICAgICAgICAgIGlmIChbJ0Fycm93RG93bicsICdBcnJvd1VwJ10uaW5jbHVkZXMoZS5rZXkpKSB7XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBpc1NlYXJjaGFibGU9eyFkaXNhYmxlVHlwaW5nfVxuICAgICAgICAvPlxuICAgICAgPC9sYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn1cbkRlc2t0b3BEYXRldGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0aW1lQ2hvaWNlczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlcikuaXNSZXF1aXJlZCxcbiAgdmFsaWRhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBkaXNhYmxlVHlwaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRhdGVQaWNrZXI6IFByb3BUeXBlcy5ib29sLFxufTtcblxuRGVza3RvcERhdGV0aW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgZGlzYWJsZVR5cGluZzogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgZGF0ZVBpY2tlcjogZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZXNrdG9wRGF0ZXRpbWVwaWNrZXI7XG4iLCJmdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlSW5qZWN0O1xuIiwiY29uc3QgdHJhbnNsYXRpb25zID0ge1xuICBkZToge1xuICAgIHRvZGF5OiAnSGV1dGUnLFxuICAgIHRvbW9ycm93OiAnTW9yZ2VuJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdTY2hsaWXDn2UgZGllIEF1c3dhaGwnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdBdXN3YWhsIGdlc2NobG9zc2VuJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ8OWZmZuZSBkaWUgQXVzd2FobCcsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ0F1c3dhaGwgZ2XDtmZmbmV0JyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdEYXR1bSB1bmQgVWhyemVpdGF1c3dhaGwnLFxuICAgIGFycml2YWw6ICdBbmt1bmZ0JyxcbiAgICBkYXRlOiAnRGF0dW0nLFxuICAgIGRlcGFydHVyZTogJ0FiZmFocnQnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0FiZmFocnQgamV0enQnLFxuICAgICdjaG9vc2UtdGltZSc6ICdaZWl0IHfDpGhsZW4nLFxuICAgIHJlYWR5OiAnRmVydGlnJyxcbiAgICB0aW1lOiAnWmVpdCcsXG4gICAgY2FuY2VsOiAnQWJicmVjaGVuJyxcbiAgfSxcbiAgZW46IHtcbiAgICB0b2RheTogJ1RvZGF5JyxcbiAgICB0b21vcnJvdzogJ1RvbW9ycm93JyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdDbG9zZSB0aGUgcGlja2VyJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVGltZXBpY2tlciBjbG9zZWQnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnT3BlbiB0aGUgcGlja2VyJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVGltZXBpY2tlciBvcGVuZWQnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0RhdGUgYW5kIHRpbWVwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ0NoYW5naW5nIHRpbWUgcGFyYW1ldGVycyB3aWxsIHRyaWdnZXIgYSBuZXcgc2VhcmNoLicsXG4gICAgYXJyaXZhbDogJ0Fycml2YWwnLFxuICAgIGRhdGU6ICdEYXRlJyxcbiAgICBkZXBhcnR1cmU6ICdEZXBhcnR1cmUnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0xlYXZpbmcgbm93JyxcbiAgICB0aW1lOiAnVGltZScsXG4gICAgJ2Nob29zZS10aW1lJzogJ0Nob29zZSB0aW1lJyxcbiAgICByZWFkeTogJ1JlYWR5JyxcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICB9LFxuICBmaToge1xuICAgIHRvZGF5OiAnVMOkbsOkw6RuJyxcbiAgICB0b21vcnJvdzogJ0h1b21lbm5hJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdTdWxqZSB2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1ZhbGl0c2luIHN1bGpldHR1JyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ0F2YWEgdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdWYWxpdHNpbiBhdmF0dHUnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0Fpa2EtIGphIHDDpGl2w6Rtw6TDpHLDpHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS11cGRhdGUtaW5zdHJ1Y3Rpb25zJzpcbiAgICAgICdBaWthdmFsaW50b2plbiBtdXV0dGFtaW5lbiBsYXVrYWlzZWUgdXVkZW4gaGF1bi4nLFxuICAgIGFycml2YWw6ICdQZXJpbGzDpCcsXG4gICAgZGF0ZTogJ1DDpGl2w6QnLFxuICAgIGRlcGFydHVyZTogJ0zDpGh0w7ZhaWthJyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdMw6RodMO2IG55dCcsXG4gICAgdGltZTogJ0Fpa2EnLFxuICAgICdjaG9vc2UtdGltZSc6ICdWYWxpdHNlIGFpa2EnLFxuICAgIHJlYWR5OiAnVmFsbWlzJyxcbiAgICBjYW5jZWw6ICdQZXJ1dXRhJyxcbiAgfSxcbiAgc3Y6IHtcbiAgICB0b2RheTogJ0kgZGFnJyxcbiAgICB0b21vcnJvdzogJ0kgbW9yZ29uJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdTdMOkbmcgdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVsOkbGphcmVuIHN0w6RuZ2RlJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ8OWcHBuYSB2w6RsamFyZW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdWw6RsamFyZW4gw7ZwcG5hZGUnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ1RpZC0gb2NoIGRhdHVtdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS11cGRhdGUtaW5zdHJ1Y3Rpb25zJzpcbiAgICAgICdPbSBkdSDDpG5kcmFyIHRpZGVybmEsIHN0YXJ0YXMgZW4gbnkgc8O2a25pbmcgYXV0b21hdGlza3QuJyxcbiAgICBhcnJpdmFsOiAnQW5sw6RuZGVyJyxcbiAgICBkYXRlOiAnRGF0dW0nLFxuICAgIGRlcGFydHVyZTogJ0F2Z8OlbmdzdGlkJyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdBdmfDpXIgbnUnLFxuICAgIHRpbWU6ICdUaWQnLFxuICAgICdjaG9vc2UtdGltZSc6ICdWw6RsaiB0aWQnLFxuICAgIHJlYWR5OiAnRsOkcmRpZycsXG4gICAgY2FuY2VsOiAnQXZicnl0JyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zbGF0aW9ucztcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IEF1dG9zdWdnZXN0IGZyb20gJ3JlYWN0LWF1dG9zdWdnZXN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBpc0FuZHJvaWQgfSBmcm9tICcuL21vYmlsZURldGVjdGlvbic7XG5cbi8qKlxuICogQ29tcG9uZW50IHRvIGRpc3BsYXkgYSBkYXRlIGlucHV0IG9uIG1vYmlsZVxuICovXG5mdW5jdGlvbiBNb2JpbGVEYXRlcGlja2VyKHtcbiAgdmFsdWUsXG4gIGdldERpc3BsYXksXG4gIG9uQ2hhbmdlLFxuICBpdGVtQ291bnQsXG4gIHN0YXJ0VGltZSxcbiAgaWQsXG4gIGxhYmVsLFxuICBpY29uLFxuICB0aW1lWm9uZSxcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuXG4gIGNvbnN0IFtvcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2Nyb2xsUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRlQ2hvaWNlcyA9IEFycmF5KGl0ZW1Db3VudClcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KHN0YXJ0VGltZSkuYWRkKGksICdkYXknKS52YWx1ZU9mKCkpO1xuICBjb25zdCBtaW51dGUgPSAxMDAwICogNjA7XG4gIGNvbnN0IGRpZmZzID0gZGF0ZUNob2ljZXMubWFwKHQgPT4gdmFsdWUgLSB0KTtcbiAgY29uc3Qgc2Nyb2xsSW5kZXggPSBkaWZmcy5maW5kSW5kZXgodCA9PiB0IDwgbWludXRlKTsgLy8gd2hlbiB0aW1lIGlzIG5vdywgdGhlIHRpbWVzIG1pZ2h0IGRpZmZlciBieSBsZXNzIHRoYW4gb25lIG1pbnV0ZVxuICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gNTA7XG4gIC8vIHNjcm9sbCB0byBzZWxlY3RlZCB0aW1lIHdoZW4gZHJvcGRvd24gaXMgb3BlbmVkXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9wZW4gJiYgc2Nyb2xsUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNjcm9sbFJlZi5jdXJyZW50LnNjcm9sbFRvcCA9IGVsZW1lbnRIZWlnaHQgKiBzY3JvbGxJbmRleDtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgb3Blbl0pO1xuICBjb25zdCBuYXRpdmVJbnB1dCA9ICFpc0FuZHJvaWQoKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXNbJ2lucHV0LWNvbnRhaW5lciddfSBodG1sRm9yPXtpbnB1dElkfT5cbiAgICAgICAgPHNwYW4+e2ljb259PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtuYXRpdmVJbnB1dCA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snbW9iaWxlLWlucHV0LWRpc3BsYXknXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gb25DaGFuZ2UoTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSl9XG4gICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2RhdGVDaG9pY2VzLm1hcChkYXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2RhdGV9IHZhbHVlPXtkYXRlfT5cbiAgICAgICAgICAgICAgICAgICAge2dldERpc3BsYXkoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxBdXRvc3VnZ2VzdFxuICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e2RhdGVDaG9pY2VzfVxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGlvblZhbHVlPXtzID0+IHMudG9TdHJpbmcoKX1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gZ2V0RGlzcGxheShzKX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHNob3VsZFJlbmRlclN1Z2dlc3Rpb25zPXsoKSA9PiB0cnVlfVxuICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICB2YWx1ZTogZ2V0RGlzcGxheSh2YWx1ZSksXG4gICAgICAgICAgICAgIG9uQ2hhbmdlOiAoXywgeyBuZXdWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoTnVtYmVyKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWQsXG4gICAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyPXsoeyBjb250YWluZXJQcm9wcywgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHsgcmVmLCAuLi5vdGhlclJlZnMgfSA9IGNvbnRhaW5lclByb3BzO1xuICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQgPSBlbGVtO1xuICAgICAgICAgICAgICAgICAgcmVmKGVsZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdGhlbWU9e3N0eWxlc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9sYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn1cbk1vYmlsZURhdGVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXRlbUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIHN0YXJ0VGltZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgZGF0ZVRpbWVDb21iaW5lZDogUHJvcFR5cGVzLmJvb2wsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9iaWxlRGF0ZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIGRhdGVUaW1lQ29tYmluZWQ6IGZhbHNlLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVEYXRlcGlja2VyO1xuIiwiLyoqXG4gKiAgRGV0ZWN0IGlmIHVzZXIgaXMgb24gYSBtb2JpbGUgZGV2aWNlIGJ5IHBhcnNpbmcgdXNlckFnZW50LiBUaGlzIGlzIG5vdCAxMDAlIHJlbGlhYmxlIGJ1dCBjbG9zZSBlbm91Z2guXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNb2JpbGUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQgfHwgbmF2aWdhdG9yLnZlbmRvciB8fCB3aW5kb3cub3BlcmE7XG4gIGNvbnN0IG1vYmlsZSA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KFxuICAgIHVzZXJBZ2VudCxcbiAgKTtcbiAgcmV0dXJuIG1vYmlsZTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgaWYgdXNlciBpcyBvbiBhbiBhbmRyb2lkIGRldmljZS4gTm90IDEwMCUgcmVsaWFibGUuXG4gKi9cbmZ1bmN0aW9uIGlzQW5kcm9pZCgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gdXNlckFnZW50LmluZGV4T2YoJ2FuZHJvaWQnKSA+IC0xO1xufVxuXG5leHBvcnQgeyBpc01vYmlsZSwgaXNBbmRyb2lkIH07XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIHRpbWUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgdGltZVpvbmUsXG4gIHZhbGlkYXRlLFxufSkge1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgY2hhbmdlSW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICBjb25zdCB0aW1lSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGltZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHRpbWVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snaW5wdXQtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IGlkPXtsYWJlbElkfT5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgaWQ9e2lucHV0SWR9XG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIG1heExlbmd0aD1cIjZcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd0aW1lLWlucHV0LW1vYmlsZSddfVxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7IC8vIHNldCBjYXJldCB0byBzdGFydCBvZiBpbnB1dFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgLy8gbnVtYmVyIHR5cGVkIGFzIGZpcnN0IGNoYXIgPT4gY2xlYXIgcmVzdCBvZiB0aGUgaW5wdXRcbiAgICAgICAgICAgICAgbmV3VmFsdWUubWF0Y2goL1swLTldezN9OlswLTldezJ9LykgJiZcbiAgICAgICAgICAgICAgbmV3VmFsdWUuc2xpY2UoMSkgPT09IGlucHV0VmFsdWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmNoYXJBdCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbCA9IHV0aWxzLnBhcnNlVHlwZWRUaW1lKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIGNoYW5nZUlucHV0VmFsdWUoYWN0dWFsKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IHZhbGlkYXRlKGFjdHVhbCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh0aW1lc3RhbXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgcmVmPXt0aW1lSW5wdXRSZWZ9XG4gICAgICAgIC8+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvPlxuICApO1xufVxuTW9iaWxlVGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZhbGlkYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuTW9iaWxlVGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVRpbWVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbW9kYWwnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgTW9iaWxlRGF0ZXBpY2tlciBmcm9tICcuL01vYmlsZURhdGVwaWNrZXInO1xuaW1wb3J0IE1vYmlsZVRpbWVwaWNrZXIgZnJvbSAnLi9Nb2JpbGVUaW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcblxubW9tZW50LmxvY2FsZSgnZW4nKTtcbmkxOG5leHQuaW5pdCh7IGxuZzogJ2VuJywgcmVzb3VyY2VzOiB7fSB9KTtcbk9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+XG4gIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZywgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbik7XG5cbi8qKlxuICogVE9ET1xuICovXG5mdW5jdGlvbiBNb2JpbGVQaWNrZXJNb2RhbCh7XG4gIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgb25Ob3dDbGljayxcbiAgbGFuZyxcbiAgY29sb3IsXG4gIHRpbWVab25lLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIHRpbWVzdGFtcCxcbiAgZ2V0VGltZURpc3BsYXksXG4gIGRhdGVTZWxlY3RJdGVtQ291bnQsXG4gIGdldERhdGVEaXNwbGF5LFxuICB2YWxpZGF0ZVRpbWUsXG4gIGZvbnRXZWlnaHRzLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2V0dGluZ3MgPSB7IGxuZzogbGFuZyB9O1xuXG4gIGNvbnN0IFtkaXNwbGF5VGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBdID0gdXNlU3RhdGUodGltZXN0YW1wKTtcblxuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9IHVzZVN0YXRlKFxuICAgIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgKTtcblxuICBmdW5jdGlvbiBvbkFycml2YWxDbGljaygpIHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2Fycml2YWwnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGVwYXJ0dXJlQ2xpY2soKSB7XG4gICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdkZXBhcnR1cmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGF0ZUNoYW5nZShuZXdWYWx1ZSkge1xuICAgIGNoYW5nZVRpbWVzdGFtcChuZXdWYWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBvblRpbWVDaGFuZ2UobmV3VmFsdWUpIHtcbiAgICBjaGFuZ2VUaW1lc3RhbXAobmV3VmFsdWUpO1xuICB9XG5cbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKS5ob3VyKCkpXG4gICAgLm1pbnV0ZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkubWludXRlKCkpXG4gICAgLnZhbHVlT2YoKTtcblxuICByZXR1cm4gKFxuICAgIDxNb2RhbFxuICAgICAgYXBwRWxlbWVudD17ZG9jdW1lbnQgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYXBwJykgOiB1bmRlZmluZWR9XG4gICAgICBpc09wZW5cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtbW9kYWwtY29udGVudCddfVxuICAgICAgb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtbW9kYWwtb3ZlcmxheSddfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IGAke2NvbG9yfWAsXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWyd0b3Atcm93J119PlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlc1snbW9kYWwtdGl0bGUnXX0+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdjaG9vc2UtdGltZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snZGVwYXJ0dXJlLW5vdy1idXR0b24nXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uTm93Q2xpY2t9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sndGFiLXJvdyddfT5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tbW9kYWwtZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10YWItbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSdcbiAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW1vZGFsLWRlcGFydHVyZWB9XG4gICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImRlcGFydHVyZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25EZXBhcnR1cmVDbGljaygpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnZGVwYXJ0dXJlJ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tbW9kYWwtYXJyaXZhbGB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGFiLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2Fycml2YWwnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnYXJyaXZhbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW1vZGFsLWFycml2YWxgfVxuICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhcnJpdmFsXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICBvbkFycml2YWxDbGljaygpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnYXJyaXZhbCd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1yb3cnXX0+XG4gICAgICAgICAgPE1vYmlsZURhdGVwaWNrZXJcbiAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0RGF0ZURpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgaXRlbUNvdW50PXtkYXRlU2VsZWN0SXRlbUNvdW50fVxuICAgICAgICAgICAgc3RhcnRUaW1lPXtkYXRlU2VsZWN0U3RhcnRUaW1lfVxuICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGF0ZWB9XG4gICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1snZGF0ZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNhbGVuZGFyXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TW9iaWxlVGltZXBpY2tlclxuICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRpbWVDaGFuZ2V9XG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS10aW1lYH1cbiAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ3RpbWUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgdmFsaWRhdGU9e3ZhbGlkYXRlVGltZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snYnV0dG9ucy1yb3cnXX0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmVhZHktYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBvblN1Ym1pdChkaXNwbGF5VGltZXN0YW1wLCBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ3JlYWR5JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2FuY2VsLWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnY2FuY2VsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Nb2RhbD5cbiAgKTtcbn1cblxuTW9iaWxlUGlja2VyTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsOiBQcm9wVHlwZXMub25lT2YoWydkZXBhcnR1cmUnLCAnYXJyaXZhbCddKS5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DYW5jZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXRUaW1lRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREYXRlRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdmFsaWRhdGVUaW1lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgfSkuaXNSZXF1aXJlZCxcbn07XG5cbk1vYmlsZVBpY2tlck1vZGFsLmRlZmF1bHRQcm9wcyA9IHtcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9iaWxlUGlja2VyTW9kYWw7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9maSc7XG5pbXBvcnQgdW5pcXVlSWQgZnJvbSAnbG9kYXNoL3VuaXF1ZUlkJztcbmltcG9ydCBpMThuZXh0IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgRGVza3RvcERhdGV0aW1lcGlja2VyIGZyb20gJy4vRGVza3RvcERhdGV0aW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi9tb2JpbGVEZXRlY3Rpb24nO1xuaW1wb3J0IGRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCBmcm9tICcuL2RhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCc7XG5pbXBvcnQgTW9iaWxlUGlja2VyTW9kYWwgZnJvbSAnLi9Nb2JpbGVQaWNrZXJNb2RhbCc7XG5cbm1vbWVudC5sb2NhbGUoJ2VuJyk7XG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgcmVuZGVycyBjb21ib2JveCBzdHlsZSBpbnB1dHMgZm9yIHNlbGVjdGluZyBkYXRlIGFuZCB0aW1lLiBUaGlzIGlzIGEgY29udHJvbGxlZCBjb21wb25lbnQsIHRpbWVzdGFtcCBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBib3RoIGlucHV0cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy50aW1lc3RhbXAgICAgICBDdXJyZW50bHkgc2VsZWN0ZWQgdGltZSBhcyBhIHVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcy4gU2V0IHRvIG51bGwgdG8gc2lnbmlmeSB0aGF0IFwibm93XCIgaXMgc2VsZWN0ZWQuIERpc3BsYXllZCB0aW1lIGlzIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiBzZXQgdG8gbnVsbFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgIENhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGF0ZUNoYW5nZSAgICAgICBDYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gZGF0ZSBpbnB1dCBjaGFuZ2VzXG4gKiBAcGFyYW0geydhcnJpdmFsJ3wnZGVwYXJ0dXJlJ30gcHJvcHMuZGVwYXJ0dXJlT3JBcnJpdmFsICAgRGV0ZXJtaW5lIGlmIGlucHV0IGlzIHNldCB0byBjaG9vc2UgZGVwYXJ0dXJlIG9yIGFycml2YWwgdGltZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25Ob3dDbGljayAgICAgICAgIENhbGxlZCB3aGVuIFwiZGVwYXJ0IG5vd1wiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgIENhbGxlZCB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbkNsb3NlZCAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIGluIHRoZSBjb3JuZXIgd2hlbiBpbnB1dCBpcyBjbG9zZWRcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuT3BlbiAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgd2hlbiBpbnB1dCBpcyBvcGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMubGFuZyAgICAgICAgICAgICAgICAgTGFuZ3VhZ2Ugc2VsZWN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGF0ZXRpbWVwaWNrZXJcbiAqICAgdGltZXN0YW1wPXsxNTkwMTMzODIzMDAwfVxuICogICBvblRpbWVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBvbkRhdGVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBkZXBhcnR1cmVPckFycml2YWw9eydkZXBhcnR1cmUnfVxuICogICBvbk5vd0NsaWNrPXsoKSA9PiBzZXRUaW1lc3RhbXBUb051bGwoKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KCkgPT4gZGVwYXJ0dXJlQ2xpY2tlZCgpfVxuICogICBvbkFycml2YWxDbGljaz17KCkgPT4gYXJyaXZhbENsaWNrZWQoKX1cbiAqICAgZW1iZWRXaGVuQ2xvc2VkPXs8YnV0dG9uIC8+fVxuICogICBsYW5nPXsnZW4nfVxuICogICBzZXJ2aWNlVGltZVJhbmdlPXsxNX1cbiAqIC8+XG4gKi9cbmZ1bmN0aW9uIERhdGV0aW1lcGlja2VyKHtcbiAgdGltZXN0YW1wLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBvbkRlcGFydHVyZUNsaWNrLFxuICBvbkFycml2YWxDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uTW9kYWxTdWJtaXQsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgW2lzT3BlbiwgY2hhbmdlT3Blbl0gPSB1c2VTdGF0ZShvcGVuUGlja2VyIHx8IGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUaW1lc3RhbXAsIGNoYW5nZURpc3BsYXlUaW1lc3RhbXBdID0gdXNlU3RhdGUoXG4gICAgdGltZXN0YW1wIHx8IG1vbWVudCgpLnZhbHVlT2YoKSxcbiAgKTtcbiAgLy8gdGltZXIgZm9yIHVwZGF0aW5nIGRpc3BsYXlUaW1lc3RhbXAgaW4gcmVhbCB0aW1lXG4gIGNvbnN0IFt0aW1lcklkLCBzZXRUaW1lcl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IFt1c2VNb2JpbGVJbnB1dHNdID0gdXNlU3RhdGUoaXNNb2JpbGUoKSAmJiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSk7XG4gIGNvbnN0IG9wZW5QaWNrZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgYWxlcnRSZWYgPSB1c2VSZWYoKTtcblxuICBjb25zdCB0cmFuc2xhdGlvblNldHRpbmdzID0geyBsbmc6IGxhbmcgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5ndWFnZSA9PlxuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5ndWFnZSwgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbiAgICApO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBtb21lbnQubG9jYWxlKGxhbmcpO1xuICB9LCBbbGFuZ10pO1xuXG4gIGNvbnN0IG5vd1NlbGVjdGVkID0gdGltZXN0YW1wID09PSBudWxsO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChub3dTZWxlY3RlZCkge1xuICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcChtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjbGVhciB0aW1lclxuICAgICAgaWYgKHRpbWVySWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICB9XG4gICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9LCBbdGltZXN0YW1wXSk7XG5cbiAgLy8gc2V0IHRpbWVyIHRvIHVwZGF0ZSBkaXNwbGF5VGltZXN0YW1wIHdoZW4gbWludXRlIGNoYW5nZXMgaWYgbm93U2VsZWN0ZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW5vd1NlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGltZXJJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICB9XG4gICAgY29uc3QgbmV3SWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBzYW1lTWludXRlID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmlzU2FtZShub3csICdtaW51dGUnKTtcbiAgICAgIGlmICghc2FtZU1pbnV0ZSkge1xuICAgICAgICBjbGVhckludGVydmFsKG5ld0lkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAobm93KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcbiAgICBzZXRUaW1lcihuZXdJZCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwobmV3SWQpO1xuICB9LCBbZGlzcGxheVRpbWVzdGFtcF0pO1xuXG4gIGNvbnN0IHByZXZJc09wZW5SZWYgPSB1c2VSZWYoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcmV2SXNPcGVuUmVmLmN1cnJlbnQgPSBpc09wZW47XG4gIH0pO1xuXG4gIC8vIHBhcmFtIGRhdGUgaXMgdGltZXN0YW1wXG4gIGNvbnN0IGdldERhdGVEaXNwbGF5ID0gZGF0ZSA9PiB7XG4gICAgY29uc3QgdGltZSA9IG1vbWVudChkYXRlKTtcbiAgICBsZXQgZm9ybWF0dGVkO1xuICAgIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKSwgJ2RheScpKSB7XG4gICAgICBmb3JtYXR0ZWQgPSBpMThuZXh0LnQoJ3RvZGF5JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gICAgfSBlbHNlIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKS5hZGQoMSwgJ2RheScpLCAnZGF5JykpIHtcbiAgICAgIGZvcm1hdHRlZCA9IGkxOG5leHQudCgndG9tb3Jyb3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0dGVkID0gdGltZS5mb3JtYXQoJ2RkIEQuTS4nKTtcbiAgICB9XG4gICAgZm9ybWF0dGVkID0gYCR7Zm9ybWF0dGVkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7Zm9ybWF0dGVkLnNsaWNlKDEpfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgfTtcblxuICAvLyBwYXJhbSB0aW1lIGlzIHRpbWVzdGFtcFxuICBjb25zdCBnZXRUaW1lRGlzcGxheSA9IHRpbWUgPT4ge1xuICAgIHJldHVybiBtb21lbnQodGltZSkuZm9ybWF0KCdISDptbScpO1xuICB9O1xuXG4gIGNvbnN0IHZhbGlkYXRlVGltZSA9IChpbnB1dFZhbHVlLCBjdXJyZW50VGltZXN0YW1wKSA9PiB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGlucHV0VmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLm1hdGNoKC9eWzAtOV17MSwyfShcXC58OilbMC05XXsyfSQvKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3BsaXR0ZXIgPSB0cmltbWVkLmluY2x1ZGVzKCcuJykgPyAnLicgOiAnOic7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0cmltbWVkLnNwbGl0KHNwbGl0dGVyKTtcbiAgICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHZhbHVlc1swXSk7XG4gICAgICBjb25zdCBob3Vyc1ZhbGlkID0gIU51bWJlci5pc05hTihob3VycykgJiYgaG91cnMgPj0gMCAmJiBob3VycyA8PSAyMztcbiAgICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIodmFsdWVzWzFdKTtcbiAgICAgIGNvbnN0IG1pbnV0ZXNWYWxpZCA9XG4gICAgICAgICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgbWludXRlcyA+PSAwICYmIG1pbnV0ZXMgPD0gNTk7XG4gICAgICBpZiAoIW1pbnV0ZXNWYWxpZCB8fCAhaG91cnNWYWxpZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld1N0YW1wID0gbW9tZW50KGN1cnJlbnRUaW1lc3RhbXApXG4gICAgICAgIC5ob3Vycyhob3VycylcbiAgICAgICAgLm1pbnV0ZXMobWludXRlcylcbiAgICAgICAgLnZhbHVlT2YoKTtcbiAgICAgIHJldHVybiBuZXdTdGFtcDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb21lbnQgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCk7XG4gIGNvbnN0IHRpbWVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuICBsZXQgdGltZUNob2ljZXMgPSBbXTtcbiAgY29uc3QgY3VycmVudCA9IG1vbWVudCh0aW1lU2VsZWN0U3RhcnRUaW1lKTtcbiAgd2hpbGUgKGN1cnJlbnQuaXNTYW1lKHRpbWVTZWxlY3RTdGFydFRpbWUsICdkYXknKSkge1xuICAgIHRpbWVDaG9pY2VzLnB1c2goY3VycmVudC52YWx1ZU9mKCkpO1xuICAgIGN1cnJlbnQuYWRkKDE1LCAnbWludXRlcycpO1xuICB9XG4gIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAvLyBpZiB0aW1lIGlzIHNldCB0byBub3dcbiAgICAvLyBhZGQgdGltZXMgaW4gNSBtaW4gaW50ZXJ2YWxzIGZvciBuZXh0IDMwIG1pbnNcbiAgICBjb25zdCBmaXZlTWludXRlcyA9IDEwMDAgKiA2MCAqIDU7XG4gICAgY29uc3QgbmV4dEZpdmVNaW4gPSBNYXRoLmNlaWwoZGlzcGxheVRpbWVzdGFtcCAvIGZpdmVNaW51dGVzKSAqIGZpdmVNaW51dGVzO1xuICAgIGNvbnN0IHRpbWVzVG9BZGQgPSBBcnJheSg3KVxuICAgICAgLmZpbGwoKVxuICAgICAgLm1hcCgoXywgaSkgPT4gbmV4dEZpdmVNaW4gKyBpICogZml2ZU1pbnV0ZXMpO1xuICAgIGNvbnN0IGNsb3Nlc3RJbmRleEFmdGVyID0gdGltZUNob2ljZXNcbiAgICAgIC5tYXAodCA9PiBkaXNwbGF5VGltZXN0YW1wIC0gdClcbiAgICAgIC5maW5kSW5kZXgodCA9PiB0IDw9IDApO1xuICAgIHRpbWVDaG9pY2VzLnNwbGljZShjbG9zZXN0SW5kZXhBZnRlciwgMCwgLi4udGltZXNUb0FkZCk7XG4gICAgdGltZUNob2ljZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGltZUNob2ljZXMpKTsgLy8gcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgfVxuXG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKHNlbGVjdGVkTW9tZW50LmhvdXIoKSlcbiAgICAubWludXRlKHNlbGVjdGVkTW9tZW50Lm1pbnV0ZSgpKVxuICAgIC52YWx1ZU9mKCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoc2VydmljZVRpbWVSYW5nZSlcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KGRhdGVTZWxlY3RTdGFydFRpbWUpLmFkZChpLCAnZGF5JykudmFsdWVPZigpKTtcblxuICBmdW5jdGlvbiBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLWNsb3NlZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLW9wZW5lZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyT3BlbigpIHtcbiAgICBpZiAodXNlTW9iaWxlSW5wdXRzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpc09wZW4gJiYgKFxuICAgICAgICAgIDxNb2JpbGVQaWNrZXJNb2RhbFxuICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICAgICAgICBvbk5vd0NsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgIG9uU3VibWl0PXsobmV3VGltZXN0YW1wLCBuZXdEZXBhcnR1cmVPckFycml2YWwpID0+IHtcbiAgICAgICAgICAgICAgb25Nb2RhbFN1Ym1pdChuZXdUaW1lc3RhbXAsIG5ld0RlcGFydHVyZU9yQXJyaXZhbCk7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGdldFRpbWVEaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAgIHRpbWVzdGFtcD17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERhdGVEaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIGRhdGVTZWxlY3RJdGVtQ291bnQ9e3NlcnZpY2VUaW1lUmFuZ2V9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHZhbGlkYXRlVGltZT17dmFsaWRhdGVUaW1lfVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snZGF0ZXRpbWVwaWNrZXItb3Blbi1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICFpc09wZW4gPyBzdHlsZXMuaGlkZGVuIDogJydcbiAgICAgICAgICB9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWyd0b3Atcm93LWNvbnRhaW5lciddfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgPHNwYW4gcm9sZT1cImFsZXJ0XCIgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gcmVmPXthbGVydFJlZn0gLz5cbiAgICAgICAgICAgIDxzcGFuIC8+XG4gICAgICAgICAgICB7LyogVGhpcyBlbXB0eSBzcGFuIHByZXZlbnRzIGEgd2VpcmQgZm9jdXMgYnVnIG9uIGNocm9tZSAqL31cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtb3ItYXJyaXZhbC1jb250YWluZXInXX0+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2RlcGFydHVyZScgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXBhcnR1cmVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyA/ICdhY3RpdmUnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1hcnJpdmFsYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiYXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25BcnJpdmFsQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1ub3dgfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2RlcGFydHVyZS1ub3ctYnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uTm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1idXR0b24nXX1cbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1pY29uJ119PlxuICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2xvc2VcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS1jbG9zZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgaXNPcGVuXG4gICAgICAgICAgICAgICAgPyBgJHtzdHlsZXNbJ3BpY2tlci1jb250YWluZXInXX1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sZWZ0J119PlxuICAgICAgICAgICAgICAgIDxEZXNrdG9wRGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e25ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25EYXRlQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgIHRpbWVDaG9pY2VzPXtkYXRlQ2hvaWNlc31cbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ2RhdGUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjYWxlbmRhclwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGF0ZWB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlVHlwaW5nXG4gICAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgICBkYXRlUGlja2VyXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtcmlnaHQnXX0+XG4gICAgICAgICAgICAgICAgPERlc2t0b3BEYXRldGltZXBpY2tlclxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17bmV3VmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvblRpbWVDaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgICAgICAgdGltZUNob2ljZXM9e3RpbWVDaG9pY2VzfVxuICAgICAgICAgICAgICAgICAgdmFsaWRhdGU9e3ZhbGlkYXRlVGltZX1cbiAgICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tdGltZWB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd0aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2lzT3BlbiA/ICcnIDogc3R5bGVzLmhpZGRlbn0+e2VtYmVkV2hlbk9wZW59PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNPcGVuID8gJ2RhdGV0aW1lcGlja2VyLWJvdHRvbS1yb3ctb3BlbicgOiAnJ30gLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2R0LWRhdGV0aW1lcGlja2VyJ119XG4gICAgICBpZD17YCR7aHRtbElkfS1yb290YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8bGVnZW5kIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXRpdGxlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgIWlzT3BlblxuICAgICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gJHtzdHlsZXMuY2xvc2VkfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydsYWJlbC1vcGVuJ119IGh0bWxGb3I9e2Ake2h0bWxJZH0tb3BlbmB9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3RpbWUtaWNvbiddfT5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLW9wZW4nLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJhbGVydFwiIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IHJlZj17YWxlcnRSZWZ9IC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW9wZW5gfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMudGV4dGJ1dHRvbn0gJHtzdHlsZXMuYWN0aXZlfSAke3N0eWxlc1snb3Blbi1idXR0b24nXX1gfVxuICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyT3BlbkFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgaWYgKG9uT3Blbikge1xuICAgICAgICAgICAgICAgICAgb25PcGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICByZWY9e29wZW5QaWNrZXJSZWZ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtub3dTZWxlY3RlZCAmJiBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gKFxuICAgICAgICAgICAgICAgICAgaTE4bmV4dC50KCdkZXBhcnR1cmUtbm93JywgdHJhbnNsYXRpb25TZXR0aW5ncylcbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAge2kxOG5leHQudChcbiAgICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdhcnJpdmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7YCAke1xuICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmlzU2FtZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCksICdkYXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXREYXRlRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgIH0gJHtnZXRUaW1lRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKX1gfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZHJvcGRvd24taWNvbiddfT5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJhcnJvdy1kcm9wZG93blwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT57ZW1iZWRXaGVuQ2xvc2VkfTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgLz5cbiAgICAgIDwvPlxuICAgICAge3JlbmRlck9wZW4oKX1cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBkZXBhcnR1cmVPckFycml2YWw6IFByb3BUeXBlcy5vbmVPZihbJ2RlcGFydHVyZScsICdhcnJpdmFsJ10pLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVwYXJ0dXJlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXJyaXZhbENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Nb2RhbFN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgdGltZXN0YW1wOiBudWxsLFxuICBlbWJlZFdoZW5DbG9zZWQ6IG51bGwsXG4gIGVtYmVkV2hlbk9wZW46IG51bGwsXG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgc2VydmljZVRpbWVSYW5nZTogMzAsXG4gIG9uT3BlbjogbnVsbCxcbiAgb25DbG9zZTogbnVsbCxcbiAgb3BlblBpY2tlcjogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZXRpbWVwaWNrZXI7XG4iLCIvKipcbiAqIERldGVjdCBpZiBpbnB1dCB0eXBlPVwiZGF0ZVwiIGFuZCB0eXBlPVwidGltZVwiIGFyZSBzdXBwb3J0ZWQgaW4gYnkgdGhlIGJyb3dzZXJcbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB3aW5kb3cgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGVsZW0udHlwZSA9ICdkYXRlJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ2RhdGUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGVsZW0udHlwZSA9ICd0aW1lJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ3RpbWUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQ7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBEYXRldGltZXBpY2tlciBmcm9tICcuL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXInO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlbmRlcnMgYW4gaW5wdXQgdG8gY2hvb3NlIGEgZGF0ZSBhbmQgdGltZS4gUmVuZGVycyBzZXBhcmF0ZSBpbnB1dCBmaWVsZHMgZm9yIGRhdGUgYW5kIHRpbWUgc2VsZWN0aW9uLiBWYWx1ZXMgZm9yIHRpbWVzdGFtcCBhbmQgYXJyaXZlQnkgY29ycmVzcG9uZCB0byBEaWdpdHJhbnNpdCBxdWVyeSBwYXJhbXMgdGltZSBhbmQgYXJyaXZlQnkuIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSBhIG5hdGl2ZSBkYXRlIGlucHV0IG9uIG1vYmlsZSBhbmQgYSBjdXN0b20gb25lIGZvciBkZXNrdG9wLiBNb2JpbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgcGFyc2luZyB1c2VyIGFnZW50LlxuICpcbiAqIEBhbGlhcyBEYXRldGltZXBpY2tlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucmVhbHRpbWUgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgc2VsZWN0ZWQgdGltZSBzaG91bGQgYmUgdXBkYXRlZCBpbiByZWFsdGltZSB3aGVuICdub3cnIGlzIHNlbGVjdGVkLlxuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLmluaXRpYWxUaW1lc3RhbXAgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIHNlY29uZHMuIFVwZGF0aW5nIHRoaXMgd2lsbCBjaGFuZ2UgdGltZXBpY2tlciB2YWx1ZSBidXQgdGhlIGNvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLlxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5pbml0aWFsQXJyaXZlQnkgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIGFycml2ZUJ5LiBEZXRlcm1pbmVzIGlmIHBpY2tlciBpcyBpbiBhcnJpdmFsIG1vZGUgKHRydWUpIG9yIGRlcGFydHVyZSBtb2RlIChmYWxzZSkuIENvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLiBDaGFuZ2luZyB0aGlzIHdpbGwgYWxzbyB0cmlnZ2VyIGNoYW5nZSBpbiB0aGUgY29tcG9uZW50LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRhdGVDaGFuZ2UgICAgICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUsIGFycml2ZUJ5KSB3aGVuIGRhdGUgaW5wdXQgY2hhbmdlcy4gdGltZSBpcyBudW1iZXIgdGltZXN0YW1wIGluIHNlY29uZHMsIGFycml2ZUJ5IGlzIGJvb2xlYW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uTm93Q2xpY2sgICAgICAgICAgICAgICBDYWxsZWQgd2hlbiBcImRlcGFydCBub3dcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGVwYXJ0dXJlQ2xpY2sgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImRlcGFydHVyZVwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lKSB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5DbG9zZWQgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciBpbiB0aGUgY29ybmVyIHdoZW4gaW5wdXQgaXMgY2xvc2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbk9wZW4gICAgICAgICAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIHdoZW4gaW5wdXQgaXMgb3BlblxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmxhbmcgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIHNlbGVjdGlvbi4gRGVmYXVsdCAnZW4nXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKiBAZXhhbXBsZVxuICogPERhdGV0aW1lcGlja2VyXG4gKiAgIHJlYWx0aW1lPXt0cnVlfVxuICogICBpbml0aWFsVGltZXN0YW1wPXsxNTkwMTMzODIzfVxuICogICBpbml0aWFsQXJyaXZlQnk9e2ZhbHNlfVxuICogICBvblRpbWVDaGFuZ2U9eyh0aW1lLCBhcnJpdmVCeSkgPT4gY2hhbmdlVXJsKHRpbWUsIGFycml2ZUJ5KX1cbiAqICAgb25EYXRlQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uTm93Q2xpY2s9eyh0aW1lKSA9PiBjaGFuZ2VVcmwodW5kZWZpbmVkLCB1bmRlZmluZWQpfVxuICogICBvbkRlcGFydHVyZUNsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsICd0cnVlJyl9XG4gKiAgIG9uQXJyaXZhbENsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsIHVuZGVmaW5lZCl9XG4gKiAgIGVtYmVkV2hlbkNsb3NlZD17PGJ1dHRvbiAvPn1cbiAqICAgbGFuZz17J2VuJ31cbiAqICAgc2VydmljZVRpbWVSYW5nZT17MTV9XG4gKiAvPlxuICovXG5mdW5jdGlvbiBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyKHtcbiAgcmVhbHRpbWUsXG4gIGluaXRpYWxBcnJpdmVCeSxcbiAgaW5pdGlhbFRpbWVzdGFtcCxcbiAgb25EZXBhcnR1cmVDbGljayxcbiAgb25BcnJpdmFsQ2xpY2ssXG4gIG9uVGltZUNoYW5nZSxcbiAgb25EYXRlQ2hhbmdlLFxuICBvbk5vd0NsaWNrLFxuICBlbWJlZFdoZW5DbG9zZWQsXG4gIGVtYmVkV2hlbk9wZW4sXG4gIGxhbmcsXG4gIGNvbG9yLFxuICB0aW1lWm9uZSxcbiAgZm9udFdlaWdodHMsXG4gIHNlcnZpY2VUaW1lUmFuZ2UsXG4gIG9uT3BlbixcbiAgb25DbG9zZSxcbiAgb3BlblBpY2tlcixcbn0pIHtcbiAgbW9tZW50LmxvY2FsZShsYW5nKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbml0aWFsTm93ID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICBjb25zdCBbdGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBTdGF0ZV0gPSB1c2VTdGF0ZShcbiAgICBpbml0aWFsVGltZXN0YW1wID8gaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDAgOiBpbml0aWFsTm93LFxuICApO1xuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsLCBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWxdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICk7XG5cbiAgLy8gdXBkYXRlIHN0YXRlIGlmIHByb3BzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJvdGhOdWxsID0gdGltZXN0YW1wID09PSBudWxsICYmIGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmVOdWxsID0gdGltZXN0YW1wID09PSBudWxsIHx8IGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzYW1lVGltZSA9IE1hdGgucm91bmQodGltZXN0YW1wIC8gMTAwMCkgPT09IGluaXRpYWxUaW1lc3RhbXA7XG4gICAgY29uc3QgdGltZXN0YW1wQ2hhbmdlZCA9ICFib3RoTnVsbCAmJiAob25lTnVsbCB8fCAhc2FtZVRpbWUpO1xuICAgIGlmICh0aW1lc3RhbXBDaGFuZ2VkKSB7XG4gICAgICBpZiAoaW5pdGlhbFRpbWVzdGFtcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUoaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWluaXRpYWxBcnJpdmVCeSA9PT0gKGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKSkge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKFxuICAgICAgICBpbml0aWFsQXJyaXZlQnkgPT09IHRydWUgPyAnYXJyaXZhbCcgOiAnZGVwYXJ0dXJlJyxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaW5pdGlhbFRpbWVzdGFtcCwgaW5pdGlhbEFycml2ZUJ5XSk7XG5cbiAgY29uc3QgdGltZUNoYW5nZWQgPSBkZWJvdW5jZShuZXdUaW1lID0+IHtcbiAgICBpZiAobmV3VGltZSA9PT0gbnVsbCkge1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobW9tZW50KCkudmFsdWVPZigpKTtcbiAgICAgIG9uVGltZUNoYW5nZShcbiAgICAgICAgTWF0aC5yb3VuZChtb21lbnQoKS52YWx1ZU9mKCkgLyAxMDAwKSxcbiAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lKTtcbiAgICBvblRpbWVDaGFuZ2UoTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCksIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKTtcbiAgfSwgMTApO1xuXG4gIGNvbnN0IGRhdGVDaGFuZ2VkID0gZGVib3VuY2UobmV3RGF0ZSA9PiB7XG4gICAgaWYgKG5ld0RhdGUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvbkRhdGVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3RGF0ZSk7XG4gICAgb25EYXRlQ2hhbmdlKE1hdGgucm91bmQobmV3RGF0ZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBub3dDbGlja2VkID0gKCkgPT4ge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgY29uc3QgbmV3VGltZXN0YW1wID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld1RpbWVzdGFtcCk7XG4gICAgb25Ob3dDbGljayhNYXRoLnJvdW5kKG5ld1RpbWVzdGFtcCAvIDEwMDApKTtcbiAgfTtcblxuICBjb25zdCBkZXBhcnR1cmVDbGlja2VkID0gKCkgPT4ge1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IG5ld1RpbWUgPSB0aW1lc3RhbXA7XG4gICAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkudmFsdWVPZigpO1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobm93KTtcbiAgICAgIG5ld1RpbWUgPSBub3c7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGRlcGFydHVyZU9yQXJyaXZhbCAhPT0gJ2RlcGFydHVyZScpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhcnJpdmFsQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdhcnJpdmFsJykge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdhcnJpdmFsJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uQXJyaXZhbENsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uTW9kYWxTdWJtaXQgPSAodGltZSwgbW9kZSkgPT4ge1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKHRpbWUpO1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChtb2RlKTtcbiAgICBvblRpbWVDaGFuZ2UodGltZSAvIDEwMDAsIG1vZGUgPT09ICdhcnJpdmFsJywgdHJ1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RGF0ZXRpbWVwaWNrZXJcbiAgICAgIHRpbWVzdGFtcD17dGltZXN0YW1wfVxuICAgICAgb25UaW1lQ2hhbmdlPXt0aW1lQ2hhbmdlZH1cbiAgICAgIG9uRGF0ZUNoYW5nZT17ZGF0ZUNoYW5nZWR9XG4gICAgICBkZXBhcnR1cmVPckFycml2YWw9e2RlcGFydHVyZU9yQXJyaXZhbH1cbiAgICAgIG9uTm93Q2xpY2s9e25vd0NsaWNrZWR9XG4gICAgICBvbkRlcGFydHVyZUNsaWNrPXtkZXBhcnR1cmVDbGlja2VkfVxuICAgICAgb25BcnJpdmFsQ2xpY2s9e2Fycml2YWxDbGlja2VkfVxuICAgICAgZW1iZWRXaGVuQ2xvc2VkPXtlbWJlZFdoZW5DbG9zZWR9XG4gICAgICBlbWJlZFdoZW5PcGVuPXtlbWJlZFdoZW5PcGVufVxuICAgICAgbGFuZz17bGFuZ31cbiAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgIG9uTW9kYWxTdWJtaXQ9e29uTW9kYWxTdWJtaXR9XG4gICAgICBmb250V2VpZ2h0cz17Zm9udFdlaWdodHN9XG4gICAgICBzZXJ2aWNlVGltZVJhbmdlPXtzZXJ2aWNlVGltZVJhbmdlfVxuICAgICAgb25PcGVuPXtvbk9wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgb3BlblBpY2tlcj17b3BlblBpY2tlcn1cbiAgICAvPlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLnByb3BUeXBlcyA9IHtcbiAgcmVhbHRpbWU6IFByb3BUeXBlcy5ib29sLFxuICBpbml0aWFsVGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICBpbml0aWFsQXJyaXZlQnk6IFByb3BUeXBlcy5ib29sLFxuICBvbkRlcGFydHVyZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFycml2YWxDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25UaW1lQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogUHJvcFR5cGVzLm5vZGUsXG4gIGVtYmVkV2hlbk9wZW46IFByb3BUeXBlcy5ub2RlLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgfSksXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIuZGVmYXVsdFByb3BzID0ge1xuICByZWFsdGltZTogZmFsc2UsXG4gIGluaXRpYWxBcnJpdmVCeTogdW5kZWZpbmVkLFxuICBpbml0aWFsVGltZXN0YW1wOiB1bmRlZmluZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogbnVsbCxcbiAgZW1iZWRXaGVuT3BlbjogbnVsbCxcbiAgbGFuZzogJ2VuJyxcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBmb250V2VpZ2h0czoge1xuICAgIG1lZGl1bTogNTAwLFxuICB9LFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXI7XG4iXSwibmFtZXMiOlsicGFyc2VUeXBlZFRpbWUiLCJ0eXBlZFZhbHVlIiwiYWN0dWFsVmFsdWUiLCJsZW5ndGgiLCJzcGxpdCIsImV2ZXJ5IiwibiIsIk51bWJlciIsImlzSW50ZWdlciIsInNsaWNlIiwiRGVza3RvcERhdGV0aW1lcGlja2VyIiwidmFsdWUiLCJvbkNoYW5nZSIsImdldERpc3BsYXkiLCJ0aW1lQ2hvaWNlcyIsInZhbGlkYXRlIiwiaWQiLCJsYWJlbCIsImljb24iLCJkaXNhYmxlVHlwaW5nIiwidGltZVpvbmUiLCJkYXRlUGlja2VyIiwibW9tZW50IiwidHoiLCJzZXREZWZhdWx0IiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwidXNlU3RhdGUiLCJ0eXBpbmciLCJzZXRUeXBpbmciLCJ1c2VFZmZlY3QiLCJoYW5kbGVUaW1lc3RhbXAiLCJuZXdWYWx1ZSIsImFzTnVtYmVyIiwiaXNOYU4iLCJpc1ZhbGlkIiwidmFsdWVPZiIsIm9wdGlvbnMiLCJtYXAiLCJ0IiwidG9TdHJpbmciLCJjbG9zZXN0T3B0aW9uIiwicmVkdWNlIiwiYSIsImIiLCJNYXRoIiwiYWJzIiwiaW5wdXRJZCIsImxhYmVsSWQiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsImNsYXNzTmFtZSIsInN0eWxlcyIsImh0bWxGb3IiLCJTZWxlY3QiLCJhcmlhTGl2ZU1lc3NhZ2VzIiwiZ3VpZGFuY2UiLCJvbkZpbHRlciIsIm9uRm9jdXMiLCJjb250ZXh0IiwiaXRlbUxhYmVsIiwidGltZSIsInZhbGlkYXRlZCIsImNvbXBvbmVudHMiLCJJbmRpY2F0b3JzQ29udGFpbmVyIiwiY2xhc3NOYW1lUHJlZml4Iiwib25JbnB1dENoYW5nZSIsImFjdGlvbiIsInN0ciIsInRlc3QiLCJ1dGlscyIsImlucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb24iLCJvcHRpb24iLCJpbnB1dCIsImZpbHRlck9wdGlvbnMiLCJob3VyIiwiaXNWYWxpZEhvdXIiLCJjb21wIiwiY29uY2F0IiwiY29udHJvbFNob3VsZFJlbmRlclZhbHVlIiwidGFiU2VsZWN0c1ZhbHVlIiwicGxhY2Vob2xkZXIiLCJlIiwidGFyZ2V0Iiwic2VsZWN0Iiwib25CbHVyIiwib25LZXlEb3duIiwiaW5jbHVkZXMiLCJrZXkiLCJpc1NlYXJjaGFibGUiLCJjc3MiLCJyZWYiLCJpbnNlcnRBdCIsImRvY3VtZW50IiwiaGVhZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3R5bGUiLCJ0eXBlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYXJyYXlPZiIsInN0cmluZyIsIm5vZGUiLCJib29sIiwiZGVmYXVsdFByb3BzIiwidHJhbnNsYXRpb25zIiwiZGUiLCJ0b2RheSIsInRvbW9ycm93IiwiYXJyaXZhbCIsImRhdGUiLCJkZXBhcnR1cmUiLCJyZWFkeSIsImNhbmNlbCIsImVuIiwiZmkiLCJzdiIsIk1vYmlsZURhdGVwaWNrZXIiLCJpdGVtQ291bnQiLCJzdGFydFRpbWUiLCJvcGVuIiwiY2hhbmdlT3BlbiIsInNjcm9sbFJlZiIsInVzZVJlZiIsImRhdGVDaG9pY2VzIiwiQXJyYXkiLCJmaWxsIiwiXyIsImkiLCJhZGQiLCJzY3JvbGxJbmRleCIsImZpbmRJbmRleCIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJuYXRpdmVJbnB1dCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiaW5wdXRQcm9wcyIsInJlYWRPbmx5IiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJjb250YWluZXJQcm9wcyIsImNoaWxkcmVuIiwib3RoZXJSZWZzIiwic291cmNlIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwiT2JqZWN0Iiwia2V5cyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiX2V4Y2x1ZGVkIiwiYXNzaWduIiwidGFiSW5kZXgiLCJlbGVtIiwidGhlbWUiLCJNb2JpbGVUaW1lcGlja2VyIiwiY2hhbmdlSW5wdXRWYWx1ZSIsInRpbWVJbnB1dFJlZiIsImZvY3VzIiwiaW5wdXRNb2RlIiwibWF4TGVuZ3RoIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJldmVudCIsIm1hdGNoIiwiY2hhckF0IiwiYWN0dWFsIiwidGltZXN0YW1wIiwiTW9iaWxlUGlja2VyTW9kYWwiLCJkZXBhcnR1cmVPckFycml2YWwiLCJvbk5vd0NsaWNrIiwibGFuZyIsImNvbG9yIiwib25TdWJtaXQiLCJvbkNhbmNlbCIsImdldFRpbWVEaXNwbGF5IiwiZGF0ZVNlbGVjdEl0ZW1Db3VudCIsImdldERhdGVEaXNwbGF5IiwidmFsaWRhdGVUaW1lIiwiZm9udFdlaWdodHMiLCJ0cmFuc2xhdGlvblNldHRpbmdzIiwibG5nIiwiZGlzcGxheVRpbWVzdGFtcCIsImNoYW5nZVRpbWVzdGFtcCIsImRlcGFydHVyZU9yQXJyaXZhbEN1cnJlbnQiLCJjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwiLCJodG1sSWQiLCJ1bmlxdWVJZCIsImRhdGVTZWxlY3RTdGFydFRpbWUiLCJzdGFydE9mIiwibWludXRlIiwiTW9kYWwiLCJhcHBFbGVtZW50IiwicXVlcnlTZWxlY3RvciIsInVuZGVmaW5lZCIsImlzT3BlbiIsIm92ZXJsYXlDbGFzc05hbWUiLCJtZWRpdW0iLCJpMThuZXh0Iiwib25DbGljayIsIm5hbWUiLCJjaGVja2VkIiwiSWNvbiIsImltZyIsIkRhdGV0aW1lcGlja2VyIiwib25UaW1lQ2hhbmdlIiwib25EYXRlQ2hhbmdlIiwib25EZXBhcnR1cmVDbGljayIsIm9uQXJyaXZhbENsaWNrIiwiZW1iZWRXaGVuQ2xvc2VkIiwiZW1iZWRXaGVuT3BlbiIsIm9uTW9kYWxTdWJtaXQiLCJzZXJ2aWNlVGltZVJhbmdlIiwib25PcGVuIiwib25DbG9zZSIsIm9wZW5QaWNrZXIiLCJjaGFuZ2VEaXNwbGF5VGltZXN0YW1wIiwidGltZXJJZCIsInNldFRpbWVyIiwidXNlTW9iaWxlSW5wdXRzIiwidmVuZG9yIiwid2luZG93Iiwib3BlcmEiLCJpc01vYmlsZSIsImRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCIsIm9wZW5QaWNrZXJSZWYiLCJpbnB1dFJlZiIsImFsZXJ0UmVmIiwiZm9yRWFjaCIsImxhbmd1YWdlIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJsb2NhbGUiLCJub3dTZWxlY3RlZCIsImNsZWFySW50ZXJ2YWwiLCJuZXdJZCIsInNldEludGVydmFsIiwibm93IiwiaXNTYW1lIiwicHJldklzT3BlblJlZiIsImZvcm1hdHRlZCIsImZvcm1hdCIsInRvVXBwZXJDYXNlIiwiY3VycmVudFRpbWVzdGFtcCIsInRyaW1tZWQiLCJ0cmltIiwic3BsaXR0ZXIiLCJ2YWx1ZXMiLCJob3VycyIsImhvdXJzVmFsaWQiLCJtaW51dGVzIiwic2VsZWN0ZWRNb21lbnQiLCJ0aW1lU2VsZWN0U3RhcnRUaW1lIiwicHVzaCIsImZpdmVNaW51dGVzIiwibmV4dEZpdmVNaW4iLCJjZWlsIiwidGltZXNUb0FkZCIsImNsb3Nlc3RJbmRleEFmdGVyIiwic3BsaWNlIiwiZnJvbSIsIlNldCIsInNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0IiwiaW5uZXJIVE1MIiwic2V0VGltZW91dCIsImhpZGRlbiIsImNsb3NlZCIsInJvbGUiLCJ0ZXh0YnV0dG9uIiwiYWN0aXZlIiwibmV3VGltZXN0YW1wIiwibmV3RGVwYXJ0dXJlT3JBcnJpdmFsIiwiRGF0ZXRpbWVwaWNrZXJTdGF0ZUNvbnRhaW5lciIsInJlYWx0aW1lIiwiaW5pdGlhbEFycml2ZUJ5IiwiaW5pdGlhbFRpbWVzdGFtcCIsImluaXRpYWxOb3ciLCJjaGFuZ2VUaW1lc3RhbXBTdGF0ZSIsImJvdGhOdWxsIiwib25lTnVsbCIsInNhbWVUaW1lIiwicm91bmQiLCJ0aW1lQ2hhbmdlZCIsImRlYm91bmNlIiwibmV3VGltZSIsImRhdGVDaGFuZ2VkIiwibmV3RGF0ZSIsIm5vd0NsaWNrZWQiLCJkZXBhcnR1cmVDbGlja2VkIiwiY2hhbmdlZCIsImFycml2YWxDbGlja2VkIiwibW9kZSIsImRhdGVUaW1lQ29tYmluZWQiLCJpbml0IiwicmVzb3VyY2VzIiwib25lT2YiLCJzaGFwZSIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIl0sIm1hcHBpbmdzIjoiOGpDQXVCZSxDQUFFQSxlQWhCakIsU0FBd0JDLEdBQ3RCLElBQUlDLEVBQWNELEVBWWxCLE9BVnlCLElBQXZCQyxFQUFZQyxRQUNaRCxFQUFZRSxNQUFNLElBQUlDLE9BQU1DLEdBQUtDLE9BQU9DLFVBQVVELE9BQU9ELFFBSXZESixFQURFSyxPQUFPTCxFQUFZTyxNQUFNLEVBQUcsS0FBTyxHQUN0QixHQUFFUCxFQUFZTyxNQUFNLEVBQUcsTUFBTVAsRUFBWSxLQUV6QyxHQUFFQSxFQUFZLE1BQU1BLEVBQVlPLE1BQU0sTUFHbERQLENBQ1QsNnZFQ2FBLFNBQVNRLEdBQXNCQyxNQUM3QkEs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
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("prop-types"),require("react"),require("moment-timezone"),require("lodash/debounce"),require("moment/locale/fi"),require("lodash/uniqueId"),require("i18next"),require("@digitransit-component/digitransit-component-icon"),require("react-select"),require("react-modal"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","prop-types","react","moment-timezone","lodash/debounce","moment/locale/fi","lodash/uniqueId","i18next","@digitransit-component/digitransit-component-icon","react-select","react-modal","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-datetimepicker"]={},e.PropTypes,e.React,e.moment,e.debounce,null,e.uniqueId,e.i18next,e.Icon,e.Select,e.ReactModal,e.Autosuggest)}(this,(function(e,t,n,i,a,l,o,r,s,d,c,u){"use strict";function _(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=_(t),m=_(n),f=_(i),y=_(a),b=_(o),g=_(r),h=_(s),x=_(d),v=_(c),w=_(u);var k={parseTypedTime:function(e){let t=e;return 3===t.length&&t.split("").every((e=>Number.isInteger(Number(e))))&&(t=Number(t.slice(0,2))<=23?`${t.slice(0,2)}:${t[2]}`:`${t[0]}:${t.slice(1)}`),t}};var E={"sr-only":"styles_sr-only__BrzYQ","dt-datetimepicker":"styles_dt-datetimepicker__PtoFG",hidden:"styles_hidden__6ySER","datetimepicker-open-container":"styles_datetimepicker-open-container__1dVr5","top-row-container":"styles_top-row-container__cXGjL",closed:"styles_closed__Fqe1r","time-icon":"styles_time-icon__ntgLZ","dropdown-icon":"styles_dropdown-icon__diYYB","close-icon":"styles_close-icon__-MzK5","label-open":"styles_label-open__Gmvov",textbutton:"styles_textbutton__T7wS2",active:"styles_active__4L82E","combobox-left":"styles_combobox-left__Sp4kh","combobox-right":"styles_combobox-right__Hg8kN","departure-or-arrival-container":"styles_departure-or-arrival-container__pJ-Iw","radio-textbutton-label":"styles_radio-textbutton-label__h-zfy","first-radio":"styles_first-radio__FWNoD","radio-textbutton":"styles_radio-textbutton__tsKET","departure-now-button":"styles_departure-now-button__VKMMK","open-button":"styles_open-button__c2B-6","close-button":"styles_close-button__2mfgI","right-edge":"styles_right-edge__29UYw","combobox-container":"styles_combobox-container__CLY9U","combobox-icon":"styles_combobox-icon__-0XPH","date-input-icon":"styles_date-input-icon__KMrj1","time-input-icon":"styles_time-input-icon__qkhC7","datetimepicker-select-container":"styles_datetimepicker-select-container__EVW1l","picker-container":"styles_picker-container__V02r4","combobox-mobile-container":"styles_combobox-mobile-container__u2DSO","mobile-modal-overlay":"styles_mobile-modal-overlay__8vF8L","mobile-modal-content":"styles_mobile-modal-content__fWRgy","top-row":"styles_top-row__h8xy1","modal-title":"styles_modal-title__EA3YD","tab-row":"styles_tab-row__orgwh","radio-tab-label":"styles_radio-tab-label__vIfup","input-row":"styles_input-row__2XXEY","input-container":"styles_input-container__USZlF","time-input-mobile":"styles_time-input-mobile__6e4A5","mobile-input-display":"styles_mobile-input-display__VUMd0","mobile-input-hidden":"styles_mobile-input-hidden__2KIuK",container:"styles_container__ihyhz",suggestion:"styles_suggestion__ZczJa",suggestionHighlighted:"styles_suggestionHighlighted__fzLiW",suggestionsContainerOpen:"styles_suggestionsContainerOpen__ISHXi",input:"styles_input__PAfbH","buttons-row":"styles_buttons-row__-3wsn","ready-button":"styles_ready-button__dH7Qc"};function C({value:e,onChange:t,getDisplay:i,timeChoices:a,validate:l,id:o,label:r,icon:s,disableTyping:d,timeZone:c,datePicker:u}){f.default.tz.setDefault(c);const[_,p]=n.useState(i(e)),[y,b]=n.useState(!1),[g,h]=n.useState(!0);n.useEffect((()=>p(i(e))),[e]);const v=e=>{const n=Number(e);!Number.isNaN(n)&&f.default(n).isValid()&&f.default(n).valueOf()===n&&t(n)};const w=a.map((e=>({value:e.toString(),label:i(e)}))),C=w.reduce(((t,n)=>Math.abs(e-t.value)<Math.abs(e-n.value)?t:n)),R=`${o}-input`,F=`${o}-label`;return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["combobox-container"],htmlFor:R},m.default.createElement("span",{className:E["sr-only"],id:F},r," ",_),s,m.default.createElement(x.default,{"aria-labelledby":F,ariaLiveMessages:{guidance:()=>".",onChange:()=>"",onFilter:()=>"",onFocus:({context:e,label:t})=>"menu"===e?t:""},options:w,inputId:R,onChange:t=>{if(y){const t=l(_,e);null!==t?(v(t),b(!1)):(p(i(e)),b(!1))}else v(t.value)},components:{IndicatorsContainer:()=>null},className:E["datetimepicker-select-container"],classNamePrefix:"datetimepicker-select",onInputChange:(e,{action:t})=>{var n;if(("menu-close"===t?h(!0):g&&h(!1),!(d||e&&(n=e,/[a-zA-Z§ÄäÖö\s]/g.test(n)||!(/^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$/.test(n)||n.length<5))))&&"input-change"===t){const t=k.parseTypedTime(e);p(t),b(!0)}},inputValue:!d&&_,value:C,filterOption:(e,t)=>!(!u&&!g)||(t.length<1||t.length>5||((e,t)=>{const n=t.length<=2?t:t.split(":")[0],i=/^([0-1]?[0-9]|2[0-3])$/.test(n),a=1===n.length?"0".concat(t):t;return!i||e.label.split(":")[0]===a.split(":")[0]})(e,t)),controlShouldRenderValue:d,tabSelectsValue:!1,placeholder:"",onFocus:e=>{d||e.target.select()},onBlur:()=>{if(y){const t=l(_,e);null!==t?(v(t),b(!1)):(p(i(e)),b(!1))}},onKeyDown:e=>{["ArrowDown","ArrowUp"].includes(e.key)&&b(!1)},isSearchable:!d})))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".styles_sr-only__BrzYQ:not(:focus):not(:active) {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n\n.styles_dt-datetimepicker__PtoFG {\n border: none;\n padding: 0;\n margin: 0;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG button, .styles_dt-datetimepicker__PtoFG label {\n font-size: 1em;\n font-weight: inherit; }\n .styles_dt-datetimepicker__PtoFG label button {\n cursor: pointer;\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif; }\n .styles_dt-datetimepicker__PtoFG .styles_hidden__6ySER {\n display: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-open-container__1dVr5 {\n background-color: #f4f4f5;\n border-radius: 5px;\n padding: 15px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n display: flex;\n flex-wrap: wrap; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL.styles_closed__Fqe1r {\n margin: 11px 0 6px 18px; }\n @media screen and (max-width: 319px) {\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_time-icon__ntgLZ svg {\n width: 18px;\n height: 19px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB {\n margin-left: 9px;\n position: relative;\n top: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_dropdown-icon__diYYB svg {\n width: 14px;\n height: 10px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg {\n width: 12px;\n height: 12px;\n border-radius: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL .styles_close-icon__-MzK5 svg path {\n stroke-width: 30; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label.styles_label-open__Gmvov {\n align-items: flex-start;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL button, .styles_dt-datetimepicker__PtoFG .styles_top-row-container__cXGjL label {\n font-size: 1em;\n letter-spacing: -0.5px;\n line-height: 1; }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 9px;\n margin-top: 1px;\n background: none;\n border: none;\n color: #666666;\n padding: 0; }\n @media screen and (min-width: 768px) {\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2 {\n margin-left: 14px; } }\n .styles_dt-datetimepicker__PtoFG .styles_textbutton__T7wS2.styles_active__4L82E {\n color: var(--color); }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-left__Sp4kh {\n position: relative;\n margin-right: 4px;\n width: 63%; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-right__Hg8kN {\n position: relative;\n margin-left: 4px;\n width: 37%; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-or-arrival-container__pJ-Iw {\n height: calc(1rem + 20px);\n background-color: #dddddd;\n border-radius: 8px;\n display: flex;\n width: calc(5px + 13em); }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy {\n color: #333333;\n margin: 2px;\n background: none;\n border-radius: 6px;\n padding: 9px 0;\n width: 50%;\n cursor: pointer;\n height: calc(1rem + 16px);\n text-align: center;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.03em; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_active__4L82E {\n font-weight: 500;\n background: white; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy:focus-within {\n /* First apply outline that is used in Edge and Firefox */\n outline: 1px dotted #212121;\n /* Then override outline for webkit browsers like Chrome, this has no effect on other browsers */\n outline: 5px auto -webkit-focus-ring-color;\n /* stylelint-disable-line declaration-block-no-duplicate-properties */ }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton-label__h-zfy.styles_first-radio__FWNoD {\n margin: 0;\n display: flex;\n align-items: flex-start; }\n .styles_dt-datetimepicker__PtoFG .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_dt-datetimepicker__PtoFG .styles_departure-now-button__VKMMK {\n font-family: inherit;\n letter-spacing: -0.02em;\n height: calc(1rem + 18px);\n color: var(--color);\n padding: 8px 0;\n width: 6.6875rem;\n background: white;\n border: 1px solid #888888;\n border-radius: 30px;\n margin-left: 11px; }\n .styles_dt-datetimepicker__PtoFG .styles_open-button__c2B-6 {\n display: flex;\n margin-bottom: 0;\n margin-top: -1px;\n padding: 2px 0 2px 0; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI {\n transition: transform 0.2s;\n position: relative;\n top: -8px;\n right: -8px;\n border: 0;\n font-weight: normal;\n background: none;\n color: var(--color);\n padding: 0;\n line-height: normal; }\n .styles_dt-datetimepicker__PtoFG button.styles_close-button__2mfgI:hover {\n transform: scale(1.2); }\n .styles_dt-datetimepicker__PtoFG .styles_right-edge__29UYw {\n margin-left: auto;\n margin-right: 0;\n position: relative;\n top: -2px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-container__CLY9U {\n cursor: pointer; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH {\n color: var(--color);\n height: 40px;\n position: absolute;\n z-index: 7;\n pointer-events: none; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 14px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_date-input-icon__KMrj1 svg {\n width: 20px;\n height: 18px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 {\n display: flex;\n align-items: center;\n padding: 0;\n margin-left: 8px; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 svg {\n margin-top: 1px;\n width: 22px;\n height: 22px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l {\n position: relative;\n height: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__control {\n cursor: inherit;\n height: 40px;\n border: 1px solid #888888; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__value-container {\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__single-value {\n margin: 0 0 0 47px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input {\n background: inherit;\n position: relative;\n margin-left: 40px; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input {\n opacity: 1 !important;\n background: inherit;\n box-shadow: none;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333;\n font-family: inherit;\n font-size: 15px;\n font-weight: var(--font-weight-medium); }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__input input:focus {\n box-shadow: none;\n outline: none;\n border: none; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu {\n z-index: 19;\n padding: 0;\n background: #fff;\n max-height: 250px;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list {\n max-height: 250px;\n padding: 0; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option {\n height: 50px;\n border-top: 1px solid #dddddd;\n padding: 13px 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-selected {\n background: inherit; }\n .styles_dt-datetimepicker__PtoFG .styles_datetimepicker-select-container__EVW1l .datetimepicker-select__menu .datetimepicker-select__menu-list .datetimepicker-select__option--is-focused {\n background: #dfe5e8; }\n .styles_dt-datetimepicker__PtoFG .styles_picker-container__V02r4 {\n margin: 14px 0 0 0;\n display: flex; }\n .styles_dt-datetimepicker__PtoFG .styles_combobox-mobile-container__u2DSO {\n flex-grow: 1; }\n\n.styles_mobile-modal-overlay__8vF8L {\n position: fixed;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n background-color: rgba(0, 0, 0, 0.6);\n z-index: 1000; }\n\n.styles_mobile-modal-content__fWRgy {\n font-family: 'Gotham Rounded A', 'Gotham Rounded B', 'Roboto', Arial, Georgia, Serif;\n background: white;\n width: 89%;\n position: absolute;\n left: 5.5%;\n padding: 31px 20px 33px 20px;\n top: 80px;\n border-radius: 5px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 {\n display: flex;\n justify-content: space-between;\n margin-bottom: 21px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_modal-title__EA3YD {\n font-weight: var(--font-weight-medium);\n font-size: 20px;\n line-height: 18px;\n letter-spacing: -0.5px;\n color: #333333;\n padding: 6px 0 0 8px; }\n .styles_mobile-modal-content__fWRgy .styles_top-row__h8xy1 .styles_departure-now-button__VKMMK {\n background-color: white;\n font-family: inherit;\n padding: 5px 15px;\n border: 1px solid #888888;\n border-radius: 50px;\n font-weight: var(--font-weight-medium);\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.02em;\n color: var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh {\n display: flex;\n border: 2px solid #dddddd;\n border-radius: 5px;\n margin-bottom: 16px;\n background-color: #dddddd; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup {\n padding: 9px 0;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.5px;\n border-radius: 3px;\n font-weight: normal;\n width: 50%;\n text-align: center;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-tab-label__vIfup.styles_active__4L82E {\n font-weight: var(--font-weight-medium);\n background-color: #ffffff; }\n .styles_mobile-modal-content__fWRgy .styles_tab-row__orgwh .styles_radio-textbutton__tsKET {\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY {\n display: flex;\n margin-bottom: 25px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:first-child {\n flex-basis: 60%;\n margin-right: 10px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY label:nth-child(2) {\n flex-basis: 40%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF {\n border: 1px solid #888888;\n border-radius: 5px;\n display: flex;\n align-items: center;\n height: 40px;\n line-height: 1.5;\n font-size: 100%; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF:focus-within {\n background: rgba(0, 122, 201, 0.06);\n border: 2px solid var(--color); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH {\n height: 18px;\n font-size: 18px;\n padding: 0 0 0 10px;\n border: none;\n position: relative;\n top: 3px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_combobox-icon__-0XPH.styles_time-input-icon__qkhC7 > svg {\n height: 20px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_time-input-mobile__6e4A5 {\n font-family: inherit;\n box-shadow: none;\n font-size: 18px;\n letter-spacing: -0.5px;\n line-height: 20px;\n font-weight: var(--font-weight-medium);\n border: none;\n outline: none;\n background: none;\n width: 50px;\n margin-left: 10px;\n color: #333333;\n height: 1.5265rem; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0 {\n position: relative;\n left: 10px;\n border: none;\n background: inherit;\n box-shadow: none;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-stretch: normal;\n font-style: normal;\n font-size: 16px;\n line-height: 1.33;\n letter-spacing: -0.5px;\n color: #333333; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-display__VUMd0:focus {\n outline: none;\n box-shadow: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK {\n font-size: 16px;\n margin-bottom: 12px;\n height: 0px;\n width: 0;\n background: inherit;\n color: transparent;\n outline: none;\n box-shadow: none;\n border: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_mobile-input-hidden__2KIuK:focus {\n outline: none;\n box-shadow: none; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz {\n position: absolute;\n width: calc((100% - 50px) * 0.6);\n height: 25px;\n font-size: 15px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestion__ZczJa {\n list-style: none;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 49px;\n height: 50px;\n margin: 0;\n padding: 0 0 0 16px;\n color: rgba(0, 0, 0, 0.87);\n background: white; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionHighlighted__fzLiW {\n background: #dfe5e8; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi {\n position: absolute;\n z-index: 19;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 42px;\n left: -2px;\n width: 100%;\n font-size: 16px;\n line-height: 1;\n color: rgba(0, 0, 0, 0.87); }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_suggestionsContainerOpen__ISHXi ul {\n padding: 0;\n margin: 0; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH {\n box-shadow: none;\n border: none;\n background: none;\n font-size: 16px;\n font-weight: var(--font-weight-medium);\n height: 25px;\n display: inline-block;\n font-family: inherit;\n line-height: 1.33;\n color: #333333;\n padding-left: 46px; }\n .styles_mobile-modal-content__fWRgy .styles_input-row__2XXEY .styles_input-container__USZlF .styles_container__ihyhz .styles_input__PAfbH:focus {\n outline: none;\n border: none;\n background: none; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: var(--font-weight-medium); }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button {\n background-color: white;\n font-family: inherit;\n font-weight: var(--font-weight-medium);\n font-size: 16px;\n letter-spacing: -0.02em;\n width: 100%;\n border-radius: 50px;\n height: 40px;\n color: var(--color);\n border: 1px solid #888888; }\n .styles_mobile-modal-content__fWRgy .styles_buttons-row__-3wsn button.styles_ready-button__dH7Qc {\n color: white;\n background-color: var(--color);\n border: none;\n margin-bottom: 10px; }\n"),"production"!==process.env.NODE_ENV&&(C.propTypes={value:p.default.number.isRequired,onChange:p.default.func.isRequired,getDisplay:p.default.func.isRequired,timeChoices:p.default.arrayOf(p.default.number).isRequired,validate:p.default.func.isRequired,id:p.default.string.isRequired,label:p.default.node.isRequired,icon:p.default.node.isRequired,disableTyping:p.default.bool,timeZone:p.default.string,datePicker:p.default.bool}),C.defaultProps={disableTyping:!1,timeZone:"Europe/Helsinki",datePicker:!1};const R={de:{today:"Heute",tomorrow:"Morgen","accessible-close":"Schließe die Auswahl","accessible-closed":"Auswahl geschlossen","accessible-open":"Öffne die Auswahl","accessible-opened":"Auswahl geöffnet","accessible-title":"Datum und Uhrzeitauswahl",arrival:"Ankunft",date:"Datum",departure:"Abfahrt","departure-now":"Abfahrt jetzt","choose-time":"Zeit wählen",ready:"Fertig",time:"Zeit",cancel:"Abbrechen"},en:{today:"Today",tomorrow:"Tomorrow","accessible-close":"Close the picker","accessible-closed":"Timepicker closed","accessible-open":"Open the picker","accessible-opened":"Timepicker opened","accessible-title":"Date and timepicker","accessible-update-instructions":"Changing time parameters will trigger a new search.",arrival:"Arrival",date:"Date",departure:"Departure","departure-now":"Leaving now",time:"Time","choose-time":"Choose time",ready:"Ready",cancel:"Cancel"},fi:{today:"Tänään",tomorrow:"Huomenna","accessible-close":"Sulje valitsin","accessible-closed":"Valitsin suljettu","accessible-open":"Avaa valitsin","accessible-opened":"Valitsin avattu","accessible-title":"Aika- ja päivämäärävalitsin","accessible-update-instructions":"Aikavalintojen muuttaminen laukaisee uuden haun.",arrival:"Perillä",date:"Päivä",departure:"Lähtöaika","departure-now":"Lähtö nyt",time:"Aika","choose-time":"Valitse aika",ready:"Valmis",cancel:"Peruuta"},sv:{today:"I dag",tomorrow:"I morgon","accessible-close":"Stäng väljaren","accessible-closed":"Väljaren stängde","accessible-open":"Öppna väljaren","accessible-opened":"Väljaren öppnade","accessible-title":"Tid- och datumväljaren","accessible-update-instructions":"Om du ändrar tiderna, startas en ny sökning automatiskt.",arrival:"Anländer",date:"Datum",departure:"Avgångstid","departure-now":"Avgår nu",time:"Tid","choose-time":"Välj tid",ready:"Färdig",cancel:"Avbryt"}};const F=["ref"];function N({value:e,getDisplay:t,onChange:i,itemCount:a,startTime:l,id:o,label:r,icon:s,timeZone:d}){f.default.tz.setDefault(d);const[c,u]=n.useState(!1),_=n.useRef(null),p=Array(a).fill().map(((e,t)=>f.default(l).add(t,"day").valueOf())),y=p.map((t=>e-t)).findIndex((e=>e<6e4));n.useLayoutEffect((()=>{c&&_.current&&(_.current.scrollTop=50*y)}),[e,c]);const b=!(navigator.userAgent.toLowerCase().indexOf("android")>-1),g=`${o}-input`,h=`${o}-label`;return m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["input-container"],htmlFor:g},m.default.createElement("span",null,s),m.default.createElement("span",{className:E["sr-only"],id:h},r),b?m.default.createElement(m.default.Fragment,null,m.default.createElement("select",{className:E["mobile-input-display"],onChange:e=>i(Number(e.target.value)),value:e},p.map((e=>m.default.createElement("option",{key:e,value:e},t(e)))))):m.default.createElement(w.default,{id:o,suggestions:p,getSuggestionValue:e=>e.toString(),renderSuggestion:e=>t(e),onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,inputProps:{value:t(e),onChange:(e,{newValue:t})=>{i(Number(t))},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},"aria-labelledby":h,"aria-autocomplete":"none",readOnly:!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=function(e,t){if(null==e)return{};var n,i,a={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,F);return m.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(_.current=e,n(e))}}),t)},theme:E})))}function P({value:e,getDisplay:t,onChange:i,id:a,label:l,icon:o,timeZone:r,validate:s}){const[d,c]=n.useState(t(e));f.default.tz.setDefault(r);const u=`${a}-input`,_=`${a}-label`,p=n.useRef(null);return n.useLayoutEffect((()=>{p.current&&p.current.focus()}),[]),m.default.createElement(m.default.Fragment,null,m.default.createElement("label",{className:E["input-container"],htmlFor:u},m.default.createElement("span",null,o),m.default.createElement("span",{className:E["sr-only"],id:_},l),m.default.createElement("input",{id:u,inputMode:"numeric",type:"text",maxLength:"6",className:E["time-input-mobile"],value:d,onFocus:e=>{e.target.setSelectionRange(0,0)},onChange:t=>{let n=t.target.value;if(n.match(/[0-9]{3}:[0-9]{2}/)&&n.slice(1)===d&&(n=n.charAt(0)),n.length>5)return;const a=k.parseTypedTime(n);c(a);const l=s(a,e);l&&i(l)},ref:p})))}function S({departureOrArrival:e,onNowClick:t,lang:i,color:a,timeZone:l,onSubmit:o,onCancel:r,timestamp:s,getTimeDisplay:d,dateSelectItemCount:c,getDateDisplay:u,validateTime:_,fontWeights:p}){f.default.tz.setDefault(l);const y={lng:i},[x,w]=n.useState(s),[k,C]=n.useState(e);const[R]=n.useState(b.default("datetimepicker-")),F=f.default().startOf("day").hour(f.default(x).hour()).minute(f.default(x).minute()).valueOf();return m.default.createElement(v.default,{appElement:document?document.querySelector("#app"):void 0,isOpen:!0,className:E["mobile-modal-content"],overlayClassName:E["mobile-modal-overlay"]},m.default.createElement("div",{style:{"--color":`${a}`,"--font-weight-medium":p.medium}},m.default.createElement("div",{className:E["top-row"]},m.default.createElement("h3",{className:E["modal-title"]},g.default.t("choose-time",y)),m.default.createElement("button",{type:"button",className:E["departure-now-button"],onClick:t},g.default.t("departure-now",y))),m.default.createElement("div",{className:E["tab-row"]},m.default.createElement("label",{htmlFor:`${R}-modal-departure`,className:`${E["radio-tab-label"]}\n ${E["departure"===k?"active":void 0]}`},g.default.t("departure",y),m.default.createElement("input",{id:`${R}-modal-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:E["radio-textbutton"],onChange:()=>{C("departure")},checked:"departure"===k})),m.default.createElement("label",{htmlFor:`${R}-modal-arrival`,className:`${E["radio-tab-label"]}\n ${E["arrival"===k?"active":void 0]}`},g.default.t("arrival",y),m.default.createElement("input",{id:`${R}-modal-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:E["radio-textbutton"],onChange:()=>{C("arrival")},checked:"arrival"===k}))),m.default.createElement("div",{className:E["input-row"]},m.default.createElement(N,{value:x,getDisplay:u,onChange:function(e){w(e)},itemCount:c,startTime:F,id:`${R}-date`,label:g.default.t("date",y),icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["date-input-icon"]}`},m.default.createElement(h.default,{img:"calendar",color:a})),timeZone:l}),m.default.createElement(P,{value:x,getDisplay:d,onChange:function(e){w(e)},id:`${R}-time`,label:g.default.t("time",y),icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},m.default.createElement(h.default,{img:"time",color:a})),timeZone:l,validate:_})),m.default.createElement("div",{className:E["buttons-row"]},m.default.createElement("button",{type:"button",className:E["ready-button"],onClick:()=>o(x,k)},g.default.t("ready",y)),m.default.createElement("button",{type:"button",className:E["cancel-button"],onClick:r},g.default.t("cancel",y)))))}function G({timestamp:e,onTimeChange:t,onDateChange:i,departureOrArrival:a,onNowClick:l,onDepartureClick:o,onArrivalClick:r,embedWhenClosed:s,embedWhenOpen:d,lang:c,color:u,timeZone:_,onModalSubmit:p,fontWeights:y,serviceTimeRange:x,onOpen:v,onClose:w,openPicker:k}){f.default.tz.setDefault(_);const[F,N]=n.useState(k||!1),[P,G]=n.useState(e||f.default().valueOf()),[O,q]=n.useState(null),[W]=n.useState(b.default("datetimepicker-")),[T]=n.useState(function(){const e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)}()&&function(){if("undefined"==typeof window||null===window)return!1;const e=document.createElement("input");return e.type="date","date"===e.type&&(e.type="time","time"===e.type)}()),$=n.useRef(),X=n.useRef(),A=n.useRef(),z={lng:c};n.useEffect((()=>{Object.keys(R).forEach((e=>g.default.addResourceBundle(e,"translation",R[c])))}),[]),n.useEffect((()=>{f.default.locale(c)}),[c]);const D=null===e;n.useEffect((()=>{D?G(f.default().valueOf()):(O&&(clearInterval(O),q(null)),G(e))}),[e]),n.useEffect((()=>{if(!D)return;O&&clearInterval(O);const e=setInterval((()=>{const t=f.default().valueOf();f.default(P).isSame(t,"minute")||(clearInterval(e),q(null),G(t))}),5e3);return q(e),()=>clearInterval(e)}),[P]);const Z=n.useRef();n.useEffect((()=>{Z.current=F}));const V=e=>{const t=f.default(e);let n;return n=t.isSame(f.default(),"day")?g.default.t("today",z):t.isSame(f.default().add(1,"day"),"day")?g.default.t("tomorrow",z):t.format("dd D.M."),n=`${n.charAt(0).toUpperCase()}${n.slice(1)}`,n},L=e=>f.default(e).format("HH:mm"),M=(e,t)=>{const n=e.trim();if(null!==n.match(/^[0-9]{1,2}(\.|:)[0-9]{2}$/)){const e=n.includes(".")?".":":",i=n.split(e),a=Number(i[0]),l=!Number.isNaN(a)&&a>=0&&a<=23,o=Number(i[1]);if(!(!Number.isNaN(o)&&o>=0&&o<=59)||!l)return null;return f.default(t).hours(a).minutes(o).valueOf()}return null},I=f.default(P),j=f.default(P).startOf("day").valueOf();let H=[];const Y=f.default(j);for(;Y.isSame(j,"day");)H.push(Y.valueOf()),Y.add(15,"minutes");if(null===e){const e=3e5,t=Math.ceil(P/e)*e,n=Array(7).fill().map(((n,i)=>t+i*e)),i=H.map((e=>P-e)).findIndex((e=>e<=0));H.splice(i,0,...n),H=Array.from(new Set(H))}const U=f.default().startOf("day").hour(I.hour()).minute(I.minute()).valueOf(),K=Array(x).fill().map(((e,t)=>f.default(U).add(t,"day").valueOf()));function B(){A.current&&(A.current.innerHTML=g.default.t("accessible-closed",z),setTimeout((()=>{A.current.innerHTML=null}),100))}return m.default.createElement("fieldset",{className:E["dt-datetimepicker"],id:`${W}-root`,style:{"--color":`${u}`,"--font-weight-medium":y.medium}},m.default.createElement("legend",{className:E["sr-only"]},g.default.t("accessible-title",z)),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-update-instructions",z)),m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:F?`${E.hidden} datetimepicker-top-row`:`${E["top-row-container"]} ${E.closed} datetimepicker-top-row`},m.default.createElement("label",{className:E["label-open"],htmlFor:`${W}-open`},m.default.createElement("span",{className:E["time-icon"]},m.default.createElement(h.default,{img:"time",color:u})),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-open",z)),m.default.createElement("span",{role:"alert",className:E["sr-only"],ref:A}),m.default.createElement("button",{id:`${W}-open`,type:"button",className:`${E.textbutton} ${E.active} ${E["open-button"]}`,"aria-controls":`${W}-root`,"aria-expanded":"false",onClick:()=>{N(!0),A.current&&(A.current.innerHTML=g.default.t("accessible-opened",z),setTimeout((()=>{A.current.innerHTML=null}),100)),v&&v()},ref:$},m.default.createElement("span",null,D&&"departure"===a?g.default.t("departure-now",z):m.default.createElement(m.default.Fragment,null,g.default.t("departure"===a?"departure":"arrival",z),` ${f.default().isSame(f.default(P),"day")?"":V(P).toLowerCase()} ${L(P)}`)),m.default.createElement("span",{className:E["dropdown-icon"]},m.default.createElement(h.default,{img:"arrow-dropdown",color:u})))),m.default.createElement("span",{className:E["right-edge"]},s)),m.default.createElement("div",null)),T?F&&m.default.createElement(S,{departureOrArrival:a,onNowClick:()=>{N(!1),B(),l()},lang:c,color:u,onSubmit:(e,t)=>{p(e,t),N(!1),B()},onCancel:()=>{N(!1),B(),w&&w()},getTimeDisplay:L,timeZone:_,timestamp:P,getDateDisplay:V,dateSelectItemCount:x,getDisplay:L,validateTime:M,fontWeights:y}):m.default.createElement(m.default.Fragment,null,m.default.createElement("div",{className:`${E["datetimepicker-open-container"]} ${F?"":E.hidden}`},m.default.createElement("div",{className:F?`${E["top-row-container"]} datetimepicker-top-row`:`${E.hidden} datetimepicker-top-row`}," ",m.default.createElement("span",{role:"alert",className:E["sr-only"],ref:A}),m.default.createElement("span",null),m.default.createElement("span",{className:E["departure-or-arrival-container"]},m.default.createElement("label",{htmlFor:`${W}-departure`,className:`${E["radio-textbutton-label"]}\n ${E["departure"===a?"active":void 0]}`},g.default.t("departure",z),m.default.createElement("input",{id:`${W}-departure`,name:"departureOrArrival",type:"radio",value:"departure",className:E["radio-textbutton"],onChange:()=>{o()},checked:"departure"===a})),m.default.createElement("label",{htmlFor:`${W}-arrival`,className:`${E["radio-textbutton-label"]}\n ${E["arrival"===a?"active":void 0]}`},g.default.t("arrival",z),m.default.createElement("input",{id:`${W}-arrival`,name:"departureOrArrival",type:"radio",value:"arrival",className:E["radio-textbutton"],onChange:()=>{r()},checked:"arrival"===a}))),m.default.createElement("button",{id:`${W}-now`,type:"button",className:E["departure-now-button"],onClick:()=>{N(!1),B(),w&&w(),l()},ref:X},g.default.t("departure-now",z)),m.default.createElement("span",{className:E["right-edge"]},m.default.createElement("button",{type:"button",className:E["close-button"],"aria-controls":`${W}-root`,"aria-expanded":"true",onClick:()=>{N(!1),B(),w&&w()}},m.default.createElement("span",{className:E["close-icon"]},m.default.createElement(h.default,{img:"close",color:u})),m.default.createElement("span",{className:E["sr-only"]},g.default.t("accessible-close",z))))),m.default.createElement("div",{className:F?`${E["picker-container"]}`:`${E.hidden} datetimepicker-top-row`},m.default.createElement(m.default.Fragment,null,m.default.createElement("span",{className:E["combobox-left"]},m.default.createElement(C,{value:P,onChange:e=>{i(e)},getDisplay:V,timeChoices:K,validate:()=>null,icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["date-input-icon"]}`},m.default.createElement(h.default,{img:"calendar",color:u})),id:`${W}-date`,label:g.default.t("date",z),disableTyping:!0,timeZone:_,datePicker:!0})),m.default.createElement("span",{className:E["combobox-right"]},m.default.createElement(C,{value:P,onChange:e=>{t(e)},getDisplay:L,timeChoices:H,validate:M,icon:m.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},m.default.createElement(h.default,{img:"time",color:u})),id:`${W}-time`,label:g.default.t("time",z),timeZone:_}))))),m.default.createElement("span",{className:F?"":E.hidden},d),m.default.createElement("div",{className:F?"datetimepicker-bottom-row-open":""})))}function O({realtime:e,initialArriveBy:t,initialTimestamp:i,onDepartureClick:a,onArrivalClick:l,onTimeChange:o,onDateChange:r,onNowClick:s,embedWhenClosed:d,embedWhenOpen:c,lang:u,color:_,timeZone:p,fontWeights:b,serviceTimeRange:g,onOpen:h,onClose:x,openPicker:v}){f.default.locale(u),f.default.tz.setDefault(p);const w=e?null:f.default().valueOf(),[k,E]=n.useState(i?1e3*i:w),[C,R]=n.useState(!0===t?"arrival":"departure");n.useEffect((()=>{const e=null===k&&void 0===i,n=null===k||void 0===i,a=Math.round(k/1e3)===i;!e&&(n||!a)&&E(void 0===i?null:1e3*i),!t==("arrival"===C)&&R(!0===t?"arrival":"departure")}),[i,t]);const F=y.default((e=>{if(null===e)return E(f.default().valueOf()),void o(Math.round(f.default().valueOf()/1e3),"arrival"===C);E(e),o(Math.round(e/1e3),"arrival"===C)}),10),N=y.default((e=>{if(null===e)return E(f.default().valueOf()),void r(Math.round(f.default().valueOf()/1e3),"arrival"===C);E(e),r(Math.round(e/1e3),"arrival"===C)}),10);return m.default.createElement(G,{timestamp:k,onTimeChange:F,onDateChange:N,departureOrArrival:C,onNowClick:()=>{R("departure");const t=e?null:f.default().valueOf();E(t),s(Math.round(t/1e3))},onDepartureClick:()=>{let e=!1,t=k;if(null===k){const n=f.default().valueOf();E(n),t=n,e=!0}"departure"!==C&&(R("departure"),e=!0),e&&a(Math.round(t/1e3))},onArrivalClick:()=>{let e=!1,t=k;if(null===k){const n=f.default().valueOf();E(n),t=n,e=!0}"arrival"!==C&&(R("arrival"),e=!0),e&&l(Math.round(t/1e3))},embedWhenClosed:d,embedWhenOpen:c,lang:u,color:_,timeZone:p,onModalSubmit:(e,t)=>{E(e),R(t),o(e/1e3,"arrival"===t,!0)},fontWeights:b,serviceTimeRange:g,onOpen:h,onClose:x,openPicker:v})}"production"!==process.env.NODE_ENV&&(N.propTypes={value:p.default.number.isRequired,getDisplay:p.default.func.isRequired,onChange:p.default.func.isRequired,itemCount:p.default.number.isRequired,startTime:p.default.number.isRequired,id:p.default.string.isRequired,label:p.default.string.isRequired,icon:p.default.node,dateTimeCombined:p.default.bool,timeZone:p.default.string}),N.defaultProps={icon:null,dateTimeCombined:!1,timeZone:"Europe/Helsinki"},"production"!==process.env.NODE_ENV&&(P.propTypes={value:p.default.number.isRequired,getDisplay:p.default.func.isRequired,onChange:p.default.func.isRequired,id:p.default.string.isRequired,label:p.default.string.isRequired,icon:p.default.node,timeZone:p.default.string,validate:p.default.func.isRequired}),P.defaultProps={icon:null,timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"en",resources:{}}),Object.keys(R).forEach((e=>g.default.addResourceBundle(e,"translation",R[e]))),"production"!==process.env.NODE_ENV&&(S.propTypes={timeZone:p.default.string,departureOrArrival:p.default.oneOf(["departure","arrival"]).isRequired,onNowClick:p.default.func.isRequired,lang:p.default.string.isRequired,color:p.default.string,onSubmit:p.default.func.isRequired,onCancel:p.default.func.isRequired,timestamp:p.default.number.isRequired,getTimeDisplay:p.default.func.isRequired,dateSelectItemCount:p.default.number.isRequired,getDateDisplay:p.default.func.isRequired,validateTime:p.default.func.isRequired,fontWeights:p.default.shape({medium:p.default.number.isRequired}).isRequired}),S.defaultProps={color:"#007ac9",timeZone:"Europe/Helsinki"},f.default.locale("en"),g.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}}),"production"!==process.env.NODE_ENV&&(G.propTypes={timestamp:p.default.number,timeZone:p.default.string,onTimeChange:p.default.func.isRequired,onDateChange:p.default.func.isRequired,departureOrArrival:p.default.oneOf(["departure","arrival"]).isRequired,onNowClick:p.default.func.isRequired,onDepartureClick:p.default.func.isRequired,onArrivalClick:p.default.func.isRequired,embedWhenClosed:p.default.node,embedWhenOpen:p.default.node,lang:p.default.string.isRequired,color:p.default.string,onModalSubmit:p.default.func.isRequired,fontWeights:p.default.shape({medium:p.default.number.isRequired}).isRequired,serviceTimeRange:p.default.number,onOpen:p.default.func,onClose:p.default.func,openPicker:p.default.bool}),G.defaultProps={timestamp:null,embedWhenClosed:null,embedWhenOpen:null,color:"#007ac9",timeZone:"Europe/Helsinki",serviceTimeRange:30,onOpen:null,onClose:null,openPicker:void 0},"production"!==process.env.NODE_ENV&&(O.propTypes={realtime:p.default.bool,initialTimestamp:p.default.number,initialArriveBy:p.default.bool,onDepartureClick:p.default.func.isRequired,onArrivalClick:p.default.func.isRequired,onTimeChange:p.default.func.isRequired,onDateChange:p.default.func.isRequired,onNowClick:p.default.func.isRequired,embedWhenClosed:p.default.node,embedWhenOpen:p.default.node,lang:p.default.string,color:p.default.string,timeZone:p.default.string,fontWeights:p.default.shape({medium:p.default.number}),serviceTimeRange:p.default.number,onOpen:p.default.func,onClose:p.default.func,openPicker:p.default.bool}),O.defaultProps={realtime:!1,initialArriveBy:void 0,initialTimestamp:void 0,embedWhenClosed:null,embedWhenOpen:null,lang:"en",color:"#007ac9",timeZone:"Europe/Helsinki",fontWeights:{medium:500},onOpen:null,onClose:null,openPicker:void 0},e.default=O,Object.defineProperty(e,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzL3V0aWxzLmpzIiwiLi4vc3JjL2hlbHBlcnMvRGVza3RvcERhdGV0aW1lcGlja2VyLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZURhdGVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9tb2JpbGVEZXRlY3Rpb24uanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIi4uL3NyYy9oZWxwZXJzL01vYmlsZVRpbWVwaWNrZXIuanMiLCIuLi9zcmMvaGVscGVycy9Nb2JpbGVQaWNrZXJNb2RhbC5qcyIsIi4uL3NyYy9oZWxwZXJzL0RhdGV0aW1lcGlja2VyLmpzIiwiLi4vc3JjL2hlbHBlcnMvZGF0ZVRpbWVJbnB1dElzU3VwcG9ydGVkLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGFuZGxlIHR5cGluZyB0aW1lIGFuZCBhZGRpbmcgbmVjZXNzYXJ5IDpcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZWRWYWx1ZVxuICpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcGFyc2VUeXBlZFRpbWUodHlwZWRWYWx1ZSkge1xuICBsZXQgYWN0dWFsVmFsdWUgPSB0eXBlZFZhbHVlO1xuICBpZiAoXG4gICAgYWN0dWFsVmFsdWUubGVuZ3RoID09PSAzICYmXG4gICAgYWN0dWFsVmFsdWUuc3BsaXQoJycpLmV2ZXJ5KG4gPT4gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIobikpKVxuICApIHtcbiAgICAvLyBhZGQgJzonIGlmIHVzZXIgdHlwZXMgdGhyZWUgbnVtYmVycyBpbiBhIHJvd1xuICAgIGlmIChOdW1iZXIoYWN0dWFsVmFsdWUuc2xpY2UoMCwgMikpIDw9IDIzKSB7XG4gICAgICBhY3R1YWxWYWx1ZSA9IGAke2FjdHVhbFZhbHVlLnNsaWNlKDAsIDIpfToke2FjdHVhbFZhbHVlWzJdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdHVhbFZhbHVlID0gYCR7YWN0dWFsVmFsdWVbMF19OiR7YWN0dWFsVmFsdWUuc2xpY2UoMSl9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjdHVhbFZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7IHBhcnNlVHlwZWRUaW1lIH07XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLnNjc3MnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IGEgZGF0ZSBvciB0aW1lIGlucHV0IG9uIGRlc2t0b3AuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge051bWJlcn0gcHJvcHMudmFsdWUgICAgQ3VycmVudGx5IHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25DaGFuZ2UgICAgIFRoaXMgaXMgY2FsbGVkIHdpdGggbmV3IHRpbWVzdGFtcCB3aGVuIGlucHV0IGlzIGNoYW5nZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLmdldERpc3BsYXkgICBGdW5jdGlvbiB0byBnZXQgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZnJvbSBhIHRpbWVzdGFtcFxuICogQHBhcmFtIHthcnJheX0gICAgcHJvcHMudGltZUNob2ljZXMgIEFycmF5IG9mIHRpbWVzdGFtcHMgdG8gY2hvb3NlIGZyb21cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHZhbGlkYXRlICAgICAgICAgICBGdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCB3aGVuIHVzZXIgdHlwZXMgc29tZXRoaW5nIGFuZCBoaXRzIGVudGVyLiBQYXJhbWV0ZXIgaXMgaW5wdXQgYXMgc3RyaW5nc3RyaW5nLCByZXR1cm4gbnVtYmVyIHRpbWVzdGFtcCBpZiBpbnB1dCBpcyB2YWxpZCBvciBudWxsIGlmIGludmFsaWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgICAgICAgICAgICAgICAgICAgSWQgcHJlZml4IGZvciBsYWJlbHMgYW5kIGFyaWEgYXR0cmlidXRlcy4gU2hvdWxkIGJlIHVuaXF1ZSBpbiBwYWdlXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgICAgICAgICAgICAgICAgVGV4dCB0byBzaG93IGFzIGlucHV0IGxhYmVsXG4gKiBAcGFyYW0ge25vZGV9IGljb24gICAgICAgICAgICAgICAgICAgSlNYIGZvciBpY29uIHRvIHNob3cgaW4gaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZVR5cGluZyAgICAgICBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHR5cGluZyBpbiB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGF0ZVBpY2tlciAgICAgICAgICBJcyB0aGUgcGlja2VyIERhdGVQaWNrZXIgb3IgVGltZVBpY2tlclxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGVza3RvcERhdGV0aW1lcGlja2VyXG4gKiAgIHZhbHVlPXsxNTkwMTMzODIzMDAwfVxuICogICBvbkNoYW5nZT17dGltZXN0YW1wID0+IHVwZGF0ZSh0aW1lc3RhbXApfVxuICogICBnZXREaXNwbGF5PXt0aW1lc3RhbXAgPT4gZm9ybWF0VGltZSh0aW1lc3RhbXApfVxuICogICB0aW1lQ2hvaWNlcz17WzE1OTAxMzM4MjMwMDBdfVxuICogICB2YWxpZGF0ZT0oaW5wdXQgPT4gdmFsaWRhdGVUaW1lU3RyaW5nKGlucHV0KSlcbiAqICAgaWQ9XCJ0aW1laW5wdXRcIlxuICogICBpY29uPVwiPEljb24gLz5cIlxuICogICBkaXNhYmxlVHlwaW5nPXtmYWxzZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqICAgZGF0ZVBpY2tlcj17dHJ1ZX0gLy8gY2FuIGJlIG9taXR0ZWQgaWYgbm90IHRydWVcbiAqL1xuZnVuY3Rpb24gRGVza3RvcERhdGV0aW1lcGlja2VyKHtcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBnZXREaXNwbGF5LFxuICB0aW1lQ2hvaWNlcyxcbiAgdmFsaWRhdGUsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgZGlzYWJsZVR5cGluZyxcbiAgdGltZVpvbmUsXG4gIGRhdGVQaWNrZXIsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgW2Rpc3BsYXlWYWx1ZSwgY2hhbmdlRGlzcGxheVZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW3R5cGluZywgc2V0VHlwaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dBbGxPcHRpb25zLCBzZXRTaG93QWxsT3B0aW9uc10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgdXNlRWZmZWN0KCgpID0+IGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSksIFt2YWx1ZV0pO1xuXG4gIC8vIG5ld1ZhbHVlIGlzIHN0cmluZ1xuICBjb25zdCBoYW5kbGVUaW1lc3RhbXAgPSBuZXdWYWx1ZSA9PiB7XG4gICAgY29uc3QgYXNOdW1iZXIgPSBOdW1iZXIobmV3VmFsdWUpO1xuICAgIGlmIChcbiAgICAgIE51bWJlci5pc05hTihhc051bWJlcikgfHxcbiAgICAgICFtb21lbnQoYXNOdW1iZXIpLmlzVmFsaWQoKSB8fFxuICAgICAgbW9tZW50KGFzTnVtYmVyKS52YWx1ZU9mKCkgIT09IGFzTnVtYmVyXG4gICAgKSB7XG4gICAgICAvLyBUT0RPIGhhbmRsZSBlcnJvcj9cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25DaGFuZ2UoYXNOdW1iZXIpO1xuICB9O1xuICBmdW5jdGlvbiBpc1ZhbGlkSW5wdXQoc3RyKSB7XG4gICAgY29uc3QgY2xvY2tSZWdleCA9IC9eKFswLTFdP1swLTldfDJbMC0zXSk6WzAtNV1bMC05XSQvO1xuICAgIGNvbnN0IHJlZ2V4ID0gL1thLXpBLVrCp8OEw6TDlsO2XFxzXS9nO1xuICAgIGlmIChyZWdleC50ZXN0KHN0cikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb2NrUmVnZXgudGVzdChzdHIpIHx8IHN0ci5sZW5ndGggPCA1O1xuICB9XG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAobmV3VmFsdWUsIHsgYWN0aW9uIH0pID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnbWVudS1jbG9zZScpIHtcbiAgICAgIHNldFNob3dBbGxPcHRpb25zKHRydWUpO1xuICAgIH0gZWxzZSBpZiAoc2hvd0FsbE9wdGlvbnMpIHtcbiAgICAgIHNldFNob3dBbGxPcHRpb25zKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZVR5cGluZyB8fCAobmV3VmFsdWUgJiYgIWlzVmFsaWRJbnB1dChuZXdWYWx1ZSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdpbnB1dC1jaGFuZ2UnKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWQgPSB1dGlscy5wYXJzZVR5cGVkVGltZShuZXdWYWx1ZSk7XG4gICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUodmFsaWRhdGVkKTtcbiAgICAgIHNldFR5cGluZyh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9wdGlvbnMgPSB0aW1lQ2hvaWNlcy5tYXAodCA9PiB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHQudG9TdHJpbmcoKSwgbGFiZWw6IGdldERpc3BsYXkodCkgfTtcbiAgfSk7XG4gIGNvbnN0IGNsb3Nlc3RPcHRpb24gPSBvcHRpb25zLnJlZHVjZSgoYSwgYikgPT5cbiAgICBNYXRoLmFicyh2YWx1ZSAtIGEudmFsdWUpIDwgTWF0aC5hYnModmFsdWUgLSBiLnZhbHVlKSA/IGEgOiBiLFxuICApO1xuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG4gIGNvbnN0IGZpbHRlck9wdGlvbnMgPSAob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgIGNvbnN0IGhvdXIgPSBpbnB1dC5sZW5ndGggPD0gMiA/IGlucHV0IDogaW5wdXQuc3BsaXQoJzonKVswXTtcbiAgICBjb25zdCBpc1ZhbGlkSG91ciA9IC9eKFswLTFdP1swLTldfDJbMC0zXSkkLy50ZXN0KGhvdXIpO1xuICAgIGNvbnN0IGNvbXAgPSBob3VyLmxlbmd0aCA9PT0gMSA/ICcwJy5jb25jYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgcmV0dXJuIGlzVmFsaWRIb3VyXG4gICAgICA/IG9wdGlvbi5sYWJlbC5zcGxpdCgnOicpWzBdID09PSBjb21wLnNwbGl0KCc6JylbMF1cbiAgICAgIDogdHJ1ZTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1jb250YWluZXInXX0gaHRtbEZvcj17aW5wdXRJZH0+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IGlkPXtsYWJlbElkfT5cbiAgICAgICAgICB7bGFiZWx9IHtkaXNwbGF5VmFsdWV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2ljb259XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsSWR9XG4gICAgICAgICAgYXJpYUxpdmVNZXNzYWdlcz17e1xuICAgICAgICAgICAgZ3VpZGFuY2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuICcuJzsgLy8gdGhpcyBjYW4ndCBiZSBlbXB0eSBmb3Igc29tZSByZWFzb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkNoYW5nZTogKCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25GaWx0ZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRm9jdXM6ICh7IGNvbnRleHQsIGxhYmVsOiBpdGVtTGFiZWwgfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoY29udGV4dCA9PT0gJ21lbnUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1MYWJlbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH19XG4gICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICBpbnB1dElkPXtpbnB1dElkfVxuICAgICAgICAgIG9uQ2hhbmdlPXt0aW1lID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdmFsaWRhdGUoZGlzcGxheVZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIGlmICh2YWxpZGF0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodmFsaWRhdGVkKTtcbiAgICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHJlc2V0IHZhbHVlXG4gICAgICAgICAgICAgICAgY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZVRpbWVzdGFtcCh0aW1lLnZhbHVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNvbXBvbmVudHM9e3tcbiAgICAgICAgICAgIEluZGljYXRvcnNDb250YWluZXI6ICgpID0+IG51bGwsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snZGF0ZXRpbWVwaWNrZXItc2VsZWN0LWNvbnRhaW5lciddfVxuICAgICAgICAgIGNsYXNzTmFtZVByZWZpeD1cImRhdGV0aW1lcGlja2VyLXNlbGVjdFwiXG4gICAgICAgICAgb25JbnB1dENoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgICAgICBpbnB1dFZhbHVlPXshZGlzYWJsZVR5cGluZyAmJiBkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgdmFsdWU9e2Nsb3Nlc3RPcHRpb259XG4gICAgICAgICAgZmlsdGVyT3B0aW9uPXsob3B0aW9uLCBpbnB1dCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGVQaWNrZXIgfHwgc2hvd0FsbE9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoIDwgMSB8fCBpbnB1dC5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlck9wdGlvbnMob3B0aW9uLCBpbnB1dCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWU9e2Rpc2FibGVUeXBpbmd9XG4gICAgICAgICAgdGFiU2VsZWN0c1ZhbHVlPXtmYWxzZX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlwiXG4gICAgICAgICAgb25Gb2N1cz17ZSA9PiB7XG4gICAgICAgICAgICBpZiAoIWRpc2FibGVUeXBpbmcpIHtcbiAgICAgICAgICAgICAgZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkJsdXI9eygpID0+IHtcbiAgICAgICAgICAgIC8vIHJlbW92aW5nIGZvY3VzIGFsc28gbG9ja3MgaW4gdmFsdWVcbiAgICAgICAgICAgIGlmICh0eXBpbmcpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVkID0gdmFsaWRhdGUoZGlzcGxheVZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgIGlmICh2YWxpZGF0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUaW1lc3RhbXAodmFsaWRhdGVkKTtcbiAgICAgICAgICAgICAgICBzZXRUeXBpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgc2V0VHlwaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25LZXlEb3duPXtlID0+IHtcbiAgICAgICAgICAgIGlmIChbJ0Fycm93RG93bicsICdBcnJvd1VwJ10uaW5jbHVkZXMoZS5rZXkpKSB7XG4gICAgICAgICAgICAgIHNldFR5cGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBpc1NlYXJjaGFibGU9eyFkaXNhYmxlVHlwaW5nfVxuICAgICAgICAvPlxuICAgICAgPC9sYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn1cbkRlc2t0b3BEYXRldGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB0aW1lQ2hvaWNlczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlcikuaXNSZXF1aXJlZCxcbiAgdmFsaWRhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBkaXNhYmxlVHlwaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRhdGVQaWNrZXI6IFByb3BUeXBlcy5ib29sLFxufTtcblxuRGVza3RvcERhdGV0aW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgZGlzYWJsZVR5cGluZzogZmFsc2UsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgZGF0ZVBpY2tlcjogZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZXNrdG9wRGF0ZXRpbWVwaWNrZXI7XG4iLCJmdW5jdGlvbiBzdHlsZUluamVjdChjc3MsIHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBpbnNlcnRBdCA9IHJlZi5pbnNlcnRBdDtcblxuICBpZiAoIWNzcyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybjsgfVxuXG4gIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJztcblxuICBpZiAoaW5zZXJ0QXQgPT09ICd0b3AnKSB7XG4gICAgaWYgKGhlYWQuZmlyc3RDaGlsZCkge1xuICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlSW5qZWN0O1xuIiwiY29uc3QgdHJhbnNsYXRpb25zID0ge1xuICBkZToge1xuICAgIHRvZGF5OiAnSGV1dGUnLFxuICAgIHRvbW9ycm93OiAnTW9yZ2VuJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdTY2hsaWXDn2UgZGllIEF1c3dhaGwnLFxuICAgICdhY2Nlc3NpYmxlLWNsb3NlZCc6ICdBdXN3YWhsIGdlc2NobG9zc2VuJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ8OWZmZuZSBkaWUgQXVzd2FobCcsXG4gICAgJ2FjY2Vzc2libGUtb3BlbmVkJzogJ0F1c3dhaGwgZ2XDtmZmbmV0JyxcbiAgICAnYWNjZXNzaWJsZS10aXRsZSc6ICdEYXR1bSB1bmQgVWhyemVpdGF1c3dhaGwnLFxuICAgIGFycml2YWw6ICdBbmt1bmZ0JyxcbiAgICBkYXRlOiAnRGF0dW0nLFxuICAgIGRlcGFydHVyZTogJ0FiZmFocnQnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0FiZmFocnQgamV0enQnLFxuICAgICdjaG9vc2UtdGltZSc6ICdaZWl0IHfDpGhsZW4nLFxuICAgIHJlYWR5OiAnRmVydGlnJyxcbiAgICB0aW1lOiAnWmVpdCcsXG4gICAgY2FuY2VsOiAnQWJicmVjaGVuJyxcbiAgfSxcbiAgZW46IHtcbiAgICB0b2RheTogJ1RvZGF5JyxcbiAgICB0b21vcnJvdzogJ1RvbW9ycm93JyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdDbG9zZSB0aGUgcGlja2VyJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVGltZXBpY2tlciBjbG9zZWQnLFxuICAgICdhY2Nlc3NpYmxlLW9wZW4nOiAnT3BlbiB0aGUgcGlja2VyJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuZWQnOiAnVGltZXBpY2tlciBvcGVuZWQnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0RhdGUgYW5kIHRpbWVwaWNrZXInLFxuICAgICdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnOlxuICAgICAgJ0NoYW5naW5nIHRpbWUgcGFyYW1ldGVycyB3aWxsIHRyaWdnZXIgYSBuZXcgc2VhcmNoLicsXG4gICAgYXJyaXZhbDogJ0Fycml2YWwnLFxuICAgIGRhdGU6ICdEYXRlJyxcbiAgICBkZXBhcnR1cmU6ICdEZXBhcnR1cmUnLFxuICAgICdkZXBhcnR1cmUtbm93JzogJ0xlYXZpbmcgbm93JyxcbiAgICB0aW1lOiAnVGltZScsXG4gICAgJ2Nob29zZS10aW1lJzogJ0Nob29zZSB0aW1lJyxcbiAgICByZWFkeTogJ1JlYWR5JyxcbiAgICBjYW5jZWw6ICdDYW5jZWwnLFxuICB9LFxuICBmaToge1xuICAgIHRvZGF5OiAnVMOkbsOkw6RuJyxcbiAgICB0b21vcnJvdzogJ0h1b21lbm5hJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdTdWxqZSB2YWxpdHNpbicsXG4gICAgJ2FjY2Vzc2libGUtY2xvc2VkJzogJ1ZhbGl0c2luIHN1bGpldHR1JyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ0F2YWEgdmFsaXRzaW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdWYWxpdHNpbiBhdmF0dHUnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ0Fpa2EtIGphIHDDpGl2w6Rtw6TDpHLDpHZhbGl0c2luJyxcbiAgICAnYWNjZXNzaWJsZS11cGRhdGUtaW5zdHJ1Y3Rpb25zJzpcbiAgICAgICdBaWthdmFsaW50b2plbiBtdXV0dGFtaW5lbiBsYXVrYWlzZWUgdXVkZW4gaGF1bi4nLFxuICAgIGFycml2YWw6ICdQZXJpbGzDpCcsXG4gICAgZGF0ZTogJ1DDpGl2w6QnLFxuICAgIGRlcGFydHVyZTogJ0zDpGh0w7ZhaWthJyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdMw6RodMO2IG55dCcsXG4gICAgdGltZTogJ0Fpa2EnLFxuICAgICdjaG9vc2UtdGltZSc6ICdWYWxpdHNlIGFpa2EnLFxuICAgIHJlYWR5OiAnVmFsbWlzJyxcbiAgICBjYW5jZWw6ICdQZXJ1dXRhJyxcbiAgfSxcbiAgc3Y6IHtcbiAgICB0b2RheTogJ0kgZGFnJyxcbiAgICB0b21vcnJvdzogJ0kgbW9yZ29uJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZSc6ICdTdMOkbmcgdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS1jbG9zZWQnOiAnVsOkbGphcmVuIHN0w6RuZ2RlJyxcbiAgICAnYWNjZXNzaWJsZS1vcGVuJzogJ8OWcHBuYSB2w6RsamFyZW4nLFxuICAgICdhY2Nlc3NpYmxlLW9wZW5lZCc6ICdWw6RsamFyZW4gw7ZwcG5hZGUnLFxuICAgICdhY2Nlc3NpYmxlLXRpdGxlJzogJ1RpZC0gb2NoIGRhdHVtdsOkbGphcmVuJyxcbiAgICAnYWNjZXNzaWJsZS11cGRhdGUtaW5zdHJ1Y3Rpb25zJzpcbiAgICAgICdPbSBkdSDDpG5kcmFyIHRpZGVybmEsIHN0YXJ0YXMgZW4gbnkgc8O2a25pbmcgYXV0b21hdGlza3QuJyxcbiAgICBhcnJpdmFsOiAnQW5sw6RuZGVyJyxcbiAgICBkYXRlOiAnRGF0dW0nLFxuICAgIGRlcGFydHVyZTogJ0F2Z8OlbmdzdGlkJyxcbiAgICAnZGVwYXJ0dXJlLW5vdyc6ICdBdmfDpXIgbnUnLFxuICAgIHRpbWU6ICdUaWQnLFxuICAgICdjaG9vc2UtdGltZSc6ICdWw6RsaiB0aWQnLFxuICAgIHJlYWR5OiAnRsOkcmRpZycsXG4gICAgY2FuY2VsOiAnQXZicnl0JyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zbGF0aW9ucztcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IEF1dG9zdWdnZXN0IGZyb20gJ3JlYWN0LWF1dG9zdWdnZXN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc2Nzcyc7XG5pbXBvcnQgeyBpc0FuZHJvaWQgfSBmcm9tICcuL21vYmlsZURldGVjdGlvbic7XG5cbi8qKlxuICogQ29tcG9uZW50IHRvIGRpc3BsYXkgYSBkYXRlIGlucHV0IG9uIG1vYmlsZVxuICovXG5mdW5jdGlvbiBNb2JpbGVEYXRlcGlja2VyKHtcbiAgdmFsdWUsXG4gIGdldERpc3BsYXksXG4gIG9uQ2hhbmdlLFxuICBpdGVtQ291bnQsXG4gIHN0YXJ0VGltZSxcbiAgaWQsXG4gIGxhYmVsLFxuICBpY29uLFxuICB0aW1lWm9uZSxcbn0pIHtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuXG4gIGNvbnN0IFtvcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2Nyb2xsUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRlQ2hvaWNlcyA9IEFycmF5KGl0ZW1Db3VudClcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KHN0YXJ0VGltZSkuYWRkKGksICdkYXknKS52YWx1ZU9mKCkpO1xuICBjb25zdCBtaW51dGUgPSAxMDAwICogNjA7XG4gIGNvbnN0IGRpZmZzID0gZGF0ZUNob2ljZXMubWFwKHQgPT4gdmFsdWUgLSB0KTtcbiAgY29uc3Qgc2Nyb2xsSW5kZXggPSBkaWZmcy5maW5kSW5kZXgodCA9PiB0IDwgbWludXRlKTsgLy8gd2hlbiB0aW1lIGlzIG5vdywgdGhlIHRpbWVzIG1pZ2h0IGRpZmZlciBieSBsZXNzIHRoYW4gb25lIG1pbnV0ZVxuICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gNTA7XG4gIC8vIHNjcm9sbCB0byBzZWxlY3RlZCB0aW1lIHdoZW4gZHJvcGRvd24gaXMgb3BlbmVkXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9wZW4gJiYgc2Nyb2xsUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNjcm9sbFJlZi5jdXJyZW50LnNjcm9sbFRvcCA9IGVsZW1lbnRIZWlnaHQgKiBzY3JvbGxJbmRleDtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgb3Blbl0pO1xuICBjb25zdCBuYXRpdmVJbnB1dCA9ICFpc0FuZHJvaWQoKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXNbJ2lucHV0LWNvbnRhaW5lciddfSBodG1sRm9yPXtpbnB1dElkfT5cbiAgICAgICAgPHNwYW4+e2ljb259PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snc3Itb25seSddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtuYXRpdmVJbnB1dCA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snbW9iaWxlLWlucHV0LWRpc3BsYXknXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gb25DaGFuZ2UoTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSl9XG4gICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2RhdGVDaG9pY2VzLm1hcChkYXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2RhdGV9IHZhbHVlPXtkYXRlfT5cbiAgICAgICAgICAgICAgICAgICAge2dldERpc3BsYXkoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxBdXRvc3VnZ2VzdFxuICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e2RhdGVDaG9pY2VzfVxuICAgICAgICAgICAgZ2V0U3VnZ2VzdGlvblZhbHVlPXtzID0+IHMudG9TdHJpbmcoKX1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gZ2V0RGlzcGxheShzKX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHNob3VsZFJlbmRlclN1Z2dlc3Rpb25zPXsoKSA9PiB0cnVlfVxuICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICB2YWx1ZTogZ2V0RGlzcGxheSh2YWx1ZSksXG4gICAgICAgICAgICAgIG9uQ2hhbmdlOiAoXywgeyBuZXdWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoTnVtYmVyKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWQsXG4gICAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyPXsoeyBjb250YWluZXJQcm9wcywgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHsgcmVmLCAuLi5vdGhlclJlZnMgfSA9IGNvbnRhaW5lclByb3BzO1xuICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQgPSBlbGVtO1xuICAgICAgICAgICAgICAgICAgcmVmKGVsZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdGhlbWU9e3N0eWxlc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9sYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn1cbk1vYmlsZURhdGVwaWNrZXIucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgaXRlbUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIHN0YXJ0VGltZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgZGF0ZVRpbWVDb21iaW5lZDogUHJvcFR5cGVzLmJvb2wsXG4gIHRpbWVab25lOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTW9iaWxlRGF0ZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIGRhdGVUaW1lQ29tYmluZWQ6IGZhbHNlLFxuICB0aW1lWm9uZTogJ0V1cm9wZS9IZWxzaW5raScsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb2JpbGVEYXRlcGlja2VyO1xuIiwiLyoqXG4gKiAgRGV0ZWN0IGlmIHVzZXIgaXMgb24gYSBtb2JpbGUgZGV2aWNlIGJ5IHBhcnNpbmcgdXNlckFnZW50LiBUaGlzIGlzIG5vdCAxMDAlIHJlbGlhYmxlIGJ1dCBjbG9zZSBlbm91Z2guXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNNb2JpbGUoKSB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQgfHwgbmF2aWdhdG9yLnZlbmRvciB8fCB3aW5kb3cub3BlcmE7XG4gIGNvbnN0IG1vYmlsZSA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaS50ZXN0KFxuICAgIHVzZXJBZ2VudCxcbiAgKTtcbiAgcmV0dXJuIG1vYmlsZTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgaWYgdXNlciBpcyBvbiBhbiBhbmRyb2lkIGRldmljZS4gTm90IDEwMCUgcmVsaWFibGUuXG4gKi9cbmZ1bmN0aW9uIGlzQW5kcm9pZCgpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gdXNlckFnZW50LmluZGV4T2YoJ2FuZHJvaWQnKSA+IC0xO1xufVxuXG5leHBvcnQgeyBpc01vYmlsZSwgaXNBbmRyb2lkIH07XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhIHRpbWUgaW5wdXQgb24gbW9iaWxlXG4gKi9cbmZ1bmN0aW9uIE1vYmlsZVRpbWVwaWNrZXIoe1xuICB2YWx1ZSxcbiAgZ2V0RGlzcGxheSxcbiAgb25DaGFuZ2UsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbiAgdGltZVpvbmUsXG4gIHZhbGlkYXRlLFxufSkge1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgY2hhbmdlSW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuICBjb25zdCB0aW1lSW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGltZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHRpbWVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snaW5wdXQtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgICA8c3Bhbj57aWNvbn08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IGlkPXtsYWJlbElkfT5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgaWQ9e2lucHV0SWR9XG4gICAgICAgICAgaW5wdXRNb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIG1heExlbmd0aD1cIjZcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd0aW1lLWlucHV0LW1vYmlsZSddfVxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgIG9uRm9jdXM9e2UgPT4ge1xuICAgICAgICAgICAgZS50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7IC8vIHNldCBjYXJldCB0byBzdGFydCBvZiBpbnB1dFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgLy8gbnVtYmVyIHR5cGVkIGFzIGZpcnN0IGNoYXIgPT4gY2xlYXIgcmVzdCBvZiB0aGUgaW5wdXRcbiAgICAgICAgICAgICAgbmV3VmFsdWUubWF0Y2goL1swLTldezN9OlswLTldezJ9LykgJiZcbiAgICAgICAgICAgICAgbmV3VmFsdWUuc2xpY2UoMSkgPT09IGlucHV0VmFsdWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmNoYXJBdCgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGggPiA1KSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbCA9IHV0aWxzLnBhcnNlVHlwZWRUaW1lKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIGNoYW5nZUlucHV0VmFsdWUoYWN0dWFsKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IHZhbGlkYXRlKGFjdHVhbCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh0aW1lc3RhbXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgcmVmPXt0aW1lSW5wdXRSZWZ9XG4gICAgICAgIC8+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvPlxuICApO1xufVxuTW9iaWxlVGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHZhbGlkYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuTW9iaWxlVGltZXBpY2tlci5kZWZhdWx0UHJvcHMgPSB7XG4gIGljb246IG51bGwsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vYmlsZVRpbWVwaWNrZXI7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0ICdtb21lbnQvbG9jYWxlL2ZpJztcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbW9kYWwnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgTW9iaWxlRGF0ZXBpY2tlciBmcm9tICcuL01vYmlsZURhdGVwaWNrZXInO1xuaW1wb3J0IE1vYmlsZVRpbWVwaWNrZXIgZnJvbSAnLi9Nb2JpbGVUaW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcblxubW9tZW50LmxvY2FsZSgnZW4nKTtcbmkxOG5leHQuaW5pdCh7IGxuZzogJ2VuJywgcmVzb3VyY2VzOiB7fSB9KTtcbk9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+XG4gIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZywgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbik7XG5cbi8qKlxuICogVE9ET1xuICovXG5mdW5jdGlvbiBNb2JpbGVQaWNrZXJNb2RhbCh7XG4gIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgb25Ob3dDbGljayxcbiAgbGFuZyxcbiAgY29sb3IsXG4gIHRpbWVab25lLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIHRpbWVzdGFtcCxcbiAgZ2V0VGltZURpc3BsYXksXG4gIGRhdGVTZWxlY3RJdGVtQ291bnQsXG4gIGdldERhdGVEaXNwbGF5LFxuICB2YWxpZGF0ZVRpbWUsXG4gIGZvbnRXZWlnaHRzLFxufSkge1xuICBtb21lbnQudHouc2V0RGVmYXVsdCh0aW1lWm9uZSk7XG4gIGNvbnN0IHRyYW5zbGF0aW9uU2V0dGluZ3MgPSB7IGxuZzogbGFuZyB9O1xuXG4gIGNvbnN0IFtkaXNwbGF5VGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBdID0gdXNlU3RhdGUodGltZXN0YW1wKTtcblxuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCwgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsXSA9IHVzZVN0YXRlKFxuICAgIGRlcGFydHVyZU9yQXJyaXZhbCxcbiAgKTtcblxuICBmdW5jdGlvbiBvbkFycml2YWxDbGljaygpIHtcbiAgICBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWwoJ2Fycml2YWwnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGVwYXJ0dXJlQ2xpY2soKSB7XG4gICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdkZXBhcnR1cmUnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGF0ZUNoYW5nZShuZXdWYWx1ZSkge1xuICAgIGNoYW5nZVRpbWVzdGFtcChuZXdWYWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBvblRpbWVDaGFuZ2UobmV3VmFsdWUpIHtcbiAgICBjaGFuZ2VUaW1lc3RhbXAobmV3VmFsdWUpO1xuICB9XG5cbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKG1vbWVudChkaXNwbGF5VGltZXN0YW1wKS5ob3VyKCkpXG4gICAgLm1pbnV0ZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkubWludXRlKCkpXG4gICAgLnZhbHVlT2YoKTtcblxuICByZXR1cm4gKFxuICAgIDxNb2RhbFxuICAgICAgYXBwRWxlbWVudD17ZG9jdW1lbnQgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYXBwJykgOiB1bmRlZmluZWR9XG4gICAgICBpc09wZW5cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtbW9kYWwtY29udGVudCddfVxuICAgICAgb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydtb2JpbGUtbW9kYWwtb3ZlcmxheSddfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAnLS1jb2xvcic6IGAke2NvbG9yfWAsXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWyd0b3Atcm93J119PlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlc1snbW9kYWwtdGl0bGUnXX0+XG4gICAgICAgICAgICB7aTE4bmV4dC50KCdjaG9vc2UtdGltZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snZGVwYXJ0dXJlLW5vdy1idXR0b24nXX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uTm93Q2xpY2t9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sndGFiLXJvdyddfT5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tbW9kYWwtZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydyYWRpby10YWItbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnZGVwYXJ0dXJlJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSdcbiAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ2RlcGFydHVyZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW1vZGFsLWRlcGFydHVyZWB9XG4gICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cImRlcGFydHVyZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyYWRpby10ZXh0YnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25EZXBhcnR1cmVDbGljaygpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnZGVwYXJ0dXJlJ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tbW9kYWwtYXJyaXZhbGB9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGFiLWxhYmVsJ119XG4gICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgIHN0eWxlc1tcbiAgICAgICAgICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsQ3VycmVudCA9PT0gJ2Fycml2YWwnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnYXJyaXZhbCcsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW1vZGFsLWFycml2YWxgfVxuICAgICAgICAgICAgICBuYW1lPVwiZGVwYXJ0dXJlT3JBcnJpdmFsXCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhcnJpdmFsXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICBvbkFycml2YWxDbGljaygpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWxDdXJyZW50ID09PSAnYXJyaXZhbCd9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpbnB1dC1yb3cnXX0+XG4gICAgICAgICAgPE1vYmlsZURhdGVwaWNrZXJcbiAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0RGF0ZURpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgaXRlbUNvdW50PXtkYXRlU2VsZWN0SXRlbUNvdW50fVxuICAgICAgICAgICAgc3RhcnRUaW1lPXtkYXRlU2VsZWN0U3RhcnRUaW1lfVxuICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGF0ZWB9XG4gICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1snZGF0ZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImNhbGVuZGFyXCIgY29sb3I9e2NvbG9yfSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TW9iaWxlVGltZXBpY2tlclxuICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRpbWVDaGFuZ2V9XG4gICAgICAgICAgICBpZD17YCR7aHRtbElkfS10aW1lYH1cbiAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ3RpbWUnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZVpvbmU9e3RpbWVab25lfVxuICAgICAgICAgICAgdmFsaWRhdGU9e3ZhbGlkYXRlVGltZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snYnV0dG9ucy1yb3cnXX0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmVhZHktYnV0dG9uJ119XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICBvblN1Ym1pdChkaXNwbGF5VGltZXN0YW1wLCBkZXBhcnR1cmVPckFycml2YWxDdXJyZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpMThuZXh0LnQoJ3JlYWR5JywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snY2FuY2VsLWJ1dHRvbiddfVxuICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2kxOG5leHQudCgnY2FuY2VsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Nb2RhbD5cbiAgKTtcbn1cblxuTW9iaWxlUGlja2VyTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aW1lWm9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsOiBQcm9wVHlwZXMub25lT2YoWydkZXBhcnR1cmUnLCAnYXJyaXZhbCddKS5pc1JlcXVpcmVkLFxuICBvbk5vd0NsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DYW5jZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXRUaW1lRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZGF0ZVNlbGVjdEl0ZW1Db3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBnZXREYXRlRGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgdmFsaWRhdGVUaW1lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZWRpdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgfSkuaXNSZXF1aXJlZCxcbn07XG5cbk1vYmlsZVBpY2tlck1vZGFsLmRlZmF1bHRQcm9wcyA9IHtcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9iaWxlUGlja2VyTW9kYWw7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCAnbW9tZW50L2xvY2FsZS9maSc7XG5pbXBvcnQgdW5pcXVlSWQgZnJvbSAnbG9kYXNoL3VuaXF1ZUlkJztcbmltcG9ydCBpMThuZXh0IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgRGVza3RvcERhdGV0aW1lcGlja2VyIGZyb20gJy4vRGVza3RvcERhdGV0aW1lcGlja2VyJztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5zY3NzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi9tb2JpbGVEZXRlY3Rpb24nO1xuaW1wb3J0IGRhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCBmcm9tICcuL2RhdGVUaW1lSW5wdXRJc1N1cHBvcnRlZCc7XG5pbXBvcnQgTW9iaWxlUGlja2VyTW9kYWwgZnJvbSAnLi9Nb2JpbGVQaWNrZXJNb2RhbCc7XG5cbm1vbWVudC5sb2NhbGUoJ2VuJyk7XG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgcmVuZGVycyBjb21ib2JveCBzdHlsZSBpbnB1dHMgZm9yIHNlbGVjdGluZyBkYXRlIGFuZCB0aW1lLiBUaGlzIGlzIGEgY29udHJvbGxlZCBjb21wb25lbnQsIHRpbWVzdGFtcCBpcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBib3RoIGlucHV0cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBwcm9wcy50aW1lc3RhbXAgICAgICBDdXJyZW50bHkgc2VsZWN0ZWQgdGltZSBhcyBhIHVuaXggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcy4gU2V0IHRvIG51bGwgdG8gc2lnbmlmeSB0aGF0IFwibm93XCIgaXMgc2VsZWN0ZWQuIERpc3BsYXllZCB0aW1lIGlzIHVwZGF0ZWQgaW4gcmVhbHRpbWUgd2hlbiBzZXQgdG8gbnVsbFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgIENhbGxlZCB3aXRoIG5ldyB0aW1lc3RhbXAgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGF0ZUNoYW5nZSAgICAgICBDYWxsZWQgd2l0aCBuZXcgdGltZXN0YW1wIHdoZW4gZGF0ZSBpbnB1dCBjaGFuZ2VzXG4gKiBAcGFyYW0geydhcnJpdmFsJ3wnZGVwYXJ0dXJlJ30gcHJvcHMuZGVwYXJ0dXJlT3JBcnJpdmFsICAgRGV0ZXJtaW5lIGlmIGlucHV0IGlzIHNldCB0byBjaG9vc2UgZGVwYXJ0dXJlIG9yIGFycml2YWwgdGltZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25Ob3dDbGljayAgICAgICAgIENhbGxlZCB3aGVuIFwiZGVwYXJ0IG5vd1wiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRlcGFydHVyZUNsaWNrICAgQ2FsbGVkIHdoZW4gXCJkZXBhcnR1cmVcIiBidXR0b24gaXMgY2xpY2tlZFxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgIENhbGxlZCB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbkNsb3NlZCAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIGluIHRoZSBjb3JuZXIgd2hlbiBpbnB1dCBpcyBjbG9zZWRcbiAqIEBwYXJhbSB7bm9kZX0gcHJvcHMuZW1iZWRXaGVuT3BlbiAgICAgICAgICBKU1ggZWxlbWVudCB0byByZW5kZXIgd2hlbiBpbnB1dCBpcyBvcGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMubGFuZyAgICAgICAgICAgICAgICAgTGFuZ3VhZ2Ugc2VsZWN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKiA8RGF0ZXRpbWVwaWNrZXJcbiAqICAgdGltZXN0YW1wPXsxNTkwMTMzODIzMDAwfVxuICogICBvblRpbWVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBvbkRhdGVDaGFuZ2U9eyhuZXdUaW1lc3RhbXApID0+IHVwZGF0ZShuZXdUaW1lc3RhbXApfVxuICogICBkZXBhcnR1cmVPckFycml2YWw9eydkZXBhcnR1cmUnfVxuICogICBvbk5vd0NsaWNrPXsoKSA9PiBzZXRUaW1lc3RhbXBUb051bGwoKX1cbiAqICAgb25EZXBhcnR1cmVDbGljaz17KCkgPT4gZGVwYXJ0dXJlQ2xpY2tlZCgpfVxuICogICBvbkFycml2YWxDbGljaz17KCkgPT4gYXJyaXZhbENsaWNrZWQoKX1cbiAqICAgZW1iZWRXaGVuQ2xvc2VkPXs8YnV0dG9uIC8+fVxuICogICBsYW5nPXsnZW4nfVxuICogICBzZXJ2aWNlVGltZVJhbmdlPXsxNX1cbiAqIC8+XG4gKi9cbmZ1bmN0aW9uIERhdGV0aW1lcGlja2VyKHtcbiAgdGltZXN0YW1wLFxuICBvblRpbWVDaGFuZ2UsXG4gIG9uRGF0ZUNoYW5nZSxcbiAgZGVwYXJ0dXJlT3JBcnJpdmFsLFxuICBvbk5vd0NsaWNrLFxuICBvbkRlcGFydHVyZUNsaWNrLFxuICBvbkFycml2YWxDbGljayxcbiAgZW1iZWRXaGVuQ2xvc2VkLFxuICBlbWJlZFdoZW5PcGVuLFxuICBsYW5nLFxuICBjb2xvcixcbiAgdGltZVpvbmUsXG4gIG9uTW9kYWxTdWJtaXQsXG4gIGZvbnRXZWlnaHRzLFxuICBzZXJ2aWNlVGltZVJhbmdlLFxuICBvbk9wZW4sXG4gIG9uQ2xvc2UsXG4gIG9wZW5QaWNrZXIsXG59KSB7XG4gIG1vbWVudC50ei5zZXREZWZhdWx0KHRpbWVab25lKTtcbiAgY29uc3QgW2lzT3BlbiwgY2hhbmdlT3Blbl0gPSB1c2VTdGF0ZShvcGVuUGlja2VyIHx8IGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUaW1lc3RhbXAsIGNoYW5nZURpc3BsYXlUaW1lc3RhbXBdID0gdXNlU3RhdGUoXG4gICAgdGltZXN0YW1wIHx8IG1vbWVudCgpLnZhbHVlT2YoKSxcbiAgKTtcbiAgLy8gdGltZXIgZm9yIHVwZGF0aW5nIGRpc3BsYXlUaW1lc3RhbXAgaW4gcmVhbCB0aW1lXG4gIGNvbnN0IFt0aW1lcklkLCBzZXRUaW1lcl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgLy8gZm9yIGlucHV0IGxhYmVsc1xuICBjb25zdCBbaHRtbElkXSA9IHVzZVN0YXRlKHVuaXF1ZUlkKCdkYXRldGltZXBpY2tlci0nKSk7XG4gIGNvbnN0IFt1c2VNb2JpbGVJbnB1dHNdID0gdXNlU3RhdGUoaXNNb2JpbGUoKSAmJiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSk7XG4gIGNvbnN0IG9wZW5QaWNrZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgYWxlcnRSZWYgPSB1c2VSZWYoKTtcblxuICBjb25zdCB0cmFuc2xhdGlvblNldHRpbmdzID0geyBsbmc6IGxhbmcgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5ndWFnZSA9PlxuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5ndWFnZSwgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKSxcbiAgICApO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBtb21lbnQubG9jYWxlKGxhbmcpO1xuICB9LCBbbGFuZ10pO1xuXG4gIGNvbnN0IG5vd1NlbGVjdGVkID0gdGltZXN0YW1wID09PSBudWxsO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChub3dTZWxlY3RlZCkge1xuICAgICAgY2hhbmdlRGlzcGxheVRpbWVzdGFtcChtb21lbnQoKS52YWx1ZU9mKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjbGVhciB0aW1lclxuICAgICAgaWYgKHRpbWVySWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICB9XG4gICAgICBjaGFuZ2VEaXNwbGF5VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gICAgfVxuICB9LCBbdGltZXN0YW1wXSk7XG5cbiAgLy8gc2V0IHRpbWVyIHRvIHVwZGF0ZSBkaXNwbGF5VGltZXN0YW1wIHdoZW4gbWludXRlIGNoYW5nZXMgaWYgbm93U2VsZWN0ZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW5vd1NlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGltZXJJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcklkKTtcbiAgICB9XG4gICAgY29uc3QgbmV3SWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS52YWx1ZU9mKCk7XG4gICAgICBjb25zdCBzYW1lTWludXRlID0gbW9tZW50KGRpc3BsYXlUaW1lc3RhbXApLmlzU2FtZShub3csICdtaW51dGUnKTtcbiAgICAgIGlmICghc2FtZU1pbnV0ZSkge1xuICAgICAgICBjbGVhckludGVydmFsKG5ld0lkKTtcbiAgICAgICAgc2V0VGltZXIobnVsbCk7XG4gICAgICAgIGNoYW5nZURpc3BsYXlUaW1lc3RhbXAobm93KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcbiAgICBzZXRUaW1lcihuZXdJZCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwobmV3SWQpO1xuICB9LCBbZGlzcGxheVRpbWVzdGFtcF0pO1xuXG4gIGNvbnN0IHByZXZJc09wZW5SZWYgPSB1c2VSZWYoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBwcmV2SXNPcGVuUmVmLmN1cnJlbnQgPSBpc09wZW47XG4gIH0pO1xuXG4gIC8vIHBhcmFtIGRhdGUgaXMgdGltZXN0YW1wXG4gIGNvbnN0IGdldERhdGVEaXNwbGF5ID0gZGF0ZSA9PiB7XG4gICAgY29uc3QgdGltZSA9IG1vbWVudChkYXRlKTtcbiAgICBsZXQgZm9ybWF0dGVkO1xuICAgIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKSwgJ2RheScpKSB7XG4gICAgICBmb3JtYXR0ZWQgPSBpMThuZXh0LnQoJ3RvZGF5JywgdHJhbnNsYXRpb25TZXR0aW5ncyk7XG4gICAgfSBlbHNlIGlmICh0aW1lLmlzU2FtZShtb21lbnQoKS5hZGQoMSwgJ2RheScpLCAnZGF5JykpIHtcbiAgICAgIGZvcm1hdHRlZCA9IGkxOG5leHQudCgndG9tb3Jyb3cnLCB0cmFuc2xhdGlvblNldHRpbmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0dGVkID0gdGltZS5mb3JtYXQoJ2RkIEQuTS4nKTtcbiAgICB9XG4gICAgZm9ybWF0dGVkID0gYCR7Zm9ybWF0dGVkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7Zm9ybWF0dGVkLnNsaWNlKDEpfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgfTtcblxuICAvLyBwYXJhbSB0aW1lIGlzIHRpbWVzdGFtcFxuICBjb25zdCBnZXRUaW1lRGlzcGxheSA9IHRpbWUgPT4ge1xuICAgIHJldHVybiBtb21lbnQodGltZSkuZm9ybWF0KCdISDptbScpO1xuICB9O1xuXG4gIGNvbnN0IHZhbGlkYXRlVGltZSA9IChpbnB1dFZhbHVlLCBjdXJyZW50VGltZXN0YW1wKSA9PiB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGlucHV0VmFsdWUudHJpbSgpO1xuICAgIGlmICh0cmltbWVkLm1hdGNoKC9eWzAtOV17MSwyfShcXC58OilbMC05XXsyfSQvKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3BsaXR0ZXIgPSB0cmltbWVkLmluY2x1ZGVzKCcuJykgPyAnLicgOiAnOic7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0cmltbWVkLnNwbGl0KHNwbGl0dGVyKTtcbiAgICAgIGNvbnN0IGhvdXJzID0gTnVtYmVyKHZhbHVlc1swXSk7XG4gICAgICBjb25zdCBob3Vyc1ZhbGlkID0gIU51bWJlci5pc05hTihob3VycykgJiYgaG91cnMgPj0gMCAmJiBob3VycyA8PSAyMztcbiAgICAgIGNvbnN0IG1pbnV0ZXMgPSBOdW1iZXIodmFsdWVzWzFdKTtcbiAgICAgIGNvbnN0IG1pbnV0ZXNWYWxpZCA9XG4gICAgICAgICFOdW1iZXIuaXNOYU4obWludXRlcykgJiYgbWludXRlcyA+PSAwICYmIG1pbnV0ZXMgPD0gNTk7XG4gICAgICBpZiAoIW1pbnV0ZXNWYWxpZCB8fCAhaG91cnNWYWxpZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld1N0YW1wID0gbW9tZW50KGN1cnJlbnRUaW1lc3RhbXApXG4gICAgICAgIC5ob3Vycyhob3VycylcbiAgICAgICAgLm1pbnV0ZXMobWludXRlcylcbiAgICAgICAgLnZhbHVlT2YoKTtcbiAgICAgIHJldHVybiBuZXdTdGFtcDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0ZWRNb21lbnQgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCk7XG4gIGNvbnN0IHRpbWVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoZGlzcGxheVRpbWVzdGFtcCkuc3RhcnRPZignZGF5JykudmFsdWVPZigpO1xuICBsZXQgdGltZUNob2ljZXMgPSBbXTtcbiAgY29uc3QgY3VycmVudCA9IG1vbWVudCh0aW1lU2VsZWN0U3RhcnRUaW1lKTtcbiAgd2hpbGUgKGN1cnJlbnQuaXNTYW1lKHRpbWVTZWxlY3RTdGFydFRpbWUsICdkYXknKSkge1xuICAgIHRpbWVDaG9pY2VzLnB1c2goY3VycmVudC52YWx1ZU9mKCkpO1xuICAgIGN1cnJlbnQuYWRkKDE1LCAnbWludXRlcycpO1xuICB9XG4gIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAvLyBpZiB0aW1lIGlzIHNldCB0byBub3dcbiAgICAvLyBhZGQgdGltZXMgaW4gNSBtaW4gaW50ZXJ2YWxzIGZvciBuZXh0IDMwIG1pbnNcbiAgICBjb25zdCBmaXZlTWludXRlcyA9IDEwMDAgKiA2MCAqIDU7XG4gICAgY29uc3QgbmV4dEZpdmVNaW4gPSBNYXRoLmNlaWwoZGlzcGxheVRpbWVzdGFtcCAvIGZpdmVNaW51dGVzKSAqIGZpdmVNaW51dGVzO1xuICAgIGNvbnN0IHRpbWVzVG9BZGQgPSBBcnJheSg3KVxuICAgICAgLmZpbGwoKVxuICAgICAgLm1hcCgoXywgaSkgPT4gbmV4dEZpdmVNaW4gKyBpICogZml2ZU1pbnV0ZXMpO1xuICAgIGNvbnN0IGNsb3Nlc3RJbmRleEFmdGVyID0gdGltZUNob2ljZXNcbiAgICAgIC5tYXAodCA9PiBkaXNwbGF5VGltZXN0YW1wIC0gdClcbiAgICAgIC5maW5kSW5kZXgodCA9PiB0IDw9IDApO1xuICAgIHRpbWVDaG9pY2VzLnNwbGljZShjbG9zZXN0SW5kZXhBZnRlciwgMCwgLi4udGltZXNUb0FkZCk7XG4gICAgdGltZUNob2ljZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGltZUNob2ljZXMpKTsgLy8gcmVtb3ZlIGR1cGxpY2F0ZXNcbiAgfVxuXG4gIGNvbnN0IGRhdGVTZWxlY3RTdGFydFRpbWUgPSBtb21lbnQoKVxuICAgIC5zdGFydE9mKCdkYXknKVxuICAgIC5ob3VyKHNlbGVjdGVkTW9tZW50LmhvdXIoKSlcbiAgICAubWludXRlKHNlbGVjdGVkTW9tZW50Lm1pbnV0ZSgpKVxuICAgIC52YWx1ZU9mKCk7XG4gIGNvbnN0IGRhdGVDaG9pY2VzID0gQXJyYXkoc2VydmljZVRpbWVSYW5nZSlcbiAgICAuZmlsbCgpXG4gICAgLm1hcCgoXywgaSkgPT4gbW9tZW50KGRhdGVTZWxlY3RTdGFydFRpbWUpLmFkZChpLCAnZGF5JykudmFsdWVPZigpKTtcblxuICBmdW5jdGlvbiBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLWNsb3NlZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvd1NjcmVlbnJlYWRlck9wZW5BbGVydCgpIHtcbiAgICBpZiAoYWxlcnRSZWYuY3VycmVudCkge1xuICAgICAgYWxlcnRSZWYuY3VycmVudC5pbm5lckhUTUwgPSBpMThuZXh0LnQoXG4gICAgICAgICdhY2Nlc3NpYmxlLW9wZW5lZCcsXG4gICAgICAgIHRyYW5zbGF0aW9uU2V0dGluZ3MsXG4gICAgICApO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGFsZXJ0UmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gbnVsbDtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyT3BlbigpIHtcbiAgICBpZiAodXNlTW9iaWxlSW5wdXRzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBpc09wZW4gJiYgKFxuICAgICAgICAgIDxNb2JpbGVQaWNrZXJNb2RhbFxuICAgICAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsPXtkZXBhcnR1cmVPckFycml2YWx9XG4gICAgICAgICAgICBvbk5vd0NsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBvbk5vd0NsaWNrKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgIG9uU3VibWl0PXsobmV3VGltZXN0YW1wLCBuZXdEZXBhcnR1cmVPckFycml2YWwpID0+IHtcbiAgICAgICAgICAgICAgb25Nb2RhbFN1Ym1pdChuZXdUaW1lc3RhbXAsIG5ld0RlcGFydHVyZU9yQXJyaXZhbCk7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGdldFRpbWVEaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgICAgICAgIHRpbWVzdGFtcD17ZGlzcGxheVRpbWVzdGFtcH1cbiAgICAgICAgICAgIGdldERhdGVEaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgIGRhdGVTZWxlY3RJdGVtQ291bnQ9e3NlcnZpY2VUaW1lUmFuZ2V9XG4gICAgICAgICAgICBnZXREaXNwbGF5PXtnZXRUaW1lRGlzcGxheX1cbiAgICAgICAgICAgIHZhbGlkYXRlVGltZT17dmFsaWRhdGVUaW1lfVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e2ZvbnRXZWlnaHRzfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snZGF0ZXRpbWVwaWNrZXItb3Blbi1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICFpc09wZW4gPyBzdHlsZXMuaGlkZGVuIDogJydcbiAgICAgICAgICB9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgICAgICAgID8gYCR7c3R5bGVzWyd0b3Atcm93LWNvbnRhaW5lciddfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICAgIDogYCR7c3R5bGVzLmhpZGRlbn0gZGF0ZXRpbWVwaWNrZXItdG9wLXJvd2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgPHNwYW4gcm9sZT1cImFsZXJ0XCIgY2xhc3NOYW1lPXtzdHlsZXNbJ3NyLW9ubHknXX0gcmVmPXthbGVydFJlZn0gLz5cbiAgICAgICAgICAgIDxzcGFuIC8+XG4gICAgICAgICAgICB7LyogVGhpcyBlbXB0eSBzcGFuIHByZXZlbnRzIGEgd2VpcmQgZm9jdXMgYnVnIG9uIGNocm9tZSAqL31cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydkZXBhcnR1cmUtb3ItYXJyaXZhbC1jb250YWluZXInXX0+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tZGVwYXJ0dXJlYH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbi1sYWJlbCddfVxuICAgICAgICAgICAgICAgICR7XG4gICAgICAgICAgICAgICAgICBzdHlsZXNbXG4gICAgICAgICAgICAgICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2RlcGFydHVyZScgPyAnYWN0aXZlJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1kZXBhcnR1cmVgfVxuICAgICAgICAgICAgICAgICAgbmFtZT1cImRlcGFydHVyZU9yQXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJkZXBhcnR1cmVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24nXX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGh0bWxGb3I9e2Ake2h0bWxJZH0tYXJyaXZhbGB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ3JhZGlvLXRleHRidXR0b24tbGFiZWwnXX1cbiAgICAgICAgICAgICAgICAke1xuICAgICAgICAgICAgICAgICAgc3R5bGVzW1xuICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyA/ICdhY3RpdmUnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhcnJpdmFsJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1hcnJpdmFsYH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXBhcnR1cmVPckFycml2YWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiYXJyaXZhbFwiXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmFkaW8tdGV4dGJ1dHRvbiddfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25BcnJpdmFsQ2xpY2soKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD17YCR7aHRtbElkfS1ub3dgfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2RlcGFydHVyZS1ub3ctYnV0dG9uJ119XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCgpO1xuICAgICAgICAgICAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uTm93Q2xpY2soKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2kxOG5leHQudCgnZGVwYXJ0dXJlLW5vdycsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1idXR0b24nXX1cbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIHNob3dTY3JlZW5yZWFkZXJDbG9zZUFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjbG9zZS1pY29uJ119PlxuICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2xvc2VcIiBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICAgICAge2kxOG5leHQudCgnYWNjZXNzaWJsZS1jbG9zZScsIHRyYW5zbGF0aW9uU2V0dGluZ3MpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgaXNPcGVuXG4gICAgICAgICAgICAgICAgPyBgJHtzdHlsZXNbJ3BpY2tlci1jb250YWluZXInXX1gXG4gICAgICAgICAgICAgICAgOiBgJHtzdHlsZXMuaGlkZGVufSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sZWZ0J119PlxuICAgICAgICAgICAgICAgIDxEZXNrdG9wRGF0ZXRpbWVwaWNrZXJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VGltZXN0YW1wfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e25ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25EYXRlQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBnZXREaXNwbGF5PXtnZXREYXRlRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgIHRpbWVDaG9pY2VzPXtkYXRlQ2hvaWNlc31cbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ2RhdGUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjYWxlbmRhclwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tZGF0ZWB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCdkYXRlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlVHlwaW5nXG4gICAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgICBkYXRlUGlja2VyXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtcmlnaHQnXX0+XG4gICAgICAgICAgICAgICAgPERlc2t0b3BEYXRldGltZXBpY2tlclxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlUaW1lc3RhbXB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17bmV3VmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvblRpbWVDaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIGdldERpc3BsYXk9e2dldFRpbWVEaXNwbGF5fVxuICAgICAgICAgICAgICAgICAgdGltZUNob2ljZXM9e3RpbWVDaG9pY2VzfVxuICAgICAgICAgICAgICAgICAgdmFsaWRhdGU9e3ZhbGlkYXRlVGltZX1cbiAgICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWQ9e2Ake2h0bWxJZH0tdGltZWB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd0aW1lJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICAgICAgICAgICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2lzT3BlbiA/ICcnIDogc3R5bGVzLmhpZGRlbn0+e2VtYmVkV2hlbk9wZW59PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNPcGVuID8gJ2RhdGV0aW1lcGlja2VyLWJvdHRvbS1yb3ctb3BlbicgOiAnJ30gLz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2R0LWRhdGV0aW1lcGlja2VyJ119XG4gICAgICBpZD17YCR7aHRtbElkfS1yb290YH1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgICctLWNvbG9yJzogYCR7Y29sb3J9YCxcbiAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8bGVnZW5kIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXRpdGxlJywgdHJhbnNsYXRpb25TZXR0aW5ncyl9XG4gICAgICA8L2xlZ2VuZD5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLXVwZGF0ZS1pbnN0cnVjdGlvbnMnLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgIWlzT3BlblxuICAgICAgICAgICAgICA/IGAke3N0eWxlc1sndG9wLXJvdy1jb250YWluZXInXX0gJHtzdHlsZXMuY2xvc2VkfSBkYXRldGltZXBpY2tlci10b3Atcm93YFxuICAgICAgICAgICAgICA6IGAke3N0eWxlcy5oaWRkZW59IGRhdGV0aW1lcGlja2VyLXRvcC1yb3dgXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzWydsYWJlbC1vcGVuJ119IGh0bWxGb3I9e2Ake2h0bWxJZH0tb3BlbmB9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ3RpbWUtaWNvbiddfT5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119PlxuICAgICAgICAgICAgICB7aTE4bmV4dC50KCdhY2Nlc3NpYmxlLW9wZW4nLCB0cmFuc2xhdGlvblNldHRpbmdzKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHJvbGU9XCJhbGVydFwiIGNsYXNzTmFtZT17c3R5bGVzWydzci1vbmx5J119IHJlZj17YWxlcnRSZWZ9IC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPXtgJHtodG1sSWR9LW9wZW5gfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMudGV4dGJ1dHRvbn0gJHtzdHlsZXMuYWN0aXZlfSAke3N0eWxlc1snb3Blbi1idXR0b24nXX1gfVxuICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtgJHtodG1sSWR9LXJvb3RgfVxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgICAgICBzaG93U2NyZWVucmVhZGVyT3BlbkFsZXJ0KCk7XG4gICAgICAgICAgICAgICAgaWYgKG9uT3Blbikge1xuICAgICAgICAgICAgICAgICAgb25PcGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICByZWY9e29wZW5QaWNrZXJSZWZ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtub3dTZWxlY3RlZCAmJiBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnID8gKFxuICAgICAgICAgICAgICAgICAgaTE4bmV4dC50KCdkZXBhcnR1cmUtbm93JywgdHJhbnNsYXRpb25TZXR0aW5ncylcbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAge2kxOG5leHQudChcbiAgICAgICAgICAgICAgICAgICAgICBkZXBhcnR1cmVPckFycml2YWwgPT09ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdkZXBhcnR1cmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdhcnJpdmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7YCAke1xuICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCgpLmlzU2FtZShtb21lbnQoZGlzcGxheVRpbWVzdGFtcCksICdkYXknKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXREYXRlRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgIH0gJHtnZXRUaW1lRGlzcGxheShkaXNwbGF5VGltZXN0YW1wKX1gfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snZHJvcGRvd24taWNvbiddfT5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJhcnJvdy1kcm9wZG93blwiIGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1sncmlnaHQtZWRnZSddfT57ZW1iZWRXaGVuQ2xvc2VkfTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgLz5cbiAgICAgIDwvPlxuICAgICAge3JlbmRlck9wZW4oKX1cbiAgICA8L2ZpZWxkc2V0PlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIHRpbWVzdGFtcDogUHJvcFR5cGVzLm51bWJlcixcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uVGltZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EYXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBkZXBhcnR1cmVPckFycml2YWw6IFByb3BUeXBlcy5vbmVPZihbJ2RlcGFydHVyZScsICdhcnJpdmFsJ10pLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVwYXJ0dXJlQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXJyaXZhbENsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBlbWJlZFdoZW5DbG9zZWQ6IFByb3BUeXBlcy5ub2RlLFxuICBlbWJlZFdoZW5PcGVuOiBQcm9wVHlwZXMubm9kZSxcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Nb2RhbFN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZm9udFdlaWdodHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyLmRlZmF1bHRQcm9wcyA9IHtcbiAgdGltZXN0YW1wOiBudWxsLFxuICBlbWJlZFdoZW5DbG9zZWQ6IG51bGwsXG4gIGVtYmVkV2hlbk9wZW46IG51bGwsXG4gIGNvbG9yOiAnIzAwN2FjOScsXG4gIHRpbWVab25lOiAnRXVyb3BlL0hlbHNpbmtpJyxcbiAgc2VydmljZVRpbWVSYW5nZTogMzAsXG4gIG9uT3BlbjogbnVsbCxcbiAgb25DbG9zZTogbnVsbCxcbiAgb3BlblBpY2tlcjogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZXRpbWVwaWNrZXI7XG4iLCIvKipcbiAqIERldGVjdCBpZiBpbnB1dCB0eXBlPVwiZGF0ZVwiIGFuZCB0eXBlPVwidGltZVwiIGFyZSBzdXBwb3J0ZWQgaW4gYnkgdGhlIGJyb3dzZXJcbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB3aW5kb3cgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGVsZW0udHlwZSA9ICdkYXRlJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ2RhdGUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGVsZW0udHlwZSA9ICd0aW1lJztcbiAgaWYgKGVsZW0udHlwZSAhPT0gJ3RpbWUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQ7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoL2RlYm91bmNlJztcbmltcG9ydCBEYXRldGltZXBpY2tlciBmcm9tICcuL2hlbHBlcnMvRGF0ZXRpbWVwaWNrZXInO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHJlbmRlcnMgYW4gaW5wdXQgdG8gY2hvb3NlIGEgZGF0ZSBhbmQgdGltZS4gUmVuZGVycyBzZXBhcmF0ZSBpbnB1dCBmaWVsZHMgZm9yIGRhdGUgYW5kIHRpbWUgc2VsZWN0aW9uLiBWYWx1ZXMgZm9yIHRpbWVzdGFtcCBhbmQgYXJyaXZlQnkgY29ycmVzcG9uZCB0byBEaWdpdHJhbnNpdCBxdWVyeSBwYXJhbXMgdGltZSBhbmQgYXJyaXZlQnkuIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSBhIG5hdGl2ZSBkYXRlIGlucHV0IG9uIG1vYmlsZSBhbmQgYSBjdXN0b20gb25lIGZvciBkZXNrdG9wLiBNb2JpbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgcGFyc2luZyB1c2VyIGFnZW50LlxuICpcbiAqIEBhbGlhcyBEYXRldGltZXBpY2tlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wc1xuICpcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJvcHMucmVhbHRpbWUgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgc2VsZWN0ZWQgdGltZSBzaG91bGQgYmUgdXBkYXRlZCBpbiByZWFsdGltZSB3aGVuICdub3cnIGlzIHNlbGVjdGVkLlxuICogQHBhcmFtIHtOdW1iZXJ9IHByb3BzLmluaXRpYWxUaW1lc3RhbXAgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIHNlbGVjdGVkIHRpbWUuIFVuaXggdGltZXN0YW1wIGluIHNlY29uZHMuIFVwZGF0aW5nIHRoaXMgd2lsbCBjaGFuZ2UgdGltZXBpY2tlciB2YWx1ZSBidXQgdGhlIGNvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLlxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5pbml0aWFsQXJyaXZlQnkgICAgICAgICAgIEluaXRpYWwgdmFsdWUgZm9yIGFycml2ZUJ5LiBEZXRlcm1pbmVzIGlmIHBpY2tlciBpcyBpbiBhcnJpdmFsIG1vZGUgKHRydWUpIG9yIGRlcGFydHVyZSBtb2RlIChmYWxzZSkuIENvcnJlY3QgdmFsdWUgaXMga2VwdCBpbiBjb21wb25lbnQgc3RhdGUgZXZlbiBpZiB0aGlzIGlzIG5vdCB1cGRhdGVkLiBDaGFuZ2luZyB0aGlzIHdpbGwgYWxzbyB0cmlnZ2VyIGNoYW5nZSBpbiB0aGUgY29tcG9uZW50LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25UaW1lQ2hhbmdlICAgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lLCBhcnJpdmVCeSkgd2hlbiB0aW1lIGlucHV0IGNoYW5nZXMuIHRpbWUgaXMgbnVtYmVyIHRpbWVzdGFtcCBpbiBzZWNvbmRzLCBhcnJpdmVCeSBpcyBib29sZWFuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9wcy5vbkRhdGVDaGFuZ2UgICAgICAgICAgICAgQ2FsbGVkIHdpdGggKHRpbWUsIGFycml2ZUJ5KSB3aGVuIGRhdGUgaW5wdXQgY2hhbmdlcy4gdGltZSBpcyBudW1iZXIgdGltZXN0YW1wIGluIHNlY29uZHMsIGFycml2ZUJ5IGlzIGJvb2xlYW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uTm93Q2xpY2sgICAgICAgICAgICAgICBDYWxsZWQgd2hlbiBcImRlcGFydCBub3dcIiBidXR0b24gaXMgY2xpY2tlZC4gdGltZSBpcyBjdXJyZW50IGlucHV0IHZhbHVlIGluIHNlY29uZHNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uRGVwYXJ0dXJlQ2xpY2sgICAgICAgICBDYWxsZWQgd2l0aCAodGltZSkgd2hlbiBcImRlcGFydHVyZVwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25BcnJpdmFsQ2xpY2sgICAgICAgICAgIENhbGxlZCB3aXRoICh0aW1lKSB3aGVuIFwiYXJyaXZhbFwiIGJ1dHRvbiBpcyBjbGlja2VkLiB0aW1lIGlzIGN1cnJlbnQgaW5wdXQgdmFsdWUgaW4gc2Vjb25kc1xuICogQHBhcmFtIHtub2RlfSBwcm9wcy5lbWJlZFdoZW5DbG9zZWQgICAgICAgICAgICAgIEpTWCBlbGVtZW50IHRvIHJlbmRlciBpbiB0aGUgY29ybmVyIHdoZW4gaW5wdXQgaXMgY2xvc2VkXG4gKiBAcGFyYW0ge25vZGV9IHByb3BzLmVtYmVkV2hlbk9wZW4gICAgICAgICAgICAgICAgSlNYIGVsZW1lbnQgdG8gcmVuZGVyIHdoZW4gaW5wdXQgaXMgb3BlblxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BzLmxhbmcgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlIHNlbGVjdGlvbi4gRGVmYXVsdCAnZW4nXG4gKiBAcGFyYW0ge251bWJlcn0gcHJvcHMuc2VydmljZVRpbWVSYW5nZSAgICAgICAgICAgRGV0ZXJtaW5lIG51bWJlciBvZiBkYXlzIHNob3duIGluIHRpbWVwaWNrZXIuIE9wdGlvbmFsLiBkZWZhdWx0IGlzIDMwLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvcHMub25PcGVuICAgICAgICAgICAgICAgICAgIERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGltZXBpY2tlciBpcyBvcGVuLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9uQ2xvc2UgICAgICAgICAgICAgICAgICBEZXRlcm1pbmUgd2hhdCB0byBkbyB3aGVuIHRpbWVwaWNrZXIgaXMgY2xvc2VkLiBPcHRpb25hbC4gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb3BzLm9wZW5QaWNrZXIgICAgICAgICAgICAgICBEZXRlcm1pbmUgaWYgdGltZXBpY2tlciBzaG91bGQgYmUgb3BlbiBpbiBpbnRpYWwgcmVuZGVyLiBPcHRpb25hbC4gRGVmYXVsdCBpcyB1bmRlZmluZWQuXG4gKiBAZXhhbXBsZVxuICogPERhdGV0aW1lcGlja2VyXG4gKiAgIHJlYWx0aW1lPXt0cnVlfVxuICogICBpbml0aWFsVGltZXN0YW1wPXsxNTkwMTMzODIzfVxuICogICBpbml0aWFsQXJyaXZlQnk9e2ZhbHNlfVxuICogICBvblRpbWVDaGFuZ2U9eyh0aW1lLCBhcnJpdmVCeSkgPT4gY2hhbmdlVXJsKHRpbWUsIGFycml2ZUJ5KX1cbiAqICAgb25EYXRlQ2hhbmdlPXsodGltZSwgYXJyaXZlQnkpID0+IGNoYW5nZVVybCh0aW1lLCBhcnJpdmVCeSl9XG4gKiAgIG9uTm93Q2xpY2s9eyh0aW1lKSA9PiBjaGFuZ2VVcmwodW5kZWZpbmVkLCB1bmRlZmluZWQpfVxuICogICBvbkRlcGFydHVyZUNsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsICd0cnVlJyl9XG4gKiAgIG9uQXJyaXZhbENsaWNrPXsodGltZSkgPT4gY2hhbmdlVXJsKHRpbWUsIHVuZGVmaW5lZCl9XG4gKiAgIGVtYmVkV2hlbkNsb3NlZD17PGJ1dHRvbiAvPn1cbiAqICAgbGFuZz17J2VuJ31cbiAqICAgc2VydmljZVRpbWVSYW5nZT17MTV9XG4gKiAvPlxuICovXG5mdW5jdGlvbiBEYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyKHtcbiAgcmVhbHRpbWUsXG4gIGluaXRpYWxBcnJpdmVCeSxcbiAgaW5pdGlhbFRpbWVzdGFtcCxcbiAgb25EZXBhcnR1cmVDbGljayxcbiAgb25BcnJpdmFsQ2xpY2ssXG4gIG9uVGltZUNoYW5nZSxcbiAgb25EYXRlQ2hhbmdlLFxuICBvbk5vd0NsaWNrLFxuICBlbWJlZFdoZW5DbG9zZWQsXG4gIGVtYmVkV2hlbk9wZW4sXG4gIGxhbmcsXG4gIGNvbG9yLFxuICB0aW1lWm9uZSxcbiAgZm9udFdlaWdodHMsXG4gIHNlcnZpY2VUaW1lUmFuZ2UsXG4gIG9uT3BlbixcbiAgb25DbG9zZSxcbiAgb3BlblBpY2tlcixcbn0pIHtcbiAgbW9tZW50LmxvY2FsZShsYW5nKTtcbiAgbW9tZW50LnR6LnNldERlZmF1bHQodGltZVpvbmUpO1xuICBjb25zdCBpbml0aWFsTm93ID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICBjb25zdCBbdGltZXN0YW1wLCBjaGFuZ2VUaW1lc3RhbXBTdGF0ZV0gPSB1c2VTdGF0ZShcbiAgICBpbml0aWFsVGltZXN0YW1wID8gaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDAgOiBpbml0aWFsTm93LFxuICApO1xuICBjb25zdCBbZGVwYXJ0dXJlT3JBcnJpdmFsLCBjaGFuZ2VEZXBhcnR1cmVPckFycml2YWxdID0gdXNlU3RhdGUoXG4gICAgaW5pdGlhbEFycml2ZUJ5ID09PSB0cnVlID8gJ2Fycml2YWwnIDogJ2RlcGFydHVyZScsXG4gICk7XG5cbiAgLy8gdXBkYXRlIHN0YXRlIGlmIHByb3BzIGNoYW5nZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJvdGhOdWxsID0gdGltZXN0YW1wID09PSBudWxsICYmIGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbmVOdWxsID0gdGltZXN0YW1wID09PSBudWxsIHx8IGluaXRpYWxUaW1lc3RhbXAgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzYW1lVGltZSA9IE1hdGgucm91bmQodGltZXN0YW1wIC8gMTAwMCkgPT09IGluaXRpYWxUaW1lc3RhbXA7XG4gICAgY29uc3QgdGltZXN0YW1wQ2hhbmdlZCA9ICFib3RoTnVsbCAmJiAob25lTnVsbCB8fCAhc2FtZVRpbWUpO1xuICAgIGlmICh0aW1lc3RhbXBDaGFuZ2VkKSB7XG4gICAgICBpZiAoaW5pdGlhbFRpbWVzdGFtcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUoaW5pdGlhbFRpbWVzdGFtcCAqIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWluaXRpYWxBcnJpdmVCeSA9PT0gKGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKSkge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKFxuICAgICAgICBpbml0aWFsQXJyaXZlQnkgPT09IHRydWUgPyAnYXJyaXZhbCcgOiAnZGVwYXJ0dXJlJyxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbaW5pdGlhbFRpbWVzdGFtcCwgaW5pdGlhbEFycml2ZUJ5XSk7XG5cbiAgY29uc3QgdGltZUNoYW5nZWQgPSBkZWJvdW5jZShuZXdUaW1lID0+IHtcbiAgICBpZiAobmV3VGltZSA9PT0gbnVsbCkge1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobW9tZW50KCkudmFsdWVPZigpKTtcbiAgICAgIG9uVGltZUNoYW5nZShcbiAgICAgICAgTWF0aC5yb3VuZChtb21lbnQoKS52YWx1ZU9mKCkgLyAxMDAwKSxcbiAgICAgICAgZGVwYXJ0dXJlT3JBcnJpdmFsID09PSAnYXJyaXZhbCcsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjaGFuZ2VUaW1lc3RhbXBTdGF0ZShuZXdUaW1lKTtcbiAgICBvblRpbWVDaGFuZ2UoTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCksIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnKTtcbiAgfSwgMTApO1xuXG4gIGNvbnN0IGRhdGVDaGFuZ2VkID0gZGVib3VuY2UobmV3RGF0ZSA9PiB7XG4gICAgaWYgKG5ld0RhdGUgPT09IG51bGwpIHtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG1vbWVudCgpLnZhbHVlT2YoKSk7XG4gICAgICBvbkRhdGVDaGFuZ2UoXG4gICAgICAgIE1hdGgucm91bmQobW9tZW50KCkudmFsdWVPZigpIC8gMTAwMCksXG4gICAgICAgIGRlcGFydHVyZU9yQXJyaXZhbCA9PT0gJ2Fycml2YWwnLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobmV3RGF0ZSk7XG4gICAgb25EYXRlQ2hhbmdlKE1hdGgucm91bmQobmV3RGF0ZSAvIDEwMDApLCBkZXBhcnR1cmVPckFycml2YWwgPT09ICdhcnJpdmFsJyk7XG4gIH0sIDEwKTtcblxuICBjb25zdCBub3dDbGlja2VkID0gKCkgPT4ge1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgY29uc3QgbmV3VGltZXN0YW1wID0gcmVhbHRpbWUgPyBudWxsIDogbW9tZW50KCkudmFsdWVPZigpO1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5ld1RpbWVzdGFtcCk7XG4gICAgb25Ob3dDbGljayhNYXRoLnJvdW5kKG5ld1RpbWVzdGFtcCAvIDEwMDApKTtcbiAgfTtcblxuICBjb25zdCBkZXBhcnR1cmVDbGlja2VkID0gKCkgPT4ge1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IG5ld1RpbWUgPSB0aW1lc3RhbXA7XG4gICAgaWYgKHRpbWVzdGFtcCA9PT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkudmFsdWVPZigpO1xuICAgICAgY2hhbmdlVGltZXN0YW1wU3RhdGUobm93KTtcbiAgICAgIG5ld1RpbWUgPSBub3c7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGRlcGFydHVyZU9yQXJyaXZhbCAhPT0gJ2RlcGFydHVyZScpIHtcbiAgICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbCgnZGVwYXJ0dXJlJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uRGVwYXJ0dXJlQ2xpY2soTWF0aC5yb3VuZChuZXdUaW1lIC8gMTAwMCkpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhcnJpdmFsQ2xpY2tlZCA9ICgpID0+IHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGxldCBuZXdUaW1lID0gdGltZXN0YW1wO1xuICAgIGlmICh0aW1lc3RhbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG1vbWVudCgpLnZhbHVlT2YoKTtcbiAgICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKG5vdyk7XG4gICAgICBuZXdUaW1lID0gbm93O1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChkZXBhcnR1cmVPckFycml2YWwgIT09ICdhcnJpdmFsJykge1xuICAgICAgY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsKCdhcnJpdmFsJyk7XG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIG9uQXJyaXZhbENsaWNrKE1hdGgucm91bmQobmV3VGltZSAvIDEwMDApKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uTW9kYWxTdWJtaXQgPSAodGltZSwgbW9kZSkgPT4ge1xuICAgIGNoYW5nZVRpbWVzdGFtcFN0YXRlKHRpbWUpO1xuICAgIGNoYW5nZURlcGFydHVyZU9yQXJyaXZhbChtb2RlKTtcbiAgICBvblRpbWVDaGFuZ2UodGltZSAvIDEwMDAsIG1vZGUgPT09ICdhcnJpdmFsJywgdHJ1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RGF0ZXRpbWVwaWNrZXJcbiAgICAgIHRpbWVzdGFtcD17dGltZXN0YW1wfVxuICAgICAgb25UaW1lQ2hhbmdlPXt0aW1lQ2hhbmdlZH1cbiAgICAgIG9uRGF0ZUNoYW5nZT17ZGF0ZUNoYW5nZWR9XG4gICAgICBkZXBhcnR1cmVPckFycml2YWw9e2RlcGFydHVyZU9yQXJyaXZhbH1cbiAgICAgIG9uTm93Q2xpY2s9e25vd0NsaWNrZWR9XG4gICAgICBvbkRlcGFydHVyZUNsaWNrPXtkZXBhcnR1cmVDbGlja2VkfVxuICAgICAgb25BcnJpdmFsQ2xpY2s9e2Fycml2YWxDbGlja2VkfVxuICAgICAgZW1iZWRXaGVuQ2xvc2VkPXtlbWJlZFdoZW5DbG9zZWR9XG4gICAgICBlbWJlZFdoZW5PcGVuPXtlbWJlZFdoZW5PcGVufVxuICAgICAgbGFuZz17bGFuZ31cbiAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgIHRpbWVab25lPXt0aW1lWm9uZX1cbiAgICAgIG9uTW9kYWxTdWJtaXQ9e29uTW9kYWxTdWJtaXR9XG4gICAgICBmb250V2VpZ2h0cz17Zm9udFdlaWdodHN9XG4gICAgICBzZXJ2aWNlVGltZVJhbmdlPXtzZXJ2aWNlVGltZVJhbmdlfVxuICAgICAgb25PcGVuPXtvbk9wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgb3BlblBpY2tlcj17b3BlblBpY2tlcn1cbiAgICAvPlxuICApO1xufVxuXG5EYXRldGltZXBpY2tlclN0YXRlQ29udGFpbmVyLnByb3BUeXBlcyA9IHtcbiAgcmVhbHRpbWU6IFByb3BUeXBlcy5ib29sLFxuICBpbml0aWFsVGltZXN0YW1wOiBQcm9wVHlwZXMubnVtYmVyLFxuICBpbml0aWFsQXJyaXZlQnk6IFByb3BUeXBlcy5ib29sLFxuICBvbkRlcGFydHVyZUNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFycml2YWxDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25UaW1lQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uTm93Q2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogUHJvcFR5cGVzLm5vZGUsXG4gIGVtYmVkV2hlbk9wZW46IFByb3BUeXBlcy5ub2RlLFxuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgdGltZVpvbmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgfSksXG4gIHNlcnZpY2VUaW1lUmFuZ2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuUGlja2VyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIuZGVmYXVsdFByb3BzID0ge1xuICByZWFsdGltZTogZmFsc2UsXG4gIGluaXRpYWxBcnJpdmVCeTogdW5kZWZpbmVkLFxuICBpbml0aWFsVGltZXN0YW1wOiB1bmRlZmluZWQsXG4gIGVtYmVkV2hlbkNsb3NlZDogbnVsbCxcbiAgZW1iZWRXaGVuT3BlbjogbnVsbCxcbiAgbGFuZzogJ2VuJyxcbiAgY29sb3I6ICcjMDA3YWM5JyxcbiAgdGltZVpvbmU6ICdFdXJvcGUvSGVsc2lua2knLFxuICBmb250V2VpZ2h0czoge1xuICAgIG1lZGl1bTogNTAwLFxuICB9LFxuICBvbk9wZW46IG51bGwsXG4gIG9uQ2xvc2U6IG51bGwsXG4gIG9wZW5QaWNrZXI6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXI7XG4iXSwibmFtZXMiOlsicGFyc2VUeXBlZFRpbWUiLCJ0eXBlZFZhbHVlIiwiYWN0dWFsVmFsdWUiLCJsZW5ndGgiLCJzcGxpdCIsImV2ZXJ5IiwibiIsIk51bWJlciIsImlzSW50ZWdlciIsInNsaWNlIiwiRGVza3RvcERhdGV0aW1lcGlja2VyIiwidmFsdWUiLCJvbkNoYW5nZSIsImdldERpc3BsYXkiLCJ0aW1lQ2hvaWNlcyIsInZhbGlkYXRlIiwiaWQiLCJsYWJlbCIsImljb24iLCJkaXNhYmxlVHlwaW5nIiwidGltZVpvbmUiLCJkYXRlUGlja2VyIiwibW9tZW50IiwidHoiLCJzZXREZWZhdWx0IiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwidXNlU3RhdGUiLCJ0eXBpbmciLCJzZXRUeXBpbmciLCJzaG93QWxsT3B0aW9ucyIsInNldFNob3dBbGxPcHRpb25zIiwidXNlRWZmZWN0IiwiaGFuZGxlVGltZXN0YW1wIiwibmV3VmFsdWUiLCJhc051bWJlciIsImlzTmFOIiwiaXNWYWxpZCIsInZhbHVlT2YiLCJvcHRpb25zIiwibWFwIiwidCIsInRvU3RyaW5nIiwiY2xvc2VzdE9wdGlvbiIsInJlZHVjZSIsImEiLCJiIiwiTWF0aCIsImFicyIsImlucHV0SWQiLCJsYWJlbElkIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJjbGFzc05hbWUiLCJzdHlsZXMiLCJodG1sRm9yIiwiU2VsZWN0IiwiYXJpYUxpdmVNZXNzYWdlcyIsImd1aWRhbmNlIiwib25GaWx0ZXIiLCJvbkZvY3VzIiwiY29udGV4dCIsIml0ZW1MYWJlbCIsInRpbWUiLCJ2YWxpZGF0ZWQiLCJjb21wb25lbnRzIiwiSW5kaWNhdG9yc0NvbnRhaW5lciIsImNsYXNzTmFtZVByZWZpeCIsIm9uSW5wdXRDaGFuZ2UiLCJhY3Rpb24iLCJzdHIiLCJ0ZXN0IiwidXRpbHMiLCJpbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9uIiwib3B0aW9uIiwiaW5wdXQiLCJmaWx0ZXJPcHRpb25zIiwiaG91ciIsImlzVmFsaWRIb3VyIiwiY29tcCIsImNvbmNhdCIsImNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSIsInRhYlNlbGVjdHNWYWx1ZSIsInBsYWNlaG9sZGVyIiwiZSIsInRhcmdldCIsInNlbGVjdCIsIm9uQmx1ciIsIm9uS2V5RG93biIsImluY2x1ZGVzIiwia2V5IiwiaXNTZWFyY2hhYmxlIiwiY3NzIiwicmVmIiwiaW5zZXJ0QXQiLCJkb2N1bWVudCIsImhlYWQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN0eWxlIiwidHlwZSIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmRDaGlsZCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImFycmF5T2YiLCJzdHJpbmciLCJub2RlIiwiYm9vbCIsImRlZmF1bHRQcm9wcyIsInRyYW5zbGF0aW9ucyIsImRlIiwidG9kYXkiLCJ0b21vcnJvdyIsImFycml2YWwiLCJkYXRlIiwiZGVwYXJ0dXJlIiwicmVhZHkiLCJjYW5jZWwiLCJlbiIsImZpIiwic3YiLCJNb2JpbGVEYXRlcGlja2VyIiwiaXRlbUNvdW50Iiwic3RhcnRUaW1lIiwib3BlbiIsImNoYW5nZU9wZW4iLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJkYXRlQ2hvaWNlcyIsIkFycmF5IiwiZmlsbCIsIl8iLCJpIiwiYWRkIiwic2Nyb2xsSW5kZXgiLCJmaW5kSW5kZXgiLCJ1c2VMYXlvdXRFZmZlY3QiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwibmF0aXZlSW5wdXQiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJ0b0xvd2VyQ2FzZSIsImluZGV4T2YiLCJBdXRvc3VnZ2VzdCIsInN1Z2dlc3Rpb25zIiwiZ2V0U3VnZ2VzdGlvblZhbHVlIiwicyIsInJlbmRlclN1Z2dlc3Rpb24iLCJvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQiLCJzaG91bGRSZW5kZXJTdWdnZXN0aW9ucyIsImlucHV0UHJvcHMiLCJyZWFkT25seSIsImZvY3VzSW5wdXRPblN1Z2dlc3Rpb25DbGljayIsIm9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZCIsInJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyIiwiY29udGFpbmVyUHJvcHMiLCJjaGlsZHJlbiIsIm90aGVyUmVmcyIsInNvdXJjZSIsImV4Y2x1ZGVkIiwic291cmNlS2V5cyIsIk9iamVjdCIsImtleXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsIl9leGNsdWRlZCIsImFzc2lnbiIsInRhYkluZGV4IiwiZWxlbSIsInRoZW1lIiwiTW9iaWxlVGltZXBpY2tlciIsImNoYW5nZUlucHV0VmFsdWUiLCJ0aW1lSW5wdXRSZWYiLCJmb2N1cyIsImlucHV0TW9kZSIsIm1heExlbmd0aCIsInNldFNlbGVjdGlvblJhbmdlIiwiZXZlbnQiLCJtYXRjaCIsImNoYXJBdCIsImFjdHVhbCIsInRpbWVzdGFtcCIsIk1vYmlsZVBpY2tlck1vZGFsIiwiZGVwYXJ0dXJlT3JBcnJpdmFsIiwib25Ob3dDbGljayIsImxhbmciLCJjb2xvciIsIm9uU3VibWl0Iiwib25DYW5jZWwiLCJnZXRUaW1lRGlzcGxheSIsImRhdGVTZWxlY3RJdGVtQ291bnQiLCJnZXREYXRlRGlzcGxheSIsInZhbGlkYXRlVGltZSIsImZvbnRXZWlnaHRzIiwidHJhbnNsYXRpb25TZXR0aW5ncyIsImxuZyIsImRpc3BsYXlUaW1lc3RhbXAiLCJjaGFuZ2VUaW1lc3RhbXAiLCJkZXBhcnR1cmVPckFycml2YWxDdXJyZW50IiwiY2hhbmdlRGVwYXJ0dXJlT3JBcnJpdmFsIiwiaHRtbElkIiwidW5pcXVlSWQiLCJkYXRlU2VsZWN0U3RhcnRUaW1lIiwic3RhcnRPZiIsIm1pbnV0ZSIsIk1vZGFsIiwiYXBwRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJpc09wZW4iLCJvdmVybGF5Q2xhc3NOYW1lIiwibWVkaXVtIiwiaTE4bmV4dCIsIm9uQ2xpY2siLCJuYW1lIiwiY2hlY2tlZCIsIkljb24iLCJpbWciLCJEYXRldGltZXBpY2tlciIsIm9uVGltZUNoYW5nZSIsIm9uRGF0ZUNoYW5nZSIsIm9uRGVwYXJ0dXJlQ2xpY2siLCJvbkFycml2YWxDbGljayIsImVtYmVkV2hlbkNsb3NlZCIsImVtYmVkV2hlbk9wZW4iLCJvbk1vZGFsU3VibWl0Iiwic2VydmljZVRpbWVSYW5nZSIsIm9uT3BlbiIsIm9uQ2xvc2UiLCJvcGVuUGlja2VyIiwiY2hhbmdlRGlzcGxheVRpbWVzdGFtcCIsInRpbWVySWQiLCJzZXRUaW1lciIsInVzZU1vYmlsZUlucHV0cyIsInZlbmRvciIsIndpbmRvdyIsIm9wZXJhIiwiaXNNb2JpbGUiLCJkYXRlVGltZUlucHV0SXNTdXBwb3J0ZWQiLCJvcGVuUGlja2VyUmVmIiwiaW5wdXRSZWYiLCJhbGVydFJlZiIsImZvckVhY2giLCJsYW5ndWFnZSIsImFkZFJlc291cmNlQnVuZGxlIiwibG9jYWxlIiwibm93U2VsZWN0ZWQiLCJjbGVhckludGVydmFsIiwibmV3SWQiLCJzZXRJbnRlcnZhbCIsIm5vdyIsImlzU2FtZSIsInByZXZJc09wZW5SZWYiLCJmb3JtYXR0ZWQiLCJmb3JtYXQiLCJ0b1VwcGVyQ2FzZSIsImN1cnJlbnRUaW1lc3RhbXAiLCJ0cmltbWVkIiwidHJpbSIsInNwbGl0dGVyIiwidmFsdWVzIiwiaG91cnMiLCJob3Vyc1ZhbGlkIiwibWludXRlcyIsInNlbGVjdGVkTW9tZW50IiwidGltZVNlbGVjdFN0YXJ0VGltZSIsInB1c2giLCJmaXZlTWludXRlcyIsIm5leHRGaXZlTWluIiwiY2VpbCIsInRpbWVzVG9BZGQiLCJjbG9zZXN0SW5kZXhBZnRlciIsInNwbGljZSIsImZyb20iLCJTZXQiLCJzaG93U2NyZWVucmVhZGVyQ2xvc2VBbGVydCIsImlubmVySFRNTCIsInNldFRpbWVvdXQiLCJoaWRkZW4iLCJjbG9zZWQiLCJyb2xlIiwidGV4dGJ1dHRvbiIsImFjdGl2ZSIsIm5ld1RpbWVzdGFtcCIsIm5ld0RlcGFydHVyZU9yQXJyaXZhbCIsIkRhdGV0aW1lcGlja2VyU3RhdGVDb250YWluZXIiLCJyZWFsdGltZSIsImluaXRpYWxBcnJpdmVCeSIsImluaXRpYWxUaW1lc3RhbXAiLCJpbml0aWFsTm93IiwiY2hhbmdlVGltZXN0YW1wU3RhdGUiLCJib3RoTnVsbCIsIm9uZU51bGwiLCJzYW1lVGltZSIsInJvdW5kIiwidGltZUNoYW5nZWQiLCJkZWJvdW5jZSIsIm5ld1RpbWUiLCJkYXRlQ2hhbmdlZCIsIm5ld0RhdGUiLCJub3dDbGlja2VkIiwiZGVwYXJ0dXJlQ2xpY2tlZCIsImNoYW5nZWQiLCJhcnJpdmFsQ2xpY2tlZCIsIm1vZGUiLCJkYXRlVGltZUNvbWJpbmVkIiwiaW5pdCIsInJlc291cmNlcyIsIm9uZU9mIiwic2hhcGUiLCJmYWxsYmFja0xuZyIsImRlZmF1bHROUyIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSJdLCJtYXBwaW5ncyI6Ijhq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