@digitransit-component/digitransit-component-autosuggest-panel 1.5.5 → 2.0.5
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.
- package/README.md +5 -4
- package/lib/index.development.js +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -81,10 +81,9 @@ const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are
|
|
|
81
81
|
destination={destination} // Selected destination point
|
|
82
82
|
originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field
|
|
83
83
|
destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
swapOrder={() => return null} // Optional. If showMultiPointControls is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.
|
|
84
|
+
initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.
|
|
85
|
+
updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.
|
|
86
|
+
swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.
|
|
88
87
|
searchContext={searchContext}
|
|
89
88
|
getAutoSuggestIcons={getAutoSuggestIcons}
|
|
90
89
|
onSelect={this.onSelect}
|
|
@@ -98,6 +97,8 @@ const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are
|
|
|
98
97
|
originMobileLabel="Origin label" // Optional. Custom label text for origin field on mobile.
|
|
99
98
|
destinationMobileLabel="Destination label" // Optional. Custom label text for destination field on mobile.
|
|
100
99
|
handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour
|
|
100
|
+
showSwapControl={false} // Optional.
|
|
101
|
+
showViapointControl={false} // Optional.
|
|
101
102
|
```
|
|
102
103
|
|
|
103
104
|
<!-- This file is automatically generated. Please don't edit it directly:
|
package/lib/index.development.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,a,s,r,l,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=p(t),d=p(n),_=p(i),f=p(a),g=p(s),y=p(r),v=p(l),m=p(c);function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function b(e,t){if(e){if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}function x(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||b(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function S(e,t){return S=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},S(e,t)}function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function E(e,t){return!t||"object"!==w(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}function C(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function N(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],i=!0,o=!1,a=void 0;try{for(var s,r=e[Symbol.iterator]();!(i=(s=r.next()).done)&&(n.push(s.value),!t||n.length!==t);i=!0);}catch(e){o=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(o)throw a}}return n}}(e,t)||b(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var A={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};O(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #F4F4F5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\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: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");var R=["ref"],M=function(e){var t=e.value,n=e.getDisplay,o=e.options,a=e.onSlackTimeSelected,s=e.viaPointIndex,r=e.id,l=e.label,c=e.icon,p=N(i.useState(n(t)),2),u=p[0],d=p[1],f=N(i.useState(!1),2),g=f[0],y=f[1];i.useEffect((function(){return d(n(t))}),[t]);var v=i.useRef(null),h=Math.floor(t/600);i.useLayoutEffect((function(){g&&v.current&&(v.current.scrollTop=50*h)}),[t,g]);var b="".concat(r,"-input"),x="".concat(r,"-label");return _.default.createElement(_.default.Fragment,null,_.default.createElement("label",{className:A["combobox-container"],htmlFor:b},_.default.createElement("span",{className:A["left-column"]},_.default.createElement("span",{className:A["combobox-label"],id:x},l),_.default.createElement(m.default,{id:r,suggestions:o,getSuggestionValue:function(e){return e.value},renderSuggestion:function(e){return e.displayName},onSuggestionsFetchRequested:function(){return null},shouldRenderSuggestions:function(){return!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:function(){return null},inputProps:{value:u,onChange:function(e,n){var i=n.newValue;switch(n.method){case"enter":case"click":a(i,s);break;case"escape":d(t)}},onFocus:function(){y(!0)},onBlur:function(){y(!1)},id:b,"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:function(e){var t=e.containerProps,n=e.children,i=t.ref,o=C(t,R);return _.default.createElement("div",Object.assign({tabIndex:"-1"},o,{ref:function(e){e&&(v.current=e,i(e))}}),n)},theme:A})),c))};"production"!==process.env.NODE_ENV&&(M.propTypes={value:d.default.number.isRequired,onSlackTimeSelected:d.default.func.isRequired,getDisplay:d.default.func.isRequired,options:d.default.arrayOf(d.default.shape({displayName:d.default.string.isRequired,value:d.default.number.isRequired}).isRequired).isRequired,id:d.default.string.isRequired,label:d.default.node.isRequired,icon:d.default.node.isRequired,viaPointIndex:d.default.number.isRequired});var V={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}},j={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};O("/* stylelint-disable */\n.styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #dddddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");var I=["children","className","enabled","onClick","onKeyPress"];function F(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=P(e);if(t){var o=P(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return E(this,n)}}f.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});var L=function(){return{}},K=function(e){if(void 0===e||v.default(e))return!0;var t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},T=function(e){var t=e.children,n=e.className,i=e.enabled,o=e.onClick,a=e.onKeyPress,s=C(e,I);return i&&o&&_.default.createElement("div",{className:j["itinerary-search-control"]},_.default.createElement("div",Object.assign({},s,{className:n,onClick:o,onKeyPress:a,role:"button",tabIndex:"0"}),t))};"production"!==process.env.NODE_ENV&&(T.propTypes={children:d.default.node,className:d.default.string.isRequired,enabled:d.default.bool.isRequired,onClick:d.default.func.isRequired,onKeyPress:d.default.func.isRequired});var Z=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&S(e,t)}(s,e);var t,n,i,a=F(s);function s(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),(t=a.call(this,e)).componentDidMount=function(){f.default.changeLanguage(t.props.lang)},t.componentDidUpdate=function(){f.default.language!==t.props.lang&&f.default.changeLanguage(t.props.lang)},t.getSlackTimeOptions=function(){for(var e=[],t=0;t<=9;t++){var n=10*t;e.push({displayName:"".concat(n," ").concat(f.default.t("minute-short")),value:60*n})}return e},t.setDraggableViaPointRef=function(e,n){t.draggableViaPoints[n]=e},t.storeReference=function(e){t.setState((function(t){return{refs:[].concat(x(t.refs),[e])}}))},t.handleFocusChange=function(){var e=t.props.destination;e&&e.set||t.state.refs[1].focus()},t.isKeyboardSelectionEvent=function(e){var t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},t.value=function(e){return e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||""},t.class=function(e){return e&&!0===e.gps?"position":"location"},t.updateViaPoints=function(e){0!==e.length?t.props.updateViaPoints(e.filter((function(e){return!K(e)}))):t.props.updateViaPoints([])},t.updateViaPointSlack=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((function(e){return e>t?e-1:e})):e},t.handleToggleViaPointSlackClick=function(e){var n=t.state.activeSlackInputs;t.setState({activeSlackInputs:n.includes(e)?t.updateViaPointSlack(n,e):n.concat([e])})},t.handleViaPointSlackTimeSelected=function(e,n){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});var i=t.props.viaPoints;i[n].locationSlack=Number.parseInt(e,10),t.updateViaPoints(i)},t.handleViaPointLocationSelected=function(e,n){t.props.handleViaPointLocationSelected(e,n)},t.handleRemoveViaPointClick=function(e){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});var n=t.state.activeSlackInputs,i=t.props.viaPoints;i.splice(e,1),t.setState({activeSlackInputs:t.updateViaPointSlack(n,e,!0)},(function(){return t.updateViaPoints(i)}))},t.handleAddViaPointClick=function(){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"}),t.props.viaPoints.push({}),t.setState(t.state)},t.handleSwapOrderClick=function(){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null}),t.props.viaPoints.reverse(),t.props.swapOrder()},t.getSlackDisplay=function(e){return"".concat(e/60," ").concat(f.default.t("minute-short"))},t.render=function(){var e=t.props,n=e.showMultiPointControls,i=e.origin,a=e.searchPanelText,s=e.searchContext,r=e.disableAutoFocus,l=e.viaPoints,c=e.originMobileLabel,p=e.destinationMobileLabel,d=e.fontWeights,v=e.onFocusChange,m=t.state.activeSlackInputs,h=t.getSlackTimeOptions(),b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e&&e.locationSlack||t},x=function(e){return m.includes(e)};return _.default.createElement("div",{className:u.default(j["autosuggest-panel"],t.props.isMobile&&"small",n&&"showMultiPointControls"),style:{"--color":"".concat(t.props.color),"--font-weight-medium":d.medium}}," ",a?_.default.createElement("div",null,_.default.createElement("h1",{className:j["autosuggest-searchpanel-text"]}," ",a)):null,_.default.createElement("div",{className:j["origin-input-container"]},_.default.createElement(g.default,{appElement:t.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==r&&(!t.props.isMobile&&!i.lat),storeRef:t.storeReference,refPoint:t.props.refPoint,className:t.class(i),placeholder:t.props.originPlaceHolder,value:t.value(i),searchContext:s,getAutoSuggestIcons:t.props.getAutoSuggestIcons,onSelect:t.props.onSelect,onClear:t.props.onClear,focusChange:v||t.handleFocusChange,lang:t.props.lang,sources:t.props.sources,targets:t.props.targets,filterResults:t.props.filterResults,isMobile:t.props.isMobile,color:t.props.color,hoverColor:t.props.hoverColor,mobileLabel:c,fontWeights:t.props.fontWeights,modeSet:t.props.modeSet,modeIconColors:t.props.modeIconColors,showScroll:t.props.showScroll,isEmbedded:t.props.isEmbedded}),_.default.createElement(T,{className:j.opposite,enabled:n,onClick:function(){return t.handleSwapOrderClick()},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleSwapOrderClick()},"aria-label":f.default.t("swap-order-button-label")},_.default.createElement(y.default,{img:"opposite",color:t.props.color}))),0===l.length&&_.default.createElement("div",{className:j["rectangle-container"]},_.default.createElement("div",{className:j.rectangle})),_.default.createElement(o.ReactSortable,{className:j["viapoints-container"],list:l,handle:".".concat(j["viapoint-before"]),animation:200,setList:function(e){var n=e.filter((function(e){return!K(e)}));n.length>0&&t.props.updateViaPoints(n)}},l.map((function(e,i){return _.default.createElement("div",{className:u.default(j["viapoint-container"]),key:"viapoint-".concat(i)},_.default.createElement("div",{className:j["light-gray-background"]},_.default.createElement("div",{className:j.row},_.default.createElement("div",{className:j["viapoint-before"],style:{cursor:"move"}},_.default.createElement(y.default,{img:"ellipsis",rotate:90,color:t.props.color})),_.default.createElement("div",{className:"".concat(j["viapoint-input-container"]," ").concat(j["viapoint-".concat(i+1)])},_.default.createElement(g.default,{appElement:t.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:f.default.t("via-point-index",{index:i+1}),autoFocus:!0!==r&&!t.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:s,refPoint:t.props.refPoint,value:e&&e.address||"",onSelect:t.props.onSelect,onClear:t.props.onClear,handleViaPoints:function(e){return t.handleViaPointLocationSelected(e,i)},lang:t.props.lang,sources:t.props.sources,targets:t.props.targets,filterResults:t.props.filterResults,getAutoSuggestIcons:t.props.getAutoSuggestIcons,isMobile:t.props.isMobile,color:t.props.color,hoverColor:t.props.hoverColor,fontWeights:t.props.fontWeights,modeSet:t.props.modeSet,modeIconColors:t.props.modeIconColors,showScroll:t.props.showScroll})),_.default.createElement(T,{className:j["add-via-point-slack"],enabled:n,onClick:function(){return t.handleToggleViaPointSlackClick(i)},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleToggleViaPointSlackClick(i)},"aria-label":f.default.t(x(i)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:i+1})},_.default.createElement(y.default,{img:"time",color:t.props.color}))),!x(i)&&l[i]&&l[i].locationSlack>0&&_.default.createElement("span",{className:j["viapoint-slack-time"]},"".concat(f.default.t("viapoint-slack-amount"),": ").concat(t.getSlackDisplay(l[i].locationSlack))),_.default.createElement("div",{className:u.default(j["input-viapoint-slack-container"],!x(i)&&"collapsed")},_.default.createElement("div",{className:j["select-wrapper"]},_.default.createElement(M,{id:"viapoint-slack-".concat(i),label:f.default.t("viapoint-slack-amount"),options:h,value:b(l[i]),getDisplay:t.getSlackDisplay,viaPointIndex:i,icon:_.default.createElement("span",{className:"".concat(j["combobox-icon"]," ").concat(j["time-input-icon"])},_.default.createElement(y.default,{img:"time",color:t.props.color})),onSlackTimeSelected:t.handleViaPointSlackTimeSelected})))),_.default.createElement(T,{className:j["remove-via-point"],enabled:n,onClick:function(){return t.handleRemoveViaPointClick(i)},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleRemoveViaPointClick(i)},"aria-label":f.default.t("remove-via-button-label",{index:i+1})},_.default.createElement(y.default,{img:"close",color:t.props.color})))}))),_.default.createElement("div",{className:j["destination-input-container"]},_.default.createElement(g.default,{appElement:t.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==r&&(!t.props.isMobile&&!Number.isNaN(i.lat)),storeRef:t.storeReference,placeholder:t.props.destinationPlaceHolder,className:t.class(t.props.destination),getAutoSuggestIcons:t.props.getAutoSuggestIcons,searchContext:s,onSelect:t.props.onSelect,onClear:t.props.onClear,refPoint:t.props.refPoint,value:t.value(t.props.destination),lang:t.props.lang,sources:t.props.sources,targets:t.props.targets,filterResults:t.props.filterResults,isMobile:t.props.isMobile,color:t.props.color,hoverColor:t.props.hoverColor,mobileLabel:p,fontWeights:t.props.fontWeights,modeSet:t.props.modeSet,modeIconColors:t.props.modeIconColors,showScroll:t.props.showScroll,isEmbedded:t.props.isEmbedded}),n&&_.default.createElement(T,{className:u.default(j["add-via-point"],j.more,l.length>4&&"collapsed"),enabled:n,onClick:function(){return t.handleAddViaPointClick()},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleAddViaPointClick()},"aria-label":f.default.t("add-via-button-label")},_.default.createElement(y.default,{img:"viapoint",width:1.25,height:1.375,color:t.props.color}))))},t.draggableViaPoints=[],t.state={activeSlackInputs:[],refs:[]},Object.keys(V).forEach((function(e){f.default.addResourceBundle(e,"translation",V[e])})),t}return t=s,n&&k(t.prototype,n),i&&k(t,i),t}(_.default.Component);Z.defaultProps={viaPoints:[],showMultiPointControls:!1,originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:function(){},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1},"production"!==process.env.NODE_ENV&&(Z.propTypes={appElement:d.default.string.isRequired,origin:d.default.object.isRequired,destination:d.default.object.isRequired,showMultiPointControls:d.default.bool,originPlaceHolder:d.default.string,destinationPlaceHolder:d.default.string,viaPoints:d.default.arrayOf(d.default.object),updateViaPoints:d.default.func,handleViaPointLocationSelected:d.default.func,swapOrder:d.default.func,searchPanelText:d.default.string,searchContext:d.default.any.isRequired,onSelect:d.default.func,onClear:d.default.func,addAnalyticsEvent:d.default.func,lang:d.default.string,disableAutoFocus:d.default.bool,sources:d.default.arrayOf(d.default.string),targets:d.default.arrayOf(d.default.string),filterResults:d.default.func,isMobile:d.default.bool,color:d.default.string,hoverColor:d.default.string,originMobileLabel:d.default.string,destinationMobileLabel:d.default.string,refPoint:d.default.object,modeSet:d.default.string,modeIconColors:d.default.object,getAutoSuggestIcons:d.default.object,fontWeights:d.default.shape({medium:d.default.number}),showScroll:d.default.bool,onFocusChange:d.default.func,isEmbedded:d.default.bool}),e.default=Z,e.getEmptyViaPointPlaceHolder=L,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aG91dEhvbGVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVNwcmVhZC5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aEhvbGVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlUmVzdC5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1pbmplY3QvZGlzdC9zdHlsZS1pbmplY3QuZXMuanMiLCIuLi9zcmMvaGVscGVycy9TZWxlY3QuanMiLCIuLi9zcmMvaGVscGVycy90cmFuc2xhdGlvbnMuanMiLCIuLi9zcmMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufSIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXlcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59IiwiaW1wb3J0IGFycmF5V2l0aG91dEhvbGVzIGZyb20gXCIuL2FycmF5V2l0aG91dEhvbGVzXCI7XG5pbXBvcnQgaXRlcmFibGVUb0FycmF5IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheVwiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5XCI7XG5pbXBvcnQgbm9uSXRlcmFibGVTcHJlYWQgZnJvbSBcIi4vbm9uSXRlcmFibGVTcHJlYWRcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5KGFycikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufSIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXlcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkoYXJyKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChpdGVyKSkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn0iLCJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuXG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikge1xuICAgIF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuLi8uLi9oZWxwZXJzL2VzbS90eXBlb2ZcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH1cblxuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikge1xuICBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIHNlbGY7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufSIsImltcG9ydCBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTtcbiAgdmFyIGtleSwgaTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07XG4gICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdFwiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5XCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdFwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjtcbiAgdmFyIF9hcnIgPSBbXTtcbiAgdmFyIF9uID0gdHJ1ZTtcbiAgdmFyIF9kID0gZmFsc2U7XG4gIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuICB0cnkge1xuICAgIGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cbiAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9kID0gdHJ1ZTtcbiAgICBfZSA9IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoX2QpIHRocm93IF9lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfYXJyO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59IiwiZnVuY3Rpb24gc3R5bGVJbmplY3QoY3NzLCByZWYpIHtcbiAgaWYgKCByZWYgPT09IHZvaWQgMCApIHJlZiA9IHt9O1xuICB2YXIgaW5zZXJ0QXQgPSByZWYuaW5zZXJ0QXQ7XG5cbiAgaWYgKCFjc3MgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm47IH1cblxuICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG5cbiAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgIGlmIChoZWFkLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBoZWFkLmZpcnN0Q2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsZUluamVjdDtcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXV0b3N1Z2dlc3QgZnJvbSAncmVhY3QtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3NlbGVjdC5zY3NzJztcblxuY29uc3QgU2VsZWN0ID0gKHtcbiAgdmFsdWUsXG4gIGdldERpc3BsYXksXG4gIG9wdGlvbnMsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQsXG4gIHZpYVBvaW50SW5kZXgsXG4gIGlkLFxuICBsYWJlbCxcbiAgaWNvbixcbn0pID0+IHtcbiAgY29uc3QgW2Rpc3BsYXlWYWx1ZSwgY2hhbmdlRGlzcGxheVZhbHVlXSA9IHVzZVN0YXRlKGdldERpc3BsYXkodmFsdWUpKTtcbiAgY29uc3QgW29wZW4sIGNoYW5nZU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4gY2hhbmdlRGlzcGxheVZhbHVlKGdldERpc3BsYXkodmFsdWUpKSwgW3ZhbHVlXSk7XG4gIGNvbnN0IHNjcm9sbFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2Nyb2xsSW5kZXggPSBNYXRoLmZsb29yKHZhbHVlIC8gNjAwKTtcbiAgY29uc3QgZWxlbWVudEhlaWdodCA9IDUwO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcGVuICYmIHNjcm9sbFJlZi5jdXJyZW50KSB7XG4gICAgICBzY3JvbGxSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBlbGVtZW50SGVpZ2h0ICogc2Nyb2xsSW5kZXg7XG4gICAgfVxuICB9LCBbdmFsdWUsIG9wZW5dKTtcblxuICBjb25zdCBpbnB1dElkID0gYCR7aWR9LWlucHV0YDtcbiAgY29uc3QgbGFiZWxJZCA9IGAke2lkfS1sYWJlbGA7XG5cbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9IChfLCB7IG5ld1ZhbHVlLCBtZXRob2QgfSkgPT4ge1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdlbnRlcic6XG4gICAgICBjYXNlICdjbGljayc6XG4gICAgICAgIG9uU2xhY2tUaW1lU2VsZWN0ZWQobmV3VmFsdWUsIHZpYVBvaW50SW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgIGNoYW5nZURpc3BsYXlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXAnOlxuICAgICAgY2FzZSAnZG93bic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snbGVmdC1jb2x1bW4nXX0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWxhYmVsJ119IGlkPXtsYWJlbElkfT5cbiAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPEF1dG9zdWdnZXN0XG4gICAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgIGdldFN1Z2dlc3Rpb25WYWx1ZT17cyA9PiBzLnZhbHVlfVxuICAgICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbj17cyA9PiBzLmRpc3BsYXlOYW1lfVxuICAgICAgICAgICAgb25TdWdnZXN0aW9uc0ZldGNoUmVxdWVzdGVkPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgc2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnM9eygpID0+IHRydWV9XG4gICAgICAgICAgICBmb2N1c0lucHV0T25TdWdnZXN0aW9uQ2xpY2s9e2ZhbHNlfVxuICAgICAgICAgICAgb25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkPXsoKSA9PiBudWxsfVxuICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICB2YWx1ZTogZGlzcGxheVZhbHVlLFxuICAgICAgICAgICAgICBvbkNoYW5nZTogb25JbnB1dENoYW5nZSxcbiAgICAgICAgICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uQmx1cjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBpZDogaW5wdXRJZCxcbiAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWQsXG4gICAgICAgICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdub25lJyxcbiAgICAgICAgICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXI9eyh7IGNvbnRhaW5lclByb3BzLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICAgIC8vIHNldCByZWZzIGZvciBhdXRvc3VnZ2VzdCBsaWJyYXJ5IGFuZCBzY3JvbGxiYXIgcG9zaXRpb25pbmdcbiAgICAgICAgICAgICAgY29uc3QgeyByZWYsIC4uLm90aGVyUmVmcyB9ID0gY29udGFpbmVyUHJvcHM7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGVsZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtKSB7XG4gICAgICAgICAgICAgICAgICBzY3JvbGxSZWYuY3VycmVudCA9IGVsZW07XG4gICAgICAgICAgICAgICAgICByZWYoZWxlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXYgdGFiSW5kZXg9XCItMVwiIHsuLi5vdGhlclJlZnN9IHJlZj17Y29udGFpbmVyUmVmfT5cbiAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB0aGVtZT17c3R5bGVzfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2ljb259XG4gICAgICA8L2xhYmVsPlxuICAgIDwvPlxuICApO1xufTtcblxuU2VsZWN0LnByb3BUeXBlcyA9IHtcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgb25TbGFja1RpbWVTZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgZ2V0RGlzcGxheTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGRpc3BsYXlOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIH0pLmlzUmVxdWlyZWQsXG4gICkuaXNSZXF1aXJlZCxcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgbGFiZWw6IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIHZpYVBvaW50SW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlbGVjdDtcbiIsImNvbnN0IHRyYW5zbGF0aW9ucyA9IHtcbiAgZGU6IHtcbiAgICAnYWRkLXZpYS1idXR0b24tbGFiZWwnOiAnRsO8Z2UgWndpc2NoZW56aWVsIGhpbnp1JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgJ1NldHplIFVtc3RlaWdlemVpdCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAnU2NobGllw59lIFVtc3RlaWdlemVpdC1BdXN3YWhsIGbDvHIgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgJ8OWZmZuZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnRW50ZmVybmUgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ1RhdXNjaGUgU3RhcnQgbWl0IFppZWwnLFxuICAgICd2aWEtcG9pbnQnOiAnWndpc2NoZW56aWVsJyxcbiAgICAndmlhLXBvaW50LWluZGV4JzogJ1p3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnOiAnVW1zdGVpZ2V6ZWl0JyxcbiAgfSxcbiAgZW46IHtcbiAgICAnYWRkLXZpYS1idXR0b24tbGFiZWwnOiAnQWRkIHZpYSBwb2ludCcsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzogJ1NldCBzdG9wIGR1cmF0aW9uIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAnQ2xvc2Ugc3RvcCBkdXJhdGlvbiBzZWxlY3RvciBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnT3BlbiBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUmVtb3ZlIHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdSZXZlcnNlIG9yaWdpbiBhbmQgZGVzdGluYXRpb24nLFxuICAgICd2aWEtcG9pbnQnOiAnVmlhIHBvaW50JyxcbiAgICAndmlhLXBvaW50LWluZGV4JzogJ1ZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnOiAnU3RvcCBkdXJhdGlvbicsXG4gIH0sXG4gIGZpOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0xpc8Okw6QgdsOkbGlwaXN0ZScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICdBc2V0YSB2w6RsaXBpc3RlZWxsZSB7e2luZGV4fX0gcHlzw6RoZHlrc2VuIGtlc3RvJyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ0F2YWEgdsOkbGlwaXN0ZWVuIHt7aW5kZXh9fSBweXPDpGhkeWtzZW4ga2VzdG8gdmFsaXRzaW4nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICdTdWxqZSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4nLFxuICAgICdyZW1vdmUtdmlhLWJ1dHRvbi1sYWJlbCc6ICdQb2lzdGEgdsOkbGlwaXN0ZSB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdLw6TDpG5uw6QgcmVpdGluIHN1dW50YSB2YXN0YWtrYWlzZWtzaScsXG4gICAgJ3ZpYS1wb2ludCc6ICdWw6RsaXBpc3RlJyxcbiAgICAndmlhLXBvaW50LWluZGV4JzogJ1bDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1B5c8OkaGR5a3NlbiBrZXN0bycsXG4gIH0sXG4gIHN2OiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0zDpGdnIHRpbGwgdmlhcHVua3QnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnU3TDpGxsIGluIHZhcmFrdGlnaGV0IGbDtnIgdmlhcHVua3RlbiB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAnU3TDpG5nIHbDpGxqYXJlbiBmw7ZyIHZhcmFrdGlnaGV0IHZpZCB2aWEtcHVua3RlbiB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICfDlnBwbmEgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4nLFxuICAgICdyZW1vdmUtdmlhLWJ1dHRvbi1sYWJlbCc6ICdUYSBib3J0IHZpYXB1bmt0IHt7aW5kZXh9fScsXG4gICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ1N2w6RuZyBydXR0ZW5zIHJpa3RuaW5nIHRpbGwgZGVuIG1vdHNhdHRhJyxcbiAgICAndmlhLXBvaW50JzogJ1ZpYSBwdW5rdCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcHVua3Qge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3BwZXRzIHZhcmFrdGlnaGV0JyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zbGF0aW9ucztcbiIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWFjdFNvcnRhYmxlIH0gZnJvbSAncmVhY3Qtc29ydGFibGVqcyc7XG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcbmltcG9ydCBEVEF1dG9TdWdnZXN0IGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWF1dG9zdWdnZXN0JztcbmltcG9ydCBJY29uIGZyb20gJ0BkaWdpdHJhbnNpdC1jb21wb25lbnQvZGlnaXRyYW5zaXQtY29tcG9uZW50LWljb24nO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IFNlbGVjdCBmcm9tICcuL2hlbHBlcnMvU2VsZWN0JztcbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi9oZWxwZXJzL3RyYW5zbGF0aW9ucyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vaGVscGVycy9zdHlsZXMuc2Nzcyc7XG5cbmkxOG5leHQuaW5pdCh7XG4gIGxuZzogJ2ZpJyxcbiAgZmFsbGJhY2tMbmc6ICdmaScsXG4gIGRlZmF1bHROUzogJ3RyYW5zbGF0aW9uJyxcbiAgaW50ZXJwb2xhdGlvbjoge1xuICAgIGVzY2FwZVZhbHVlOiBmYWxzZSwgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlciA9ICgpID0+ICh7fSk7XG5cbmNvbnN0IGlzVmlhUG9pbnRFbXB0eSA9IHZpYVBvaW50ID0+IHtcbiAgaWYgKHZpYVBvaW50ID09PSB1bmRlZmluZWQgfHwgaXNFbXB0eSh2aWFQb2ludCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmlhUG9pbnQpO1xuICByZXR1cm4gKFxuICAgIGtleXMubGVuZ3RoID09PSAxIHx8IChrZXlzLmxlbmd0aCA9PT0gMiAmJiBrZXlzLmluY2x1ZGVzKCdsb2NhdGlvblNsYWNrJykpXG4gICk7XG59O1xuXG5jb25zdCBJdGluZXJhcnlTZWFyY2hDb250cm9sID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgZW5hYmxlZCxcbiAgb25DbGljayxcbiAgb25LZXlQcmVzcyxcbiAgLi4ucmVzdFxufSkgPT5cbiAgZW5hYmxlZCAmJlxuICBvbkNsaWNrICYmIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpdGluZXJhcnktc2VhcmNoLWNvbnRyb2wnXX0+XG4gICAgICA8ZGl2XG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgb25LZXlQcmVzcz17b25LZXlQcmVzc31cbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PVwiMFwiXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xuXG5JdGluZXJhcnlTZWFyY2hDb250cm9sLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZW5hYmxlZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25LZXlQcmVzczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbi8qKlxuICogUGFuZWwgdGhhdCByZW5kZXJzIHR3byBEVEF1dG9zdWdnZXN0IHNlYXJjaCBmaWVsZHMsIGluY2x1ZGluZyB2aWFwb2ludCBoYW5kbGluZ1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzZWFyY2hDb250ZXh0ID0ge1xuICogICBpc1BlbGlhc0xvY2F0aW9uQXdhcmU6IGZhbHNlIC8vIHRydWUgLyBmYWxzZSBkb2VzIExldCBQZWxpYXMgc3VnZ2VzdCBiYXNlZCBvbiBjdXJyZW50IHVzZXIgbG9jYXRpb25cbiAqICAgbWluaW1hbFJlZ2V4cDogdW5kZWZpbmVkIC8vIHVzZWQgZm9yIHRlc3RpbmcgbWluLiByZWdleHAuIEZvciBleGFtcGxlOiBuZXcgUmVnRXhwKCcuezIsfScpLFxuICogICBsaW5lUmVnZXhwOiB1bmRlZmluZWQgLy8gIGlkZW50aWZ5IHNlYXJjaGVzIGZvciByb3V0ZSBudW1iZXJzL2xhYmVsczogYnVzIHwgdHJhaW4gfCBtZXRyby4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoXG4gKiAgICAvLyAgICcoXlswLTldK1thLXpdPyR8Xlt5dWxlYXBpbmtydGR6XSR8KF5tWzEyXT9iPyQpKScsXG4gKiAgICAvLyAgJ2knLFxuICogICAgLy8gICksXG4gKiAgIFVSTF9QRUxJQVM6ICcnIC8vIHVybCBmb3IgcGVsaWFzIHNlYXJjaGVzXG4gKiAgIGZlZWRJRHM6IFsnSFNMJywgJ0hTTExhdXR0YSddIC8vIEZlZWRJZCdzIGxpa2UgIFtIU0wsIEhTTExhdXR0YV1cbiAqICAgZ2VvY29kaW5nU291cmNlczogWydvYScsJ29zbScsJ25sc2ZpJ10gIC8vIHNvdXJjZXMgZm9yIGdlb2NvZGluZ1xuICogICBnZW9jb2RpbmdTZWFyY2hQYXJhbXM7IHt9ICAvLyBTZWFyY2hwYXJtYXMgZnJvIGdlb2NvZGluZ1xuICogICBnZXRGYXZvdXJpdGVMb2NhdGlvbnM6ICgpID0+ICh7fSksICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgbG9jYXRpb25zLlxuICogICBnZXRGYXZvdXJpdGVTdG9wczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgc3RvcHMuXG4gKiAgIGdldExhbmd1YWdlOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSByb3V0ZXMuXG4gKiAgIGdldFBvc2l0aW9uczogKCkgPT4gKHt9KSwgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHVzZXIncyBnZW9sb2NhdGlvbi5cbiAqICAgZ2V0Um91dGVzUXVlcnk6ICgpID0+ICh7fSksICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIHJvdXRlcy5cbiAqICAgZ2V0QWxsQmlrZVJlbnRhbFN0YXRpb25zOiAoKSA9PiAoe30pLCAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgYWxsIGJpa2UgcmVudGFsIHN0YXRpb25zIGZyb20gZ3JhcGhxbCBBUEkuXG4gKiAgIGdldFN0b3BBbmRTdGF0aW9uc1F1ZXJ5OiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCBmZXRjaGVzIGZhdm91cml0ZSBzdG9wcyBhbmQgc3RhdGlvbnMgZnJvbSBncmFwaHFsIEFQSS5cbiAqICAgZ2V0RmF2b3VyaXRlUm91dGVzUXVlcnk6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIGZhdm91cml0ZSByb3V0ZXMuXG4gKiAgIGdldEZhdm91cml0ZUJpa2VSZW50YWxTdGF0aW9uczogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBmYXZvdXJpdGUgYmlrZSByZW50YWwgc3RhdGlvbi5cbiAqICAgZ2V0RmF2b3VyaXRlQmlrZVJlbnRhbFN0YXRpb25zUXVlcnk6ICgpID0+ICh7fSksIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgZmF2b3VyaXRlIGJpa2UgcmVudGFsIHN0YXRpb25zLlxuICogICBzdGFydExvY2F0aW9uV2F0Y2g6ICgpID0+ICh7fSksICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgbG9jYXRlcyB1c2VycyBnZW9sb2NhdGlvbi5cbiAqICAgc2F2ZVNlYXJjaDogKCkgPT4gKHt9KSwgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHNhdmVzIHNlYXJjaCB0byBvbGQgc2VhcmNoZXMgc3RvcmUuXG4gKiAgIGNsZWFyT2xkU2VhcmNoZXM6ICgpID0+ICh7fSksICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBjbGVhcnMgb2xkIHNlYXJjaGVzIHN0b3JlLlxuICogICBnZXRGdXR1cmVSb3V0ZXM6ICgpID0+ICh7fSksICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJuIGZ1dHVyZSByb3V0ZXNcbiAqICAgc2F2ZUZ1dHVyZVJvdXRlOiAoKSA9PiAoe30pLCAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHNhdmVzIGEgZnV0dXJlIHJvdXRlXG4gKiAgIGNsZWFyRnV0dXJlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBjbGVhcnMgZnV0dXJlIHJvdXRlc1xuICogfTtcbiAqXG4gKiBjb25zdCBvcmlnaW4gPSB7XG4gKiAgbGF0OiA2MC4xNjkxOTYsXG4gKiAgbG9uOiAyNC45NTc2NzQsXG4gKiAgYWRkcmVzczogJ0FsZWtzYW50ZXJpbmthdHUsIEhlbHNpbmtpJyxcbiAqICBzZXQ6IHRydWUsXG4gKiAgcmVhZHk6IHRydWUsXG4gKiB9XG4gKlxuICogY29uc3QgZGVzdGluYXRpb24gPSB7XG4gKiAgIGxhdDogNjAuMTk5MDkzLFxuICogICBsb246IDI0Ljk0MDUzNixcbiAqICAgYWRkcmVzczogJ09wYXN0aW5zaWx0YSA2LCBIZWxzaW5raScsXG4gKiAgIHNldDogdHJ1ZSxcbiAqICAgcmVhZHk6IHRydWUsXG4gKiB9XG4gKiBvblNlbGVjdChpdGVtLCBpZCkge1xuICogIHJldHVybiBudWxsOyAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYmVpbmcgc2VsZWN0ZWQuIE5vbmUgYnkgZGVmYXVsdC5cbiAqICB9XG4gKiBvbkNsZWFyKGlkKSB7XG4gKiAgcmV0dXJuIG51bGw7ICAvLyBEZWZpbmUgd2hhdCB0byBkbyB3aGVuIGEgc3VnZ2VzdGlvbiBpcyBiZWluZyBzZWxlY3RlZC4gTm9uZSBieSBkZWZhdWx0LlxuICogfVxuICogY29uc3QgZ2V0QXV0b1N1Z2dlc3RJY29uczoge1xuICogICAvLyBDYWxsZWQgZm9yIGV2ZXJ5IGNpdHkgYmlrZSBzdGF0aW9uIHJlbmRlcmVkIGFzIGEgc2VhcmNoIHN1Z2dlc3Rpb24uIFNob3VsZCByZXR1cm4gdGhlIGljb24gYW5kXG4gKiAgIC8vIGNvbG9yIHVzZWQgZm9yIHRoYXQgc3RhdGlvbi4gVHdvIGljb25zIGFyZSBhdmFpbGFibGUsICdjaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0JyBhbmRpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQtc2Vjb25kYXJ5Jy5cbiAqICAgY2l0eWJpa2VzOiBzdGF0aW9uID0+IHtcbiAqICAgICAgcmV0dXJuIFsnY2l0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdCcsICcjZjJiNjJkJ107XG4gKiAgIH1cbiAqIH1cbiAqIGNvbnN0IHRhcmdldHMgPSBbJ0xvY2F0aW9ucycsICdTdG9wcycsICdSb3V0ZXMnXTsgLy8gRGVmaW5lcyB3aGF0IHlvdSBhcmUgc2VhcmNoaW5nLiBhbGwgYXZhaWxhYmxlIG9wdGlvbnMgYXJlIExvY2F0aW9ucywgU3RvcHMsIFJvdXRlcywgQmlrZVJlbnRhbFN0YXRpb25zLCBGdXR1cmVSb3V0ZXMsIE1hcFBvc2l0aW9uIGFuZCBDdXJyZW50UG9zaXRpb24uIExlYXZlIGVtcHR5IHRvIHNlYXJjaCBhbGwgdGFyZ2V0cy5cbiAqIGNvbnN0IHNvdXJjZXMgPSBbJ0Zhdm91cml0ZScsICdIaXN0b3J5JywgJ0RhdGFzb3VyY2UnXSAvLyBEZWZpbmVzIHdoZXJlIHlvdSBhcmUgc2VhcmNoaW5nLiBhbGwgYXZhaWxhYmxlIGFyZTogRmF2b3VyaXRlLCBIaXN0b3J5IChwcmV2aW91c2x5IHNlYXJjaGVkIHNlYXJjaGVzKSwgYW5kIERhdGFzb3VyY2UuIExlYXZlIGVtcHR5IHRvIHVzZSBhbGwgc291cmNlcy5cbiAqIDxEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIGFwcEVsZW1lbnQ9e2FwcEVsZW1lbnR9IC8vIFJlcXVpcmVkLiBSb290IGVsZW1lbnQncyBpZC4gTmVlZGVkIGZvciByZWFjdC1tb2RhbCBjb21wb25lbnQuXG4gKiAgICBvcmlnaW49e29yaWdpbn0gLy8gU2VsZWN0ZWQgb3JpZ2luIHBvaW50XG4gKiAgICBkZXN0aW5hdGlvbj17ZGVzdGluYXRpb259IC8vIFNlbGVjdGVkIGRlc3RpbmF0aW9uIHBvaW50XG4gKiAgICBvcmlnaW5QbGFjZUhvbGRlcj17J0dpdmUgb3JpZ2luJ30gLy8gT3B0aW9uYWwgR2l2ZSBzdHJpbmcgc2hvd24gaW5pdGlhbGx5IGluc2lkZSBvcmlnaW4gc2VhcmNoIGZpZWxkXG4gKiAgICBkZXN0aW5hdGlvblBsYWNlSG9sZGVyPXsnR2l2ZSBkZXN0aW5hdGlvbid9IC8vIE9wdGlvbmFsIEdpdmUgc3RyaW5nIHNob3duIGluaXRhbGx5IGluc2lkZSBkZXN0aW5hdGlvbiBzZWFyY2ggZmllbGRcbiAqICAgIHNob3dNdWx0aVBvaW50Q29udHJvbHM9e2ZhbHNlfSAvLyBPcHRpb25hbC4gSWYgdHJ1ZSwgY29udHJvbHMgZm9yIHZpYSBwb2ludHMgYW5kIHJldmVyc2luZyBpcyBiZWluZyBzaG93bi5cbiAqICAgIGluaXRpYWxWaWFQb2ludHM9e1tdfSAvLyBPcHRpb25hbC4gIElmIHNob3dNdWx0aVBvaW50Q29udHJvbHMgaXMgc2V0IHRvIHRydWUsIHBhc3MgaW5pdGlhbCB2aWEgcG9pbnRzIHRvIHRoZSBwYW5lbC4gQ3VycmVudGx5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICB1cGRhdGVWaWFQb2ludHM9eygpID0+IHJldHVybiBbXX0gLy8gT3B0aW9uYWwuIElmIHNob3dNdWx0aVBvaW50Q29udHJvbHMgaXMgc2V0IHRvIHRydWUsIGRlZmluZSBob3cgdG8gdXBkYXRlIHlvdXIgdmlhIHBvaW50IGxpc3Qgd2l0aCB0aGlzIGZ1bmN0aW9uLiBDdXJyZW5sdHkgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBnaXZlbi5cbiAqICAgIHN3YXBPcmRlcj17KCkgPT4gcmV0dXJuIG51bGx9IC8vIE9wdGlvbmFsLiBJZiBzaG93TXVsdGlQb2ludENvbnRyb2xzIGlzIHNldCB0byB0cnVlLCBkZWZpbmUgaG93IHRvIHN3YXAgb3JkZXIgb2YgeW91ciBwb2ludHMgKG9yaWdpbiwgZGVzdGluYXRpb24sIHZpYXBvaW50cykuIEN1cnJlbnRseSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAqICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e2dldEF1dG9TdWdnZXN0SWNvbnN9XG4gKiAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdH1cbiAqICAgIG9uQ2xlYXI9e3RoaXMub25DbGVhcn1cbiAqICAgIGxhbmc9XCJmaVwiIC8vIERlZmluZSBsYW5ndWFnZSBmaSBzdiBvciBlbi5cbiAqICAgIGFkZEFuYWx5dGljc0V2ZW50PXtudWxsfSAvLyBPcHRpb25hbC4geW91IGNhbiByZWNvcmQgYW4gYW5hbHl0aWNzIGV2ZW50IGlmIHlvdSB3aXNoLiBpZiBwYXNzZWQsIGNvbXBvbmVudCB3aWxsIHBhc3MgYW4gY2F0ZWdvcnksIGFjdGlvbiwgbmFtZSBwYXJhbWV0ZXJzIHRvIGFkZEFuYWx5dGljc0V2ZW50XG4gKiAgICBkaXNhYmxlQXV0b0ZvY3VzPXtmYWxzZX0gLy8gT3B0aW9uYWwuIHVzZSB0aGlzIHRvIGRpc2FibGUgYXV0b2ZvY3VzIGNvbXBsZXRlbHkgZnJvbSBEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gKiAgICB0YXJnZXRzPXt0YXJnZXRzfVxuICogICAgaXNNb2JpbGUgIC8vIE9wdGlvbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4gV2hldGhlciB0byB1c2UgbW9iaWxlIHNlYXJjaC5cbiAqICAgIG9yaWdpbk1vYmlsZUxhYmVsPVwiT3JpZ2luIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBvcmlnaW4gZmllbGQgb24gbW9iaWxlLlxuICogICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbD1cIkRlc3RpbmF0aW9uIGxhYmVsXCIgLy8gT3B0aW9uYWwuIEN1c3RvbSBsYWJlbCB0ZXh0IGZvciBkZXN0aW5hdGlvbiBmaWVsZCBvbiBtb2JpbGUuXG4gKiAgICBoYW5kbGVGb2N1c0NoYW5nZT17KCkgPT4ge319IC8vIE9wdGlvbmFsLiBJZiBkZWZpbmVkIG92ZXJyaWRlcyBkZWZhdWx0IG9uRm9jdXNDaGFuZ2UgYmVoYXZpb3VyXG4gKi9cbmNsYXNzIERUQXV0b3N1Z2dlc3RQYW5lbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYXBwRWxlbWVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG9yaWdpbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGRlc3RpbmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgc2hvd011bHRpUG9pbnRDb250cm9sczogUHJvcFR5cGVzLmJvb2wsXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB2aWFQb2ludHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxuICAgIHVwZGF0ZVZpYVBvaW50czogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzd2FwT3JkZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNlYXJjaFBhbmVsVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzZWFyY2hDb250ZXh0OiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2xlYXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIGFkZEFuYWx5dGljc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNvdXJjZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIHRhcmdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIGZpbHRlclJlc3VsdHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBob3ZlckNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yaWdpbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcmVmUG9pbnQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbW9kZVNldDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBtb2RlSWNvbkNvbG9yczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICAgIHNob3dTY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uRm9jdXNDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzRW1iZWRkZWQ6IFByb3BUeXBlcy5ib29sLFxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgdmlhUG9pbnRzOiBbXSxcbiAgICBzaG93TXVsdGlQb2ludENvbnRyb2xzOiBmYWxzZSxcbiAgICBvcmlnaW5QbGFjZUhvbGRlcjogJ2dpdmUtb3JpZ2luJyxcbiAgICBkZXN0aW5hdGlvblBsYWNlSG9sZGVyOiAnZ2l2ZS1kZXN0aW5hdGlvbicsXG4gICAgc3dhcE9yZGVyOiB1bmRlZmluZWQsXG4gICAgdXBkYXRlVmlhUG9pbnRzOiAoKSA9PiB7fSxcbiAgICBsYW5nOiAnZmknLFxuICAgIHNvdXJjZXM6IFtdLFxuICAgIHRhcmdldHM6IFtdLFxuICAgIGZpbHRlclJlc3VsdHM6IHVuZGVmaW5lZCxcbiAgICBkaXNhYmxlQXV0b0ZvY3VzOiBmYWxzZSxcbiAgICBpc01vYmlsZTogZmFsc2UsXG4gICAgaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkOiB1bmRlZmluZWQsXG4gICAgY29sb3I6ICcjMDA3YWM5JyxcbiAgICBob3ZlckNvbG9yOiAnIzAwNjJhMScsXG4gICAgb3JpZ2luTW9iaWxlTGFiZWw6IG51bGwsXG4gICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbDogbnVsbCxcbiAgICBtb2RlU2V0OiB1bmRlZmluZWQsXG4gICAgbW9kZUljb25Db2xvcnM6IHVuZGVmaW5lZCxcbiAgICBmb250V2VpZ2h0czoge1xuICAgICAgbWVkaXVtOiA1MDAsXG4gICAgfSxcbiAgICBzaG93U2Nyb2xsOiBmYWxzZSxcbiAgICBvbkZvY3VzQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgaXNFbWJlZGRlZDogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5kcmFnZ2FibGVWaWFQb2ludHMgPSBbXTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgYWN0aXZlU2xhY2tJbnB1dHM6IFtdLFxuICAgICAgcmVmczogW10sXG4gICAgfTtcbiAgICBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmZvckVhY2gobGFuZyA9PiB7XG4gICAgICBpMThuZXh0LmFkZFJlc291cmNlQnVuZGxlKGxhbmcsICd0cmFuc2xhdGlvbicsIHRyYW5zbGF0aW9uc1tsYW5nXSk7XG4gICAgfSk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCA9ICgpID0+IHtcbiAgICBpMThuZXh0LmNoYW5nZUxhbmd1YWdlKHRoaXMucHJvcHMubGFuZyk7XG4gIH07XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlID0gKCkgPT4ge1xuICAgIGlmIChpMThuZXh0Lmxhbmd1YWdlICE9PSB0aGlzLnByb3BzLmxhbmcpIHtcbiAgICAgIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2UodGhpcy5wcm9wcy5sYW5nKTtcbiAgICB9XG4gIH07XG5cbiAgZ2V0U2xhY2tUaW1lT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCB0aW1lT3B0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDk7IGkrKykge1xuICAgICAgY29uc3QgdmFsdWVJbk1pbnV0ZXMgPSBpICogMTA7XG4gICAgICB0aW1lT3B0aW9ucy5wdXNoKHtcbiAgICAgICAgZGlzcGxheU5hbWU6IGAke3ZhbHVlSW5NaW51dGVzfSAke2kxOG5leHQudCgnbWludXRlLXNob3J0Jyl9YCxcbiAgICAgICAgdmFsdWU6IHZhbHVlSW5NaW51dGVzICogNjAsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpbWVPcHRpb25zO1xuICB9O1xuXG4gIHNldERyYWdnYWJsZVZpYVBvaW50UmVmID0gKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgdGhpcy5kcmFnZ2FibGVWaWFQb2ludHNbaW5kZXhdID0gZWxlbWVudDtcbiAgfTtcblxuICBzdG9yZVJlZmVyZW5jZSA9IHJlZiA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgcmVmczogWy4uLnByZXZTdGF0ZS5yZWZzLCByZWZdIH0pKTtcbiAgfTtcblxuICBoYW5kbGVGb2N1c0NoYW5nZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IGRlc3RpbmF0aW9uIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmICghZGVzdGluYXRpb24gfHwgIWRlc3RpbmF0aW9uLnNldCkge1xuICAgICAgdGhpcy5zdGF0ZS5yZWZzWzFdLmZvY3VzKCk7XG4gICAgfVxuICB9O1xuXG4gIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudCA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBzcGFjZSA9IFsxMywgJyAnLCAnU3BhY2ViYXInXTtcbiAgICBjb25zdCBlbnRlciA9IFszMiwgJ0VudGVyJ107XG4gICAgY29uc3Qga2V5ID0gKGV2ZW50ICYmIChldmVudC5rZXkgfHwgZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZSkpIHx8ICcnO1xuICAgIGlmICgha2V5IHx8ICFzcGFjZS5jb25jYXQoZW50ZXIpLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICB2YWx1ZSA9IGxvY2F0aW9uID0+XG4gICAgKGxvY2F0aW9uICYmIGxvY2F0aW9uLmFkZHJlc3MpIHx8XG4gICAgKGxvY2F0aW9uICYmIGxvY2F0aW9uLmdwcyAmJiBsb2NhdGlvbi5yZWFkeSAmJiAnTnlreWluZW4gc2lqYWludGknKSB8fFxuICAgICcnO1xuXG4gIGNsYXNzID0gbG9jYXRpb24gPT5cbiAgICBsb2NhdGlvbiAmJiBsb2NhdGlvbi5ncHMgPT09IHRydWUgPyAncG9zaXRpb24nIDogJ2xvY2F0aW9uJztcblxuICB1cGRhdGVWaWFQb2ludHMgPSB2aWFQb2ludHMgPT4ge1xuICAgIGlmICh2aWFQb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnByb3BzLnVwZGF0ZVZpYVBvaW50cyhbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKHZpYVBvaW50cy5maWx0ZXIodnAgPT4gIWlzVmlhUG9pbnRFbXB0eSh2cCkpKTtcbiAgfTtcblxuICB1cGRhdGVWaWFQb2ludFNsYWNrID0gKFxuICAgIGFjdGl2ZVZpYVBvaW50U2xhY2tzLFxuICAgIHVwZGF0ZWRWaWFQb2ludEluZGV4LFxuICAgIHZpYVBvaW50UmVtb3ZlZCA9IGZhbHNlLFxuICApID0+IHtcbiAgICBjb25zdCBmb3VuZEF0SW5kZXggPSBhY3RpdmVWaWFQb2ludFNsYWNrcy5pbmRleE9mKHVwZGF0ZWRWaWFQb2ludEluZGV4KTtcbiAgICBpZiAoZm91bmRBdEluZGV4ID4gLTEpIHtcbiAgICAgIGFjdGl2ZVZpYVBvaW50U2xhY2tzLnNwbGljZShmb3VuZEF0SW5kZXgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gdmlhUG9pbnRSZW1vdmVkXG4gICAgICA/IGFjdGl2ZVZpYVBvaW50U2xhY2tzLm1hcCh2YWx1ZSA9PlxuICAgICAgICAgIHZhbHVlID4gdXBkYXRlZFZpYVBvaW50SW5kZXggPyB2YWx1ZSAtIDEgOiB2YWx1ZSxcbiAgICAgICAgKVxuICAgICAgOiBhY3RpdmVWaWFQb2ludFNsYWNrcztcbiAgfTtcblxuICBoYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgYWN0aXZlU2xhY2tJbnB1dHM6IGFjdGl2ZVNsYWNrSW5wdXRzLmluY2x1ZGVzKHZpYVBvaW50SW5kZXgpXG4gICAgICAgID8gdGhpcy51cGRhdGVWaWFQb2ludFNsYWNrKGFjdGl2ZVNsYWNrSW5wdXRzLCB2aWFQb2ludEluZGV4KVxuICAgICAgICA6IGFjdGl2ZVNsYWNrSW5wdXRzLmNvbmNhdChbdmlhUG9pbnRJbmRleF0pLFxuICAgIH0pO1xuICB9O1xuXG4gIGhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQgPSAoc2xhY2tUaW1lSW5TZWNvbmRzLCBpKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdFZGl0VmlhUG9pbnRTdG9wRHVyYXRpb24nLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogc2xhY2tUaW1lSW5TZWNvbmRzIC8gNjAsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPSBOdW1iZXIucGFyc2VJbnQoc2xhY2tUaW1lSW5TZWNvbmRzLCAxMCk7XG4gICAgdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQgPSAodmlhUG9pbnRMb2NhdGlvbiwgaSkgPT4ge1xuICAgIHRoaXMucHJvcHMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKHZpYVBvaW50TG9jYXRpb24sIGkpO1xuICB9O1xuXG4gIGhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ1JlbW92ZUpvdXJuZXlWaWFQb2ludCcsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnNwbGljZSh2aWFQb2ludEluZGV4LCAxKTtcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBhY3RpdmVTbGFja0lucHV0czogdGhpcy51cGRhdGVWaWFQb2ludFNsYWNrKFxuICAgICAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzLFxuICAgICAgICAgIHZpYVBvaW50SW5kZXgsXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLnVwZGF0ZVZpYVBvaW50cyh2aWFQb2ludHMpLFxuICAgICk7XG4gIH07XG5cbiAgaGFuZGxlQWRkVmlhUG9pbnRDbGljayA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ0FkZEpvdXJuZXlWaWFQb2ludCcsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiAnUXVpY2tTZXR0aW5nc0J1dHRvbicsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnB1c2goZ2V0RW1wdHlWaWFQb2ludFBsYWNlSG9sZGVyKCkpO1xuICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBzbyB0aGF0IHBsYWNlSG9sZGVyIHdpbGwgc2hvdyB1cCBpbiBwYW5lbC5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYWNjZXNzLXN0YXRlLWluLXNldHN0YXRlXG4gICAgdGhpcy5zZXRTdGF0ZSh0aGlzLnN0YXRlKTtcbiAgfTtcblxuICBoYW5kbGVTd2FwT3JkZXJDbGljayA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ1N3aXRjaEpvdXJuZXlTdGFydEFuZEVuZFBvaW50T3JkZXInLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB7IHZpYVBvaW50cyB9ID0gdGhpcy5wcm9wcztcbiAgICB2aWFQb2ludHMucmV2ZXJzZSgpO1xuICAgIHRoaXMucHJvcHMuc3dhcE9yZGVyKCk7XG4gIH07XG5cbiAgZ2V0U2xhY2tEaXNwbGF5ID0gc2xhY2tJblNlY29uZHMgPT4ge1xuICAgIHJldHVybiBgJHtzbGFja0luU2Vjb25kcyAvIDYwfSAke2kxOG5leHQudCgnbWludXRlLXNob3J0Jyl9YDtcbiAgfTtcblxuICByZW5kZXIgPSAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgc2hvd011bHRpUG9pbnRDb250cm9scyxcbiAgICAgIG9yaWdpbixcbiAgICAgIHNlYXJjaFBhbmVsVGV4dCxcbiAgICAgIHNlYXJjaENvbnRleHQsXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzLFxuICAgICAgdmlhUG9pbnRzLFxuICAgICAgb3JpZ2luTW9iaWxlTGFiZWwsXG4gICAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsLFxuICAgICAgZm9udFdlaWdodHMsXG4gICAgICBvbkZvY3VzQ2hhbmdlLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qgc2xhY2tUaW1lID0gdGhpcy5nZXRTbGFja1RpbWVPcHRpb25zKCk7XG4gICAgY29uc3QgZGVmYXVsdFNsYWNrVGltZVZhbHVlID0gMDtcbiAgICBjb25zdCBnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCA9IChcbiAgICAgIHZpYVBvaW50LFxuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFNsYWNrVGltZVZhbHVlLFxuICAgICkgPT4gKHZpYVBvaW50ICYmIHZpYVBvaW50LmxvY2F0aW9uU2xhY2spIHx8IGRlZmF1bHRWYWx1ZTtcbiAgICBjb25zdCBpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUgPSBpbmRleCA9PlxuICAgICAgYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXMoaW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y3goW1xuICAgICAgICAgIHN0eWxlc1snYXV0b3N1Z2dlc3QtcGFuZWwnXSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzbWFsbDogdGhpcy5wcm9wcy5pc01vYmlsZSxcbiAgICAgICAgICAgIHNob3dNdWx0aVBvaW50Q29udHJvbHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgJy0tY29sb3InOiBgJHt0aGlzLnByb3BzLmNvbG9yfWAsXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7JyAnfVxuICAgICAgICB7c2VhcmNoUGFuZWxUZXh0ID8gKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zdWdnZXN0LXNlYXJjaHBhbmVsLXRleHQnXX0+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIHtzZWFyY2hQYW5lbFRleHR9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snb3JpZ2luLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICBpZD1cIm9yaWdpblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIW9yaWdpbi5sYXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlUmVmPXt0aGlzLnN0b3JlUmVmZXJlbmNlfVxuICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoaXMuY2xhc3Mob3JpZ2luKX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLm9yaWdpblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgdmFsdWU9e3RoaXMudmFsdWUob3JpZ2luKX1cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIGZvY3VzQ2hhbmdlPXtvbkZvY3VzQ2hhbmdlIHx8IHRoaXMuaGFuZGxlRm9jdXNDaGFuZ2V9XG4gICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgbW9iaWxlTGFiZWw9e29yaWdpbk1vYmlsZUxhYmVsfVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e3RoaXMucHJvcHMuZm9udFdlaWdodHN9XG4gICAgICAgICAgICBtb2RlU2V0PXt0aGlzLnByb3BzLm1vZGVTZXR9XG4gICAgICAgICAgICBtb2RlSWNvbkNvbG9ycz17dGhpcy5wcm9wcy5tb2RlSWNvbkNvbG9yc31cbiAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgIGlzRW1iZWRkZWQ9e3RoaXMucHJvcHMuaXNFbWJlZGRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcHBvc2l0ZX1cbiAgICAgICAgICAgIGVuYWJsZWQ9e3Nob3dNdWx0aVBvaW50Q29udHJvbHN9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZVN3YXBPcmRlckNsaWNrKCl9XG4gICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgIHRoaXMuaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmIHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KCdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCcpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uIGltZz1cIm9wcG9zaXRlXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3ZpYVBvaW50cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlY3RhbmdsZS1jb250YWluZXInXX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJlY3RhbmdsZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPFJlYWN0U29ydGFibGVcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnRzLWNvbnRhaW5lciddfVxuICAgICAgICAgIGxpc3Q9e3ZpYVBvaW50c31cbiAgICAgICAgICBoYW5kbGU9e2AuJHtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfWB9XG4gICAgICAgICAgYW5pbWF0aW9uPXsyMDB9XG4gICAgICAgICAgc2V0TGlzdD17aXRlbXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmlhUG9pbnRzID0gaXRlbXMuZmlsdGVyKHZwID0+ICFpc1ZpYVBvaW50RW1wdHkodnApKTtcbiAgICAgICAgICAgIGlmIChuZXdWaWFQb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLnVwZGF0ZVZpYVBvaW50cyhuZXdWaWFQb2ludHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dmlhUG9pbnRzLm1hcCgobywgaSkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1sndmlhcG9pbnQtY29udGFpbmVyJ10pfVxuICAgICAgICAgICAgICBrZXk9e2B2aWFwb2ludC0ke2l9YH0gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydsaWdodC1ncmF5LWJhY2tncm91bmQnXX0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5yb3d9PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtYmVmb3JlJ119XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ21vdmUnIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImVsbGlwc2lzXCIgcm90YXRlPXs5MH0gY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICAgICAgICBgJHtzdHlsZXNbJ3ZpYXBvaW50LWlucHV0LWNvbnRhaW5lciddfSAke1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzW2B2aWFwb2ludC0ke2kgKyAxfWBdXG4gICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEVEF1dG9TdWdnZXN0XG4gICAgICAgICAgICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXItdmlhXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInZpYS1wb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtpMThuZXh0LnQoJ3ZpYS1wb2ludC1pbmRleCcsIHsgaW5kZXg6IGkgKyAxIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1cz17XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlID8gZmFsc2UgOiAhdGhpcy5wcm9wcy5pc01vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInZpYS1wb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmlhcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyhvICYmIG8uYWRkcmVzcykgfHwgJyd9XG4gICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGVhcj17dGhpcy5wcm9wcy5vbkNsZWFyfVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVZpYVBvaW50cz17aXRlbSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQoaXRlbSwgaSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgbGFuZz17dGhpcy5wcm9wcy5sYW5nfVxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUmVzdWx0cz17dGhpcy5wcm9wcy5maWx0ZXJSZXN1bHRzfVxuICAgICAgICAgICAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodHM9e3RoaXMucHJvcHMuZm9udFdlaWdodHN9XG4gICAgICAgICAgICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVJY29uQ29sb3JzPXt0aGlzLnByb3BzLm1vZGVJY29uQ29sb3JzfVxuICAgICAgICAgICAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPEl0aW5lcmFyeVNlYXJjaENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2FkZC12aWEtcG9pbnQtc2xhY2snXX1cbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17c2hvd011bHRpUG9pbnRDb250cm9sc31cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrKGkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KFxuICAgICAgICAgICAgICAgICAgICAgIGlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3BlbidcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICB7IGluZGV4OiBpICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSkgJiZcbiAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtc2xhY2stdGltZSddfVxuICAgICAgICAgICAgICAgICAgICA+e2Ake2kxOG5leHQudChcbiAgICAgICAgICAgICAgICAgICAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JyxcbiAgICAgICAgICAgICAgICAgICAgKX06ICR7dGhpcy5nZXRTbGFja0Rpc3BsYXkoXG4gICAgICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2ssXG4gICAgICAgICAgICAgICAgICAgICl9YH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goc3R5bGVzWydpbnB1dC12aWFwb2ludC1zbGFjay1jb250YWluZXInXSwge1xuICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6ICFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSksXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydzZWxlY3Qtd3JhcHBlciddfT5cbiAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgdmlhcG9pbnQtc2xhY2stJHtpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2kxOG5leHQudCgndmlhcG9pbnQtc2xhY2stYW1vdW50Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17c2xhY2tUaW1lfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtnZXRWaWFQb2ludFNsYWNrVGltZU9yRGVmYXVsdCh2aWFQb2ludHNbaV0pfVxuICAgICAgICAgICAgICAgICAgICAgIGdldERpc3BsYXk9e3RoaXMuZ2V0U2xhY2tEaXNwbGF5fVxuICAgICAgICAgICAgICAgICAgICAgIHZpYVBvaW50SW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1sndGltZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblNsYWNrVGltZVNlbGVjdGVkPXt0aGlzLmhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlbW92ZS12aWEtcG9pbnQnXX1cbiAgICAgICAgICAgICAgICBlbmFibGVkPXtzaG93TXVsdGlQb2ludENvbnRyb2xzfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayhpKX1cbiAgICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgICB0aGlzLmlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjbG9zZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SZWFjdFNvcnRhYmxlPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkZXN0aW5hdGlvbi1pbnB1dC1jb250YWluZXInXX0+XG4gICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgaWQ9XCJkZXN0aW5hdGlvblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIU51bWJlci5pc05hTihvcmlnaW4ubGF0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5kZXN0aW5hdGlvblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLmNsYXNzKHRoaXMucHJvcHMuZGVzdGluYXRpb24pfVxuICAgICAgICAgICAgZ2V0QXV0b1N1Z2dlc3RJY29ucz17dGhpcy5wcm9wcy5nZXRBdXRvU3VnZ2VzdEljb25zfVxuICAgICAgICAgICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgb25DbGVhcj17dGhpcy5wcm9wcy5vbkNsZWFyfVxuICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICB2YWx1ZT17dGhpcy52YWx1ZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17ZGVzdGluYXRpb25Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgbW9kZUljb25Db2xvcnM9e3RoaXMucHJvcHMubW9kZUljb25Db2xvcnN9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c2hvd011bHRpUG9pbnRDb250cm9scyAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snYWRkLXZpYS1wb2ludCddLCBzdHlsZXMubW9yZSwge1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdmlhUG9pbnRzLmxlbmd0aCA+IDQsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93TXVsdGlQb2ludENvbnRyb2xzfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZUFkZFZpYVBvaW50Q2xpY2soKX1cbiAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBZGRWaWFQb2ludENsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpMThuZXh0LnQoJ2FkZC12aWEtYnV0dG9uLWxhYmVsJyl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgaW1nPVwidmlhcG9pbnRcIlxuICAgICAgICAgICAgICAgIHdpZHRoPXsxLjI1fVxuICAgICAgICAgICAgICAgIGhlaWdodD17MS4zNzV9XG4gICAgICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBEVEF1dG9zdWdnZXN0UGFuZWw7XG4iLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2ZcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIHNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufSJdLCJuYW1lcyI6WyJfYXJyYXlMaWtlVG9BcnJheSIsImFyciIsImxlbiIsImxlbmd0aCIsImkiLCJhcnIyIiwiQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJvIiwibWluTGVuIiwiYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaXNBcnJheSIsImFycmF5V2l0aG91dEhvbGVzIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiaXRlcmFibGVUb0FycmF5IiwidW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJUeXBlRXJyb3IiLCJub25JdGVyYWJsZVNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJrZXkiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwib2JqIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJzZWxmIiwiUmVmZXJlbmNlRXJyb3IiLCJhc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfZ2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZSIsImV4Y2x1ZGVkIiwic291cmNlS2V5cyIsImtleXMiLCJpbmRleE9mIiwib2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9zbGljZWRUb0FycmF5IiwiYXJyYXlXaXRoSG9sZXMiLCJfYXJyIiwiX24iLCJfZCIsIl9lIiwidW5kZWZpbmVkIiwiX3MiLCJfaSIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiZXJyIiwiaXRlcmFibGVUb0FycmF5TGltaXQiLCJub25JdGVyYWJsZVJlc3QiLCJzdHlsZUluamVjdCIsImNzcyIsInJlZiIsImluc2VydEF0IiwiZG9jdW1lbnQiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsIlNlbGVjdCIsImdldERpc3BsYXkiLCJvcHRpb25zIiwib25TbGFja1RpbWVTZWxlY3RlZCIsInZpYVBvaW50SW5kZXgiLCJpZCIsImxhYmVsIiwiaWNvbiIsInVzZVN0YXRlIiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwib3BlbiIsImNoYW5nZU9wZW4iLCJ1c2VFZmZlY3QiLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJzY3JvbGxJbmRleCIsIk1hdGgiLCJmbG9vciIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJpbnB1dElkIiwibGFiZWxJZCIsIlJlYWN0IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiaHRtbEZvciIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsImRpc3BsYXlOYW1lIiwib25TdWdnZXN0aW9uc0ZldGNoUmVxdWVzdGVkIiwic2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnMiLCJmb2N1c0lucHV0T25TdWdnZXN0aW9uQ2xpY2siLCJvblN1Z2dlc3Rpb25zQ2xlYXJSZXF1ZXN0ZWQiLCJpbnB1dFByb3BzIiwib25DaGFuZ2UiLCJfIiwibmV3VmFsdWUiLCJtZXRob2QiLCJvbkZvY3VzIiwib25CbHVyIiwicmVhZE9ubHkiLCJyZW5kZXJTdWdnZXN0aW9uc0NvbnRhaW5lciIsImNvbnRhaW5lclByb3BzIiwiY2hpbGRyZW4iLCJvdGhlclJlZnMiLCJ0YWJJbmRleCIsImVsZW0iLCJ0aGVtZSIsInByb2Nlc3MiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImFycmF5T2YiLCJzaGFwZSIsInN0cmluZyIsIm5vZGUiLCJ0cmFuc2xhdGlvbnMiLCJkZSIsImVuIiwiZmkiLCJzdiIsImluaXQiLCJsbmciLCJmYWxsYmFja0xuZyIsImRlZmF1bHROUyIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsImdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlciIsImlzVmlhUG9pbnRFbXB0eSIsInZpYVBvaW50IiwiaXNFbXB0eSIsImluY2x1ZGVzIiwiSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCIsImVuYWJsZWQiLCJvbkNsaWNrIiwib25LZXlQcmVzcyIsInJlc3QiLCJyb2xlIiwiYm9vbCIsIkRUQXV0b3N1Z2dlc3RQYW5lbCIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsIkNvbnN0cnVjdG9yIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiaW5zdGFuY2UiLCJjb21wb25lbnREaWRNb3VudCIsImkxOG5leHQiLCJjaGFuZ2VMYW5ndWFnZSIsIl90aGlzIiwibGFuZyIsImNvbXBvbmVudERpZFVwZGF0ZSIsImxhbmd1YWdlIiwiZ2V0U2xhY2tUaW1lT3B0aW9ucyIsInRpbWVPcHRpb25zIiwidmFsdWVJbk1pbnV0ZXMiLCJ0Iiwic2V0RHJhZ2dhYmxlVmlhUG9pbnRSZWYiLCJlbGVtZW50IiwiaW5kZXgiLCJkcmFnZ2FibGVWaWFQb2ludHMiLCJzdG9yZVJlZmVyZW5jZSIsInNldFN0YXRlIiwicHJldlN0YXRlIiwicmVmcyIsImhhbmRsZUZvY3VzQ2hhbmdlIiwiZGVzdGluYXRpb24iLCJzZXQiLCJzdGF0ZSIsImZvY3VzIiwiaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50IiwiZXZlbnQiLCJ3aGljaCIsImtleUNvZGUiLCJjb25jYXQiLCJwcmV2ZW50RGVmYXVsdCIsImxvY2F0aW9uIiwiYWRkcmVzcyIsImdwcyIsInJlYWR5IiwidXBkYXRlVmlhUG9pbnRzIiwidmlhUG9pbnRzIiwiZmlsdGVyIiwidnAiLCJ1cGRhdGVWaWFQb2ludFNsYWNrIiwiYWN0aXZlVmlhUG9pbnRTbGFja3MiLCJ1cGRhdGVkVmlhUG9pbnRJbmRleCIsInZpYVBvaW50UmVtb3ZlZCIsImZvdW5kQXRJbmRleCIsInNwbGljZSIsIm1hcCIsImhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayIsImFjdGl2ZVNsYWNrSW5wdXRzIiwiaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZCIsInNsYWNrVGltZUluU2Vjb25kcyIsImFkZEFuYWx5dGljc0V2ZW50IiwiYWN0aW9uIiwiY2F0ZWdvcnkiLCJsb2NhdGlvblNsYWNrIiwiTnVtYmVyIiwicGFyc2VJbnQiLCJoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQiLCJ2aWFQb2ludExvY2F0aW9uIiwiaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayIsImhhbmRsZUFkZFZpYVBvaW50Q2xpY2siLCJoYW5kbGVTd2FwT3JkZXJDbGljayIsInJldmVyc2UiLCJzd2FwT3JkZXIiLCJnZXRTbGFja0Rpc3BsYXkiLCJzbGFja0luU2Vjb25kcyIsInJlbmRlciIsInNob3dNdWx0aVBvaW50Q29udHJvbHMiLCJvcmlnaW4iLCJzZWFyY2hQYW5lbFRleHQiLCJzZWFyY2hDb250ZXh0IiwiZGlzYWJsZUF1dG9Gb2N1cyIsIm9yaWdpbk1vYmlsZUxhYmVsIiwiZGVzdGluYXRpb25Nb2JpbGVMYWJlbCIsImZvbnRXZWlnaHRzIiwib25Gb2N1c0NoYW5nZSIsInNsYWNrVGltZSIsImdldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0IiwiZGVmYXVsdFZhbHVlIiwiaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlIiwiY3giLCJpc01vYmlsZSIsImNvbG9yIiwibWVkaXVtIiwiRFRBdXRvU3VnZ2VzdCIsImFwcEVsZW1lbnQiLCJhdXRvRm9jdXMiLCJsYXQiLCJzdG9yZVJlZiIsInJlZlBvaW50IiwicGxhY2Vob2xkZXIiLCJvcmlnaW5QbGFjZUhvbGRlciIsImdldEF1dG9TdWdnZXN0SWNvbnMiLCJvblNlbGVjdCIsIm9uQ2xlYXIiLCJmb2N1c0NoYW5nZSIsInNvdXJjZXMiLCJ0YXJnZXRzIiwiZmlsdGVyUmVzdWx0cyIsImhvdmVyQ29sb3IiLCJtb2JpbGVMYWJlbCIsIm1vZGVTZXQiLCJtb2RlSWNvbkNvbG9ycyIsInNob3dTY3JvbGwiLCJpc0VtYmVkZGVkIiwib3Bwb3NpdGUiLCJlIiwiSWNvbiIsImltZyIsInJlY3RhbmdsZSIsIlJlYWN0U29ydGFibGUiLCJsaXN0IiwiaGFuZGxlIiwiYW5pbWF0aW9uIiwic2V0TGlzdCIsIml0ZW1zIiwibmV3VmlhUG9pbnRzIiwicm93IiwiY3Vyc29yIiwicm90YXRlIiwiYXJpYUxhYmVsIiwiaGFuZGxlVmlhUG9pbnRzIiwiaXRlbSIsImlzTmFOIiwiZGVzdGluYXRpb25QbGFjZUhvbGRlciIsIm1vcmUiLCJ3aWR0aCIsImhlaWdodCIsImZvckVhY2giLCJhZGRSZXNvdXJjZUJ1bmRsZSIsIkNvbXBvbmVudCIsImRlZmF1bHRQcm9wcyIsIm9iamVjdCIsImFueSJdLCJtYXBwaW5ncyI6IjBoQ0FBZSxTQUFTQSxFQUFrQkMsRUFBS0MsSUFDbEMsTUFBUEEsR0FBZUEsRUFBTUQsRUFBSUUsVUFBUUQsRUFBTUQsRUFBSUUsUUFFL0MsSUFBSyxJQUFJQyxFQUFJLEVBQUdDLEVBQU8sSUFBSUMsTUFBTUosR0FBTUUsRUFBSUYsRUFBS0UsSUFDOUNDLEVBQUtELEdBQUtILEVBQUlHLEdBR2hCLE9BQU9DLEVDTk0sU0FBU0UsRUFBNEJDLEVBQUdDLEdBQ3JELEdBQUtELEVBQUwsQ0FDQSxHQUFpQixpQkFBTkEsRUFBZ0IsT0FBT0UsRUFBaUJGLEVBQUdDLEdBQ3RELElBQUlFLEVBQUlDLE9BQU9DLFVBQVVDLFNBQVNDLEtBQUtQLEdBQUdRLE1BQU0sR0FBSSxHQUVwRCxNQURVLFdBQU5MLEdBQWtCSCxFQUFFUyxjQUFhTixFQUFJSCxFQUFFUyxZQUFZQyxNQUM3QyxRQUFOUCxHQUFxQixRQUFOQSxFQUFvQkwsTUFBTWEsS0FBS1gsR0FDeEMsY0FBTkcsR0FBcUIsMkNBQTJDUyxLQUFLVCxHQUFXRCxFQUFpQkYsRUFBR0MsUUFBeEcsR0NIYSxTQUFTWSxFQUFtQnBCLEdBQ3pDLE9DSmEsU0FBNEJBLEdBQ3pDLEdBQUlLLE1BQU1nQixR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
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,s,a,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(s),g=p(a),f=p(l),y=p(r),v=p(c);function m(e,t){if(null==e)return{};var n,i,o={},s=Object.keys(e);for(i=0;i<s.length;i++)n=s[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}function b(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var x={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};b(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #F4F4F5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\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: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const k=["ref"],S=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:s,id:a,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${a}-input`,y=`${a}-label`;return _.default.createElement(_.default.Fragment,null,_.default.createElement("label",{className:x["combobox-container"],htmlFor:f},_.default.createElement("span",{className:x["left-column"]},_.default.createElement("span",{className:x["combobox-label"],id:y},l),_.default.createElement(v.default,{id:a,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,s);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":y,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=m(e,k);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:x})),r))};"production"!==process.env.NODE_ENV&&(S.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const w={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var E={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};b("/* stylelint-disable */\n.styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #dddddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const C=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const P=()=>({}),N=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},V=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:s,wide:a}=e,l=m(e,C);return _.default.createElement("div",{className:E["itinerary-search-control"],style:{"--width":a?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:s,role:"button",tabIndex:"0"}),t))};"production"!==process.env.NODE_ENV&&(V.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool});class A extends _.default.Component{constructor(e){super(e),this.componentDidMount=()=>{h.default.changeLanguage(this.props.lang)},this.componentDidUpdate=()=>{h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)},this.getSlackTimeOptions=()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e},this.setDraggableViaPointRef=(e,t)=>{this.draggableViaPoints[t]=e},this.storeReference=e=>{this.setState((t=>({refs:[...t.refs,e]})))},this.handleFocusChange=()=>{const{destination:e}=this.props;e&&e.set||this.state.refs[1].focus()},this.isKeyboardSelectionEvent=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},this.value=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",this.class=e=>e&&!0===e.gps?"position":"location",this.updateViaPoints=e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!N(e)))):this.props.updateViaPoints([])},this.updateViaPointSlack=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},this.handleToggleViaPointSlackClick=e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?this.updateViaPointSlack(t,e):t.concat([e])})},this.handleViaPointSlackTimeSelected=(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)},this.handleViaPointLocationSelected=(e,t)=>{this.props.handleViaPointLocationSelected(e,t)},this.handleRemoveViaPointClick=e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:this.updateViaPointSlack(t,e,!0)},(()=>this.updateViaPoints(n)))},this.handleAddViaPointClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)},this.handleSwapOrderClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()},this.getSlackDisplay=e=>`${e/60} ${h.default.t("minute-short")}`,this.render=()=>{const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:s,originMobileLabel:a,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:y}=this.state,v=this.getSlackTimeOptions(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>y.includes(e);return _.default.createElement("div",{className:d.default(E["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:E["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:E["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:this.class(e),placeholder:this.props.originPlaceHolder,value:this.value(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:a,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:E.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:E["rectangle-container"]},_.default.createElement("div",{className:E.rectangle})),_.default.createElement(o.ReactSortable,{className:E["viapoints-container"],list:s,handle:`.${E["viapoint-before"]}`,animation:200,setList:e=>{const t=e.filter((e=>!N(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(E["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:E["light-gray-background"]},_.default.createElement("div",{className:E.row},_.default.createElement("div",{className:E["viapoint-before"],style:{cursor:"move"}},_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${E["viapoint-input-container"]} ${E[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),_.default.createElement(V,{className:E["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:E["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${this.getSlackDisplay(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(E["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:E["select-wrapper"]},_.default.createElement(S,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:v,value:m(s[t]),getDisplay:this.getSlackDisplay,viaPointIndex:t,icon:_.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(V,{className:E["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"close",color:this.props.color})))))),_.default.createElement("div",{className:E["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:this.class(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:this.value(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:d.default(E["add-via-point"],E.more,s.length>4&&"collapsed"),enabled:u,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))},this.draggableViaPoints=[],this.state={activeSlackInputs:[],refs:[]},Object.keys(w).forEach((e=>{h.default.addResourceBundle(e,"translation",w[e])}))}}A.defaultProps={viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1},"production"!==process.env.NODE_ENV&&(A.propTypes={appElement:u.default.string.isRequired,origin:u.default.object.isRequired,destination:u.default.object.isRequired,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(u.default.object),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.any.isRequired,onSelect:u.default.func,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:u.default.object,modeSet:u.default.string,modeIconColors:u.default.object,getAutoSuggestIcons:u.default.object,fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool}),e.default=A,e.getEmptyViaPointPlaceHolder=P,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL1NlbGVjdC5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF1dG9zdWdnZXN0IGZyb20gJ3JlYWN0LWF1dG9zdWdnZXN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zZWxlY3Quc2Nzcyc7XG5cbmNvbnN0IFNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBnZXREaXNwbGF5LFxuICBvcHRpb25zLFxuICBvblNsYWNrVGltZVNlbGVjdGVkLFxuICB2aWFQb2ludEluZGV4LFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG59KSA9PiB7XG4gIGNvbnN0IFtkaXNwbGF5VmFsdWUsIGNoYW5nZURpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIGNvbnN0IFtvcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgdXNlRWZmZWN0KCgpID0+IGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSksIFt2YWx1ZV0pO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNjcm9sbEluZGV4ID0gTWF0aC5mbG9vcih2YWx1ZSAvIDYwMCk7XG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG5cbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAoXywgeyBuZXdWYWx1ZSwgbWV0aG9kIH0pID0+IHtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgY2FzZSAnY2xpY2snOlxuICAgICAgICBvblNsYWNrVGltZVNlbGVjdGVkKG5ld1ZhbHVlLCB2aWFQb2ludEluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUodmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWNvbnRhaW5lciddfSBodG1sRm9yPXtpbnB1dElkfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2xlZnQtY29sdW1uJ119PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sYWJlbCddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxBdXRvc3VnZ2VzdFxuICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy52YWx1ZX1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gcy5kaXNwbGF5TmFtZX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHNob3VsZFJlbmRlclN1Z2dlc3Rpb25zPXsoKSA9PiB0cnVlfVxuICAgICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIGlucHV0UHJvcHM9e3tcbiAgICAgICAgICAgICAgdmFsdWU6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBsYWJlbElkLFxuICAgICAgICAgICAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAnbm9uZScsXG4gICAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyPXsoeyBjb250YWluZXJQcm9wcywgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHsgcmVmLCAuLi5vdGhlclJlZnMgfSA9IGNvbnRhaW5lclByb3BzO1xuICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQgPSBlbGVtO1xuICAgICAgICAgICAgICAgICAgcmVmKGVsZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdGhlbWU9e3N0eWxlc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpY29ufVxuICAgICAgPC9sYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkaXNwbGF5TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICApLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2aWFQb2ludEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0bDvGdlIFp3aXNjaGVuemllbCBoaW56dScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICdTZXR6ZSBVbXN0ZWlnZXplaXQgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1NjaGxpZcOfZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICfDlmZmbmUgVW1zdGVpZ2V6ZWl0LUF1c3dhaGwgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ0VudGZlcm5lIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdUYXVzY2hlIFN0YXJ0IG1pdCBaaWVsJyxcbiAgICAndmlhLXBvaW50JzogJ1p3aXNjaGVuemllbCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1Vtc3RlaWdlemVpdCcsXG4gIH0sXG4gIGVuOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0FkZCB2aWEgcG9pbnQnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6ICdTZXQgc3RvcCBkdXJhdGlvbiBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ0Nsb3NlIHN0b3AgZHVyYXRpb24gc2VsZWN0b3IgYXQgdmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgJ09wZW4gc3RvcCBkdXJhdGlvbiBzZWxlY3RvciBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1JlbW92ZSB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnUmV2ZXJzZSBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uJyxcbiAgICAndmlhLXBvaW50JzogJ1ZpYSBwb2ludCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3AgZHVyYXRpb24nLFxuICB9LFxuICBmaToge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMaXPDpMOkIHbDpGxpcGlzdGUnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnQXNldGEgdsOkbGlwaXN0ZWVsbGUge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICdBdmFhIHbDpGxpcGlzdGVlbiB7e2luZGV4fX0gcHlzw6RoZHlrc2VuIGtlc3RvIHZhbGl0c2luJyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnU3VsamUgdsOkbGlwaXN0ZWVuIHt7aW5kZXh9fSBweXPDpGhkeWtzZW4ga2VzdG8gdmFsaXRzaW4nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUG9pc3RhIHbDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnS8Okw6RubsOkIHJlaXRpbiBzdXVudGEgdmFzdGFra2Fpc2Vrc2knLFxuICAgICd2aWEtcG9pbnQnOiAnVsOkbGlwaXN0ZScsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWw6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdQeXPDpGhkeWtzZW4ga2VzdG8nLFxuICB9LFxuICBzdjoge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMw6RnZyB0aWxsIHZpYXB1bmt0JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgJ1N0w6RsbCBpbiB2YXJha3RpZ2hldCBmw7ZyIHZpYXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1N0w6RuZyB2w6RsamFyZW4gZsO2ciB2YXJha3RpZ2hldCB2aWQgdmlhLXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnw5ZwcG5hIHbDpGxqYXJlbiBmw7ZyIHZhcmFrdGlnaGV0IHZpZCB2aWEtcHVua3RlbiB7e2luZGV4fX0nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVGEgYm9ydCB2aWFwdW5rdCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdTdsOkbmcgcnV0dGVucyByaWt0bmluZyB0aWxsIGRlbiBtb3RzYXR0YScsXG4gICAgJ3ZpYS1wb2ludCc6ICdWaWEgcHVua3QnLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHB1bmt0IHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdTdG9wcGV0cyB2YXJha3RpZ2hldCcsXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGlvbnM7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVhY3RTb3J0YWJsZSB9IGZyb20gJ3JlYWN0LXNvcnRhYmxlanMnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgRFRBdXRvU3VnZ2VzdCBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1hdXRvc3VnZ2VzdCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBTZWxlY3QgZnJvbSAnLi9oZWxwZXJzL1NlbGVjdCc7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vaGVscGVycy90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL2hlbHBlcnMvc3R5bGVzLnNjc3MnO1xuXG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIgPSAoKSA9PiAoe30pO1xuXG5jb25zdCBpc1ZpYVBvaW50RW1wdHkgPSB2aWFQb2ludCA9PiB7XG4gIGlmICh2aWFQb2ludCA9PT0gdW5kZWZpbmVkIHx8IGlzRW1wdHkodmlhUG9pbnQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZpYVBvaW50KTtcbiAgcmV0dXJuIChcbiAgICBrZXlzLmxlbmd0aCA9PT0gMSB8fCAoa2V5cy5sZW5ndGggPT09IDIgJiYga2V5cy5pbmNsdWRlcygnbG9jYXRpb25TbGFjaycpKVxuICApO1xufTtcblxuY29uc3QgSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGVuYWJsZWQsXG4gIG9uQ2xpY2ssXG4gIG9uS2V5UHJlc3MsXG4gIHdpZGUsXG4gIC4uLnJlc3Rcbn0pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17c3R5bGVzWydpdGluZXJhcnktc2VhcmNoLWNvbnRyb2wnXX1cbiAgICBzdHlsZT17eyAnLS13aWR0aCc6IHdpZGUgPyAnNDdweCcgOiAnNDBweCcgfX1cbiAgPlxuICAgIHtvbkNsaWNrICYmIGVuYWJsZWQgJiYgKFxuICAgICAgPGRpdlxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uS2V5UHJlc3M9e29uS2V5UHJlc3N9XG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApfVxuICA8L2Rpdj5cbik7XG5cbkl0aW5lcmFyeVNlYXJjaENvbnRyb2wucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBlbmFibGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB3aWRlOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbi8qKlxuICogUGFuZWwgdGhhdCByZW5kZXJzIHR3byBEVEF1dG9zdWdnZXN0IHNlYXJjaCBmaWVsZHMsIGluY2x1ZGluZyB2aWFwb2ludCBoYW5kbGluZ1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzZWFyY2hDb250ZXh0ID0ge1xuICogICBpc1BlbGlhc0xvY2F0aW9uQXdhcmU6IGZhbHNlIC8vIHRydWUgLyBmYWxzZSBkb2VzIExldCBQZWxpYXMgc3VnZ2VzdCBiYXNlZCBvbiBjdXJyZW50IHVzZXIgbG9jYXRpb25cbiAqICAgbWluaW1hbFJlZ2V4cDogdW5kZWZpbmVkIC8vIHVzZWQgZm9yIHRlc3RpbmcgbWluLiByZWdleHAuIEZvciBleGFtcGxlOiBuZXcgUmVnRXhwKCcuezIsfScpLFxuICogICBsaW5lUmVnZXhwOiB1bmRlZmluZWQgLy8gIGlkZW50aWZ5IHNlYXJjaGVzIGZvciByb3V0ZSBudW1iZXJzL2xhYmVsczogYnVzIHwgdHJhaW4gfCBtZXRyby4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoXG4gKiAgICAvLyAgICcoXlswLTldK1thLXpdPyR8Xlt5dWxlYXBpbmtydGR6XSR8KF5tWzEyXT9iPyQpKScsXG4gKiAgICAvLyAgJ2knLFxuICogICAgLy8gICksXG4gKiAgIFVSTF9QRUxJQVM6ICcnIC8vIHVybCBmb3IgcGVsaWFzIHNlYXJjaGVzXG4gKiAgIGZlZWRJRHM6IFsnSFNMJywgJ0hTTExhdXR0YSddIC8vIEZlZWRJZCdzIGxpa2UgIFtIU0wsIEhTTExhdXR0YV1cbiAqICAgZ2VvY29kaW5nU291cmNlczogWydvYScsJ29zbScsJ25sc2ZpJ10gIC8vIHNvdXJjZXMgZm9yIGdlb2NvZGluZ1xuICogICBnZW9jb2RpbmdTZWFyY2hQYXJhbXM7IHt9ICAvLyBTZWFyY2hwYXJtYXMgZnJvIGdlb2NvZGluZ1xuICogICBnZXRGYXZvdXJpdGVMb2NhdGlvbnM6ICgpID0+ICh7fSksICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgbG9jYXRpb25zLlxuICogICBnZXRGYXZvdXJpdGVTdG9wczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgc3RvcHMuXG4gKiAgIGdldExhbmd1YWdlOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSByb3V0ZXMuXG4gKiAgIGdldFBvc2l0aW9uczogKCkgPT4gKHt9KSwgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHVzZXIncyBnZW9sb2NhdGlvbi5cbiAqICAgZ2V0Um91dGVzUXVlcnk6ICgpID0+ICh7fSksICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIHJvdXRlcy5cbiAqICAgZ2V0QWxsQmlrZVJlbnRhbFN0YXRpb25zOiAoKSA9PiAoe30pLCAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgYWxsIGJpa2UgcmVudGFsIHN0YXRpb25zIGZyb20gZ3JhcGhxbCBBUEkuXG4gKiAgIGdldFN0b3BBbmRTdGF0aW9uc1F1ZXJ5OiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCBmZXRjaGVzIGZhdm91cml0ZSBzdG9wcyBhbmQgc3RhdGlvbnMgZnJvbSBncmFwaHFsIEFQSS5cbiAqICAgZ2V0RmF2b3VyaXRlUm91dGVzUXVlcnk6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIGZhdm91cml0ZSByb3V0ZXMuXG4gKiAgIGdldEZhdm91cml0ZUJpa2VSZW50YWxTdGF0aW9uczogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBmYXZvdXJpdGUgYmlrZSByZW50YWwgc3RhdGlvbi5cbiAqICAgZ2V0RmF2b3VyaXRlQmlrZVJlbnRhbFN0YXRpb25zUXVlcnk6ICgpID0+ICh7fSksIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgZmF2b3VyaXRlIGJpa2UgcmVudGFsIHN0YXRpb25zLlxuICogICBzdGFydExvY2F0aW9uV2F0Y2g6ICgpID0+ICh7fSksICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgbG9jYXRlcyB1c2VycyBnZW9sb2NhdGlvbi5cbiAqICAgc2F2ZVNlYXJjaDogKCkgPT4gKHt9KSwgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHNhdmVzIHNlYXJjaCB0byBvbGQgc2VhcmNoZXMgc3RvcmUuXG4gKiAgIGNsZWFyT2xkU2VhcmNoZXM6ICgpID0+ICh7fSksICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBjbGVhcnMgb2xkIHNlYXJjaGVzIHN0b3JlLlxuICogICBnZXRGdXR1cmVSb3V0ZXM6ICgpID0+ICh7fSksICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJuIGZ1dHVyZSByb3V0ZXNcbiAqICAgc2F2ZUZ1dHVyZVJvdXRlOiAoKSA9PiAoe30pLCAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHNhdmVzIGEgZnV0dXJlIHJvdXRlXG4gKiAgIGNsZWFyRnV0dXJlUm91dGVzOiAoKSA9PiAoe30pLCAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBjbGVhcnMgZnV0dXJlIHJvdXRlc1xuICogfTtcbiAqXG4gKiBjb25zdCBvcmlnaW4gPSB7XG4gKiAgbGF0OiA2MC4xNjkxOTYsXG4gKiAgbG9uOiAyNC45NTc2NzQsXG4gKiAgYWRkcmVzczogJ0FsZWtzYW50ZXJpbmthdHUsIEhlbHNpbmtpJyxcbiAqICBzZXQ6IHRydWUsXG4gKiAgcmVhZHk6IHRydWUsXG4gKiB9XG4gKlxuICogY29uc3QgZGVzdGluYXRpb24gPSB7XG4gKiAgIGxhdDogNjAuMTk5MDkzLFxuICogICBsb246IDI0Ljk0MDUzNixcbiAqICAgYWRkcmVzczogJ09wYXN0aW5zaWx0YSA2LCBIZWxzaW5raScsXG4gKiAgIHNldDogdHJ1ZSxcbiAqICAgcmVhZHk6IHRydWUsXG4gKiB9XG4gKiBvblNlbGVjdChpdGVtLCBpZCkge1xuICogIHJldHVybiBudWxsOyAgLy8gRGVmaW5lIHdoYXQgdG8gZG8gd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYmVpbmcgc2VsZWN0ZWQuIE5vbmUgYnkgZGVmYXVsdC5cbiAqICB9XG4gKiBvbkNsZWFyKGlkKSB7XG4gKiAgcmV0dXJuIG51bGw7ICAvLyBEZWZpbmUgd2hhdCB0byBkbyB3aGVuIGEgc3VnZ2VzdGlvbiBpcyBiZWluZyBzZWxlY3RlZC4gTm9uZSBieSBkZWZhdWx0LlxuICogfVxuICogY29uc3QgZ2V0QXV0b1N1Z2dlc3RJY29uczoge1xuICogICAvLyBDYWxsZWQgZm9yIGV2ZXJ5IGNpdHkgYmlrZSBzdGF0aW9uIHJlbmRlcmVkIGFzIGEgc2VhcmNoIHN1Z2dlc3Rpb24uIFNob3VsZCByZXR1cm4gdGhlIGljb24gYW5kXG4gKiAgIC8vIGNvbG9yIHVzZWQgZm9yIHRoYXQgc3RhdGlvbi4gVHdvIGljb25zIGFyZSBhdmFpbGFibGUsICdjaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0JyBhbmRpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQtc2Vjb25kYXJ5Jy5cbiAqICAgY2l0eWJpa2VzOiBzdGF0aW9uID0+IHtcbiAqICAgICAgcmV0dXJuIFsnY2l0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdCcsICcjZjJiNjJkJ107XG4gKiAgIH1cbiAqIH1cbiAqIGNvbnN0IHRhcmdldHMgPSBbJ0xvY2F0aW9ucycsICdTdG9wcycsICdSb3V0ZXMnXTsgLy8gRGVmaW5lcyB3aGF0IHlvdSBhcmUgc2VhcmNoaW5nLiBhbGwgYXZhaWxhYmxlIG9wdGlvbnMgYXJlIExvY2F0aW9ucywgU3RvcHMsIFJvdXRlcywgQmlrZVJlbnRhbFN0YXRpb25zLCBGdXR1cmVSb3V0ZXMsIE1hcFBvc2l0aW9uIGFuZCBDdXJyZW50UG9zaXRpb24uIExlYXZlIGVtcHR5IHRvIHNlYXJjaCBhbGwgdGFyZ2V0cy5cbiAqIGNvbnN0IHNvdXJjZXMgPSBbJ0Zhdm91cml0ZScsICdIaXN0b3J5JywgJ0RhdGFzb3VyY2UnXSAvLyBEZWZpbmVzIHdoZXJlIHlvdSBhcmUgc2VhcmNoaW5nLiBhbGwgYXZhaWxhYmxlIGFyZTogRmF2b3VyaXRlLCBIaXN0b3J5IChwcmV2aW91c2x5IHNlYXJjaGVkIHNlYXJjaGVzKSwgYW5kIERhdGFzb3VyY2UuIExlYXZlIGVtcHR5IHRvIHVzZSBhbGwgc291cmNlcy5cbiAqIDxEVEF1dG9zdWdnZXN0UGFuZWxcbiAqICAgIGFwcEVsZW1lbnQ9e2FwcEVsZW1lbnR9IC8vIFJlcXVpcmVkLiBSb290IGVsZW1lbnQncyBpZC4gTmVlZGVkIGZvciByZWFjdC1tb2RhbCBjb21wb25lbnQuXG4gKiAgICBvcmlnaW49e29yaWdpbn0gLy8gU2VsZWN0ZWQgb3JpZ2luIHBvaW50XG4gKiAgICBkZXN0aW5hdGlvbj17ZGVzdGluYXRpb259IC8vIFNlbGVjdGVkIGRlc3RpbmF0aW9uIHBvaW50XG4gKiAgICBvcmlnaW5QbGFjZUhvbGRlcj17J0dpdmUgb3JpZ2luJ30gLy8gT3B0aW9uYWwgR2l2ZSBzdHJpbmcgc2hvd24gaW5pdGlhbGx5IGluc2lkZSBvcmlnaW4gc2VhcmNoIGZpZWxkXG4gKiAgICBkZXN0aW5hdGlvblBsYWNlSG9sZGVyPXsnR2l2ZSBkZXN0aW5hdGlvbid9IC8vIE9wdGlvbmFsIEdpdmUgc3RyaW5nIHNob3duIGluaXRhbGx5IGluc2lkZSBkZXN0aW5hdGlvbiBzZWFyY2ggZmllbGRcbiAqICAgIGluaXRpYWxWaWFQb2ludHM9e1tdfSAvLyBPcHRpb25hbC4gIElmIHNob3dWaWFwb2ludENvbnRyb2wgaXMgc2V0IHRvIHRydWUsIHBhc3MgaW5pdGlhbCB2aWEgcG9pbnRzIHRvIHRoZSBwYW5lbC4gQ3VycmVudGx5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICB1cGRhdGVWaWFQb2ludHM9eygpID0+IHJldHVybiBbXX0gLy8gT3B0aW9uYWwuIElmIHNob3dWaWFwb2ludENvbnRyb2wgaXMgc2V0IHRvIHRydWUsIGRlZmluZSBob3cgdG8gdXBkYXRlIHlvdXIgdmlhIHBvaW50IGxpc3Qgd2l0aCB0aGlzIGZ1bmN0aW9uLiBDdXJyZW5sdHkgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBnaXZlbi5cbiAqICAgIHN3YXBPcmRlcj17KCkgPT4gcmV0dXJuIG51bGx9IC8vIE9wdGlvbmFsLiBJZiBzaG93U3dhcENvbnRyb2wgaXMgc2V0IHRvIHRydWUsIGRlZmluZSBob3cgdG8gc3dhcCBvcmRlciBvZiB5b3VyIHBvaW50cyAob3JpZ2luLCBkZXN0aW5hdGlvbiwgdmlhcG9pbnRzKS4gQ3VycmVudGx5IG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZ2l2ZW4uXG4gKiAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICogICAgZ2V0QXV0b1N1Z2dlc3RJY29ucz17Z2V0QXV0b1N1Z2dlc3RJY29uc31cbiAqICAgIG9uU2VsZWN0PXt0aGlzLm9uU2VsZWN0fVxuICogICAgb25DbGVhcj17dGhpcy5vbkNsZWFyfVxuICogICAgbGFuZz1cImZpXCIgLy8gRGVmaW5lIGxhbmd1YWdlIGZpIHN2IG9yIGVuLlxuICogICAgYWRkQW5hbHl0aWNzRXZlbnQ9e251bGx9IC8vIE9wdGlvbmFsLiB5b3UgY2FuIHJlY29yZCBhbiBhbmFseXRpY3MgZXZlbnQgaWYgeW91IHdpc2guIGlmIHBhc3NlZCwgY29tcG9uZW50IHdpbGwgcGFzcyBhbiBjYXRlZ29yeSwgYWN0aW9uLCBuYW1lIHBhcmFtZXRlcnMgdG8gYWRkQW5hbHl0aWNzRXZlbnRcbiAqICAgIGRpc2FibGVBdXRvRm9jdXM9e2ZhbHNlfSAvLyBPcHRpb25hbC4gdXNlIHRoaXMgdG8gZGlzYWJsZSBhdXRvZm9jdXMgY29tcGxldGVseSBmcm9tIERUQXV0b3N1Z2dlc3RQYW5lbFxuICogICAgc291cmNlcz17c291cmNlc31cbiAqICAgIHRhcmdldHM9e3RhcmdldHN9XG4gKiAgICBpc01vYmlsZSAgLy8gT3B0aW9uYWwuIERlZmF1bHRzIHRvIGZhbHNlLiBXaGV0aGVyIHRvIHVzZSBtb2JpbGUgc2VhcmNoLlxuICogICAgb3JpZ2luTW9iaWxlTGFiZWw9XCJPcmlnaW4gbGFiZWxcIiAvLyBPcHRpb25hbC4gQ3VzdG9tIGxhYmVsIHRleHQgZm9yIG9yaWdpbiBmaWVsZCBvbiBtb2JpbGUuXG4gKiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsPVwiRGVzdGluYXRpb24gbGFiZWxcIiAvLyBPcHRpb25hbC4gQ3VzdG9tIGxhYmVsIHRleHQgZm9yIGRlc3RpbmF0aW9uIGZpZWxkIG9uIG1vYmlsZS5cbiAqICAgIGhhbmRsZUZvY3VzQ2hhbmdlPXsoKSA9PiB7fX0gLy8gT3B0aW9uYWwuIElmIGRlZmluZWQgb3ZlcnJpZGVzIGRlZmF1bHQgb25Gb2N1c0NoYW5nZSBiZWhhdmlvdXJcbiAqICAgIHNob3dTd2FwQ29udHJvbD17ZmFsc2V9IC8vIE9wdGlvbmFsLlxuICogICAgc2hvd1ZpYXBvaW50Q29udHJvbD17ZmFsc2V9IC8vIE9wdGlvbmFsLlxuICovXG5jbGFzcyBEVEF1dG9zdWdnZXN0UGFuZWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFwcEVsZW1lbnQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBvcmlnaW46IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBkZXN0aW5hdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdmlhUG9pbnRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcbiAgICB1cGRhdGVWaWFQb2ludHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3dhcE9yZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzZWFyY2hQYW5lbFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VhcmNoQ29udGV4dDogUHJvcFR5cGVzLmFueS5pc1JlcXVpcmVkLFxuICAgIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNsZWFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhZGRBbmFseXRpY3NFdmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNhYmxlQXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzb3VyY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICB0YXJnZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICBmaWx0ZXJSZXN1bHRzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaG92ZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlZlBvaW50OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG1vZGVTZXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZUljb25Db2xvcnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZ2V0QXV0b1N1Z2dlc3RJY29uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBmb250V2VpZ2h0czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG1lZGl1bTogUHJvcFR5cGVzLm51bWJlcixcbiAgICB9KSxcbiAgICBzaG93U2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkZvY3VzQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpc0VtYmVkZGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93U3dhcENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dWaWFwb2ludENvbnRyb2w6IFByb3BUeXBlcy5ib29sLFxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgdmlhUG9pbnRzOiBbXSxcbiAgICBvcmlnaW5QbGFjZUhvbGRlcjogJ2dpdmUtb3JpZ2luJyxcbiAgICBkZXN0aW5hdGlvblBsYWNlSG9sZGVyOiAnZ2l2ZS1kZXN0aW5hdGlvbicsXG4gICAgc3dhcE9yZGVyOiB1bmRlZmluZWQsXG4gICAgdXBkYXRlVmlhUG9pbnRzOiAoKSA9PiB7fSxcbiAgICBsYW5nOiAnZmknLFxuICAgIHNvdXJjZXM6IFtdLFxuICAgIHRhcmdldHM6IFtdLFxuICAgIGZpbHRlclJlc3VsdHM6IHVuZGVmaW5lZCxcbiAgICBkaXNhYmxlQXV0b0ZvY3VzOiBmYWxzZSxcbiAgICBpc01vYmlsZTogZmFsc2UsXG4gICAgaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkOiB1bmRlZmluZWQsXG4gICAgY29sb3I6ICcjMDA3YWM5JyxcbiAgICBob3ZlckNvbG9yOiAnIzAwNjJhMScsXG4gICAgb3JpZ2luTW9iaWxlTGFiZWw6IG51bGwsXG4gICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbDogbnVsbCxcbiAgICBtb2RlU2V0OiB1bmRlZmluZWQsXG4gICAgbW9kZUljb25Db2xvcnM6IHVuZGVmaW5lZCxcbiAgICBmb250V2VpZ2h0czoge1xuICAgICAgbWVkaXVtOiA1MDAsXG4gICAgfSxcbiAgICBzaG93U2Nyb2xsOiBmYWxzZSxcbiAgICBvbkZvY3VzQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgaXNFbWJlZGRlZDogZmFsc2UsXG4gICAgc2hvd1N3YXBDb250cm9sOiBmYWxzZSxcbiAgICBzaG93VmlhcG9pbnRDb250cm9sOiBmYWxzZSxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLmRyYWdnYWJsZVZpYVBvaW50cyA9IFtdO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogW10sXG4gICAgICByZWZzOiBbXSxcbiAgICB9O1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+IHtcbiAgICAgIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZywgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50ID0gKCkgPT4ge1xuICAgIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2UodGhpcy5wcm9wcy5sYW5nKTtcbiAgfTtcblxuICBjb21wb25lbnREaWRVcGRhdGUgPSAoKSA9PiB7XG4gICAgaWYgKGkxOG5leHQubGFuZ3VhZ2UgIT09IHRoaXMucHJvcHMubGFuZykge1xuICAgICAgaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSh0aGlzLnByb3BzLmxhbmcpO1xuICAgIH1cbiAgfTtcblxuICBnZXRTbGFja1RpbWVPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IHRpbWVPcHRpb25zID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gOTsgaSsrKSB7XG4gICAgICBjb25zdCB2YWx1ZUluTWludXRlcyA9IGkgKiAxMDtcbiAgICAgIHRpbWVPcHRpb25zLnB1c2goe1xuICAgICAgICBkaXNwbGF5TmFtZTogYCR7dmFsdWVJbk1pbnV0ZXN9ICR7aTE4bmV4dC50KCdtaW51dGUtc2hvcnQnKX1gLFxuICAgICAgICB2YWx1ZTogdmFsdWVJbk1pbnV0ZXMgKiA2MCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGltZU9wdGlvbnM7XG4gIH07XG5cbiAgc2V0RHJhZ2dhYmxlVmlhUG9pbnRSZWYgPSAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICB0aGlzLmRyYWdnYWJsZVZpYVBvaW50c1tpbmRleF0gPSBlbGVtZW50O1xuICB9O1xuXG4gIHN0b3JlUmVmZXJlbmNlID0gcmVmID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHByZXZTdGF0ZSA9PiAoeyByZWZzOiBbLi4ucHJldlN0YXRlLnJlZnMsIHJlZl0gfSkpO1xuICB9O1xuXG4gIGhhbmRsZUZvY3VzQ2hhbmdlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgZGVzdGluYXRpb24gfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCFkZXN0aW5hdGlvbiB8fCAhZGVzdGluYXRpb24uc2V0KSB7XG4gICAgICB0aGlzLnN0YXRlLnJlZnNbMV0uZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50ID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IHNwYWNlID0gWzEzLCAnICcsICdTcGFjZWJhciddO1xuICAgIGNvbnN0IGVudGVyID0gWzMyLCAnRW50ZXInXTtcbiAgICBjb25zdCBrZXkgPSAoZXZlbnQgJiYgKGV2ZW50LmtleSB8fCBldmVudC53aGljaCB8fCBldmVudC5rZXlDb2RlKSkgfHwgJyc7XG4gICAgaWYgKCFrZXkgfHwgIXNwYWNlLmNvbmNhdChlbnRlcikuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHZhbHVlID0gbG9jYXRpb24gPT5cbiAgICAobG9jYXRpb24gJiYgbG9jYXRpb24uYWRkcmVzcykgfHxcbiAgICAobG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzICYmIGxvY2F0aW9uLnJlYWR5ICYmICdOeWt5aW5lbiBzaWphaW50aScpIHx8XG4gICAgJyc7XG5cbiAgY2xhc3MgPSBsb2NhdGlvbiA9PlxuICAgIGxvY2F0aW9uICYmIGxvY2F0aW9uLmdwcyA9PT0gdHJ1ZSA/ICdwb3NpdGlvbicgOiAnbG9jYXRpb24nO1xuXG4gIHVwZGF0ZVZpYVBvaW50cyA9IHZpYVBvaW50cyA9PiB7XG4gICAgaWYgKHZpYVBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSkpO1xuICB9O1xuXG4gIHVwZGF0ZVZpYVBvaW50U2xhY2sgPSAoXG4gICAgYWN0aXZlVmlhUG9pbnRTbGFja3MsXG4gICAgdXBkYXRlZFZpYVBvaW50SW5kZXgsXG4gICAgdmlhUG9pbnRSZW1vdmVkID0gZmFsc2UsXG4gICkgPT4ge1xuICAgIGNvbnN0IGZvdW5kQXRJbmRleCA9IGFjdGl2ZVZpYVBvaW50U2xhY2tzLmluZGV4T2YodXBkYXRlZFZpYVBvaW50SW5kZXgpO1xuICAgIGlmIChmb3VuZEF0SW5kZXggPiAtMSkge1xuICAgICAgYWN0aXZlVmlhUG9pbnRTbGFja3Muc3BsaWNlKGZvdW5kQXRJbmRleCwgMSk7XG4gICAgfVxuICAgIHJldHVybiB2aWFQb2ludFJlbW92ZWRcbiAgICAgID8gYWN0aXZlVmlhUG9pbnRTbGFja3MubWFwKHZhbHVlID0+XG4gICAgICAgICAgdmFsdWUgPiB1cGRhdGVkVmlhUG9pbnRJbmRleCA/IHZhbHVlIC0gMSA6IHZhbHVlLFxuICAgICAgICApXG4gICAgICA6IGFjdGl2ZVZpYVBvaW50U2xhY2tzO1xuICB9O1xuXG4gIGhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayA9IHZpYVBvaW50SW5kZXggPT4ge1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogYWN0aXZlU2xhY2tJbnB1dHMuaW5jbHVkZXModmlhUG9pbnRJbmRleClcbiAgICAgICAgPyB0aGlzLnVwZGF0ZVZpYVBvaW50U2xhY2soYWN0aXZlU2xhY2tJbnB1dHMsIHZpYVBvaW50SW5kZXgpXG4gICAgICAgIDogYWN0aXZlU2xhY2tJbnB1dHMuY29uY2F0KFt2aWFQb2ludEluZGV4XSksXG4gICAgfSk7XG4gIH07XG5cbiAgaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZCA9IChzbGFja1RpbWVJblNlY29uZHMsIGkpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRBbmFseXRpY3NFdmVudCh7XG4gICAgICAgIGFjdGlvbjogJ0VkaXRWaWFQb2ludFN0b3BEdXJhdGlvbicsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBzbGFja1RpbWVJblNlY29uZHMgLyA2MCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB7IHZpYVBvaW50cyB9ID0gdGhpcy5wcm9wcztcbiAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayA9IE51bWJlci5wYXJzZUludChzbGFja1RpbWVJblNlY29uZHMsIDEwKTtcbiAgICB0aGlzLnVwZGF0ZVZpYVBvaW50cyh2aWFQb2ludHMpO1xuICB9O1xuXG4gIGhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZCA9ICh2aWFQb2ludExvY2F0aW9uLCBpKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5oYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQodmlhUG9pbnRMb2NhdGlvbiwgaSk7XG4gIH07XG5cbiAgaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayA9IHZpYVBvaW50SW5kZXggPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgYWN0aW9uOiAnUmVtb3ZlSm91cm5leVZpYVBvaW50JyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyBhY3RpdmVTbGFja0lucHV0cyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IHZpYVBvaW50cyB9ID0gdGhpcy5wcm9wcztcbiAgICB2aWFQb2ludHMuc3BsaWNlKHZpYVBvaW50SW5kZXgsIDEpO1xuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiB0aGlzLnVwZGF0ZVZpYVBvaW50U2xhY2soXG4gICAgICAgICAgYWN0aXZlU2xhY2tJbnB1dHMsXG4gICAgICAgICAgdmlhUG9pbnRJbmRleCxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgICgpID0+IHRoaXMudXBkYXRlVmlhUG9pbnRzKHZpYVBvaW50cyksXG4gICAgKTtcbiAgfTtcblxuICBoYW5kbGVBZGRWaWFQb2ludENsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgYWN0aW9uOiAnQWRkSm91cm5leVZpYVBvaW50JyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6ICdRdWlja1NldHRpbmdzQnV0dG9uJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB7IHZpYVBvaW50cyB9ID0gdGhpcy5wcm9wcztcbiAgICB2aWFQb2ludHMucHVzaChnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIoKSk7XG4gICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgdGhlIHN0YXRlIHNvIHRoYXQgcGxhY2VIb2xkZXIgd2lsbCBzaG93IHVwIGluIHBhbmVsLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hY2Nlc3Mtc3RhdGUtaW4tc2V0c3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHRoaXMuc3RhdGUpO1xuICB9O1xuXG4gIGhhbmRsZVN3YXBPcmRlckNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgYWN0aW9uOiAnU3dpdGNoSm91cm5leVN0YXJ0QW5kRW5kUG9pbnRPcmRlcicsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5yZXZlcnNlKCk7XG4gICAgdGhpcy5wcm9wcy5zd2FwT3JkZXIoKTtcbiAgfTtcblxuICBnZXRTbGFja0Rpc3BsYXkgPSBzbGFja0luU2Vjb25kcyA9PiB7XG4gICAgcmV0dXJuIGAke3NsYWNrSW5TZWNvbmRzIC8gNjB9ICR7aTE4bmV4dC50KCdtaW51dGUtc2hvcnQnKX1gO1xuICB9O1xuXG4gIHJlbmRlciA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvcmlnaW4sXG4gICAgICBzZWFyY2hQYW5lbFRleHQsXG4gICAgICBzZWFyY2hDb250ZXh0LFxuICAgICAgZGlzYWJsZUF1dG9Gb2N1cyxcbiAgICAgIHZpYVBvaW50cyxcbiAgICAgIG9yaWdpbk1vYmlsZUxhYmVsLFxuICAgICAgZGVzdGluYXRpb25Nb2JpbGVMYWJlbCxcbiAgICAgIGZvbnRXZWlnaHRzLFxuICAgICAgb25Gb2N1c0NoYW5nZSxcbiAgICAgIHNob3dTd2FwQ29udHJvbCxcbiAgICAgIHNob3dWaWFwb2ludENvbnRyb2wsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBhY3RpdmVTbGFja0lucHV0cyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzbGFja1RpbWUgPSB0aGlzLmdldFNsYWNrVGltZU9wdGlvbnMoKTtcbiAgICBjb25zdCBkZWZhdWx0U2xhY2tUaW1lVmFsdWUgPSAwO1xuICAgIGNvbnN0IGdldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0ID0gKFxuICAgICAgdmlhUG9pbnQsXG4gICAgICBkZWZhdWx0VmFsdWUgPSBkZWZhdWx0U2xhY2tUaW1lVmFsdWUsXG4gICAgKSA9PiAodmlhUG9pbnQgJiYgdmlhUG9pbnQubG9jYXRpb25TbGFjaykgfHwgZGVmYXVsdFZhbHVlO1xuICAgIGNvbnN0IGlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZSA9IGluZGV4ID0+XG4gICAgICBhY3RpdmVTbGFja0lucHV0cy5pbmNsdWRlcyhpbmRleCk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjeChbXG4gICAgICAgICAgc3R5bGVzWydhdXRvc3VnZ2VzdC1wYW5lbCddLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNtYWxsOiB0aGlzLnByb3BzLmlzTW9iaWxlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICctLWNvbG9yJzogYCR7dGhpcy5wcm9wcy5jb2xvcn1gLFxuICAgICAgICAgICctLWZvbnQtd2VpZ2h0LW1lZGl1bSc6IGZvbnRXZWlnaHRzLm1lZGl1bSxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgeycgJ31cbiAgICAgICAge3NlYXJjaFBhbmVsVGV4dCA/IChcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT17c3R5bGVzWydhdXRvc3VnZ2VzdC1zZWFyY2hwYW5lbC10ZXh0J119PlxuICAgICAgICAgICAgICB7JyAnfVxuICAgICAgICAgICAgICB7c2VhcmNoUGFuZWxUZXh0fVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ29yaWdpbi1pbnB1dC1jb250YWluZXInXX0+XG4gICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgaWQ9XCJvcmlnaW5cIlxuICAgICAgICAgICAgYXV0b0ZvY3VzPXtcbiAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1cyA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6ICF0aGlzLnByb3BzLmlzTW9iaWxlICYmICFvcmlnaW4ubGF0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdG9yZVJlZj17dGhpcy5zdG9yZVJlZmVyZW5jZX1cbiAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLmNsYXNzKG9yaWdpbil9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5vcmlnaW5QbGFjZUhvbGRlcn1cbiAgICAgICAgICAgIHZhbHVlPXt0aGlzLnZhbHVlKG9yaWdpbil9XG4gICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgZ2V0QXV0b1N1Z2dlc3RJY29ucz17dGhpcy5wcm9wcy5nZXRBdXRvU3VnZ2VzdEljb25zfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICBmb2N1c0NoYW5nZT17b25Gb2N1c0NoYW5nZSB8fCB0aGlzLmhhbmRsZUZvY3VzQ2hhbmdlfVxuICAgICAgICAgICAgbGFuZz17dGhpcy5wcm9wcy5sYW5nfVxuICAgICAgICAgICAgc291cmNlcz17dGhpcy5wcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgdGFyZ2V0cz17dGhpcy5wcm9wcy50YXJnZXRzfVxuICAgICAgICAgICAgZmlsdGVyUmVzdWx0cz17dGhpcy5wcm9wcy5maWx0ZXJSZXN1bHRzfVxuICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn1cbiAgICAgICAgICAgIGhvdmVyQ29sb3I9e3RoaXMucHJvcHMuaG92ZXJDb2xvcn1cbiAgICAgICAgICAgIG1vYmlsZUxhYmVsPXtvcmlnaW5Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgbW9kZUljb25Db2xvcnM9e3RoaXMucHJvcHMubW9kZUljb25Db2xvcnN9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7KHNob3dTd2FwQ29udHJvbCB8fCBzaG93VmlhcG9pbnRDb250cm9sKSAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcHBvc2l0ZX1cbiAgICAgICAgICAgICAgZW5hYmxlZD17c2hvd1N3YXBDb250cm9sfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZVN3YXBPcmRlckNsaWNrKCl9XG4gICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJiB0aGlzLmhhbmRsZVN3YXBPcmRlckNsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpMThuZXh0LnQoJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJyl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJY29uIGltZz1cIm9wcG9zaXRlXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHt2aWFQb2ludHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydyZWN0YW5nbGUtY29udGFpbmVyJ119PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5yZWN0YW5nbGV9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIDxSZWFjdFNvcnRhYmxlXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50cy1jb250YWluZXInXX1cbiAgICAgICAgICBsaXN0PXt2aWFQb2ludHN9XG4gICAgICAgICAgaGFuZGxlPXtgLiR7c3R5bGVzWyd2aWFwb2ludC1iZWZvcmUnXX1gfVxuICAgICAgICAgIGFuaW1hdGlvbj17MjAwfVxuICAgICAgICAgIHNldExpc3Q9e2l0ZW1zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZpYVBvaW50cyA9IGl0ZW1zLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSk7XG4gICAgICAgICAgICBpZiAobmV3VmlhUG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHMobmV3VmlhUG9pbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3ZpYVBvaW50cy5tYXAoKG8sIGkpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ3ZpYXBvaW50LWNvbnRhaW5lciddKX1cbiAgICAgICAgICAgICAga2V5PXtgdmlhcG9pbnQtJHtpfWB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snbGlnaHQtZ3JheS1iYWNrZ3JvdW5kJ119PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucm93fT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdtb3ZlJyB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJlbGxpcHNpc1wiIHJvdGF0ZT17OTB9IGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICAgICAgYCR7c3R5bGVzWyd2aWFwb2ludC1pbnB1dC1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlc1tgdmlhcG9pbnQtJHtpICsgMX1gXVxuICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwibWFwTWFya2VyLXZpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17aTE4bmV4dC50KCd2aWEtcG9pbnQtaW5kZXgnLCB7IGluZGV4OiBpICsgMSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1cyA9PT0gdHJ1ZSA/IGZhbHNlIDogIXRoaXMucHJvcHMuaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsobyAmJiBvLmFkZHJlc3MpIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVWaWFQb2ludHM9e2l0ZW0gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKGl0ZW0sIGkpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cz17dGhpcy5wcm9wcy50YXJnZXRzfVxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgICAgICAgICAgICBtb2RlSWNvbkNvbG9ycz17dGhpcy5wcm9wcy5tb2RlSWNvbkNvbG9yc31cbiAgICAgICAgICAgICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydhZGQtdmlhLXBvaW50LXNsYWNrJ119XG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ9e3RoaXMucHJvcHMuc2hvd1ZpYXBvaW50Q29udHJvbH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrKGkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KFxuICAgICAgICAgICAgICAgICAgICAgIGlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3BlbidcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICB7IGluZGV4OiBpICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB3aWRlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7IWlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldICYmXG4gICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWyd2aWFwb2ludC1zbGFjay10aW1lJ119XG4gICAgICAgICAgICAgICAgICAgID57YCR7aTE4bmV4dC50KFxuICAgICAgICAgICAgICAgICAgICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnLFxuICAgICAgICAgICAgICAgICAgICApfTogJHt0aGlzLmdldFNsYWNrRGlzcGxheShcbiAgICAgICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayxcbiAgICAgICAgICAgICAgICAgICAgKX1gfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ2lucHV0LXZpYXBvaW50LXNsYWNrLWNvbnRhaW5lciddLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogIWlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKSxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3NlbGVjdC13cmFwcGVyJ119PlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2B2aWFwb2ludC1zbGFjay0ke2l9YH1cbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd2aWFwb2ludC1zbGFjay1hbW91bnQnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtzbGFja1RpbWV9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0KHZpYVBvaW50c1tpXSl9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17dGhpcy5nZXRTbGFja0Rpc3BsYXl9XG4gICAgICAgICAgICAgICAgICAgICAgdmlhUG9pbnRJbmRleD17aX1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzWydjb21ib2JveC1pY29uJ119ICR7c3R5bGVzWyd0aW1lLWlucHV0LWljb24nXX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2xhY2tUaW1lU2VsZWN0ZWQ9e3RoaXMuaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEl0aW5lcmFyeVNlYXJjaENvbnRyb2xcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sncmVtb3ZlLXZpYS1wb2ludCddfVxuICAgICAgICAgICAgICAgIGVuYWJsZWQ9e3RoaXMucHJvcHMuc2hvd1ZpYXBvaW50Q29udHJvbH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2soaSl9XG4gICAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgICAgdGhpcy5pc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQoZSkgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayhpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpMThuZXh0LnQoJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJywge1xuICAgICAgICAgICAgICAgICAgaW5kZXg6IGkgKyAxLFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gaW1nPVwiY2xvc2VcIiBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn0gLz5cbiAgICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmVhY3RTb3J0YWJsZT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZGVzdGluYXRpb24taW5wdXQtY29udGFpbmVyJ119PlxuICAgICAgICAgIDxEVEF1dG9TdWdnZXN0XG4gICAgICAgICAgICBhcHBFbGVtZW50PXt0aGlzLnByb3BzLmFwcEVsZW1lbnR9XG4gICAgICAgICAgICBpY29uPVwibWFwTWFya2VyXCJcbiAgICAgICAgICAgIGlkPVwiZGVzdGluYXRpb25cIlxuICAgICAgICAgICAgYXV0b0ZvY3VzPXtcbiAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1cyA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6ICF0aGlzLnByb3BzLmlzTW9iaWxlICYmICFOdW1iZXIuaXNOYU4ob3JpZ2luLmxhdClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlUmVmPXt0aGlzLnN0b3JlUmVmZXJlbmNlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMuZGVzdGluYXRpb25QbGFjZUhvbGRlcn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17dGhpcy5jbGFzcyh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgdmFsdWU9e3RoaXMudmFsdWUodGhpcy5wcm9wcy5kZXN0aW5hdGlvbil9XG4gICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgbW9iaWxlTGFiZWw9e2Rlc3RpbmF0aW9uTW9iaWxlTGFiZWx9XG4gICAgICAgICAgICBmb250V2VpZ2h0cz17dGhpcy5wcm9wcy5mb250V2VpZ2h0c31cbiAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgIG1vZGVJY29uQ29sb3JzPXt0aGlzLnByb3BzLm1vZGVJY29uQ29sb3JzfVxuICAgICAgICAgICAgc2hvd1Njcm9sbD17dGhpcy5wcm9wcy5zaG93U2Nyb2xsfVxuICAgICAgICAgICAgaXNFbWJlZGRlZD17dGhpcy5wcm9wcy5pc0VtYmVkZGVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyhzaG93U3dhcENvbnRyb2wgfHwgc2hvd1ZpYXBvaW50Q29udHJvbCkgJiYgKFxuICAgICAgICAgICAgPEl0aW5lcmFyeVNlYXJjaENvbnRyb2xcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ2FkZC12aWEtcG9pbnQnXSwgc3R5bGVzLm1vcmUsIHtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZWQ6IHZpYVBvaW50cy5sZW5ndGggPiA0LFxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgZW5hYmxlZD17c2hvd1ZpYXBvaW50Q29udHJvbH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVBZGRWaWFQb2ludENsaWNrKCl9XG4gICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQWRkVmlhUG9pbnRDbGljaygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17aTE4bmV4dC50KCdhZGQtdmlhLWJ1dHRvbi1sYWJlbCcpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgICAgIGltZz1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICB3aWR0aD17MS4yNX1cbiAgICAgICAgICAgICAgICBoZWlnaHQ9ezEuMzc1fVxuICAgICAgICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRFRBdXRvc3VnZ2VzdFBhbmVsO1xuIl0sIm5hbWVzIjpbIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlIiwiZXhjbHVkZWQiLCJrZXkiLCJpIiwidGFyZ2V0Iiwic291cmNlS2V5cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwic3R5bGVJbmplY3QiLCJjc3MiLCJyZWYiLCJpbnNlcnRBdCIsImRvY3VtZW50IiwiaGVhZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3R5bGUiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmRDaGlsZCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJTZWxlY3QiLCJ2YWx1ZSIsImdldERpc3BsYXkiLCJvcHRpb25zIiwib25TbGFja1RpbWVTZWxlY3RlZCIsInZpYVBvaW50SW5kZXgiLCJpZCIsImxhYmVsIiwiaWNvbiIsImRpc3BsYXlWYWx1ZSIsImNoYW5nZURpc3BsYXlWYWx1ZSIsInVzZVN0YXRlIiwib3BlbiIsImNoYW5nZU9wZW4iLCJ1c2VFZmZlY3QiLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJzY3JvbGxJbmRleCIsIk1hdGgiLCJmbG9vciIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJpbnB1dElkIiwibGFiZWxJZCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJjbGFzc05hbWUiLCJzdHlsZXMiLCJodG1sRm9yIiwiQXV0b3N1Z2dlc3QiLCJzdWdnZXN0aW9ucyIsImdldFN1Z2dlc3Rpb25WYWx1ZSIsInMiLCJyZW5kZXJTdWdnZXN0aW9uIiwiZGlzcGxheU5hbWUiLCJvblN1Z2dlc3Rpb25zRmV0Y2hSZXF1ZXN0ZWQiLCJzaG91bGRSZW5kZXJTdWdnZXN0aW9ucyIsImZvY3VzSW5wdXRPblN1Z2dlc3Rpb25DbGljayIsIm9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZCIsImlucHV0UHJvcHMiLCJvbkNoYW5nZSIsIm9uSW5wdXRDaGFuZ2UiLCJfIiwibmV3VmFsdWUiLCJtZXRob2QiLCJvbkZvY3VzIiwib25CbHVyIiwicmVhZE9ubHkiLCJyZW5kZXJTdWdnZXN0aW9uc0NvbnRhaW5lciIsImNvbnRhaW5lclByb3BzIiwiY2hpbGRyZW4iLCJvdGhlclJlZnMiLCJfZXhjbHVkZWQiLCJhc3NpZ24iLCJ0YWJJbmRleCIsImVsZW0iLCJ0aGVtZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYXJyYXlPZiIsInNoYXBlIiwic3RyaW5nIiwibm9kZSIsInRyYW5zbGF0aW9ucyIsImRlIiwiZW4iLCJmaSIsInN2IiwiaW5pdCIsImxuZyIsImZhbGxiYWNrTG5nIiwiZGVmYXVsdE5TIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiZ2V0RW1wdHlWaWFQb2ludFBsYWNlSG9sZGVyIiwiaXNWaWFQb2ludEVtcHR5IiwidmlhUG9pbnQiLCJ1bmRlZmluZWQiLCJpc0VtcHR5IiwiaW5jbHVkZXMiLCJJdGluZXJhcnlTZWFyY2hDb250cm9sIiwiX3JlZiIsImVuYWJsZWQiLCJvbkNsaWNrIiwib25LZXlQcmVzcyIsIndpZGUiLCJyZXN0Iiwicm9sZSIsImJvb2wiLCJEVEF1dG9zdWdnZXN0UGFuZWwiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3VwZXIiLCJ0aGlzIiwiY29tcG9uZW50RGlkTW91bnQiLCJpMThuZXh0IiwiY2hhbmdlTGFuZ3VhZ2UiLCJsYW5nIiwiY29tcG9uZW50RGlkVXBkYXRlIiwibGFuZ3VhZ2UiLCJnZXRTbGFja1RpbWVPcHRpb25zIiwidGltZU9wdGlvbnMiLCJ2YWx1ZUluTWludXRlcyIsInB1c2giLCJ0Iiwic2V0RHJhZ2dhYmxlVmlhUG9pbnRSZWYiLCJlbGVtZW50IiwiaW5kZXgiLCJkcmFnZ2FibGVWaWFQb2ludHMiLCJzdG9yZVJlZmVyZW5jZSIsInNldFN0YXRlIiwicHJldlN0YXRlIiwicmVmcyIsImhhbmRsZUZvY3VzQ2hhbmdlIiwiZGVzdGluYXRpb24iLCJzZXQiLCJzdGF0ZSIsImZvY3VzIiwiaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50IiwiZXZlbnQiLCJ3aGljaCIsImtleUNvZGUiLCJjb25jYXQiLCJwcmV2ZW50RGVmYXVsdCIsImxvY2F0aW9uIiwiYWRkcmVzcyIsImdwcyIsInJlYWR5IiwiY2xhc3MiLCJ1cGRhdGVWaWFQb2ludHMiLCJ2aWFQb2ludHMiLCJmaWx0ZXIiLCJ2cCIsInVwZGF0ZVZpYVBvaW50U2xhY2siLCJhY3RpdmVWaWFQb2ludFNsYWNrcyIsInVwZGF0ZWRWaWFQb2ludEluZGV4IiwidmlhUG9pbnRSZW1vdmVkIiwiZm91bmRBdEluZGV4Iiwic3BsaWNlIiwibWFwIiwiaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrIiwiYWN0aXZlU2xhY2tJbnB1dHMiLCJoYW5kbGVWaWFQb2ludFNsYWNrVGltZVNlbGVjdGVkIiwic2xhY2tUaW1lSW5TZWNvbmRzIiwiYWRkQW5hbHl0aWNzRXZlbnQiLCJhY3Rpb24iLCJjYXRlZ29yeSIsIm5hbWUiLCJsb2NhdGlvblNsYWNrIiwiTnVtYmVyIiwicGFyc2VJbnQiLCJoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQiLCJ2aWFQb2ludExvY2F0aW9uIiwiaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayIsImhhbmRsZUFkZFZpYVBvaW50Q2xpY2siLCJoYW5kbGVTd2FwT3JkZXJDbGljayIsInJldmVyc2UiLCJzd2FwT3JkZXIiLCJnZXRTbGFja0Rpc3BsYXkiLCJzbGFja0luU2Vjb25kcyIsInJlbmRlciIsIm9yaWdpbiIsInNlYXJjaFBhbmVsVGV4dCIsInNlYXJjaENvbnRleHQiLCJkaXNhYmxlQXV0b0ZvY3VzIiwib3JpZ2luTW9iaWxlTGFiZWwiLCJkZXN0aW5hdGlvbk1vYmlsZUxhYmVsIiwiZm9udFdlaWdodHMiLCJvbkZvY3VzQ2hhbmdlIiwic2hvd1N3YXBDb250cm9sIiwic2hvd1ZpYXBvaW50Q29udHJvbCIsInNsYWNrVGltZSIsImdldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0IiwiZGVmYXVsdFZhbHVlIiwiaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlIiwiY3giLCJpc01vYmlsZSIsImNvbG9yIiwibWVkaXVtIiwiRFRBdXRvU3VnZ2VzdCIsImFwcEVsZW1lbnQiLCJhdXRvRm9jdXMiLCJsYXQiLCJzdG9yZVJlZiIsInJlZlBvaW50IiwicGxhY2Vob2xkZXIiLCJvcmlnaW5QbGFjZUhvbGRlciIsImdldEF1dG9TdWdnZXN0SWNvbnMiLCJvblNlbGVjdCIsIm9uQ2xlYXIiLCJmb2N1c0NoYW5nZSIsInNvdXJjZXMiLCJ0YXJnZXRzIiwiZmlsdGVyUmVzdWx0cyIsImhvdmVyQ29sb3IiLCJtb2JpbGVMYWJlbCIsIm1vZGVTZXQiLCJtb2RlSWNvbkNvbG9ycyIsInNob3dTY3JvbGwiLCJpc0VtYmVkZGVkIiwib3Bwb3NpdGUiLCJlIiwiSWNvbiIsImltZyIsInJlY3RhbmdsZSIsIlJlYWN0U29ydGFibGUiLCJsaXN0IiwiaGFuZGxlIiwiYW5pbWF0aW9uIiwic2V0TGlzdCIsIml0ZW1zIiwibmV3VmlhUG9pbnRzIiwibyIsInJvdyIsImN1cnNvciIsInJvdGF0ZSIsImFyaWFMYWJlbCIsImhhbmRsZVZpYVBvaW50cyIsIml0ZW0iLCJpc05hTiIsImRlc3RpbmF0aW9uUGxhY2VIb2xkZXIiLCJtb3JlIiwid2lkdGgiLCJoZWlnaHQiLCJmb3JFYWNoIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJkZWZhdWx0UHJvcHMiLCJvYmplY3QiLCJhbnkiXSwibWFwcGluZ3MiOiIwaENBQWUsU0FBU0EsRUFBOEJDLEVBQVFDLEdBQzVELEdBQWMsTUFBVkQsRUFBZ0IsTUFBTyxHQUMzQixJQUVJRSxFQUFLQyxFQUZMQyxFQUFTLEdBQ1RDLEVBQWFDLE9BQU9DLEtBQUtQLEdBRTdCLElBQUtHLEVBQUksRUFBR0EsRUFBSUUsRUFBV0csT0FBUUwsSUFDakNELEVBQU1HLEVBQVdGLEdBQ2JGLEVBQVNRLFFBQVFQLElBQVEsSUFDN0JFLEVBQU9GLEdBQU9GLEVBQU9FLElBRXZCLE9BQU9FLENBQ1QsQ0NYQSxTQUFTTSxFQUFZQyxFQUFLQyxRQUNYLElBQVJBLElBQWlCQSxFQUFNLElBQzVCLElBQUlDLEVBQVdELEVBQUlDLFNBRW5CLEdBQUtGLEdBQTJCLG9CQUFiRyxTQUFuQixDQUVBLElBQUlDLEVBQU9ELFNBQVNDLE1BQVFELFNBQVNFLHFCQUFxQixRQUFRLEdBQzlEQyxFQUFRSCxTQUFTSSxjQUFjLFNBQ25DRCxFQUFNRSxLQUFPLFdBRUksUUFBYk4sR0FDRUUsRUFBS0ssV0FDUEwsRUFBS00sYUFBYUosRUFBT0YsRUFBS0ssWUFLaENMLEVBQUtPLFlBQVlMLEdBR2ZBLEVBQU1NLFdBQ1JOLEVBQU1NLFdBQVdDLFFBQVViLEVBRTNCTSxFQUFNSyxZQUFZUixTQUFTVyxlQUFlZCxJQUU5Qyxnc0ZDcEJNZSxFQUFTQSxFQUNiQyxRQUNBQyxhQUNBQyxVQUNBQyxzQkFDQUMsZ0JBQ0FDLEtBQ0FDLFFBQ0FDLFdBRUEsTUFBT0MsRUFBY0MsR0FBc0JDLFdBQVNULEVBQVdELEtBQ3hEVyxFQUFNQyxHQUFjRixZQUFTLEdBQ3BDRyxhQUFVLElBQU1KLEVBQW1CUixFQUFXRCxLQUFTLENBQUNBLElBQ3hELE1BQU1jLEVBQVlDLFNBQU8sTUFDbkJDLEVBQWNDLEtBQUtD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
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,a,s,r,l,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=p(t),d=p(n),_=p(i),f=p(a),g=p(s),y=p(r),v=p(l),m=p(c);function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function b(e,t){if(e){if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}function x(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||b(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function S(e,t){return S=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},S(e,t)}function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function E(e,t){return!t||"object"!==w(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function P(e){return P=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},P(e)}function C(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function N(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],i=!0,o=!1,a=void 0;try{for(var s,r=e[Symbol.iterator]();!(i=(s=r.next()).done)&&(n.push(s.value),!t||n.length!==t);i=!0);}catch(e){o=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(o)throw a}}return n}}(e,t)||b(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var A={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};O(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #F4F4F5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\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: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");var R=["ref"],M=function(e){var t=e.value,n=e.getDisplay,o=e.options,a=e.onSlackTimeSelected,s=e.viaPointIndex,r=e.id,l=e.label,c=e.icon,p=N(i.useState(n(t)),2),u=p[0],d=p[1],f=N(i.useState(!1),2),g=f[0],y=f[1];i.useEffect((function(){return d(n(t))}),[t]);var v=i.useRef(null),h=Math.floor(t/600);i.useLayoutEffect((function(){g&&v.current&&(v.current.scrollTop=50*h)}),[t,g]);var b="".concat(r,"-input"),x="".concat(r,"-label");return _.default.createElement(_.default.Fragment,null,_.default.createElement("label",{className:A["combobox-container"],htmlFor:b},_.default.createElement("span",{className:A["left-column"]},_.default.createElement("span",{className:A["combobox-label"],id:x},l),_.default.createElement(m.default,{id:r,suggestions:o,getSuggestionValue:function(e){return e.value},renderSuggestion:function(e){return e.displayName},onSuggestionsFetchRequested:function(){return null},shouldRenderSuggestions:function(){return!0},focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:function(){return null},inputProps:{value:u,onChange:function(e,n){var i=n.newValue;switch(n.method){case"enter":case"click":a(i,s);break;case"escape":d(t)}},onFocus:function(){y(!0)},onBlur:function(){y(!1)},id:b,"aria-labelledby":x,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:function(e){var t=e.containerProps,n=e.children,i=t.ref,o=C(t,R);return _.default.createElement("div",Object.assign({tabIndex:"-1"},o,{ref:function(e){e&&(v.current=e,i(e))}}),n)},theme:A})),c))};"production"!==process.env.NODE_ENV&&(M.propTypes={value:d.default.number.isRequired,onSlackTimeSelected:d.default.func.isRequired,getDisplay:d.default.func.isRequired,options:d.default.arrayOf(d.default.shape({displayName:d.default.string.isRequired,value:d.default.number.isRequired}).isRequired).isRequired,id:d.default.string.isRequired,label:d.default.node.isRequired,icon:d.default.node.isRequired,viaPointIndex:d.default.number.isRequired});var V={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}},j={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};O("/* stylelint-disable */\n.styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #dddddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");var I=["children","className","enabled","onClick","onKeyPress"];function F(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=P(e);if(t){var o=P(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return E(this,n)}}f.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});var L=function(){return{}},K=function(e){if(void 0===e||v.default(e))return!0;var t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},T=function(e){var t=e.children,n=e.className,i=e.enabled,o=e.onClick,a=e.onKeyPress,s=C(e,I);return i&&o&&_.default.createElement("div",{className:j["itinerary-search-control"]},_.default.createElement("div",Object.assign({},s,{className:n,onClick:o,onKeyPress:a,role:"button",tabIndex:"0"}),t))};"production"!==process.env.NODE_ENV&&(T.propTypes={children:d.default.node,className:d.default.string.isRequired,enabled:d.default.bool.isRequired,onClick:d.default.func.isRequired,onKeyPress:d.default.func.isRequired});var Z=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&S(e,t)}(s,e);var t,n,i,a=F(s);function s(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),(t=a.call(this,e)).componentDidMount=function(){f.default.changeLanguage(t.props.lang)},t.componentDidUpdate=function(){f.default.language!==t.props.lang&&f.default.changeLanguage(t.props.lang)},t.getSlackTimeOptions=function(){for(var e=[],t=0;t<=9;t++){var n=10*t;e.push({displayName:"".concat(n," ").concat(f.default.t("minute-short")),value:60*n})}return e},t.setDraggableViaPointRef=function(e,n){t.draggableViaPoints[n]=e},t.storeReference=function(e){t.setState((function(t){return{refs:[].concat(x(t.refs),[e])}}))},t.handleFocusChange=function(){var e=t.props.destination;e&&e.set||t.state.refs[1].focus()},t.isKeyboardSelectionEvent=function(e){var t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},t.value=function(e){return e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||""},t.class=function(e){return e&&!0===e.gps?"position":"location"},t.updateViaPoints=function(e){0!==e.length?t.props.updateViaPoints(e.filter((function(e){return!K(e)}))):t.props.updateViaPoints([])},t.updateViaPointSlack=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((function(e){return e>t?e-1:e})):e},t.handleToggleViaPointSlackClick=function(e){var n=t.state.activeSlackInputs;t.setState({activeSlackInputs:n.includes(e)?t.updateViaPointSlack(n,e):n.concat([e])})},t.handleViaPointSlackTimeSelected=function(e,n){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});var i=t.props.viaPoints;i[n].locationSlack=Number.parseInt(e,10),t.updateViaPoints(i)},t.handleViaPointLocationSelected=function(e,n){t.props.handleViaPointLocationSelected(e,n)},t.handleRemoveViaPointClick=function(e){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});var n=t.state.activeSlackInputs,i=t.props.viaPoints;i.splice(e,1),t.setState({activeSlackInputs:t.updateViaPointSlack(n,e,!0)},(function(){return t.updateViaPoints(i)}))},t.handleAddViaPointClick=function(){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"}),t.props.viaPoints.push({}),t.setState(t.state)},t.handleSwapOrderClick=function(){t.props.addAnalyticsEvent&&t.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null}),t.props.viaPoints.reverse(),t.props.swapOrder()},t.getSlackDisplay=function(e){return"".concat(e/60," ").concat(f.default.t("minute-short"))},t.render=function(){var e=t.props,n=e.showMultiPointControls,i=e.origin,a=e.searchPanelText,s=e.searchContext,r=e.disableAutoFocus,l=e.viaPoints,c=e.originMobileLabel,p=e.destinationMobileLabel,d=e.fontWeights,v=e.onFocusChange,m=t.state.activeSlackInputs,h=t.getSlackTimeOptions(),b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e&&e.locationSlack||t},x=function(e){return m.includes(e)};return _.default.createElement("div",{className:u.default(j["autosuggest-panel"],t.props.isMobile&&"small",n&&"showMultiPointControls"),style:{"--color":"".concat(t.props.color),"--font-weight-medium":d.medium}}," ",a?_.default.createElement("div",null,_.default.createElement("h1",{className:j["autosuggest-searchpanel-text"]}," ",a)):null,_.default.createElement("div",{className:j["origin-input-container"]},_.default.createElement(g.default,{appElement:t.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==r&&(!t.props.isMobile&&!i.lat),storeRef:t.storeReference,refPoint:t.props.refPoint,className:t.class(i),placeholder:t.props.originPlaceHolder,value:t.value(i),searchContext:s,getAutoSuggestIcons:t.props.getAutoSuggestIcons,onSelect:t.props.onSelect,onClear:t.props.onClear,focusChange:v||t.handleFocusChange,lang:t.props.lang,sources:t.props.sources,targets:t.props.targets,filterResults:t.props.filterResults,isMobile:t.props.isMobile,color:t.props.color,hoverColor:t.props.hoverColor,mobileLabel:c,fontWeights:t.props.fontWeights,modeSet:t.props.modeSet,modeIconColors:t.props.modeIconColors,showScroll:t.props.showScroll,isEmbedded:t.props.isEmbedded}),_.default.createElement(T,{className:j.opposite,enabled:n,onClick:function(){return t.handleSwapOrderClick()},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleSwapOrderClick()},"aria-label":f.default.t("swap-order-button-label")},_.default.createElement(y.default,{img:"opposite",color:t.props.color}))),0===l.length&&_.default.createElement("div",{className:j["rectangle-container"]},_.default.createElement("div",{className:j.rectangle})),_.default.createElement(o.ReactSortable,{className:j["viapoints-container"],list:l,handle:".".concat(j["viapoint-before"]),animation:200,setList:function(e){var n=e.filter((function(e){return!K(e)}));n.length>0&&t.props.updateViaPoints(n)}},l.map((function(e,i){return _.default.createElement("div",{className:u.default(j["viapoint-container"]),key:"viapoint-".concat(i)},_.default.createElement("div",{className:j["light-gray-background"]},_.default.createElement("div",{className:j.row},_.default.createElement("div",{className:j["viapoint-before"],style:{cursor:"move"}},_.default.createElement(y.default,{img:"ellipsis",rotate:90,color:t.props.color})),_.default.createElement("div",{className:"".concat(j["viapoint-input-container"]," ").concat(j["viapoint-".concat(i+1)])},_.default.createElement(g.default,{appElement:t.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:f.default.t("via-point-index",{index:i+1}),autoFocus:!0!==r&&!t.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:s,refPoint:t.props.refPoint,value:e&&e.address||"",onSelect:t.props.onSelect,onClear:t.props.onClear,handleViaPoints:function(e){return t.handleViaPointLocationSelected(e,i)},lang:t.props.lang,sources:t.props.sources,targets:t.props.targets,filterResults:t.props.filterResults,getAutoSuggestIcons:t.props.getAutoSuggestIcons,isMobile:t.props.isMobile,color:t.props.color,hoverColor:t.props.hoverColor,fontWeights:t.props.fontWeights,modeSet:t.props.modeSet,modeIconColors:t.props.modeIconColors,showScroll:t.props.showScroll})),_.default.createElement(T,{className:j["add-via-point-slack"],enabled:n,onClick:function(){return t.handleToggleViaPointSlackClick(i)},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleToggleViaPointSlackClick(i)},"aria-label":f.default.t(x(i)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:i+1})},_.default.createElement(y.default,{img:"time",color:t.props.color}))),!x(i)&&l[i]&&l[i].locationSlack>0&&_.default.createElement("span",{className:j["viapoint-slack-time"]},"".concat(f.default.t("viapoint-slack-amount"),": ").concat(t.getSlackDisplay(l[i].locationSlack))),_.default.createElement("div",{className:u.default(j["input-viapoint-slack-container"],!x(i)&&"collapsed")},_.default.createElement("div",{className:j["select-wrapper"]},_.default.createElement(M,{id:"viapoint-slack-".concat(i),label:f.default.t("viapoint-slack-amount"),options:h,value:b(l[i]),getDisplay:t.getSlackDisplay,viaPointIndex:i,icon:_.default.createElement("span",{className:"".concat(j["combobox-icon"]," ").concat(j["time-input-icon"])},_.default.createElement(y.default,{img:"time",color:t.props.color})),onSlackTimeSelected:t.handleViaPointSlackTimeSelected})))),_.default.createElement(T,{className:j["remove-via-point"],enabled:n,onClick:function(){return t.handleRemoveViaPointClick(i)},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleRemoveViaPointClick(i)},"aria-label":f.default.t("remove-via-button-label",{index:i+1})},_.default.createElement(y.default,{img:"close",color:t.props.color})))}))),_.default.createElement("div",{className:j["destination-input-container"]},_.default.createElement(g.default,{appElement:t.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==r&&(!t.props.isMobile&&!Number.isNaN(i.lat)),storeRef:t.storeReference,placeholder:t.props.destinationPlaceHolder,className:t.class(t.props.destination),getAutoSuggestIcons:t.props.getAutoSuggestIcons,searchContext:s,onSelect:t.props.onSelect,onClear:t.props.onClear,refPoint:t.props.refPoint,value:t.value(t.props.destination),lang:t.props.lang,sources:t.props.sources,targets:t.props.targets,filterResults:t.props.filterResults,isMobile:t.props.isMobile,color:t.props.color,hoverColor:t.props.hoverColor,mobileLabel:p,fontWeights:t.props.fontWeights,modeSet:t.props.modeSet,modeIconColors:t.props.modeIconColors,showScroll:t.props.showScroll,isEmbedded:t.props.isEmbedded}),n&&_.default.createElement(T,{className:u.default(j["add-via-point"],j.more,l.length>4&&"collapsed"),enabled:n,onClick:function(){return t.handleAddViaPointClick()},onKeyPress:function(e){return t.isKeyboardSelectionEvent(e)&&t.handleAddViaPointClick()},"aria-label":f.default.t("add-via-button-label")},_.default.createElement(y.default,{img:"viapoint",width:1.25,height:1.375,color:t.props.color}))))},t.draggableViaPoints=[],t.state={activeSlackInputs:[],refs:[]},Object.keys(V).forEach((function(e){f.default.addResourceBundle(e,"translation",V[e])})),t}return t=s,n&&k(t.prototype,n),i&&k(t,i),t}(_.default.Component);Z.defaultProps={viaPoints:[],showMultiPointControls:!1,originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:function(){},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1},"production"!==process.env.NODE_ENV&&(Z.propTypes={appElement:d.default.string.isRequired,origin:d.default.object.isRequired,destination:d.default.object.isRequired,showMultiPointControls:d.default.bool,originPlaceHolder:d.default.string,destinationPlaceHolder:d.default.string,viaPoints:d.default.arrayOf(d.default.object),updateViaPoints:d.default.func,handleViaPointLocationSelected:d.default.func,swapOrder:d.default.func,searchPanelText:d.default.string,searchContext:d.default.any.isRequired,onSelect:d.default.func,onClear:d.default.func,addAnalyticsEvent:d.default.func,lang:d.default.string,disableAutoFocus:d.default.bool,sources:d.default.arrayOf(d.default.string),targets:d.default.arrayOf(d.default.string),filterResults:d.default.func,isMobile:d.default.bool,color:d.default.string,hoverColor:d.default.string,originMobileLabel:d.default.string,destinationMobileLabel:d.default.string,refPoint:d.default.object,modeSet:d.default.string,modeIconColors:d.default.object,getAutoSuggestIcons:d.default.object,fontWeights:d.default.shape({medium:d.default.number}),showScroll:d.default.bool,onFocusChange:d.default.func,isEmbedded:d.default.bool}),e.default=Z,e.getEmptyViaPointPlaceHolder=L,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,s,a,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(s),g=p(a),f=p(l),y=p(r),v=p(c);function m(e,t){if(null==e)return{};var n,i,o={},s=Object.keys(e);for(i=0;i<s.length;i++)n=s[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}function b(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var x={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};b(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #F4F4F5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\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: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const k=["ref"],S=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:s,id:a,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${a}-input`,y=`${a}-label`;return _.default.createElement(_.default.Fragment,null,_.default.createElement("label",{className:x["combobox-container"],htmlFor:f},_.default.createElement("span",{className:x["left-column"]},_.default.createElement("span",{className:x["combobox-label"],id:y},l),_.default.createElement(v.default,{id:a,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,s);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":y,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=m(e,k);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:x})),r))};"production"!==process.env.NODE_ENV&&(S.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const w={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var E={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};b("/* stylelint-disable */\n.styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #dddddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const C=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const P=()=>({}),N=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},V=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:s,wide:a}=e,l=m(e,C);return _.default.createElement("div",{className:E["itinerary-search-control"],style:{"--width":a?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:s,role:"button",tabIndex:"0"}),t))};"production"!==process.env.NODE_ENV&&(V.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool});class A extends _.default.Component{constructor(e){super(e),this.componentDidMount=()=>{h.default.changeLanguage(this.props.lang)},this.componentDidUpdate=()=>{h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)},this.getSlackTimeOptions=()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e},this.setDraggableViaPointRef=(e,t)=>{this.draggableViaPoints[t]=e},this.storeReference=e=>{this.setState((t=>({refs:[...t.refs,e]})))},this.handleFocusChange=()=>{const{destination:e}=this.props;e&&e.set||this.state.refs[1].focus()},this.isKeyboardSelectionEvent=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},this.value=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",this.class=e=>e&&!0===e.gps?"position":"location",this.updateViaPoints=e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!N(e)))):this.props.updateViaPoints([])},this.updateViaPointSlack=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},this.handleToggleViaPointSlackClick=e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?this.updateViaPointSlack(t,e):t.concat([e])})},this.handleViaPointSlackTimeSelected=(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)},this.handleViaPointLocationSelected=(e,t)=>{this.props.handleViaPointLocationSelected(e,t)},this.handleRemoveViaPointClick=e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:this.updateViaPointSlack(t,e,!0)},(()=>this.updateViaPoints(n)))},this.handleAddViaPointClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)},this.handleSwapOrderClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()},this.getSlackDisplay=e=>`${e/60} ${h.default.t("minute-short")}`,this.render=()=>{const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:s,originMobileLabel:a,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:y}=this.state,v=this.getSlackTimeOptions(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>y.includes(e);return _.default.createElement("div",{className:d.default(E["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:E["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:E["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:this.class(e),placeholder:this.props.originPlaceHolder,value:this.value(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:a,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:E.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:E["rectangle-container"]},_.default.createElement("div",{className:E.rectangle})),_.default.createElement(o.ReactSortable,{className:E["viapoints-container"],list:s,handle:`.${E["viapoint-before"]}`,animation:200,setList:e=>{const t=e.filter((e=>!N(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(E["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:E["light-gray-background"]},_.default.createElement("div",{className:E.row},_.default.createElement("div",{className:E["viapoint-before"],style:{cursor:"move"}},_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${E["viapoint-input-container"]} ${E[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),_.default.createElement(V,{className:E["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:E["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${this.getSlackDisplay(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(E["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:E["select-wrapper"]},_.default.createElement(S,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:v,value:m(s[t]),getDisplay:this.getSlackDisplay,viaPointIndex:t,icon:_.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(V,{className:E["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"close",color:this.props.color})))))),_.default.createElement("div",{className:E["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:this.class(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:this.value(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:d.default(E["add-via-point"],E.more,s.length>4&&"collapsed"),enabled:u,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))},this.draggableViaPoints=[],this.state={activeSlackInputs:[],refs:[]},Object.keys(w).forEach((e=>{h.default.addResourceBundle(e,"translation",w[e])}))}}A.defaultProps={viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1},"production"!==process.env.NODE_ENV&&(A.propTypes={appElement:u.default.string.isRequired,origin:u.default.object.isRequired,destination:u.default.object.isRequired,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(u.default.object),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.any.isRequired,onSelect:u.default.func,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:u.default.object,modeSet:u.default.string,modeIconColors:u.default.object,getAutoSuggestIcons:u.default.object,fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool}),e.default=A,e.getEmptyViaPointPlaceHolder=P,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/index.js","../../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js"],"sourcesContent":["export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect, useRef, useLayoutEffect } from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n getDisplay,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const [displayValue, changeDisplayValue] = useState(getDisplay(value));\n const [open, changeOpen] = useState(false);\n useEffect(() => changeDisplayValue(getDisplay(value)), [value]);\n const scrollRef = useRef(null);\n const scrollIndex = Math.floor(value / 600);\n const elementHeight = 50;\n useLayoutEffect(() => {\n if (open && scrollRef.current) {\n scrollRef.current.scrollTop = elementHeight * scrollIndex;\n }\n }, [value, open]);\n\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n\n const onInputChange = (_, { newValue, method }) => {\n switch (method) {\n case 'enter':\n case 'click':\n onSlackTimeSelected(newValue, viaPointIndex);\n break;\n case 'escape':\n changeDisplayValue(value);\n break;\n case 'up':\n case 'down':\n default:\n break;\n }\n };\n return (\n <>\n <label className={styles['combobox-container']} htmlFor={inputId}>\n <span className={styles['left-column']}>\n <span className={styles['combobox-label']} id={labelId}>\n {label}\n </span>\n <Autosuggest\n id={id}\n suggestions={options}\n getSuggestionValue={s => s.value}\n renderSuggestion={s => s.displayName}\n onSuggestionsFetchRequested={() => null}\n shouldRenderSuggestions={() => true}\n focusInputOnSuggestionClick={false}\n onSuggestionsClearRequested={() => null}\n inputProps={{\n value: displayValue,\n onChange: onInputChange,\n onFocus: () => {\n changeOpen(true);\n },\n onBlur: () => {\n changeOpen(false);\n },\n id: inputId,\n 'aria-labelledby': labelId,\n 'aria-autocomplete': 'none',\n readOnly: true,\n }}\n renderSuggestionsContainer={({ containerProps, children }) => {\n // set refs for autosuggest library and scrollbar positioning\n const { ref, ...otherRefs } = containerProps;\n const containerRef = elem => {\n if (elem) {\n scrollRef.current = elem;\n ref(elem);\n }\n };\n return (\n <div tabIndex=\"-1\" {...otherRefs} ref={containerRef}>\n {children}\n </div>\n );\n }}\n theme={styles}\n />\n </span>\n {icon}\n </label>\n </>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n getDisplay: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n en: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label': 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n fi: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n sv: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n};\n\nexport default translations;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { ReactSortable } from 'react-sortablejs';\nimport i18next from 'i18next';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport translations from './helpers/translations';\nimport styles from './helpers/styles.scss';\n\ni18next.init({\n lng: 'fi',\n fallbackLng: 'fi',\n defaultNS: 'translation',\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n});\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n ...rest\n}) =>\n enabled &&\n onClick && (\n <div className={styles['itinerary-search-control']}>\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n </div>\n );\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getAllBikeRentalStations: () => ({}), // Function that returns all bike rental stations from graphql API.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteBikeRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteBikeRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, BikeRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * showMultiPointControls={false} // Optional. If true, controls for via points and reversing is being shown.\n * initialViaPoints={[]} // Optional. If showMultiPointControls is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showMultiPointControls is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showMultiPointControls is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n */\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: PropTypes.object.isRequired,\n destination: PropTypes.object.isRequired,\n showMultiPointControls: PropTypes.bool,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(PropTypes.object),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.any.isRequired,\n onSelect: PropTypes.func,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: PropTypes.object,\n modeSet: PropTypes.string,\n modeIconColors: PropTypes.object,\n getAutoSuggestIcons: PropTypes.object,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n };\n\n static defaultProps = {\n viaPoints: [],\n showMultiPointControls: false,\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n lang: 'fi',\n sources: [],\n targets: [],\n filterResults: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n color: '#007ac9',\n hoverColor: '#0062a1',\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n modeIconColors: undefined,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n };\n\n constructor(props) {\n super(props);\n this.draggableViaPoints = [];\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n componentDidMount = () => {\n i18next.changeLanguage(this.props.lang);\n };\n\n componentDidUpdate = () => {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n };\n\n getSlackTimeOptions = () => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${i18next.t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n };\n\n setDraggableViaPointRef = (element, index) => {\n this.draggableViaPoints[index] = element;\n };\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.set) {\n this.state.refs[1].focus();\n }\n };\n\n isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n };\n\n value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\n class = location =>\n location && location.gps === true ? 'position' : 'location';\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n ) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? this.updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: this.updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n getSlackDisplay = slackInSeconds => {\n return `${slackInSeconds / 60} ${i18next.t('minute-short')}`;\n };\n\n render = () => {\n const {\n showMultiPointControls,\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n } = this.props;\n const { activeSlackInputs } = this.state;\n const slackTime = this.getSlackTimeOptions();\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n showMultiPointControls,\n },\n ])}\n style={{\n '--color': `${this.props.color}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={this.class(origin)}\n placeholder={this.props.originPlaceHolder}\n value={this.value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showMultiPointControls}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={i18next.t('swap-order-button-label')}\n >\n <Icon img=\"opposite\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={{ cursor: 'move' }}\n >\n <Icon img=\"ellipsis\" rotate={90} color={this.props.color} />\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker-via\"\n id=\"via-point\"\n ariaLabel={i18next.t('via-point-index', { index: i + 1 })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n />\n </div>\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={showMultiPointControls}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={i18next.t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1 },\n )}\n >\n <Icon img=\"time\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span\n className={styles['viapoint-slack-time']}\n >{`${i18next.t(\n 'viapoint-slack-amount',\n )}: ${this.getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={i18next.t('viapoint-slack-amount')}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n getDisplay={this.getSlackDisplay}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={this.props.color} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={showMultiPointControls}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={i18next.t('remove-via-button-label', {\n index: i + 1,\n })}\n >\n <Icon img=\"close\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={this.class(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={this.value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {showMultiPointControls && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showMultiPointControls}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleAddViaPointClick()\n }\n aria-label={i18next.t('add-via-button-label')}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={this.props.color}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n };\n}\n\nexport default DTAutosuggestPanel;\n","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}"],"names":["_arrayLikeToArray","arr","len","length","i","arr2","Array","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","from","test","_toConsumableArray","isArray","arrayWithoutHoles","iter","Symbol","iterator","iterableToArray","unsupportedIterableToArray","TypeError","nonIterableSpread","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","key","_setPrototypeOf","p","setPrototypeOf","__proto__","_typeof","obj","_possibleConstructorReturn","self","ReferenceError","assertThisInitialized","_getPrototypeOf","getPrototypeOf","_objectWithoutProperties","source","excluded","sourceKeys","keys","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_slicedToArray","arrayWithHoles","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","err","iterableToArrayLimit","nonIterableRest","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","getDisplay","options","onSlackTimeSelected","viaPointIndex","id","label","icon","useState","displayValue","changeDisplayValue","open","changeOpen","useEffect","scrollRef","useRef","scrollIndex","Math","floor","useLayoutEffect","current","scrollTop","inputId","labelId","React","className","styles","htmlFor","Autosuggest","suggestions","getSuggestionValue","s","renderSuggestion","displayName","onSuggestionsFetchRequested","shouldRenderSuggestions","focusInputOnSuggestionClick","onSuggestionsClearRequested","inputProps","onChange","_","newValue","method","onFocus","onBlur","readOnly","renderSuggestionsContainer","containerProps","children","otherRefs","tabIndex","elem","theme","process","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","translations","de","en","fi","sv","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","isEmpty","includes","ItinerarySearchControl","enabled","onClick","onKeyPress","rest","role","bool","DTAutosuggestPanel","subClass","superClass","create","Constructor","protoProps","staticProps","instance","componentDidMount","i18next","changeLanguage","_this","lang","componentDidUpdate","language","getSlackTimeOptions","timeOptions","valueInMinutes","t","setDraggableViaPointRef","element","index","draggableViaPoints","storeReference","setState","prevState","refs","handleFocusChange","destination","set","state","focus","isKeyboardSelectionEvent","event","which","keyCode","concat","preventDefault","location","address","gps","ready","updateViaPoints","viaPoints","filter","vp","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","foundAtIndex","splice","map","handleToggleViaPointSlackClick","activeSlackInputs","handleViaPointSlackTimeSelected","slackTimeInSeconds","addAnalyticsEvent","action","category","locationSlack","Number","parseInt","handleViaPointLocationSelected","viaPointLocation","handleRemoveViaPointClick","handleAddViaPointClick","handleSwapOrderClick","reverse","swapOrder","getSlackDisplay","slackInSeconds","render","showMultiPointControls","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","slackTime","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","cx","isMobile","color","medium","DTAutoSuggest","appElement","autoFocus","lat","storeRef","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","sources","targets","filterResults","hoverColor","mobileLabel","modeSet","modeIconColors","showScroll","isEmbedded","opposite","e","Icon","img","rectangle","ReactSortable","list","handle","animation","setList","items","newViaPoints","row","cursor","rotate","ariaLabel","handleViaPoints","item","isNaN","destinationPlaceHolder","more","width","height","forEach","addResourceBundle","Component","defaultProps","object","any"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/index.js"],"sourcesContent":["export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect, useRef, useLayoutEffect } from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n getDisplay,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const [displayValue, changeDisplayValue] = useState(getDisplay(value));\n const [open, changeOpen] = useState(false);\n useEffect(() => changeDisplayValue(getDisplay(value)), [value]);\n const scrollRef = useRef(null);\n const scrollIndex = Math.floor(value / 600);\n const elementHeight = 50;\n useLayoutEffect(() => {\n if (open && scrollRef.current) {\n scrollRef.current.scrollTop = elementHeight * scrollIndex;\n }\n }, [value, open]);\n\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n\n const onInputChange = (_, { newValue, method }) => {\n switch (method) {\n case 'enter':\n case 'click':\n onSlackTimeSelected(newValue, viaPointIndex);\n break;\n case 'escape':\n changeDisplayValue(value);\n break;\n case 'up':\n case 'down':\n default:\n break;\n }\n };\n return (\n <>\n <label className={styles['combobox-container']} htmlFor={inputId}>\n <span className={styles['left-column']}>\n <span className={styles['combobox-label']} id={labelId}>\n {label}\n </span>\n <Autosuggest\n id={id}\n suggestions={options}\n getSuggestionValue={s => s.value}\n renderSuggestion={s => s.displayName}\n onSuggestionsFetchRequested={() => null}\n shouldRenderSuggestions={() => true}\n focusInputOnSuggestionClick={false}\n onSuggestionsClearRequested={() => null}\n inputProps={{\n value: displayValue,\n onChange: onInputChange,\n onFocus: () => {\n changeOpen(true);\n },\n onBlur: () => {\n changeOpen(false);\n },\n id: inputId,\n 'aria-labelledby': labelId,\n 'aria-autocomplete': 'none',\n readOnly: true,\n }}\n renderSuggestionsContainer={({ containerProps, children }) => {\n // set refs for autosuggest library and scrollbar positioning\n const { ref, ...otherRefs } = containerProps;\n const containerRef = elem => {\n if (elem) {\n scrollRef.current = elem;\n ref(elem);\n }\n };\n return (\n <div tabIndex=\"-1\" {...otherRefs} ref={containerRef}>\n {children}\n </div>\n );\n }}\n theme={styles}\n />\n </span>\n {icon}\n </label>\n </>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n getDisplay: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n en: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label': 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n fi: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n sv: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n};\n\nexport default translations;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { ReactSortable } from 'react-sortablejs';\nimport i18next from 'i18next';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport translations from './helpers/translations';\nimport styles from './helpers/styles.scss';\n\ni18next.init({\n lng: 'fi',\n fallbackLng: 'fi',\n defaultNS: 'translation',\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n});\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n wide,\n ...rest\n}) => (\n <div\n className={styles['itinerary-search-control']}\n style={{ '--width': wide ? '47px' : '40px' }}\n >\n {onClick && enabled && (\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n )}\n </div>\n);\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n wide: PropTypes.bool,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getAllBikeRentalStations: () => ({}), // Function that returns all bike rental stations from graphql API.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteBikeRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteBikeRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, BikeRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n * showSwapControl={false} // Optional.\n * showViapointControl={false} // Optional.\n */\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: PropTypes.object.isRequired,\n destination: PropTypes.object.isRequired,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(PropTypes.object),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.any.isRequired,\n onSelect: PropTypes.func,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: PropTypes.object,\n modeSet: PropTypes.string,\n modeIconColors: PropTypes.object,\n getAutoSuggestIcons: PropTypes.object,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n showSwapControl: PropTypes.bool,\n showViapointControl: PropTypes.bool,\n };\n\n static defaultProps = {\n viaPoints: [],\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n lang: 'fi',\n sources: [],\n targets: [],\n filterResults: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n color: '#007ac9',\n hoverColor: '#0062a1',\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n modeIconColors: undefined,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n showSwapControl: false,\n showViapointControl: false,\n };\n\n constructor(props) {\n super(props);\n this.draggableViaPoints = [];\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n componentDidMount = () => {\n i18next.changeLanguage(this.props.lang);\n };\n\n componentDidUpdate = () => {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n };\n\n getSlackTimeOptions = () => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${i18next.t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n };\n\n setDraggableViaPointRef = (element, index) => {\n this.draggableViaPoints[index] = element;\n };\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.set) {\n this.state.refs[1].focus();\n }\n };\n\n isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n };\n\n value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\n class = location =>\n location && location.gps === true ? 'position' : 'location';\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n ) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? this.updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: this.updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n getSlackDisplay = slackInSeconds => {\n return `${slackInSeconds / 60} ${i18next.t('minute-short')}`;\n };\n\n render = () => {\n const {\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n showSwapControl,\n showViapointControl,\n } = this.props;\n const { activeSlackInputs } = this.state;\n const slackTime = this.getSlackTimeOptions();\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n },\n ])}\n style={{\n '--color': `${this.props.color}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={this.class(origin)}\n placeholder={this.props.originPlaceHolder}\n value={this.value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showSwapControl}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={i18next.t('swap-order-button-label')}\n >\n <Icon img=\"opposite\" color={this.props.color} />\n </ItinerarySearchControl>\n )}\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={{ cursor: 'move' }}\n >\n <Icon img=\"ellipsis\" rotate={90} color={this.props.color} />\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker-via\"\n id=\"via-point\"\n ariaLabel={i18next.t('via-point-index', { index: i + 1 })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n />\n </div>\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={i18next.t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1 },\n )}\n wide\n >\n <Icon img=\"time\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span\n className={styles['viapoint-slack-time']}\n >{`${i18next.t(\n 'viapoint-slack-amount',\n )}: ${this.getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={i18next.t('viapoint-slack-amount')}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n getDisplay={this.getSlackDisplay}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={this.props.color} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={i18next.t('remove-via-button-label', {\n index: i + 1,\n })}\n >\n <Icon img=\"close\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={this.class(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={this.value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showViapointControl}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleAddViaPointClick()\n }\n aria-label={i18next.t('add-via-button-label')}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={this.props.color}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n };\n}\n\nexport default DTAutosuggestPanel;\n"],"names":["_objectWithoutPropertiesLoose","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","value","getDisplay","options","onSlackTimeSelected","viaPointIndex","id","label","icon","displayValue","changeDisplayValue","useState","open","changeOpen","useEffect","scrollRef","useRef","scrollIndex","Math","floor","useLayoutEffect","current","scrollTop","inputId","labelId","React","Fragment","className","styles","htmlFor","Autosuggest","suggestions","getSuggestionValue","s","renderSuggestion","displayName","onSuggestionsFetchRequested","shouldRenderSuggestions","focusInputOnSuggestionClick","onSuggestionsClearRequested","inputProps","onChange","onInputChange","_","newValue","method","onFocus","onBlur","readOnly","renderSuggestionsContainer","containerProps","children","otherRefs","_excluded","assign","tabIndex","elem","theme","process","env","NODE_ENV","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","translations","de","en","fi","sv","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","undefined","isEmpty","includes","ItinerarySearchControl","_ref","enabled","onClick","onKeyPress","wide","rest","role","bool","DTAutosuggestPanel","Component","constructor","props","super","this","componentDidMount","i18next","changeLanguage","lang","componentDidUpdate","language","getSlackTimeOptions","timeOptions","valueInMinutes","push","t","setDraggableViaPointRef","element","index","draggableViaPoints","storeReference","setState","prevState","refs","handleFocusChange","destination","set","state","focus","isKeyboardSelectionEvent","event","which","keyCode","concat","preventDefault","location","address","gps","ready","class","updateViaPoints","viaPoints","filter","vp","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","foundAtIndex","splice","map","handleToggleViaPointSlackClick","activeSlackInputs","handleViaPointSlackTimeSelected","slackTimeInSeconds","addAnalyticsEvent","action","category","name","locationSlack","Number","parseInt","handleViaPointLocationSelected","viaPointLocation","handleRemoveViaPointClick","handleAddViaPointClick","handleSwapOrderClick","reverse","swapOrder","getSlackDisplay","slackInSeconds","render","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","showSwapControl","showViapointControl","slackTime","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","cx","isMobile","color","medium","DTAutoSuggest","appElement","autoFocus","lat","storeRef","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","sources","targets","filterResults","hoverColor","mobileLabel","modeSet","modeIconColors","showScroll","isEmbedded","opposite","e","Icon","img","rectangle","ReactSortable","list","handle","animation","setList","items","newViaPoints","o","row","cursor","rotate","ariaLabel","handleViaPoints","item","isNaN","destinationPlaceHolder","more","width","height","forEach","addResourceBundle","defaultProps","object","any"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitransit-component/digitransit-component-autosuggest-panel",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "digitransit-component autosuggest-panel module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"author": "Digitransit Authors",
|
|
29
29
|
"license": "(AGPL-3.0 OR EUPL-1.2)",
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@digitransit-component/digitransit-component-autosuggest": "^1.9.
|
|
32
|
-
"@digitransit-component/digitransit-component-icon": "^0.2.
|
|
31
|
+
"@digitransit-component/digitransit-component-autosuggest": "^1.9.9",
|
|
32
|
+
"@digitransit-component/digitransit-component-icon": "^0.2.2",
|
|
33
33
|
"@hsl-fi/sass": "^0.2.0",
|
|
34
34
|
"classnames": "2.2.6",
|
|
35
35
|
"i18next": "^19.3.3",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"react-sortablejs": "2.0.11",
|
|
43
43
|
"recompose": "0.30.0"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "af057cb379fdf769c4e02a94d66f3c7848338b75"
|
|
46
46
|
}
|