{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./StaticFiles/src/accessibility.js","webpack:///./StaticFiles/src/actions.js","webpack:///./StaticFiles/src/comments.js","webpack:///./StaticFiles/src/files.js","webpack:///./StaticFiles/src/index.js","webpack:///./StaticFiles/src/map/Map.js","webpack:///./StaticFiles/src/map/MapCanvas.js","webpack:///./StaticFiles/src/map/MapLabel.js","webpack:///./StaticFiles/src/map/MapList.js","webpack:///./StaticFiles/src/map/MapSearchBar.js","webpack:///./StaticFiles/src/map/config.js","webpack:///./StaticFiles/src/map/mapUtils.js","webpack:///./StaticFiles/src/map/templates/map-label.hbs","webpack:///./StaticFiles/src/map/templates/map-search-bar.hbs","webpack:///./StaticFiles/src/map/templates/map.hbs","webpack:///./StaticFiles/src/pagination.js","webpack:///./StaticFiles/src/scss/main.scss","webpack:///./StaticFiles/src/templates/documents.hbs","webpack:///./StaticFiles/src/templates/photos.hbs","webpack:///./StaticFiles/src/utilities.js","webpack:///./node_modules/bootbox/bootbox.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/jquery-sticky/jquery.sticky.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_LazyWrapper.js","webpack:///./node_modules/lodash/_LodashWrapper.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/_baseFlatten.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_baseLodash.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_createFlow.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_flatRest.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getData.js","webpack:///./node_modules/lodash/_getFuncName.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_isFlattenable.js","webpack:///./node_modules/lodash/_isLaziable.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_metaMap.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_realNames.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_wrapperClone.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/flatten.js","webpack:///./node_modules/lodash/flow.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isEmpty.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/noop.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/wrapperLodash.js","webpack:///./node_modules/toastr/toastr.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///external \"jQuery\""],"names":["$","body","accessibility","accessibilityBtn","increaseFontSize","descreseFontSize","highContrast","reverseColor","lightBg","indicateLinks","changeFont","resetThemes","panel","curSize","on","e","preventDefault","toggleClass","attr","css","hasClass","removeClass","addClass","children","not","parseInt","bootbox","confirm","result","submit","undefined","$this","delegateTarget","off","console","log","location","target","loader","show","window","href","requestID","data","selectedValue","val","post","encryptedRequestID","encryptedRequestStatusActionID","done","dialog","message","fail","error","responseText","get","id","$button","currentTarget","$file","closest","handleRemoveFile","guid","fileGUID","response","remove","always","hide","ajax","type","url","dataType","success","reload","failure","alert","commentID","replaceWith","html","template","name","phone","email","buttons","ok","closeButton","beforeSend","handleCommentDeletePostResponse","find","slideToggle","handleCommentPostResponse","context","Success","prop","CommentsList","Message","toastr","getFilesInfo","Array","from","files","map","file","URL","createObjectURL","extension","split","pop","fileTemplates","photos","photosTpl","documents","documentsTpl","$container","input","end","before","options","timeOut","addLocale","CANCEL","OK","CONFIRM","setLocale","fn","extend","removeAcc","each","jQuery","fadeOnTime","timeout","setTimeout","fadeOut","$map","Map","render","sticky","topSpacing","document","animationTime","$target","el","$ref","is","fadeIn","$currentRef","filter","config","searchBarClass","canvasClass","labelClass","listClass","latInputName","lngInputName","addressInputName","errorLabelClass","invalidLocationMsg","$el","props","childComponents","mapCanvas","mapConfig","locations","onSearchedCoordsChange","bind","onMarkerOutOfBounds","onLocationSearch","mapSearchBar","hasSearch","MapSearchBar","mapLabel","hasLabel","MapLabel","value","defaultLabel","isEditable","isLabelEditable","onLabelChange","mapList","hasList","MapList","renderLocation","onListItemSelect","fitMarkersOnMap","mapMarkerInput","hasMarkerInput","markerInputClass","marker","onMarkerClick","changeLabel","metadata","address","documentScrollTop","scrollTop","mapOffsetTop","offset","top","updateAddress","coords","isDraggable","isDefault","isSearchable","updateCoords","$errorLabel","text","markers","$latInput","$lngInput","$addressInput","setupChildComponents","Object","values","forEach","component","lat","lng","updateSearchInputValue","defaultMapConfig","center","cities","Kavala","zoom","maxZoom","mapTypeId","google","maps","MapTypeId","userMapConfig","searchedMarker","infowindow","geocoder","Geocoder","pinnedAddress","setupMarker","draggable","searchable","bindable","centered","withInfo","icon","svg","svgIcon","encodeURIComponent","scaledSize","Size","position","LatLng","Marker","bounds","LatLngBounds","setMap","removeMarker","setDraggable","onMarkerDrag","bindToEl","setCenter","infoText","addListener","openInfoWindow","close","InfoWindow","content","open","onSuccess","onFail","latStart","lngStart","event","latLng","latlngStr","latlng","parseFloat","isMarkerInBounds","setPosition","searchLatLng","then","addressComponents","results","address_components","long_name","short_name","Promise","resolve","reject","geocode","status","getPosition","fitBounds","elClass","labelContainerClass","editInputClass","labelValueClass","editContainerClass","editBtnClass","editCancelBtnClass","editSubmitBtnClass","$labelContainer","$labelValue","$editBtn","$editContainer","$editInput","$editCancelBtn","$editSubmitBtn","events","onLabelEditKeyPress","onLabelEdit","onLabelEditCancel","onLabelEditSubmit","key","labelValue","trim","toggleEdit","toggle","listItemClass","activeClass","listItemChildClass","$listItems","index","item","push","onListItemClick","length","animateToListItem","animate","geolocation","navigator","geoSearchBtnClass","searchInputClass","searchSubmitBtn","googleMapsKey","geoConfig","enableHighAccuracy","maximumAge","$geoSearchBtn","$searchInput","$searchSubmitBtn","onSearchSubmit","searchGeoLocation","searchIpuntVal","searchLocation","geometry","addressObj","params","getCurrentPosition","latitude","longitude","err","north","east","south","west","formatAddress","addressFormat","road","roadNumber","city","replace","coordsToStr","callback","_draggableListener","unsetDraggable","removeListener","isInBounds","$form","currentPage","totalPages","$pageChangedInput","$selectedPageInput","selectedPage","tagName","toLowerCase","innerHTML","toUpperCase"],"mappings":"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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA,yCAAyC,OAAO;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA;;AAEA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,iDAAiD;AACjD;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,UAAU;AACvD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;ACx9BD;;AAEA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACjEzD;;AAEA;AACA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACnHzD;;AAEA;AACA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACfzD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AC5BzD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AC/DzD;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACvDzD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;8CCtCzD;;AAEA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,sCAAsC,UAAU;AAChD;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;;ACvGzD;;AAEA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;AACA;AACA;AACA,gCAAgC,KAAK;AACrC;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACxBzD;;AAEA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AC7CzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACzBzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACfzD;;AAEA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AC1CzD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa;AACb;;AAEA;AACA,oEAAoE,aAAa;AACjF;AACA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACrBzD;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACxEzD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;AClBzD;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2FAA2F,aAAa;AACxG;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;8CC9CzD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;;AClBzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;;AAEA,yCAAyC;AACzC;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA,KAAK;AACL;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA,0EAA0E;;AAE1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0EAA0E;;AAE1E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,yBAAyB,iCAAiC;AAC1D,GAAG;AACH;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACnXzD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;;ACdzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;;;;;;;;;;;;AC3HzD;AACA;AACA;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA,KAAK,QAML;AACA,CAAC;AACD,sCAAsC;AACtC,wCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,OAAO;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,+BAA+B,sEAAsE;AACrG;;AAEA;AACA,+BAA+B,eAAe,gBAAgB,gBAAgB;AAC9E;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,mDAAmD,+BAA+B;AAClF,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;ACjRD;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACNA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACLA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrCA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9CA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3DA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACTA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;AC7EA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;ACVA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA;AACA;;AAEA;;;;;;;;;;;;;ACHA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACZA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACjBA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACLA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACLA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;;AAEA;;;;;;;;;;;;ACHA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5EA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sDAAsD,QAAQ;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,4BAA4B;AAC3E,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,QAAQ;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,QAAQ;;AAEvD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C,8CAA8C;AAC9C,6CAA6C;AAC7C,4CAA4C;AAC5C,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT,KAAK;AAAA;AACL,CAAC,+FAMA;;;;;;;;;;;;AC3dD;AACA;AACA;;;;;;;;;;;;ACFA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;ACrBA,wB","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./StaticFiles/src/index.js\");\n","$(function() {\r\n var body = $(\"body\");\r\n var accessibility = $(\"#accessibility\");\r\n var accessibilityBtn = $(\"#accessibilityBtn\");\r\n var increaseFontSize = $(\"#increaseFontSize\");\r\n var descreseFontSize = $(\"#descreseFontSize\");\r\n var highContrast = $(\"#highContrast\");\r\n var reverseColor = $(\"#reverseColor\");\r\n var lightBg = $(\"#lightBg\");\r\n var indicateLinks = $(\"#indicateLinks\");\r\n var changeFont = $(\"#changeFont\");\r\n var resetThemes = $(\"#resetThemes\");\r\n var panel = $(\".accessibility-wrapper\");\r\n var curSize;\r\n\r\n // TOGGLE ACCESSIBILITY PANEL\r\n\r\n accessibilityBtn.on(\"click\", function(e) {\r\n e.preventDefault();\r\n panel.toggleClass(\"open\");\r\n });\r\n\r\n // RESET THEMES\r\n\r\n resetThemes.on(\"click\", function() {\r\n body.attr(\"class\", \"\");\r\n $(\"html\").css(\"font-size\", \"16px\");\r\n if ($(\"a\").hasClass(\"underlined-link\")) {\r\n $(\"a\").removeClass(\"underlined-link\");\r\n }\r\n });\r\n\r\n // TOGGLE LINK HIGHTLIGHT\r\n\r\n indicateLinks.on(\"click\", function() {\r\n $(\"a\").toggleClass(\"underlined-link\");\r\n });\r\n\r\n //TOGGLE REVERSE COLORS\r\n\r\n reverseColor.on(\"click\", function() {\r\n if (body.hasClass(\"reverse-theme\")) {\r\n body.removeClass(\"reverse-theme\");\r\n } else {\r\n body.attr(\"class\", \"\");\r\n body.addClass(\"reverse-theme\");\r\n $(\"#map-container\").css(\"background-color\", \"unset\");\r\n }\r\n });\r\n\r\n // ACTIVATE SIMPLE FONTS\r\n\r\n changeFont.on(\"click\", function() {\r\n if (body.hasClass(\"simple-font\")) {\r\n body.removeClass(\"simple-font\");\r\n } else {\r\n body.attr(\"class\", \"\");\r\n body.addClass(\"simple-font\");\r\n }\r\n });\r\n\r\n //LIGHT BACKGROUND\r\n lightBg.on(\"click\", function() {\r\n if (body.hasClass(\"light-background\")) {\r\n body.removeClass(\"light-background\");\r\n } else {\r\n body.attr(\"class\", \"\");\r\n body.addClass(\"light-background\");\r\n }\r\n });\r\n\r\n // HIGH CONSTRAST TOGGLE\r\n\r\n highContrast.on(\"click\", function() {\r\n if (body.hasClass(\"dark-theme\")) {\r\n body.removeClass(\"dark-theme\");\r\n } else {\r\n body.attr(\"class\", \"\");\r\n body\r\n .addClass(\"dark-theme\")\r\n .children()\r\n .not(\"#map-container\");\r\n }\r\n });\r\n\r\n // INCREASE FONTS SIZE\r\n\r\n increaseFontSize.on(\"click\", function() {\r\n curSize = parseInt($(\"html\").css(\"font-size\")) + 2;\r\n if (curSize <= 28) $(\"html\").css(\"font-size\", curSize);\r\n });\r\n\r\n // RESET FONTS SIZE\r\n\r\n // $(\"#resettext\").on(\"click\", function () {\r\n // if (curSize != 16) $(\"body\").css(\"font-size\", 16);\r\n // });\r\n\r\n // DECREASE FONTS SIZE\r\n\r\n descreseFontSize.on(\"click\", function() {\r\n curSize = parseInt($(\"html\").css(\"font-size\")) - 2;\r\n if (curSize >= 14) $(\"html\").css(\"font-size\", curSize);\r\n });\r\n});\r\n","import bootbox from 'bootbox';\r\nimport { loader } from './utilities';\r\n\r\n$('.form-actions').on('click', '.btn-save', e => {\r\n\te.preventDefault();\r\n\r\n\tbootbox.confirm(\r\n\t\t'Είστε σίγουροι ότι Ξέλετε Μα αποΞηκεύσετε το αίτηΌα;',\r\n\t\tresult => (result && $('form').submit()) || undefined\r\n\t);\r\n});\r\n\r\n$('.request-form').on('change.fields', e => {\r\n\tconst $this = $(e.delegateTarget);\r\n\r\n\t$this\r\n\t.off('change.fields')\r\n\t.on('click', '.form-actions .btn-cancel', e => {\r\n\t\tconsole.log('click');\r\n\t\te.preventDefault();\r\n\t\tconst location = $(e.target).attr('href');\r\n\t\tconsole.log(location);\r\n\r\n\t\tbootbox.confirm(\r\n\t\t\t'Είστε σίγουροι ότι Ξέλετε Μα ακυρώσετε τηΜ επεΟεργασία του αιτήΌατος;',\r\n\t\t\tresult => {\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tloader.show();\r\n\t\t\t\t\twindow.location.href = location;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t});\r\n});\r\n\r\n$('#submitAction').on('click', function(e) {\r\n\te.preventDefault();\r\n\tconst requestID = $(this).data('id');\r\n\tconst selectedValue = $('#drpActions').val();\r\n\tconsole.log(selectedValue);\r\n\tif (!selectedValue) {\r\n\t\treturn;\r\n\t}\r\n\t\r\n\r\n\t$.post('/Requests/EditActions', {\r\n\t\tencryptedRequestID: requestID,\r\n\t\tencryptedRequestStatusActionID: selectedValue\r\n\t})\r\n\t\t.done(message => bootbox.dialog({ message }))\r\n\t\t.fail(error => console.log(error.responseText));\r\n});\r\n\r\n$('#deleteRequest').on('click', function(e) {\r\n\te.preventDefault();\r\n\tconst requestID = $(this).data('id');\r\n\r\n\t$.get('/Requests/Delete', { id: requestID })\r\n\t\t.done(message => bootbox.dialog({ message }))\r\n\t\t.fail(error => console.log(error.responseText));\r\n});\r\n\r\n$('.remove-file').on('click', e => {\r\n\tconst $button = $(e.currentTarget);\r\n\tconst $file = $button.closest('.form-file');\r\n\r\n\tbootbox.confirm(\r\n\t\t'Είστε σίγουροι ότι Ξέλετε Μα Ύιαγράψετε το αρχείο;',\r\n\t\tresult => (result && handleRemoveFile($button, $file)) || undefined\r\n\t);\r\n});\r\n\r\nconst handleRemoveFile = ($button, $file) => {\r\n\tconst requestID = $button.data('id');\r\n\tconst guid = $button.data('guid');\r\n\r\n\tloader.show();\r\n\r\n\t$.post('/Requests/RemoveFile', {\r\n\t\tencryptedRequestID: requestID,\r\n\t\tfileGUID: guid\r\n\t})\r\n\t\t.done(response => {\r\n\t\t\tif (response === 'True') {\r\n\t\t\t\t$file.remove();\r\n\t\t\t}\r\n\t\t})\r\n\t\t.fail(error => console.log(error.responseText))\r\n\t\t.always(() => loader.hide());\r\n};\r\n\r\n// sign out\r\n$('body').on('click', '#btnSignOut', function(e) {\r\n\te.preventDefault();\r\n\t//var $this = $(e.currentTarget);\r\n\t//var requestID = $(this).data('id');\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: '/User/SignOut',\r\n\t\tdata: {},\r\n\t\tdataType: 'html',\r\n\t\tsuccess: function(response) {\r\n\t\t\twindow.location.reload();\r\n\t\t},\r\n\t\tfailure: function(response) {\r\n\t\t\talert(response.responseText);\r\n\t\t},\r\n\t\terror: function(response) {\r\n\t\t\talert(response.responseText);\r\n\t\t}\r\n\t});\r\n});\r\n\r\n// Subscribe button\r\n$('body').on('click', '.btn-add-bookmark', function(e) {\r\n\te.preventDefault();\r\n\tvar $this = $(e.currentTarget);\r\n\tvar commentID = $(this).data('id');\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: '/Requests/Subscribe',\r\n\t\tdata: { id: commentID },\r\n\t\tdataType: 'html',\r\n\t\tsuccess: function(response) {\r\n\t\t\t$this.replaceWith(response);\r\n\t\t},\r\n\t\tfailure: function(response) {\r\n\t\t\talert(response.responseText);\r\n\t\t},\r\n\t\terror: function(response) {\r\n\t\t\talert(response.responseText);\r\n\t\t}\r\n\t});\r\n});\r\n\r\n// Like/Vote button\r\n$('body').on('click', '.request-upvote-btn', function(e) {\r\n\te.preventDefault();\r\n\tvar $this = $(e.currentTarget);\r\n\tvar requestID = $(this).data('id');\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: '/Requests/Like',\r\n\t\tdata: { id: requestID },\r\n\t\tdataType: 'html',\r\n\t\tsuccess: function(response) {\r\n\t\t\t$(\"#LikeVotes\").html(response);\r\n\t\t},\r\n\t\tfailure: function(response) {\r\n\t\t\talert(response.responseText);\r\n\t\t},\r\n\t\terror: function(response) {\r\n\t\t\talert(response.responseText);\r\n\t\t}\r\n\t});\r\n});\r\n\r\n$('.request-form')\r\n\t.on('submit', loader.show)\r\n\t.on('invalid-form', loader.hide);\r\n\r\n\r\n$('.submitee').on('click', e => {\r\n\te.preventDefault();\r\n\tconst $this = $(e.target);\r\n\tconst data = $this.data();\r\n\tconst template = `\r\n\t\t\r\n\t\t${data.name && ``}\r\n\t\t${data.phone && ``}\r\n\t\t${data.email && ``}\r\n\t\t
ΌΜοΌα: ${data.name}
΀ηλέφωΜο: ${data.phone}
E-mail ${data.email}
\r\n\t`\r\n\r\n\tbootbox.dialog({\r\n\t\tmessage: `\r\n\t\t\t
Στοιχεία επικοιΜωΜίας πολίτη.
\r\n\t\t\t${template}\r\n\t\t`,\r\n\t\tbuttons: {\r\n\t\t\tok: {}\r\n\t\t},\r\n\t\tcloseButton: true\r\n\t});\r\n})","import { loader } from \"./utilities\";\r\n\r\n// Delete comment button\r\n$('body')\r\n .on('click', '.comment-delete-btn', function(e) {\r\n e.preventDefault();\r\n var $this = $(e.currentTarget);\r\n var commentID = $(this).data('commentid');\r\n var requestID = $(this).data('requestid');\r\n $.ajax({\r\n type: 'POST',\r\n url: '/Requests/CommentDelete',\r\n data: { commentID: commentID, encryptedRequestID: requestID },\r\n dataType: 'json',\r\n beforeSend: function() {\r\n loader.show();\r\n },\r\n success: function(response) {\r\n handleCommentDeletePostResponse(response);\r\n loader.hide();\r\n },\r\n failure: function(response) {\r\n alert(response.responseText);\r\n loader.hide();\r\n },\r\n error: function(response) {\r\n alert(response.responseText);\r\n loader.hide();\r\n }\r\n });\r\n })\r\n .on('click', '.comments-header', function(e) {\r\n $(this)\r\n .closest('.comments')\r\n .toggleClass('comments-collapsed')\r\n .find('.comments-main')\r\n .slideToggle();\r\n });\r\n\r\nwindow.handleCommentPostResponse = context => {\r\n if (context.Success) {\r\n $('#Text').val('');\r\n $('#IsPublic').prop('checked', false);\r\n\r\n $('#nrtCommentsList').html(context.CommentsList);\r\n\r\n if (context.Message) {\r\n toastr.success(context.Message);\r\n }\r\n\r\n // window.scroll({\r\n // top: $('#comments').offset().top,\r\n // left: 0,\r\n // behavior: 'smooth'\r\n // });\r\n } else {\r\n if (context.Message) {\r\n toastr.error(context.Message);\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nwindow.handleCommentDeletePostResponse = context => {\r\n if (context.Success) {\r\n $('#nrtCommentsList').html(context.CommentsList);\r\n\r\n if (context.Message) {\r\n\t\t\ttoastr.success(context.Message)\r\n }\r\n } else {\r\n if (context.Message) {\r\n toastr.error(context.Message)\r\n }\r\n }\r\n return false;\r\n};\r\n","import photosTpl from './templates/photos.hbs';\r\nimport documentsTpl from './templates/documents.hbs';\r\n\r\nconst getFilesInfo = files =>\r\n\tArray.from(files).map(file => {\r\n\t\tfile.url = URL.createObjectURL(file);\r\n\t\tfile.extension = file.name.split('.').pop();\r\n\t\treturn file;\r\n\t});\r\n\r\nconst fileTemplates = {\r\n\tphotos: photosTpl,\r\n\tdocuments: documentsTpl\r\n}\r\n\r\n$('.form-files').on('change', '.upload-files', function(e) {\r\n const $container = $(e.delegateTarget);\r\n const input = e.target;\r\n\tconst files = getFilesInfo(input.files);\r\n\tconst template = fileTemplates[$container.data('template')];\r\n\r\n $container\r\n .find('.form-file.added')\r\n .remove()\r\n .end()\r\n .find('.add-file')\r\n .before(template({ files }));\r\n});","import \"./scss/main.scss\";\r\nimport \"./pagination\";\r\nimport \"./actions\";\r\nimport \"./files\";\r\nimport \"./accessibility\";\r\nimport \"./comments\";\r\n\r\nimport bootbox from \"bootbox\";\r\nimport toastr from \"toastr\";\r\nimport \"jquery-sticky\";\r\nimport { removeAcc } from \"./utilities\";\r\nimport Map from \"./map/Map\";\r\n\r\nwindow.toastr = toastr;\r\ntoastr.options.timeOut = 1500;\r\n\r\nbootbox.addLocale(\"el\", {\r\n CANCEL: \"Ακύρωση\",\r\n OK: \"OK\",\r\n CONFIRM: \"ΟΚ\",\r\n});\r\n\r\nbootbox.setLocale(\"el\");\r\n\r\n$.fn.extend({\r\n removeAcc: function() {\r\n return this.each(removeAcc);\r\n },\r\n});\r\n\r\njQuery.fn.extend({\r\n fadeOnTime: function(timeout) {\r\n return this.each(function() {\r\n setTimeout(() => {\r\n $(this).fadeOut();\r\n }, timeout);\r\n });\r\n },\r\n});\r\n\r\n$(\"#list-map\").each(function() {\r\n const $map = $(this);\r\n const map = new Map($map);\r\n map.render();\r\n $map.sticky({ topSpacing: 15 });\r\n\r\n $(document).on(\"searchResults/update\", () => map.render());\r\n});\r\n\r\n$(\"#details-map\").each(function() {\r\n const $map = $(this);\r\n const map = new Map($map);\r\n map.render();\r\n});\r\n$(\"#form-map\").each(function() {\r\n const $map = $(this);\r\n const map = new Map($map);\r\n map.render();\r\n});\r\n\r\n$(\"h1, h2, h3, h4, h5, h6, label, p, .btn\").removeAcc();\r\n\r\n$(\"[data-show-ref]\").on(\"change\", function(e) {\r\n const animationTime = 150;\r\n const $target = $(e.currentTarget);\r\n const el = $target.data(\"show-ref\");\r\n const $ref = $(el);\r\n\r\n if ($target.is(\"input[type=checkbox]\")) {\r\n $target.is(\":checked\") ? $ref.fadeIn(animationTime) : $ref.hide();\r\n return;\r\n }\r\n\r\n if ($target.is(\"select\")) {\r\n const val = $target.val();\r\n const $currentRef = $ref.filter(`[data-val=${val}]`);\r\n\r\n $ref.hide();\r\n $currentRef.fadeIn(animationTime);\r\n return;\r\n }\r\n});\r\n","import MapSearchBar from './MapSearchBar';\r\nimport MapLabel from './MapLabel';\r\nimport mapTpl from './templates/map.hbs';\r\nimport MapList from './MapList';\r\nimport mapCanvas from './MapCanvas';\r\nimport { cities } from './config';\r\n\r\nconst config = {\r\n\tsearchBarClass: 'map-search-bar',\r\n\tcanvasClass: 'map-canvas',\r\n\tlabelClass: 'map-label',\r\n\tlistClass: 'map-list',\r\n\tlatInputName: 'RequestGeoLatitude',\r\n\tlngInputName: 'RequestGeoLongitude',\r\n\taddressInputName: 'RequestGeoAddress',\r\n\terrorLabelClass: 'error-label',\r\n\tinvalidLocationMsg: 'Η τοποΞεσία είΜαι εκτός ορίωΜ του ΔήΌου. Παρακαλώ ΎοκιΌάστε Όια Μέα αΜαζήτηση.'\r\n};\r\n\r\nclass Map {\r\n\tconstructor($el) {\r\n\t\tthis.$el = $el;\r\n\t\tthis.props = { ...this.$el.data(), ...config };\r\n\t\tthis.childComponents = {};\r\n\t}\r\n\r\n\tsetupChildComponents() {\r\n\t\treturn {\r\n\t\t\t\r\n\t\t\tmapCanvas: mapCanvas({\r\n\t\t\t\t$el: this.$el.find(`.${config.canvasClass}`),\r\n\t\t\t\tmapConfig: this.props.mapConfig,\r\n\t\t\t\tlocations: this.props.locations,\r\n\t\t\t\tonSearchedCoordsChange: this.onSearchedCoordsChange.bind(this),\r\n\t\t\t\tonMarkerOutOfBounds: this.onMarkerOutOfBounds.bind(this),\r\n\t\t\t\tonLocationSearch: this.onLocationSearch.bind(this),\r\n\t\t\t}),\r\n\t\t\tmapSearchBar:\r\n\t\t\t\tthis.props.hasSearch &&\r\n\t\t\t\tnew MapSearchBar({\r\n\t\t\t\t\t$el: this.$el.find(`.${config.searchBarClass}`),\r\n\t\t\t\t\tonLocationSearch: this.onLocationSearch.bind(this),\r\n\t\t\t\t\tonMarkerOutOfBounds: this.onMarkerOutOfBounds.bind(this),\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t}),\r\n\r\n\t\t\tmapLabel:\r\n\t\t\t\tthis.props.hasLabel &&\r\n\t\t\t\tnew MapLabel({\r\n\t\t\t\t\t$el: this.$el.find(`.${config.labelClass}`),\r\n\t\t\t\t\tvalue: this.props.defaultLabel,\r\n\t\t\t\t\tisEditable: this.props.isLabelEditable,\r\n\t\t\t\t\tonLabelChange: this.onLabelChange.bind(this)\r\n\t\t\t\t}),\r\n\t\t\tmapList:\r\n\t\t\t\tthis.props.hasList && new MapList({\r\n\t\t\t\t\t$el: $(`.${config.listClass}`),\r\n\t\t\t\t\trenderLocation: this.renderLocation.bind(this),\r\n\t\t\t\t\tonListItemSelect: this.onListItemSelect.bind(this),\r\n\t\t\t\t\tfitMarkersOnMap: this.fitMarkersOnMap.bind(this)\r\n\t\t\t\t}),\r\n\t\t\tmapMarkerInput:\r\n\t\t\t\tthis.props.hasMarkerInput && new MapList({\r\n\t\t\t\t\t$el: $(`.${config.markerInputClass}`),\r\n\r\n\t\t\t\t})\r\n\t\t};\r\n\t}\r\n\r\n\tonListItemSelect(marker) {\r\n\t\tthis.childComponents.mapCanvas.onMarkerClick(marker);\r\n\t\tthis.childComponents.mapLabel.changeLabel(marker.metadata && marker.metadata.address);\r\n\t}\r\n\t\r\n\tscrollToMap(){\r\n\t\tconst documentScrollTop = $(document).scrollTop();\r\n\t\tconst mapOffsetTop = this.$el.offset().top;\r\n\r\n\t\tif (documentScrollTop > mapOffsetTop) {\r\n\t\t\t$(document).scrollTop(mapOffsetTop);\r\n\t\t}\r\n\t}\r\n\r\n\trenderLocation(location) {\r\n\t\t//return this.childComponents.mapCanvas.renderLocation(cities.Kavala.center);\r\n\t\treturn this.childComponents.mapCanvas.renderLocation(location);\r\n\t}\r\n\r\n\tonLabelChange(address) {\r\n\t\tthis.childComponents.mapLabel.changeLabel(address);\r\n\t\tthis.updateAddress(address);\r\n\t}\r\n\r\n\tonLocationSearch(coords, address) {\r\n\t\tconsole.log('eeee', coords, address)\r\n\r\n\t\tvar location = { ...coords, isDraggable: true, isDefault: true, isSearchable: true }\r\n\t\tthis.childComponents.mapLabel.changeLabel(address);\r\n\t\tthis.childComponents.mapCanvas.renderLocation(location)\r\n\t\tthis.updateAddress(address);\r\n\t\tthis.updateCoords(coords);\r\n\t}\r\n\r\n\tonSearchedCoordsChange(coords) {\r\n\t\tthis.updateCoords(coords);\r\n\t}\r\n\r\n\tonMarkerOutOfBounds() {\r\n\t\tthis.$errorLabel.text(config.invalidLocationMsg).show();\r\n\t}\r\n\r\n\tfitMarkersOnMap(markers) {\r\n\t\tthis.childComponents.mapCanvas.fitMarkersOnMap(markers);\r\n\t}\r\n\r\n\trender() {\r\n\t\tthis.$el.html(mapTpl(this.props));\r\n\t\tthis.$latInput = $(`[name=${config.latInputName}]`)\r\n\t\tthis.$lngInput = $(`[name=${config.lngInputName}]`)\r\n\t\tthis.$addressInput = $(`[name=${config.addressInputName}]`)\r\n\t\tthis.$errorLabel = $(`.${config.errorLabelClass}`);\r\n\t\tthis.childComponents = this.setupChildComponents();\r\n\t\tObject.values(this.childComponents).forEach(component => component && component.render());\r\n\t\t\r\n\t}\r\n\trenderWithMarker() {\r\n\t\tthis.render();\r\n\t\t\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\tupdateCoords({ lat, lng}) {\r\n\t\tthis.$latInput.val(lat);\r\n\t\tthis.$lngInput.val(lng);\r\n\t\tthis.$errorLabel.hide();\r\n\t}\r\n\r\n\tupdateAddress(address) {\r\n\t\tthis.$addressInput.val(address);\r\n\t\tthis.childComponents.mapSearchBar.updateSearchInputValue(address);\r\n\t}\r\n}\r\n\r\nexport default Map;\r\n","import { isInBounds } from './mapUtils';\r\nimport _flow from 'lodash/flow';\r\nimport { cities } from './config';\r\n\r\nconst defaultMapConfig = {\r\n\tcenter: { lat: cities.Kavala.center.lat, lng: cities.Kavala.center.lng },\r\n\tzoom: 15,\r\n\tmaxZoom: 18,\r\n\tmapTypeId: google.maps.MapTypeId['ROADMAP']\r\n};\r\n\r\nconst mapCanvas = ({\r\n\t$el,\r\n\tuserMapConfig,\r\n\tlocations = [],\r\n\tonSearchedCoordsChange,\r\n\tonMarkerOutOfBounds,\r\n\tonLocationSearch\r\n\t\r\n\t\r\n}) => {\r\n\tconst mapConfig = { ...defaultMapConfig, ...userMapConfig };\r\n\tlet map;\r\n\tlet searchedMarker;\r\n\tlet infowindow;\r\n\t\r\n\t\r\n\tlet geocoder = new google.maps.Geocoder();\r\n\tlet pinnedAddress;\r\n\tlet marker;\r\n\r\n\tconst render = () => {\r\n\t\tmap = new google.maps.Map($el[0], mapConfig);\r\n\t\ttypeof locations !== 'string' && locations.map(renderLocation);\r\n\t};\r\n\r\n\r\n\tconst renderLocation = location =>\r\n\t\t_flow(setupMarker, draggable, searchable, bindable, centered, withInfo)(\r\n\t\t\tlocation\r\n\t\t);\r\n\r\n\r\n\tconst setupMarker = location => { //after search submit marker gets\r\n\t\tconst { lat, lng, icon, svg } = location;\r\n\t\tlet svgIcon;\r\n\r\n\t\tif (!lat || !lng) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (svg) {\r\n\t\t\tsvgIcon = {\r\n\t\t\t\turl:\r\n\t\t\t\t\t'data:image/svg+xml;charset=UTF-8,' +\r\n\t\t\t\t\tencodeURIComponent(svg),\r\n\t\t\t\tscaledSize: new google.maps.Size(20, 20)\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst position = new google.maps.LatLng(lat, lng);\r\n\t\t\r\n\t\tconst marker = new google.maps.Marker({\r\n\t\t\tposition,\r\n\t\t\ticon: svgIcon || icon\r\n\t\t});\r\n\t\tconst bounds = new google.maps.LatLngBounds();\r\n\t\tmarker.metadata = { ...location };\r\n\r\n\t\tmarker.setMap(map);\r\n\t\tbounds.extend(marker.position);\r\n\r\n\t\treturn marker;\r\n\t};\r\n\r\n\tconst removeMarker = marker => marker.setMap(null);\r\n\r\n\tconst draggable = marker => {\r\n\t\tconst { isDraggable } = marker.metadata;\r\n\r\n\t\tif (isDraggable) {\r\n\t\t\tmarker.setDraggable(true);\r\n\r\n\t\t\tonMarkerDrag(cities.Kavala.bounds)(\r\n\t\t\t\tmarker,\r\n\t\t\t\tonSearchedCoordsChange,\r\n\t\t\t\tonMarkerOutOfBounds\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn marker;\r\n\t};\r\n\r\n\tconst searchable = marker => {\r\n\t\tconst { isSearchable } = marker.metadata;\r\n\r\n\t\tif (isSearchable) {\r\n\t\t\tsearchedMarker && removeMarker(searchedMarker);\r\n\t\t\tsearchedMarker = marker;\r\n\t\t}\r\n\r\n\t\treturn marker;\r\n\t};\r\n\r\n\tconst bindable = marker => {\r\n\t\tconst { bindToEl: $el } = marker.metadata;\r\n\r\n\t\t$el && $el.data('marker', marker);\r\n\r\n\t\treturn marker;\r\n\t};\r\n\r\n\tconst centered = marker => {\r\n\t\tconst { isDefault, lat, lng } = marker.metadata;\r\n\r\n\t\tisDefault && map.setCenter({ lat, lng });\r\n\r\n\t\treturn marker;\r\n\t};\r\n\r\n\tconst withInfo = marker => {\r\n\t\tconst { infoText } = marker.metadata;\r\n\r\n\t\tinfoText &&\r\n\t\t\tmarker.addListener(\r\n\t\t\t\t'click',\r\n\t\t\t\topenInfoWindow.bind(null, marker, infoText)\r\n\t\t\t);\r\n\r\n\t\treturn marker;\r\n\t};\r\n\r\n\tconst openInfoWindow = (marker, text) => {\r\n\t\tinfowindow && infowindow.close();\r\n\r\n\t\tinfowindow = new google.maps.InfoWindow({\r\n\t\t\tcontent: `
${text}
`\r\n\t\t});\r\n\r\n\t\tinfowindow.open(map, marker);\r\n\t};\r\n\r\n\tconst onMarkerClick = marker =>\r\n\t\topenInfoWindow(marker, marker.metadata.infoText);\r\n\r\n\tconst onMarkerDrag = bounds => (\r\n\t\tmarker,\r\n\t\tonSuccess,\r\n\t\tonFail\r\n\t) => {\r\n\t\tlet latStart;\r\n\t\tlet lngStart;\r\n\t\t\r\n\t\tgoogle.maps.event.addListener(marker, 'dragstart', e => {\r\n\t\t\tlatStart = e.latLng.lat();\r\n\t\t\tlngStart = e.latLng.lng();\r\n\t\t});\r\n\t\r\n\t\tgoogle.maps.event.addListener(marker, 'dragend', e => {\r\n\t\t\tconst lat = e.latLng.lat();\r\n\t\t\tconst lng = e.latLng.lng();\r\n\t\t\tconst input = (lat + \",\" + lng);\r\n\t\t\tconst latlngStr = input.split(',', 2);\r\n\t\t\tconst latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};\r\n\t\t\tconst isMarkerInBounds = isInBounds({ lat, lng}, bounds);\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif (!isMarkerInBounds) {\r\n\t\t\t\tmarker.setPosition({ lat: latStart, lng: lngStart });\r\n\t\t\t\treturn onFail(isMarkerInBounds)\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tsearchLatLng( {'location':latlng} ).then(results => { //Converts latlng to address\r\n\t\t\t\t\tvar addressComponents = results[0].address_components;\r\n\t\t\t\t\tpinnedAddress = (addressComponents[1].long_name + \" \" + addressComponents[0].long_name + \", \" + addressComponents[2].short_name);\r\n\t\t\t\t\tonLocationSearch(latlng, pinnedAddress);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn onSuccess({ lat: e.latLng.lat(), lng: e.latLng.lng() })\r\n\t\t});\r\n\t};\r\n\r\n\t\r\n\tconst searchLatLng = LatLng => {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tgeocoder.geocode(LatLng, function(results, status) {\r\n\t\t\t\tif (status === 'OK') {\r\n\t\t\t\t\tresolve(results);\t\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(status);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tconst fitMarkersOnMap = markers => {\r\n\t\tconst bounds = new google.maps.LatLngBounds();\r\n\t\tmarkers.forEach(marker => {\r\n\t\t\tbounds.extend(marker.getPosition());\r\n\t\t});\r\n\r\n\t\tmap.fitBounds(bounds);\r\n\t}\r\n\r\n\treturn {\r\n\t\trender,\r\n\t\t// renderMarker,\r\n\t\tonMarkerClick,\r\n\t\trenderLocation,\r\n\t\tfitMarkersOnMap,\r\n\t\tonMarkerDrag\r\n\t};\r\n};\r\n\r\nexport default mapCanvas;\r\n","import tpl from './templates/map-label.hbs';\r\n\r\nconst config = {\r\n\telClass: 'map-label',\r\n\tlabelContainerClass: 'label-container',\r\n\teditInputClass: 'edit-input',\r\n\tlabelValueClass: 'label-input',\r\n\teditContainerClass: 'edit-container',\r\n\teditBtnClass: 'edit-btn',\r\n\teditCancelBtnClass: 'edit-cancel-btn',\r\n\teditSubmitBtnClass: 'edit-submit-btn'\r\n};\r\n\r\nclass MapLabel {\r\n\tconstructor({ $el, value, isEditable, onLabelChange }) {\r\n\t\tthis.$el = $el;\r\n\t\t// this.value = value;\r\n\t\tthis.isEditable = isEditable;\r\n\t\tthis.onLabelChange = onLabelChange;\r\n\t\tthis.config = { ...config, isEditable, value };\r\n\t}\r\n\r\n\trender() {\r\n\t\tthis.$el.html(tpl(this.config));\r\n\t\tthis.$labelContainer = this.$el.find(\r\n\t\t\t`.${this.config.labelContainerClass}`\r\n\t\t);\r\n\t\tthis.$labelValue = this.$el.find(`.${this.config.labelValueClass}`);\r\n\t\tthis.$editBtn = this.$el.find(`.${this.config.editBtnClass}`);\r\n\t\tthis.$editContainer = this.$el.find(\r\n\t\t\t`.${this.config.editContainerClass}`\r\n\t\t);\r\n\t\tthis.$editInput = this.$el.find(`.${config.editInputClass}`);\r\n\t\tthis.$editCancelBtn = this.$el.find(\r\n\t\t\t`.${this.config.editCancelBtnClass}`\r\n\t\t);\r\n\t\tthis.$editSubmitBtn = this.$el.find(\r\n\t\t\t`.${this.config.editSubmitBtnClass}`\r\n\t\t);\r\n\t\tthis.events();\r\n\t}\r\n\r\n\tevents() {\r\n\t\tthis.$editInput.on('keypress', this.onLabelEditKeyPress.bind(this));\r\n\t\tthis.$editBtn.on('click', this.onLabelEdit.bind(this));\r\n\t\tthis.$editCancelBtn.on('click', this.onLabelEditCancel.bind(this));\r\n\t\tthis.$editSubmitBtn.on('click', this.onLabelEditSubmit.bind(this));\r\n\t}\r\n\r\n\tchangeLabel(value) {\r\n\t\tthis.$labelValue.val(value);\r\n\t}\r\n\r\n\tonLabelEditKeyPress(e) {\r\n\t\tif (e.key === 'Enter') {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.onLabelEditSubmit();\r\n\t\t}\r\n\t}\r\n\r\n\tonLabelEditSubmit() {\r\n\t\tconst labelValue = this.$editInput.val();\r\n\r\n\t\tif (labelValue.trim() === '') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.onLabelChange(labelValue);\r\n\t\tthis.toggleEdit();\r\n\t}\r\n\r\n\tonLabelEditCancel() {\r\n\t\tthis.toggleEdit();\r\n\t}\r\n\r\n\tonLabelEdit() {\r\n\t\tthis.$editInput.val(this.$labelValue.val());\r\n\t\tthis.toggleEdit();\r\n\t}\r\n\r\n\ttoggleEdit() {\r\n\t\tthis.$labelContainer.toggle();\r\n\t\tthis.$editContainer.toggle();\r\n\t}\r\n}\r\n\r\nexport default MapLabel;\r\n","import _isEmpty from 'lodash/isEmpty';\r\n\r\nconst config = {\r\n\tlistItemClass: 'list-item',\r\n\tactiveClass: 'selected',\r\n\tlistItemChildClass: 'request-address'\r\n};\r\nclass MapList {\r\n\tconstructor({ $el, onListItemSelect, renderLocation, fitMarkersOnMap }) {\r\n\t\tthis.$el = $el;\r\n\t\tthis.config = config;\r\n\t\tthis.renderLocation = renderLocation;\r\n\t\tthis.onListItemSelect = onListItemSelect;\r\n\t\tthis.fitMarkersOnMap = fitMarkersOnMap\r\n\t\tthis.$listItems;\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet markers = [];\r\n\t\tthis.$listItems = this.$el.find(`.${this.config.listItemClass}`);\r\n\r\n\t\tthis.$listItems.each((index, item) => {\r\n\t\t\tconst $this = $(item);\r\n\t\t\tconst location = $this.data('location');\r\n\r\n\r\n\t\t\tif (!location || _isEmpty(location)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst marker = this.renderLocation({ ...location, bindToEl: $this });\r\n\r\n\t\t\tmarker && markers.push(marker);\r\n\r\n\t\t\t$this.find(`.${config.listItemChildClass}`).on('click', e => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.onListItemClick($this);\r\n\t\t\t});\r\n\t\t\tmarker.addListener('click', this.onListItemClick.bind(this, $this));\r\n\t\t});\r\n\t\tmarkers.length && this.fitMarkersOnMap(markers);\r\n\t}\r\n\r\n\tonListItemClick($el) {\r\n\t\tconst marker = $el.data('marker');\r\n\t\tthis.onListItemSelect(marker);\r\n\t\tthis.$listItems.removeClass(config.activeClass);\r\n\t\t$el.addClass(config.activeClass);\r\n\t\tthis.animateToListItem($el);\r\n\t}\r\n\r\n\tanimateToListItem($el) {\r\n\t\t$('body, html').animate({ scrollTop: $el.offset().top }, 350);\r\n\t}\r\n}\r\n\r\nexport default MapList;\r\n","import tpl from './templates/map-search-bar.hbs';\r\nimport { isInBounds, formatAddress } from './mapUtils';\r\nimport { cities } from './config';\r\n\r\nconst config = {\r\n\tgeolocation: !!navigator.geolocation,\r\n\tgeoSearchBtnClass: 'geo-search-btn',\r\n\tsearchInputClass: 'address-search-input',\r\n\tsearchSubmitBtn: 'search-submit',\r\n\tgoogleMapsKey: 'AIzaSyCDNWtPS2tR9aTYrdC5Zesaj2kvW4CpwLk'\r\n};\r\n\r\nconst geoConfig = {\r\n\tenableHighAccuracy: true,\r\n\tmaximumAge: 30000,\r\n\ttimeout: 27000\r\n};\r\n\r\nclass MapSearchBar {\r\n\tconstructor({ $el, onLocationSearch, onMarkerOutOfBounds }) {\r\n\t\tthis.$el = $el;\r\n\t\tthis.config = config;\r\n\t\tthis.geoConfig = geoConfig;\r\n\t\tthis.onLocationSearch = onLocationSearch;\r\n\t\tthis.onMarkerOutOfBounds = onMarkerOutOfBounds;\r\n\t\tthis.geocoder = new google.maps.Geocoder();\r\n\t}\r\n\r\n\trender() {\r\n\t\tthis.$el.html(tpl(config));\r\n\t\tthis.$geoSearchBtn = this.$el.find(`.${this.config.geoSearchBtnClass}`);\r\n\t\tthis.$searchInput = this.$el.find(`.${this.config.searchInputClass}`);\r\n\t\tthis.$searchSubmitBtn = this.$el.find(`.${this.config.searchSubmitBtn}`);\r\n\t\tthis.events();\r\n\t}\r\n\r\n\tevents() {\r\n\t\tthis.$searchSubmitBtn.on('click', this.onSearchSubmit.bind(this));\r\n\t\tthis.$searchInput.on('focusout', this.onSearchSubmit.bind(this));\r\n\t\tthis.$searchInput.on('keypress', e => {\r\n\t\t\tif (e.key === 'Enter' ) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.onSearchSubmit();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.$geoSearchBtn.on('click', this.searchGeoLocation.bind(this));\r\n\t}\r\n\r\n\tonSearchSubmit() {\r\n\t\tconst searchIpuntVal = this.$searchInput.val().trim();\r\n\t\t\r\n\t\tif (searchIpuntVal === \"\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst address = searchIpuntVal + ', Καβάλα';\r\n\r\n\t\tthis.searchLocation({ address }).then(results => { \r\n\t\t\tconst location = results[0].geometry.location;\r\n\t\t\tconst lat = location.lat();\r\n\t\t\tconst lng = location.lng();\r\n\t\t\tconst coords = { lat, lng }\r\n\t\t\tconst addressObj = results[0].address_components;\r\n\t\t\tconst address = (addressObj[1].long_name + \" \" + addressObj[0].long_name + \", \" + addressObj[2].short_name)\r\n\t\t\t\r\n\r\n\t\t\tif (!isInBounds(coords, cities.Kavala.bounds)) {\r\n\t\t\t\treturn this.onMarkerOutOfBounds();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.onLocationSearch(coords, address);\r\n\t\t\tthis.updateSearchInputValue(address);\r\n\t\t});\r\n\t\t\r\n\t}\r\n\tupdateSearchInputValue(address) {\r\n\t\tthis.$searchInput.val(address);\r\n\t}\r\n\r\n\tsearchLocation(params) { \t\t\t\t\t\t\t\t\t\t\t\t\t// Converts Address Name to GeoLocation LatLng\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.geocoder.geocode(params, function(results, status) {\r\n\t\t\t\tif (status === 'OK') {\r\n\t\t\t\t\tresolve(results);\t\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(status);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\tsearchGeoLocation() {\r\n\t\tnavigator.geolocation.getCurrentPosition(\r\n\t\t\tposition => {\r\n\t\t\t\tthis.searchLocation({\r\n\t\t\t\t\tlatlng: `${position.coords.latitude},${\r\n\t\t\t\t\t\tposition.coords.longitude\r\n\t\t\t\t\t}`\r\n\t\t\t\t}).then(this.onLocationSearch);\r\n\t\t\t},\r\n\t\t\terr => console.log(err),\r\n\t\t\tthis.geoConfig\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default MapSearchBar;\r\n","export const cities = {\r\n\tKavala: {\r\n\t\tcenter: {\r\n\t\t\tlat: 40.937905,\r\n\t\t\tlng: 24.412051\r\n\t\t},\r\n\t\tbounds: {\r\n\t\t\tnorth: 41.138613,\r\n\t\t\teast: 24.565037,\r\n\t\t\tsouth: 40.879997,\r\n\t\t\twest: 24.330461\r\n\t\t}\r\n\t}\r\n};","export const formatAddress = (address, addressFormat = '{road} {number}') => {\r\n\tconst road = 1;\r\n\tconst roadNumber = 0;\r\n\tconst city = 2;\r\n\r\n\treturn addressFormat\r\n\t\t.replace('{road}', address[road].long_name)\r\n\t\t.replace('{number}', address[roadNumber].long_name)\r\n\t\t.replace('{city}', address[city].long_name)\r\n\t\t.replace('{postal_code}', address[address.length - 1].long_name);\r\n};\r\n\r\nexport const coordsToStr = ({ lat, lng }) => `${lat}, ${lng}`;\r\n\r\nexport const setDraggable = (marker, callback) => {\r\n\tmarker.setDraggable(true);\r\n\tmarker._draggableListener = google.maps.event.addListener(\r\n\t\tmarker,\r\n\t\t'dragend',\r\n\t\te => callback({ lat: e.latLng.lat(), lng: e.latLng.lng() })\r\n\t);\r\n\r\n\treturn marker;\r\n};\r\n\r\nexport const unsetDraggable = marker => {\r\n\tmarker.setDraggable(false);\r\n\tgoogle.maps.event.removeListener(marker._draggableListener);\r\n};\r\n\r\nexport const isInBounds = (coords, bounds) => {\r\n\tconst { lat, lng } = coords;\r\n\tconst { north, east, south, west } = bounds;\r\n\r\n\treturn lat < north && lat > south && lng > west && lng < east;\r\n} \r\n\r\n","var Handlebars = require(\"C:\\\\OTRIAN\\\\REPOSITORIES\\\\Kavala.gov\\\\git\\\\CityWatch.Mvc\\\\node_modules\\\\handlebars\\\\runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"placeholder=\\\"ΔιεύΞυΜση...\\\"\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t
\\r\\n\t\t\\r\\n\t
\\r\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n\t
\\r\\n\t\t\\r\\n\t\t
\\r\\n\t\t\t\\r\\n\t\t\t\\r\\n\t\t
\\r\\n\t
\\r\\n
\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n\t\\r\\n\t\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isEditable\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":1},\"end\":{\"line\":11,\"column\":8}}})) != null ? stack1 : \"\")\n + \"
\\r\\n\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"isEditable\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":14,\"column\":0},\"end\":{\"line\":28,\"column\":7}}})) != null ? stack1 : \"\")\n + \"\\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"C:\\\\OTRIAN\\\\REPOSITORIES\\\\Kavala.gov\\\\git\\\\CityWatch.Mvc\\\\node_modules\\\\handlebars\\\\runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t
\\r\\n\t\t\\r\\n\t
\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"geolocation\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":8,\"column\":8}}})) != null ? stack1 : \"\")\n + \"\t\\r\\n\t
\\r\\n\t\t\\r\\n\t
\\r\\n
\";\n},\"useData\":true});","var Handlebars = require(\"C:\\\\OTRIAN\\\\REPOSITORIES\\\\Kavala.gov\\\\git\\\\CityWatch.Mvc\\\\node_modules\\\\handlebars\\\\runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasSearch\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":3,\"column\":7}}})) != null ? stack1 : \"\")\n + \"
\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"hasLabel\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":5,\"column\":0},\"end\":{\"line\":7,\"column\":7}}})) != null ? stack1 : \"\")\n + \"
\\r\\n\";\n},\"useData\":true});","$(document).on('click', '.pagination .page-link', e => {\r\n const $this = $(e.currentTarget);\r\n const $form = $('form');\r\n const currentPage = parseInt($('[name=\"Pager.CurrentPage\"]').val());\r\n const totalPages = parseInt($('[name=\"Pager.TotalPages\"]').val());\r\n const $pageChangedInput = $('[name=\"Pager.PageChanged\"]');\r\n const $selectedPageInput = $('[name=\"Pager.SelectedPage\"]');\r\n let selectedPage;\r\n\r\n if ($this.is('.page-prev')) {\r\n if (currentPage == 1) {\r\n return false;\r\n }\r\n\r\n selectedPage = currentPage - 1;\r\n } else if ($this.is('.page-next')) {\r\n if (currentPage == totalPages) {\r\n return false;\r\n }\r\n\r\n selectedPage = currentPage + 1;\r\n } else {\r\n selectedPage = $this.val();\r\n }\r\n\r\n $selectedPageInput.val(selectedPage);\r\n $pageChangedInput.val(true);\r\n $form.submit();\r\n $pageChangedInput.val(false);\r\n});\r\n","// extracted by mini-css-extract-plugin","var Handlebars = require(\"C:\\\\OTRIAN\\\\REPOSITORIES\\\\Kavala.gov\\\\git\\\\CityWatch.Mvc\\\\node_modules\\\\handlebars\\\\runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t
\\r\\n\t\t
\\r\\n\t\t\t\\r\\n\t\t\t\"\n + alias2(alias1(((stack1 = blockParams[0][0]) != null ? lookupProperty(stack1,\"name\") : stack1), depth0))\n + \"\\r\\n\t\t
\t\t\t\t\t\t\t\t\\r\\n\t
\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"files\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 1, blockParams),\"inverse\":container.noop,\"data\":data,\"blockParams\":blockParams,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":8,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true,\"useBlockParams\":true});","var Handlebars = require(\"C:\\\\OTRIAN\\\\REPOSITORIES\\\\Kavala.gov\\\\git\\\\CityWatch.Mvc\\\\node_modules\\\\handlebars\\\\runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data,blockParams) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n\t
\\r\\n\\r\\n\t
\\r\\n\t\t\\r\\n\t\t\\r\\n\t\t\t\\r\\n\t\t\\r\\n\t
\\r\\n
\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"files\") : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 1, blockParams),\"inverse\":container.noop,\"data\":data,\"blockParams\":blockParams,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":14,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true,\"useBlockParams\":true});","export const loader = {\r\n show() {\r\n $('#loader').show();\r\n },\r\n hide() {\r\n $('#loader').hide();\r\n }\r\n};\r\n\r\nexport const removeAcc = function() {\r\n let text =\r\n this.tagName.toLowerCase() == 'input' ? this.value : this.innerHTML;\r\n\r\n if (\r\n text !== text.toUpperCase() &&\r\n $(this).css('text-transform') != 'uppercase'\r\n )\r\n return;\r\n\r\n text = text.replace(/Ά/g, 'Α');\r\n text = text.replace(/ά/g, 'α');\r\n text = text.replace(/Έ/g, 'Ε');\r\n text = text.replace(/έ/g, 'ε');\r\n text = text.replace(/Ή/g, 'Η');\r\n text = text.replace(/ή/g, 'η');\r\n text = text.replace(/Ί/g, 'Ι');\r\n text = text.replace(/Ϊ/g, 'Ι');\r\n text = text.replace(/ί/g, 'ι');\r\n text = text.replace(/ϊ/g, 'ι');\r\n text = text.replace(/ΐ/g, 'ι');\r\n text = text.replace(/Ό/g, 'Ο');\r\n text = text.replace(/ό/g, 'ο');\r\n text = text.replace(/Ύ/g, 'Υ');\r\n text = text.replace(/Ϋ/g, 'Υ');\r\n text = text.replace(/ύ/g, 'υ');\r\n text = text.replace(/ϋ/g, 'υ');\r\n text = text.replace(/ΰ/g, 'υ');\r\n text = text.replace(/Ώ/g, 'Ω');\r\n text = text.replace(/ώ/g, 'ω');\r\n\r\n this.tagName.toLowerCase() == 'input'\r\n ? (this.value = text)\r\n : (this.innerHTML = text);\r\n};\r\n","/**\n * bootbox.js [v4.4.0]\n *\n * http://bootboxjs.com/license.txt\n */\n\n// @see https://github.com/makeusabrew/bootbox/issues/180\n// @see https://github.com/makeusabrew/bootbox/issues/186\n(function (root, factory) {\n\n \"use strict\";\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\"], factory);\n } else if (typeof exports === \"object\") {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(require(\"jquery\"));\n } else {\n // Browser globals (root is window)\n root.bootbox = factory(root.jQuery);\n }\n\n}(this, function init($, undefined) {\n\n \"use strict\";\n\n // the base DOM structure needed to create a modal\n var templates = {\n dialog:\n \"\",\n header:\n \"\",\n footer:\n \"\",\n closeButton:\n \"\",\n form:\n \"
\",\n inputs: {\n text:\n \"\",\n textarea:\n \"\",\n email:\n \"\",\n select:\n \"\",\n checkbox:\n \"
\",\n date:\n \"\",\n time:\n \"\",\n number:\n \"\",\n password:\n \"\"\n }\n };\n\n var defaults = {\n // default language\n locale: \"en\",\n // show backdrop or not. Default to static so user has to interact with dialog\n backdrop: \"static\",\n // animate the modal in/out\n animate: true,\n // additional class string applied to the top level dialog\n className: null,\n // whether or not to include a close button\n closeButton: true,\n // show the dialog immediately by default\n show: true,\n // dialog container\n container: \"body\"\n };\n\n // our public object; augmented after our private API\n var exports = {};\n\n /**\n * @private\n */\n function _t(key) {\n var locale = locales[defaults.locale];\n return locale ? locale[key] : locales.en[key];\n }\n\n function processCallback(e, dialog, callback) {\n e.stopPropagation();\n e.preventDefault();\n\n // by default we assume a callback will get rid of the dialog,\n // although it is given the opportunity to override this\n\n // so, if the callback can be invoked and it *explicitly returns false*\n // then we'll set a flag to keep the dialog active...\n var preserveDialog = $.isFunction(callback) && callback.call(dialog, e) === false;\n\n // ... otherwise we'll bin it\n if (!preserveDialog) {\n dialog.modal(\"hide\");\n }\n }\n\n function getKeyLength(obj) {\n // @TODO defer to Object.keys(x).length if available?\n var k, t = 0;\n for (k in obj) {\n t ++;\n }\n return t;\n }\n\n function each(collection, iterator) {\n var index = 0;\n $.each(collection, function(key, value) {\n iterator(key, value, index++);\n });\n }\n\n function sanitize(options) {\n var buttons;\n var total;\n\n if (typeof options !== \"object\") {\n throw new Error(\"Please supply an object of options\");\n }\n\n if (!options.message) {\n throw new Error(\"Please specify a message\");\n }\n\n // make sure any supplied options take precedence over defaults\n options = $.extend({}, defaults, options);\n\n if (!options.buttons) {\n options.buttons = {};\n }\n\n buttons = options.buttons;\n\n total = getKeyLength(buttons);\n\n each(buttons, function(key, button, index) {\n\n if ($.isFunction(button)) {\n // short form, assume value is our callback. Since button\n // isn't an object it isn't a reference either so re-assign it\n button = buttons[key] = {\n callback: button\n };\n }\n\n // before any further checks make sure by now button is the correct type\n if ($.type(button) !== \"object\") {\n throw new Error(\"button with key \" + key + \" must be an object\");\n }\n\n if (!button.label) {\n // the lack of an explicit label means we'll assume the key is good enough\n button.label = key;\n }\n\n if (!button.className) {\n if (total <= 2 && index === total-1) {\n // always add a primary to the main option in a two-button dialog\n button.className = \"btn-primary\";\n } else {\n button.className = \"btn-default\";\n }\n }\n });\n\n return options;\n }\n\n /**\n * map a flexible set of arguments into a single returned object\n * if args.length is already one just return it, otherwise\n * use the properties argument to map the unnamed args to\n * object properties\n * so in the latter case:\n * mapArguments([\"foo\", $.noop], [\"message\", \"callback\"])\n * -> { message: \"foo\", callback: $.noop }\n */\n function mapArguments(args, properties) {\n var argn = args.length;\n var options = {};\n\n if (argn < 1 || argn > 2) {\n throw new Error(\"Invalid argument length\");\n }\n\n if (argn === 2 || typeof args[0] === \"string\") {\n options[properties[0]] = args[0];\n options[properties[1]] = args[1];\n } else {\n options = args[0];\n }\n\n return options;\n }\n\n /**\n * merge a set of default dialog options with user supplied arguments\n */\n function mergeArguments(defaults, args, properties) {\n return $.extend(\n // deep merge\n true,\n // ensure the target is an empty, unreferenced object\n {},\n // the base options object for this type of dialog (often just buttons)\n defaults,\n // args could be an object or array; if it's an array properties will\n // map it to a proper options object\n mapArguments(\n args,\n properties\n )\n );\n }\n\n /**\n * this entry-level method makes heavy use of composition to take a simple\n * range of inputs and return valid options suitable for passing to bootbox.dialog\n */\n function mergeDialogOptions(className, labels, properties, args) {\n // build up a base set of dialog properties\n var baseOptions = {\n className: \"bootbox-\" + className,\n buttons: createLabels.apply(null, labels)\n };\n\n // ensure the buttons properties generated, *after* merging\n // with user args are still valid against the supplied labels\n return validateButtons(\n // merge the generated base properties with user supplied arguments\n mergeArguments(\n baseOptions,\n args,\n // if args.length > 1, properties specify how each arg maps to an object key\n properties\n ),\n labels\n );\n }\n\n /**\n * from a given list of arguments return a suitable object of button labels\n * all this does is normalise the given labels and translate them where possible\n * e.g. \"ok\", \"confirm\" -> { ok: \"OK, cancel: \"Annuleren\" }\n */\n function createLabels() {\n var buttons = {};\n\n for (var i = 0, j = arguments.length; i < j; i++) {\n var argument = arguments[i];\n var key = argument.toLowerCase();\n var value = argument.toUpperCase();\n\n buttons[key] = {\n label: _t(value)\n };\n }\n\n return buttons;\n }\n\n function validateButtons(options, buttons) {\n var allowedButtons = {};\n each(buttons, function(key, value) {\n allowedButtons[value] = true;\n });\n\n each(options.buttons, function(key) {\n if (allowedButtons[key] === undefined) {\n throw new Error(\"button key \" + key + \" is not allowed (options are \" + buttons.join(\"\\n\") + \")\");\n }\n });\n\n return options;\n }\n\n exports.alert = function() {\n var options;\n\n options = mergeDialogOptions(\"alert\", [\"ok\"], [\"message\", \"callback\"], arguments);\n\n if (options.callback && !$.isFunction(options.callback)) {\n throw new Error(\"alert requires callback property to be a function when provided\");\n }\n\n /**\n * overrides\n */\n options.buttons.ok.callback = options.onEscape = function() {\n if ($.isFunction(options.callback)) {\n return options.callback.call(this);\n }\n return true;\n };\n\n return exports.dialog(options);\n };\n\n exports.confirm = function() {\n var options;\n\n options = mergeDialogOptions(\"confirm\", [\"cancel\", \"confirm\"], [\"message\", \"callback\"], arguments);\n\n /**\n * overrides; undo anything the user tried to set they shouldn't have\n */\n options.buttons.cancel.callback = options.onEscape = function() {\n return options.callback.call(this, false);\n };\n\n options.buttons.confirm.callback = function() {\n return options.callback.call(this, true);\n };\n\n // confirm specific validation\n if (!$.isFunction(options.callback)) {\n throw new Error(\"confirm requires a callback\");\n }\n\n return exports.dialog(options);\n };\n\n exports.prompt = function() {\n var options;\n var defaults;\n var dialog;\n var form;\n var input;\n var shouldShow;\n var inputOptions;\n\n // we have to create our form first otherwise\n // its value is undefined when gearing up our options\n // @TODO this could be solved by allowing message to\n // be a function instead...\n form = $(templates.form);\n\n // prompt defaults are more complex than others in that\n // users can override more defaults\n // @TODO I don't like that prompt has to do a lot of heavy\n // lifting which mergeDialogOptions can *almost* support already\n // just because of 'value' and 'inputType' - can we refactor?\n defaults = {\n className: \"bootbox-prompt\",\n buttons: createLabels(\"cancel\", \"confirm\"),\n value: \"\",\n inputType: \"text\"\n };\n\n options = validateButtons(\n mergeArguments(defaults, arguments, [\"title\", \"callback\"]),\n [\"cancel\", \"confirm\"]\n );\n\n // capture the user's show value; we always set this to false before\n // spawning the dialog to give us a chance to attach some handlers to\n // it, but we need to make sure we respect a preference not to show it\n shouldShow = (options.show === undefined) ? true : options.show;\n\n /**\n * overrides; undo anything the user tried to set they shouldn't have\n */\n options.message = form;\n\n options.buttons.cancel.callback = options.onEscape = function() {\n return options.callback.call(this, null);\n };\n\n options.buttons.confirm.callback = function() {\n var value;\n\n switch (options.inputType) {\n case \"text\":\n case \"textarea\":\n case \"email\":\n case \"select\":\n case \"date\":\n case \"time\":\n case \"number\":\n case \"password\":\n value = input.val();\n break;\n\n case \"checkbox\":\n var checkedItems = input.find(\"input:checked\");\n\n // we assume that checkboxes are always multiple,\n // hence we default to an empty array\n value = [];\n\n each(checkedItems, function(_, item) {\n value.push($(item).val());\n });\n break;\n }\n\n return options.callback.call(this, value);\n };\n\n options.show = false;\n\n // prompt specific validation\n if (!options.title) {\n throw new Error(\"prompt requires a title\");\n }\n\n if (!$.isFunction(options.callback)) {\n throw new Error(\"prompt requires a callback\");\n }\n\n if (!templates.inputs[options.inputType]) {\n throw new Error(\"invalid prompt type\");\n }\n\n // create the input based on the supplied type\n input = $(templates.inputs[options.inputType]);\n\n switch (options.inputType) {\n case \"text\":\n case \"textarea\":\n case \"email\":\n case \"date\":\n case \"time\":\n case \"number\":\n case \"password\":\n input.val(options.value);\n break;\n\n case \"select\":\n var groups = {};\n inputOptions = options.inputOptions || [];\n\n if (!$.isArray(inputOptions)) {\n throw new Error(\"Please pass an array of input options\");\n }\n\n if (!inputOptions.length) {\n throw new Error(\"prompt with select requires options\");\n }\n\n each(inputOptions, function(_, option) {\n\n // assume the element to attach to is the input...\n var elem = input;\n\n if (option.value === undefined || option.text === undefined) {\n throw new Error(\"given options in wrong format\");\n }\n\n // ... but override that element if this option sits in a group\n\n if (option.group) {\n // initialise group if necessary\n if (!groups[option.group]) {\n groups[option.group] = $(\"\").attr(\"label\", option.group);\n }\n\n elem = groups[option.group];\n }\n\n elem.append(\"\");\n });\n\n each(groups, function(_, group) {\n input.append(group);\n });\n\n // safe to set a select's value as per a normal input\n input.val(options.value);\n break;\n\n case \"checkbox\":\n var values = $.isArray(options.value) ? options.value : [options.value];\n inputOptions = options.inputOptions || [];\n\n if (!inputOptions.length) {\n throw new Error(\"prompt with checkbox requires options\");\n }\n\n if (!inputOptions[0].value || !inputOptions[0].text) {\n throw new Error(\"given options in wrong format\");\n }\n\n // checkboxes have to nest within a containing element, so\n // they break the rules a bit and we end up re-assigning\n // our 'input' element to this container instead\n input = $(\"
\");\n\n each(inputOptions, function(_, option) {\n var checkbox = $(templates.inputs[options.inputType]);\n\n checkbox.find(\"input\").attr(\"value\", option.value);\n checkbox.find(\"label\").append(option.text);\n\n // we've ensured values is an array so we can always iterate over it\n each(values, function(_, value) {\n if (value === option.value) {\n checkbox.find(\"input\").prop(\"checked\", true);\n }\n });\n\n input.append(checkbox);\n });\n break;\n }\n\n // @TODO provide an attributes option instead\n // and simply map that as keys: vals\n if (options.placeholder) {\n input.attr(\"placeholder\", options.placeholder);\n }\n\n if (options.pattern) {\n input.attr(\"pattern\", options.pattern);\n }\n\n if (options.maxlength) {\n input.attr(\"maxlength\", options.maxlength);\n }\n\n // now place it in our form\n form.append(input);\n\n form.on(\"submit\", function(e) {\n e.preventDefault();\n // Fix for SammyJS (or similar JS routing library) hijacking the form post.\n e.stopPropagation();\n // @TODO can we actually click *the* button object instead?\n // e.g. buttons.confirm.click() or similar\n dialog.find(\".btn-primary\").click();\n });\n\n dialog = exports.dialog(options);\n\n // clear the existing handler focusing the submit button...\n dialog.off(\"shown.bs.modal\");\n\n // ...and replace it with one focusing our input, if possible\n dialog.on(\"shown.bs.modal\", function() {\n // need the closure here since input isn't\n // an object otherwise\n input.focus();\n });\n\n if (shouldShow === true) {\n dialog.modal(\"show\");\n }\n\n return dialog;\n };\n\n exports.dialog = function(options) {\n options = sanitize(options);\n\n var dialog = $(templates.dialog);\n var innerDialog = dialog.find(\".modal-dialog\");\n var body = dialog.find(\".modal-body\");\n var buttons = options.buttons;\n var buttonStr = \"\";\n var callbacks = {\n onEscape: options.onEscape\n };\n\n if ($.fn.modal === undefined) {\n throw new Error(\n \"$.fn.modal is not defined; please double check you have included \" +\n \"the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ \" +\n \"for more details.\"\n );\n }\n\n each(buttons, function(key, button) {\n\n // @TODO I don't like this string appending to itself; bit dirty. Needs reworking\n // can we just build up button elements instead? slower but neater. Then button\n // can just become a template too\n buttonStr += \"\";\n callbacks[key] = button.callback;\n });\n\n body.find(\".bootbox-body\").html(options.message);\n\n if (options.animate === true) {\n dialog.addClass(\"fade\");\n }\n\n if (options.className) {\n dialog.addClass(options.className);\n }\n\n if (options.size === \"large\") {\n innerDialog.addClass(\"modal-lg\");\n } else if (options.size === \"small\") {\n innerDialog.addClass(\"modal-sm\");\n }\n\n if (options.title) {\n body.before(templates.header);\n }\n\n if (options.closeButton) {\n var closeButton = $(templates.closeButton);\n\n if (options.title) {\n dialog.find(\".modal-header\").prepend(closeButton);\n } else {\n closeButton.css(\"margin-top\", \"-10px\").prependTo(body);\n }\n }\n\n if (options.title) {\n dialog.find(\".modal-title\").html(options.title);\n }\n\n if (buttonStr.length) {\n body.after(templates.footer);\n dialog.find(\".modal-footer\").html(buttonStr);\n }\n\n\n /**\n * Bootstrap event listeners; used handle extra\n * setup & teardown required after the underlying\n * modal has performed certain actions\n */\n\n dialog.on(\"hidden.bs.modal\", function(e) {\n // ensure we don't accidentally intercept hidden events triggered\n // by children of the current dialog. We shouldn't anymore now BS\n // namespaces its events; but still worth doing\n if (e.target === this) {\n dialog.remove();\n }\n });\n\n /*\n dialog.on(\"show.bs.modal\", function() {\n // sadly this doesn't work; show is called *just* before\n // the backdrop is added so we'd need a setTimeout hack or\n // otherwise... leaving in as would be nice\n if (options.backdrop) {\n dialog.next(\".modal-backdrop\").addClass(\"bootbox-backdrop\");\n }\n });\n */\n\n dialog.on(\"shown.bs.modal\", function() {\n dialog.find(\".btn-primary:first\").focus();\n });\n\n /**\n * Bootbox event listeners; experimental and may not last\n * just an attempt to decouple some behaviours from their\n * respective triggers\n */\n\n if (options.backdrop !== \"static\") {\n // A boolean true/false according to the Bootstrap docs\n // should show a dialog the user can dismiss by clicking on\n // the background.\n // We always only ever pass static/false to the actual\n // $.modal function because with `true` we can't trap\n // this event (the .modal-backdrop swallows it)\n // However, we still want to sort of respect true\n // and invoke the escape mechanism instead\n dialog.on(\"click.dismiss.bs.modal\", function(e) {\n // @NOTE: the target varies in >= 3.3.x releases since the modal backdrop\n // moved *inside* the outer dialog rather than *alongside* it\n if (dialog.children(\".modal-backdrop\").length) {\n e.currentTarget = dialog.children(\".modal-backdrop\").get(0);\n }\n\n if (e.target !== e.currentTarget) {\n return;\n }\n\n dialog.trigger(\"escape.close.bb\");\n });\n }\n\n dialog.on(\"escape.close.bb\", function(e) {\n if (callbacks.onEscape) {\n processCallback(e, dialog, callbacks.onEscape);\n }\n });\n\n /**\n * Standard jQuery event listeners; used to handle user\n * interaction with our dialog\n */\n\n dialog.on(\"click\", \".modal-footer button\", function(e) {\n var callbackKey = $(this).data(\"bb-handler\");\n\n processCallback(e, dialog, callbacks[callbackKey]);\n });\n\n dialog.on(\"click\", \".bootbox-close-button\", function(e) {\n // onEscape might be falsy but that's fine; the fact is\n // if the user has managed to click the close button we\n // have to close the dialog, callback or not\n processCallback(e, dialog, callbacks.onEscape);\n });\n\n dialog.on(\"keyup\", function(e) {\n if (e.which === 27) {\n dialog.trigger(\"escape.close.bb\");\n }\n });\n\n // the remainder of this method simply deals with adding our\n // dialogent to the DOM, augmenting it with Bootstrap's modal\n // functionality and then giving the resulting object back\n // to our caller\n\n $(options.container).append(dialog);\n\n dialog.modal({\n backdrop: options.backdrop ? \"static\": false,\n keyboard: false,\n show: false\n });\n\n if (options.show) {\n dialog.modal(\"show\");\n }\n\n // @TODO should we return the raw element here or should\n // we wrap it in an object on which we can expose some neater\n // methods, e.g. var d = bootbox.alert(); d.hide(); instead\n // of d.modal(\"hide\");\n\n /*\n function BBDialog(elem) {\n this.elem = elem;\n }\n\n BBDialog.prototype = {\n hide: function() {\n return this.elem.modal(\"hide\");\n },\n show: function() {\n return this.elem.modal(\"show\");\n }\n };\n */\n\n return dialog;\n\n };\n\n exports.setDefaults = function() {\n var values = {};\n\n if (arguments.length === 2) {\n // allow passing of single key/value...\n values[arguments[0]] = arguments[1];\n } else {\n // ... and as an object too\n values = arguments[0];\n }\n\n $.extend(defaults, values);\n };\n\n exports.hideAll = function() {\n $(\".bootbox\").modal(\"hide\");\n\n return exports;\n };\n\n\n /**\n * standard locales. Please add more according to ISO 639-1 standard. Multiple language variants are\n * unlikely to be required. If this gets too large it can be split out into separate JS files.\n */\n var locales = {\n bg_BG : {\n OK : \"Ок\",\n CANCEL : \"Отказ\",\n CONFIRM : \"ППтвържЎаваЌ\"\n },\n br : {\n OK : \"OK\",\n CANCEL : \"Cancelar\",\n CONFIRM : \"Sim\"\n },\n cs : {\n OK : \"OK\",\n CANCEL : \"ZruÅ¡it\",\n CONFIRM : \"Potvrdit\"\n },\n da : {\n OK : \"OK\",\n CANCEL : \"Annuller\",\n CONFIRM : \"Accepter\"\n },\n de : {\n OK : \"OK\",\n CANCEL : \"Abbrechen\",\n CONFIRM : \"Akzeptieren\"\n },\n el : {\n OK : \"ΕΜτάΟει\",\n CANCEL : \"Ακύρωση\",\n CONFIRM : \"Επιβεβαίωση\"\n },\n en : {\n OK : \"OK\",\n CANCEL : \"Cancel\",\n CONFIRM : \"OK\"\n },\n es : {\n OK : \"OK\",\n CANCEL : \"Cancelar\",\n CONFIRM : \"Aceptar\"\n },\n et : {\n OK : \"OK\",\n CANCEL : \"Katkesta\",\n CONFIRM : \"OK\"\n },\n fa : {\n OK : \"قؚول\",\n CANCEL : \"لغو\",\n CONFIRM : \"تایید\"\n },\n fi : {\n OK : \"OK\",\n CANCEL : \"Peruuta\",\n CONFIRM : \"OK\"\n },\n fr : {\n OK : \"OK\",\n CANCEL : \"Annuler\",\n CONFIRM : \"D'accord\"\n },\n he : {\n OK : \"אישוך\",\n CANCEL : \"ביטול\",\n CONFIRM : \"אישוך\"\n },\n hu : {\n OK : \"OK\",\n CANCEL : \"Mégsem\",\n CONFIRM : \"Megerősít\"\n },\n hr : {\n OK : \"OK\",\n CANCEL : \"Odustani\",\n CONFIRM : \"Potvrdi\"\n },\n id : {\n OK : \"OK\",\n CANCEL : \"Batal\",\n CONFIRM : \"OK\"\n },\n it : {\n OK : \"OK\",\n CANCEL : \"Annulla\",\n CONFIRM : \"Conferma\"\n },\n ja : {\n OK : \"OK\",\n CANCEL : \"キャンセル\",\n CONFIRM : \"確認\"\n },\n lt : {\n OK : \"Gerai\",\n CANCEL : \"AtÅ¡aukti\",\n CONFIRM : \"Patvirtinti\"\n },\n lv : {\n OK : \"Labi\",\n CANCEL : \"Atcelt\",\n CONFIRM : \"Apstiprināt\"\n },\n nl : {\n OK : \"OK\",\n CANCEL : \"Annuleren\",\n CONFIRM : \"Accepteren\"\n },\n no : {\n OK : \"OK\",\n CANCEL : \"Avbryt\",\n CONFIRM : \"OK\"\n },\n pl : {\n OK : \"OK\",\n CANCEL : \"Anuluj\",\n CONFIRM : \"Potwierdź\"\n },\n pt : {\n OK : \"OK\",\n CANCEL : \"Cancelar\",\n CONFIRM : \"Confirmar\"\n },\n ru : {\n OK : \"OK\",\n CANCEL : \"ОтЌеМа\",\n CONFIRM : \"ПрОЌеМОть\"\n },\n sq : {\n OK : \"OK\",\n CANCEL : \"Anulo\",\n CONFIRM : \"Prano\"\n },\n sv : {\n OK : \"OK\",\n CANCEL : \"Avbryt\",\n CONFIRM : \"OK\"\n },\n th : {\n OK : \"àž•àžàž¥àž‡\",\n CANCEL : \"àž¢àžà¹€àž¥àžŽàž\",\n CONFIRM : \"àž¢àž·àž™àž¢àž±àž™\"\n },\n tr : {\n OK : \"Tamam\",\n CANCEL : \"Ä°ptal\",\n CONFIRM : \"Onayla\"\n },\n zh_CN : {\n OK : \"OK\",\n CANCEL : \"取消\",\n CONFIRM : \"确讀\"\n },\n zh_TW : {\n OK : \"OK\",\n CANCEL : \"取消\",\n CONFIRM : \"確認\"\n }\n };\n\n exports.addLocale = function(name, values) {\n $.each([\"OK\", \"CANCEL\", \"CONFIRM\"], function(_, v) {\n if (!values[v]) {\n throw new Error(\"Please supply a translation for '\" + v + \"'\");\n }\n });\n\n locales[name] = {\n OK: values.OK,\n CANCEL: values.CANCEL,\n CONFIRM: values.CONFIRM\n };\n\n return exports;\n };\n\n exports.removeLocale = function(name) {\n delete locales[name];\n\n return exports;\n };\n\n exports.setLocale = function(name) {\n return exports.setDefaults(\"locale\", name);\n };\n\n exports.init = function(_$) {\n return init(_$ || $);\n };\n\n return exports;\n}));\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.6';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy42JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (global.Symbol && context[global.Symbol.iterator]) {\n var newContext = [];\n var iterator = context[global.Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzRCxZQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsWUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbnRleHQgPSBbXTtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIGZvciAobGV0IGl0ID0gaXRlcmF0b3IubmV4dCgpOyAhaXQuZG9uZTsgaXQgPSBpdGVyYXRvci5uZXh0KCkpIHtcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goaXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQgPSBuZXdDb250ZXh0O1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpb3JLZXkgPSBrZXk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLE1BQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUN4RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFaEMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsVUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7S0FDL0I7QUFDRCxXQUFPLFVBQVUsQ0FBQztHQUNuQixDQUFDO0NBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return obj[name];\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({ lookupProperty: lookupProperty }, options);\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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LE1BQU0sQ0FBQyxFQUFFLGNBQWMsRUFBZCxjQUFjLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNsRCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uJztcbmltcG9ydCB7XG4gIENPTVBJTEVSX1JFVklTSU9OLFxuICBjcmVhdGVGcmFtZSxcbiAgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OLFxuICBSRVZJU0lPTl9DSEFOR0VTXG59IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBtb3ZlSGVscGVyVG9Ib29rcyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB3cmFwSGVscGVyIH0gZnJvbSAnLi9pbnRlcm5hbC93cmFwSGVscGVyJztcbmltcG9ydCB7XG4gIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbCxcbiAgcmVzdWx0SXNBbGxvd2VkXG59IGZyb20gJy4vaW50ZXJuYWwvcHJvdG8tYWNjZXNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSAoY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSkgfHwgMSxcbiAgICBjdXJyZW50UmV2aXNpb24gPSBDT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoXG4gICAgY29tcGlsZXJSZXZpc2lvbiA+PSBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gJiZcbiAgICBjb21waWxlclJldmlzaW9uIDw9IENPTVBJTEVSX1JFVklTSU9OXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb21waWxlclJldmlzaW9uIDwgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OKSB7XG4gICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBydW50aW1lVmVyc2lvbnMgK1xuICAgICAgICAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlclZlcnNpb25zICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICtcbiAgICAgICAgY29tcGlsZXJJbmZvWzFdICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7XG4gIH1cbiAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVjKTtcbiAgfVxuXG4gIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7XG5cbiAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3dcbiAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzZXVkby1zdXBwb3J0ZWQgQVBJcy5cbiAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTtcblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgcHJlY29tcGlsZWQgdGVtcGxhdGVzIHdpdGggY29tcGlsZXItdmVyc2lvbiA3ICg8NC4zLjApXG4gIGNvbnN0IHRlbXBsYXRlV2FzUHJlY29tcGlsZWRXaXRoQ29tcGlsZXJWNyA9XG4gICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyICYmIHRlbXBsYXRlU3BlYy5jb21waWxlclswXSA9PT0gNztcblxuICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTtcbiAgICAgIGlmIChvcHRpb25zLmlkcykge1xuICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGxldCBleHRlbmRlZE9wdGlvbnMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgIGhvb2tzOiB0aGlzLmhvb2tzLFxuICAgICAgcHJvdG9BY2Nlc3NDb250cm9sOiB0aGlzLnByb3RvQWNjZXNzQ29udHJvbFxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgcGFydGlhbCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBleHRlbmRlZE9wdGlvbnNcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIGV4dGVuZGVkT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIGxldCBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgJ1RoZSBwYXJ0aWFsICcgK1xuICAgICAgICAgIG9wdGlvbnMubmFtZSArXG4gICAgICAgICAgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBKdXN0IGFkZCB3YXRlclxuICBsZXQgY29udGFpbmVyID0ge1xuICAgIHN0cmljdDogZnVuY3Rpb24ob2JqLCBuYW1lLCBsb2MpIHtcbiAgICAgIGlmICghb2JqIHx8ICEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaiwge1xuICAgICAgICAgIGxvYzogbG9jXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSBVdGlscy5leHRlbmQoe30sIGVudi5oZWxwZXJzLCBvcHRpb25zLmhlbHBlcnMpO1xuICAgICAgd3JhcEhlbHBlcnNUb1Bhc3NMb29rdXBQcm9wZXJ0eShtZXJnZWRIZWxwZXJzLCBjb250YWluZXIpO1xuICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBtZXJnZWRIZWxwZXJzO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgLy8gVXNlIG1lcmdlSWZOZWVkZWQgaGVyZSB0byBwcmV2ZW50IGNvbXBpbGluZyBnbG9iYWwgcGFydGlhbHMgbXVsdGlwbGUgdGltZXNcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlSWZOZWVkZWQoXG4gICAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyxcbiAgICAgICAgICBlbnYucGFydGlhbHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMudXNlRGVjb3JhdG9ycykge1xuICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IFV0aWxzLmV4dGVuZChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBlbnYuZGVjb3JhdG9ycyxcbiAgICAgICAgICBvcHRpb25zLmRlY29yYXRvcnNcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLmhvb2tzID0ge307XG4gICAgICBjb250YWluZXIucHJvdG9BY2Nlc3NDb250cm9sID0gY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sKG9wdGlvbnMpO1xuXG4gICAgICBsZXQga2VlcEhlbHBlckluSGVscGVycyA9XG4gICAgICAgIG9wdGlvbnMuYWxsb3dDYWxsc1RvSGVscGVyTWlzc2luZyB8fFxuICAgICAgICB0ZW1wbGF0ZVdhc1ByZWNvbXBpbGVkV2l0aENvbXBpbGVyVjc7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdoZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdibG9ja0hlbHBlck1pc3NpbmcnLCBrZWVwSGVscGVySW5IZWxwZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IG9wdGlvbnMucHJvdG9BY2Nlc3NDb250cm9sOyAvLyBpbnRlcm5hbCBvcHRpb25cbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgICAgY29udGFpbmVyLmhvb2tzID0gb3B0aW9ucy5ob29rcztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGksXG4gICAgICB0ZW1wbGF0ZVNwZWNbaV0sXG4gICAgICBkYXRhLFxuICAgICAgMCxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKFxuICBjb250YWluZXIsXG4gIGksXG4gIGZuLFxuICBkYXRhLFxuICBkZWNsYXJlZEJsb2NrUGFyYW1zLFxuICBibG9ja1BhcmFtcyxcbiAgZGVwdGhzXG4pIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoXG4gICAgICBkZXB0aHMgJiZcbiAgICAgIGNvbnRleHQgIT0gZGVwdGhzWzBdICYmXG4gICAgICAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpXG4gICAgKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksXG4gICAgICBjdXJyZW50RGVwdGhzXG4gICAgKTtcbiAgfVxuXG4gIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTtcblxuICBwcm9nLnByb2dyYW0gPSBpO1xuICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhzLmxlbmd0aCA6IDA7XG4gIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7XG4gIHJldHVybiBwcm9nO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgY3VycmVudGx5IHBhcnQgb2YgdGhlIG9mZmljaWFsIEFQSSwgdGhlcmVmb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgLy8gVXNlIHRoZSBjdXJyZW50IGNsb3N1cmUgY29udGV4dCB0byBzYXZlIHRoZSBwYXJ0aWFsLWJsb2NrIGlmIHRoaXMgcGFydGlhbFxuICBjb25zdCBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGZ1bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoXG4gICAgICBjb250ZXh0LFxuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgKSB7XG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSA/IGNyZWF0ZUZyYW1lKGRhdGEpIDoge307XG4gICAgZGF0YS5yb290ID0gY29udGV4dDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykge1xuICBpZiAoZm4uZGVjb3JhdG9yKSB7XG4gICAgbGV0IHByb3BzID0ge307XG4gICAgcHJvZyA9IGZuLmRlY29yYXRvcihcbiAgICAgIHByb2csXG4gICAgICBwcm9wcyxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGRlcHRocyAmJiBkZXB0aHNbMF0sXG4gICAgICBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICBkZXB0aHNcbiAgICApO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG5cbmZ1bmN0aW9uIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKSB7XG4gIE9iamVjdC5rZXlzKG1lcmdlZEhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgcmV0dXJuIFV0aWxzLmV4dGVuZCh7IGxvb2t1cFByb3BlcnR5IH0sIG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdfQ==\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","// Sticky Plugin v1.0.4 for jQuery\n// =============\n// Author: Anthony Garand\n// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)\n// Improvements by Leonardo C. Daronco (daronco)\n// Created: 02/14/2011\n// Date: 07/20/2015\n// Website: http://stickyjs.com/\n// Description: Makes an element on the page stick on the screen as you scroll\n// It will only set the 'top' and 'position' of your element, you\n// might need to adjust the width in some cases.\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function ($) {\n var slice = Array.prototype.slice; // save ref to original slice()\n var splice = Array.prototype.splice; // save ref to original slice()\n\n var defaults = {\n topSpacing: 0,\n bottomSpacing: 0,\n className: 'is-sticky',\n wrapperClassName: 'sticky-wrapper',\n center: false,\n getWidthFrom: '',\n widthFromWrapper: true, // works only when .getWidthFrom is empty\n responsiveWidth: false,\n zIndex: 'auto'\n },\n $window = $(window),\n $document = $(document),\n sticked = [],\n windowHeight = $window.height(),\n scroller = function() {\n var scrollTop = $window.scrollTop(),\n documentHeight = $document.height(),\n dwh = documentHeight - windowHeight,\n extra = (scrollTop > dwh) ? dwh - scrollTop : 0;\n\n for (var i = 0, l = sticked.length; i < l; i++) {\n var s = sticked[i],\n elementTop = s.stickyWrapper.offset().top,\n etse = elementTop - s.topSpacing - extra;\n\n //update height in case of dynamic content\n s.stickyWrapper.css('height', s.stickyElement.outerHeight());\n\n if (scrollTop <= etse) {\n if (s.currentTop !== null) {\n s.stickyElement\n .css({\n 'width': '',\n 'position': '',\n 'top': '',\n 'z-index': ''\n });\n s.stickyElement.parent().removeClass(s.className);\n s.stickyElement.trigger('sticky-end', [s]);\n s.currentTop = null;\n }\n }\n else {\n var newTop = documentHeight - s.stickyElement.outerHeight()\n - s.topSpacing - s.bottomSpacing - scrollTop - extra;\n if (newTop < 0) {\n newTop = newTop + s.topSpacing;\n } else {\n newTop = s.topSpacing;\n }\n if (s.currentTop !== newTop) {\n var newWidth;\n if (s.getWidthFrom) {\n newWidth = $(s.getWidthFrom).width() || null;\n } else if (s.widthFromWrapper) {\n newWidth = s.stickyWrapper.width();\n }\n if (newWidth == null) {\n newWidth = s.stickyElement.width();\n }\n s.stickyElement\n .css('width', newWidth)\n .css('position', 'fixed')\n .css('top', newTop)\n .css('z-index', s.zIndex);\n\n s.stickyElement.parent().addClass(s.className);\n\n if (s.currentTop === null) {\n s.stickyElement.trigger('sticky-start', [s]);\n } else {\n // sticky is started but it have to be repositioned\n s.stickyElement.trigger('sticky-update', [s]);\n }\n\n if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {\n // just reached bottom || just started to stick but bottom is already reached\n s.stickyElement.trigger('sticky-bottom-reached', [s]);\n } else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {\n // sticky is started && sticked at topSpacing && overflowing from top just finished\n s.stickyElement.trigger('sticky-bottom-unreached', [s]);\n }\n\n s.currentTop = newTop;\n }\n\n // Check if sticky has reached end of container and stop sticking\n var stickyWrapperContainer = s.stickyWrapper.parent();\n var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing);\n\n if( unstick ) {\n s.stickyElement\n .css('position', 'absolute')\n .css('top', '')\n .css('bottom', 0)\n .css('z-index', '');\n } else {\n s.stickyElement\n .css('position', 'fixed')\n .css('top', newTop)\n .css('bottom', '')\n .css('z-index', s.zIndex);\n }\n }\n }\n },\n resizer = function() {\n windowHeight = $window.height();\n\n for (var i = 0, l = sticked.length; i < l; i++) {\n var s = sticked[i];\n var newWidth = null;\n if (s.getWidthFrom) {\n if (s.responsiveWidth) {\n newWidth = $(s.getWidthFrom).width();\n }\n } else if(s.widthFromWrapper) {\n newWidth = s.stickyWrapper.width();\n }\n if (newWidth != null) {\n s.stickyElement.css('width', newWidth);\n }\n }\n },\n methods = {\n init: function(options) {\n var o = $.extend({}, defaults, options);\n return this.each(function() {\n var stickyElement = $(this);\n\n var stickyId = stickyElement.attr('id');\n var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;\n var wrapper = $('
')\n .attr('id', wrapperId)\n .addClass(o.wrapperClassName);\n\n stickyElement.wrapAll(wrapper);\n\n var stickyWrapper = stickyElement.parent();\n\n if (o.center) {\n stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:\"auto\",marginRight:\"auto\"});\n }\n\n if (stickyElement.css(\"float\") === \"right\") {\n stickyElement.css({\"float\":\"none\"}).parent().css({\"float\":\"right\"});\n }\n\n o.stickyElement = stickyElement;\n o.stickyWrapper = stickyWrapper;\n o.currentTop = null;\n\n sticked.push(o);\n\n methods.setWrapperHeight(this);\n methods.setupChangeListeners(this);\n });\n },\n\n setWrapperHeight: function(stickyElement) {\n var element = $(stickyElement);\n var stickyWrapper = element.parent();\n if (stickyWrapper) {\n stickyWrapper.css('height', element.outerHeight());\n }\n },\n\n setupChangeListeners: function(stickyElement) {\n if (window.MutationObserver) {\n var mutationObserver = new window.MutationObserver(function(mutations) {\n if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {\n methods.setWrapperHeight(stickyElement);\n }\n });\n mutationObserver.observe(stickyElement, {subtree: true, childList: true});\n } else {\n stickyElement.addEventListener('DOMNodeInserted', function() {\n methods.setWrapperHeight(stickyElement);\n }, false);\n stickyElement.addEventListener('DOMNodeRemoved', function() {\n methods.setWrapperHeight(stickyElement);\n }, false);\n }\n },\n update: scroller,\n unstick: function(options) {\n return this.each(function() {\n var that = this;\n var unstickyElement = $(that);\n\n var removeIdx = -1;\n var i = sticked.length;\n while (i-- > 0) {\n if (sticked[i].stickyElement.get(0) === that) {\n splice.call(sticked,i,1);\n removeIdx = i;\n }\n }\n if(removeIdx !== -1) {\n unstickyElement.unwrap();\n unstickyElement\n .css({\n 'width': '',\n 'position': '',\n 'top': '',\n 'float': '',\n 'z-index': ''\n })\n ;\n }\n });\n }\n };\n\n // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):\n if (window.addEventListener) {\n window.addEventListener('scroll', scroller, false);\n window.addEventListener('resize', resizer, false);\n } else if (window.attachEvent) {\n window.attachEvent('onscroll', scroller);\n window.attachEvent('onresize', resizer);\n }\n\n $.fn.sticky = function(method) {\n if (methods[method]) {\n return methods[method].apply(this, slice.call(arguments, 1));\n } else if (typeof method === 'object' || !method ) {\n return methods.init.apply( this, arguments );\n } else {\n $.error('Method ' + method + ' does not exist on jQuery.sticky');\n }\n };\n\n $.fn.unstick = function(method) {\n if (methods[method]) {\n return methods[method].apply(this, slice.call(arguments, 1));\n } else if (typeof method === 'object' || !method ) {\n return methods.unstick.apply( this, arguments );\n } else {\n $.error('Method ' + method + ' does not exist on jQuery.sticky');\n }\n };\n $(function() {\n setTimeout(scroller, 0);\n });\n}));\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var LodashWrapper = require('./_LodashWrapper'),\n flatRest = require('./_flatRest'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n isArray = require('./isArray'),\n isLaziable = require('./_isLaziable');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nmodule.exports = createFlow;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var createFlow = require('./_createFlow');\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nmodule.exports = flow;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans FjÀllemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('
')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('
');\n var $titleElement = $('
');\n var $messageElement = $('
');\n var $progressElement = $('
');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","module.exports = jQuery;"],"sourceRoot":""}