{"version":3,"file":"kendo.dataviz.mobile.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodataviz","mobile","js","this","breakpoints","EVENT","defaultBreakpoints","small","medium","large","mediaQuery","query","Object","assign","kendo","defaults","mediaQueryList","window","matchMedia","onEnterCallbacks","onLeaveCallbacks","onChangeHandlers","kendoMediaQuery","onChangeHandler","ev","forEach","cb","matches","addEventListener","onChange","push","onEnter","media","MediaQueryListEvent","onLeave","destroy","removeEventListener","createMediaQuery","packageMetadata","name","productName","productCodes","publishDate","version","replace","licensingDocsUrl","$","undefined$1","Template","cultures","extend","each","isArray","Array","noop","math","Math","JSON","support","percentRegExp","formatRegExp","boxShadowRegExp","numberRegExp","MONTH","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","G","y","q","Q","M","L","d","E","c","e","h","H","k","K","m","s","a","t","x","X","z","Z","NAME_TYPES","month","type","minLength","standAlone","quarter","weekday","dayperiod","era","FUNCTION","STRING","NUMBER","OBJECT","NULL","BOOLEAN","UNDEFINED","ARIA_LABELLEDBY","ARIA_LABEL","getterCache","setterCache","slice","cssPropertiesNames","noDepricateExtend","src","copyIsArray","copy","options","clone","arguments$1","arguments","target","i","length","deep","jQuery","isPlainObject","Class","proto","member","fn","base","that","subclass","init","apply","prototype","constructor","_initOptions","deepExtend","isPresent","value","isBlank","isString","isNumeric","isNaN","parseFloat","isDate","getTime","isFunction","preventDefault","_defaultPrevented","isDefaultPrevented","Observable","_events","bind","eventName","handlers","one","idx","original","handler","eventNames","handlersIsFunction","unbind","first","unshift","trigger","events","sender","call","splice","compilePart","part","stringPart","split","join","charAt","rest","substring","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","zeros","pad","number","digits","end","wrapResize","element","autosize","outerWidth","_outerWidth","outerHeight","_outerHeight","parent","wrapper","closest","visible","is","wrapperStyle","style","elementHeight","height","css","display","position","test","width","add","show","hide","destination","deepExtendOne","source","property","propValue","propType","propInit","destProp","ObservableArray","data","LazyObservableArray","DataSource","HierarchicalDataSource","RegExp","ArrayBuffer","HTMLElement","Date","testRx","agent","rxs","dflt","rx","hasOwnProperty","toCamelCase","str","strMatch","g1","toUpperCase","getComputedStyles","properties","computedStyle","styles","document","defaultView","getComputedStyle","getPropertyValue","currentStyle","size","paramName","useWithBlock","render","template","html","compile","parts","settings","argumentName","match","functionBody","Function","_slotCount","floor","debugTemplates","Error","format","console","warn","gap","indent","rep","escapable","meta","toString","quote","string","lastIndex","charCodeAt","key","holder","v","partial","mind","toJSON","isFinite","String","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","stringify","replacer","space","dateFormatRegExp","standardFormatRegExp","literalRegExp","commaRegExp","EMPTY","POINT","SHARP","ZERO","EN","objectToString","findCulture","culture","numberFormat","getCulture","current","pattern","decimals","groupSize","percent","symbol","currency","abbr","calendars","standard","days","names","namesAbbr","namesShort","months","AM","PM","patterns","D","F","g","T","u","Y","firstDay","twoDigitYearMax","cultureName","calendar","groupInteger","start","integer","integerLength","newGroupSize","decimalIndex","indexOf","groupSizes","shift","reverse","round","precision","negative","toFixed","min","fmt","date","minutes","result","sign","getDate","getDay","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffset","abs","formatDate","isCurrency","isPercent","customPrecision","formatAndPrecision","fraction","ch","hasGroup","hasNegativeFormat","sharpIndex","zeroIndex","hasZero","hasSharp","currencyIndex","decimal","literals","replacement","toLocaleString","exec","toLowerCase","toExponential","quoteChar","literal","lastIndexOf","rounded","max","formatNumber","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","activeElement","documentElement","_round","includeMargin","nonBreakingSpaceRegExp","spaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","offsetRegExp","FORMATS_SEQUENCE","STANDARD_FORMATS","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","strict","count","pmHour","UTC","amDesignators","pmDesignators","hoursOffset","minutesOffset","lookAhead","getNumber","rg","substr","valueIdx","getIndexByName","lower","nameLength","subValue","matchLength","matchIdx","checkLiteral","year","day","hours","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","setHours","adjustDST","setFullYear","internalParseDate","formats","tzoffset","offset","parseMicrosoftFormatOffset","timezone","convert","cultureFormats","formatIdx","concat","getDefaultFormats","parseDate","parseExactDate","percentSymbol","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","scrollWidth","removeChild","isRtl","table","tbodyInnerHtml","touch","docStyle","transitions","transforms","elementProto","hasHW3D","WebKitCSSMatrix","cssFlexbox","prefix","hasTransitions","lowPrefix","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","e$1","detectOS","ua","minorVersion","os","notAndroidPhone","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","webkit","navigator","device","browser","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","mobileOS","userAgent","wpDevicePixelRatio","hasNativeScrolling","delayedClick","attr","mouseAndTouchPresent","detectBrowser","edge","safari","opera","msie","mozilla","documentMode","chromiumEdge","detectClipboardAccess","commands","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","clientWidth","top","cssClass","docElement","addClass","eventCapture","input","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","sorted","field","sort","b","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","nodeList","querySelectorAll","parentNode","pushState","history","hashChange","customElements","mobileChrome","crios","msPointers","MSPointerEvent","pointers","PointerEvent","kineticScrollNeeded","effects","prepareAnimationOptions","duration","complete","teardown","completeCallback","animate","instance","queue","promise","enabled","Element","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","classes","toggleClass","kendoRemoveClass","kendoToggleClass","toggle","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","eventTarget","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","on","mousedown","mouseup","mousemove","mousecancel","click","resize","localUrlRe","widgets","_widgetRegisteredCallbacks","ui","fx","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","ns","getShadows","shadow","radius","blur","left","right","bottom","wrap","percentage","windowOuterWidth","removeClass","hasClass","percentWidth","percentHeight","forceWidth","isScrollable","dataset","className","overflow","scrollLeft","el","mozila","browserVersion","obj","toHyphens","getOffset","positioned","pageYOffset","pageXOffset","parseEffects","directions","down","up","in","out","htmlEncode","unescape","decodeURIComponent","error","_","m1","m2","fromCharCode","isLocalUrl","url","expr","expression","safe","members","wrapExpression","exprToArray","fields","indexAccessor","getter","setter","innerSetter","ref","val","prop","props","pop","accessor","get","set","guid","random","id","chars","roleSelector","role","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","suppressLog","log","Widget","KendoLicensing","validatePackage","angular","dataSource","componentTypes","componentType","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_clearCssClasses","_setEvents","_applyCssClasses","force","getSize","currentSize","_size","_resize","dimensions","setSize","removeData","_destroy","_muteAngularRebind","_muteRebind","validFill","widgetName","protoOptions","__proto__","cssProperties","propertyDictionary","_altname","getValidClass","widget","propName","fillMode","fill","_ariaLabel","labelId","inputElm","inputId","labelElm","ariaLabel","ariaLabelledBy","_generateLabelId","newOptions","currentOptions","themeColor","label","DataBoundWidget","dataItems","flatView","_angularItems","cmd","elements","items","dataItem","domElement","offsetHeight","notify","templateRegExp","jsonRegExp","jsonFormatRegExp","dashRegExp","parseOption","option","getAttribute","parse","parseOptions","containmentComparer","contains","resizableWidget","inArray","initWidget","roles","fullPath","widgetKeyRegExp","nodeType","widgetKey","isEmptyObject","rolesFromNamespaces","namespaces","find","addBack","filter","widgetsArray","makeArray","widgetInstance","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","scrollTop","opacity","loading","prependTo","remove","plugin","register","widgetEntry","args","method","ContainerNullObject","nullObject","MobileWidget","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","focusable","isTabIndexNotNaN","nodeName","disabled","href","pseudos","parents","themes","views","touchScroller","useNative","Scroller","kendoMobileScroller","suites","elementData","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","MOUSE_EVENTS","MouseEventNormalizer","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","eventMap","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","getEventMap","eventRegEx","applyEventMap","keyDownHandler","kendoKeydown","preventKendoKeydown","kendoJQuery","context","rootjQuery","search","touchstart","touchend","keyDownCallBack","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","from","to","zoneAndRule","zones","zoneRules","until","findZone","info","fromOffset","toOffset","diff","tempToOffset","fromLocalOffset","toLocalOffset","toLocalDate","MS_PER_MINUTE","MS_PER_DAY","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","calcWeekInYear","weekStartDay","firstWeekInYear","newDate","addDays","moveDateToWeekStart","diffInMS","toInvariantTime","setTime","ignoreDST","difference","today","staticDate","addYear","currentDate","addLiteral","lastPart","isHour12","startsWith","text","searchString","isInDateRange","msValue","msMin","msMax","isInTimeRange","isToday","nextDay","previousDay","toUtcTime","MS_PER_HOUR","splitDateFormat","specifier","patternLength","formatLength","nameType","datePattern","hour12","dateFieldName","dateFields","dateFormatNames","lastDayOfMonth","last","timeOffset","weekInYear","prevWeekDate","nextWeekDate","weekNumber","firstDayOfYear","lastDayOfYear","nextYear","previousYear","stripWhitespace","createNodeIterator","iterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","child","nodeValue","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationQueue","queueAnimation","runNextAnimation","parseQueryStringParams","params","paramParts","elementUnderCursor","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","lastExecTime","throttled","elapsed","caret","rangeElement","isPosition","selectionStart","focus","setSelectionRange","selectionEnd","selection","createTextRange","collapse","moveStart","moveEnd","select","rangeDuplicated","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","focusElement","scrollTopPositions","scrollableParents","parentsUntil","setActive","focusNextElement","focussable","getWidgetFocusableElement","nextFocusable","addAttribute","attribute","removeAttribute","toggleAttribute","matchesMedia","_bootstrapToMedia","bootstrapMedia","xs","sm","md","lg","xl","fileGroupMap","audio","video","image","txt","presentation","programming","pdf","config","zip","getFileGroup","extension","withPrefix","fileTypeMap","groups","getFileSizeMessage","pow","selectorFromClasses","themeColorValues","fillValues","shapeValues","sizeValues","roundedValues","positionModeValues","resizeValues","overflowValues","defaultValues","registerCssClass","shorthand","registerCssClasses","arr","fillModeValues","registerValues","j","newValues","currentValue","dict","widgetValues","validValue","widgetProperties","overridePrefix","registerPrefix","propertyToCssClassMap","getValidCssClass","applyStylesFromKendoAttributes","styleProps","styleProp","currentElement","$currentElement","kendoAttr","whenAll","resolveValues","remaining","deferred","Deferred","failed","rejectContexts","rejectValues","resolveContexts","updateFunc","contexts","notifyWith","done","fail","resolveWith","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","appendTo","submit","fileSaver","downloadAttribute","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","saveAs","save","forceProxy","proxyModelSetters","observable","defineProperty","dirty","getSeriesColors","series","colors","item","isElement","HTMLDocument","setDefaults","path","curr","DEBUG_KENDO_TEMPLATES","class2type","_i","setScriptKey","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","zoom","matrix3dRegExp","cssParamsRegExp","translateXRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transformProps","transform2d","transform2units","rotate","skew","cssPrefix","PX","AUTO","WIDTH","HEIGHT","HIDDEN","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","POSITION","COMPLETE_CALLBACK","TRANSITION","TRANSFORM","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","transition","vertical","modifier","horizontal","stopQueue","animationProperty","transformValue","step","elem","now","curProxy","cur","parseInteger","parseCSS","strip3DTransforms","normalizeCSS","lowerKey","isTransformed","transformation","cssValues","transform","computed","atan2","exclusive","ease","mirror","redirectedEffect","effect","$1","$2","direction","effectBody","timeoutID","oldKeys","stopTransitionCalled","stopTransition","speeds","merge","acc","propertyName","uniqueSort","unique","taskKeys","retainPosition","EffectSet","restore","run","jdx","children","childrenLength","setReverse","addRestoreProperties","prepare","effectName","reset","setup","resolve","restoreCallback","effectClass","effectSet","parsedEffects","capitalize","useTransition","multiple","single","isFixed","originalPosition","dX","dY","marginLeft","marginTop","Effect","_direction","_additionalEffects","_reverse","play","additional","_duration","compositeRun","_complete","shouldHide","word","createEffect","definition","opt1","opt2","opt3","theDirection","FOUR_DIRECTIONS","IN_OUT","createToggleEffect","defaultStart","defaultEnd","startValue","_startValue","endValue","_endValue","_shouldHide","startDataValue","divisor","tmp","previous","previousDivisor","slideIn","margin","origin","setLength","oldLength","realLength","TRANSFER_START_STATE","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","CLIPS","ROTATIONS","clipInHalf","_container","rotation","zIndex","_clipInHalf","clip","append","face","_face","temporary","back","temp","reverseDirection","faceClone","backClone","staticPage","turningPage","transformStyle","RESTORE_OVERFLOW","_before","_after","transitionClass","_previous","_transitionClass","beforeTransition","afterTransition","_both","_element","_containerClass","containerClass","completeProxy","isAbsolute","both","Animation","_tickProxy","_tick","_started","tick","onEnd","onCancel","Transition","timePassed","startDate","moveTo","movable","initial","_easeProxy","moveAxis","easeOutExpo","easeOutBack","inner","outer","fitScale","CHANGE","SAME","BROKEN_BACK_NAV","hashStrip","absoluteURL","pathPrefix","host","hashDelimiter","bang","locationHash","stripRoot","root","HistoryAdapter","forward","replaceLocation","PushStateAdapter","navigate","title","replaceState","normalize","pathname","change","normalizeCurrent","fixedUrl","hash","hashBang","fixHash","fixBang","HashAdapter","_id","_interval","setInterval","clearInterval","History","adapter","createAdapter","historyLength","locations","_checkUrl","silent","_navigate","backCalled","decode","newLength","navigatingInExisting","prev","backButtonPressed","INIT","ROUTE_MISSING","BACK","optionalParam","namedParam","splatParam","escapeRegExp","namedParamReplace","optional","stripUrl","Route","route","ignoreCase","routeToRegExp","_callback","queryStringParams","_back","worksWith","Router","routes","_urlChangedProxy","_sameProxy","_backProxy","backProxy","urlChangedProxy","_urlChanged","same","_same","initEventObject","logic","or","identity","and","operatorsMap","isnullorempty","isnotnullorempty","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","gt","gte","isempty","isnotempty","isnotnull","isnull","lt","lte","neq","startswith","transformFilter","operator","accentFoldingFiltering","itemProp","toLocaleLowerCase","typedGetter","convertValue","op","transformCompositeFilter","combiner","filters","extendAccentFolding","reduce","NEWLINE","DOUBLELINE","odataFilters","odataFiltersVersionFour","mappers","pageSize","page","useVersionFour","toOdataFilter","$filter","orderby","order","$orderby","skip","$skip","take","$top","defaultDataType","read","dataType","useOdataFour","stripMetadata","hex16","createBoundary","createDelimeter","boundary","close","createCommand","transport","httpVerb","command","transportUrl","commandPrefix","getOperationHeader","changeset","changeId","header","processCollection","colection","skipContent","requestBody","getBoundary","collection","content","getOperations","schemas","odata","results","total","transports","jsonp","update","create","parameterMap","$inlinecount","$format","batch","$count","colections","batchURL","headers","updated","destroyed","created","createBatchRequest","collections","ajax","success","response","responses","responseText","changeBody","status","code","marker","jsonModel","responseMarkers","markerIndex","models","passed","parseBatchResponse","XmlDataReader","model","errors","serialize","modelBase","Model","idField","xpathToMember","modelInstance","evaluate","record","_parse","xmlParse","xml","parseDOM","parsedNode","attributes","attributeCount","firstChild","nextSibling","intermediateResult","tree","parseXML","raw","readers","CREATE","READ","UPDATE","DESTROY","SYNC","GET","ERROR","REQUESTSTART","PROGRESS","REQUESTEND","ITEMSLOADED","ITEMLOAD","crud","o","objectKeys","ObservableObject","wrapAll","_loadPromises","_loadedNodes","at","serializeFunctions","json","object","isGroup","_loading","nodes","omitChangeEvent","howMany","omitCache","thisArg","reduceRight","every","some","empty","Symbol","_parent","eventHandler","_notifyChange","ownKeys","ignoreObjectKeys","filteredObjectKeys","protoKeys","getPrototypeOf","isPrimitiveType","getOwnPropertyNames","f","_handlers","uid","shouldSerialize","_set","composite","paths","isSetPrevented","isObservableArray","isDataSource","equal","xtype","parsers","boolean","default","_initializers","dirtyFields","_defaultId","fieldName","getFieldByName","editable","accept","isNew","originalName","functionFields","nullable","defaultValue","Comparer","compare","localeCompare","combine","comparers","StableComparer","asc","valueA","valueB","__position","desc","operators","textOp","impl","ignore","getMatchRegexp","esc","doesnotmatch","Query","normalizeSort","descriptor","descriptors","sortFields","sorts","sortObject","filterExpr","noEval","filterExprNoEval","expressions","fieldFunctions","operatorFunctions","operatorMap","equals","isequalto","equalto","ne","notequals","isnotequalto","notequalto","notequal","islessthan","lessthan","less","le","islessthanorequalto","lessthanequal","isgreaterthan","greaterthan","greater","isgreaterthanorequalto","greaterthanequal","ge","notsubstringof","normalizeOperator","normalizeFilter","compareDescriptor","f1","f2","normalizeDescriptor","fieldComparer","normalizeGroup","skipItemSorting","aggregates","normalizeGroupWithoutCompare","groupValueComparer","calculateAggregate","accumulator","state","aggr","functionName","aggregate","functions","compareFilters","expr1","expr2","filters1","filters2","toArray","range","inPlace","orderBy","orderByDescending","comparer","compiled","group","allData","groupPaging","groupAllData","hasSubgroups","itemCount","subgroupCount","groupBy","_sortForGrouping","groupValue","_sortGroups","sum","isNumber","average","process","groupDescriptorsWithoutSort","customGroupSort","groupDescriptors","anyGroupDescriptorHasCompare","groupDescriptorsWithoutCompare","normalizedSort","filterCallback","flatGroups","groupDescriptor","virtual","LocalTransport","RemoteTransport","Cache","parameters","operation","_store","clear","serializeRecords","getters","originalFieldNames","fieldNames","setters","convertRecords","convertGroup","wrapDataAccess","originalFunction","converter","wrapDataAccessBase","store","inmemory","DataReader","schema","dataFunction","_dataAccessFunction","groupsFunction","serializeFunction","serializeGetters","fromName","_wrapDataAccessBase","fillLastGroup","originalGroup","newGroup","currOriginal","currentNew","mergeGroups","dest","indexFunction","groupsLength","indexFn","groupIndex","itemIndex","flattenGroups","wrapGroupItems","eachGroupItems","func","replaceInRanges","ranges","replaceInRange","replaceWithObservable","serverGrouping","viewIndex","indexOfPristineModel","indexOfModel","fieldNameFromModel","convertFilterDescriptorsField","convertDescriptorsField","_map","_prefetch","_data","_pristineData","_ranges","_view","_pristineTotal","_destroyed","_pageSize","_page","_sort","_sortFields","_filter","_group","_aggregate","_total","_groupPaging","_groupsState","_shouldDetachObservableParents","Transport","pushCreate","_pushCreate","pushUpdate","_pushUpdate","pushDestroy","_pushDestroy","offlineStorage","_storage","getItem","localStorage","setItem","reader","_detachObservableParents","_observe","_online","serverSorting","serverPaging","serverFiltering","serverAggregates","inPlaceSort","online","sync","offlineData","_isGrouped","_isServerGrouped","_isServerGroupPaged","_isGroupPaged","_push","_readData","_flatData","useRanges","getByUid","_getByUid","_storeData","_addRange","_process","_observeView","insert","_createNewModel","_wrapInEmptyGroup","_insertModelInRange","pushInsert","rangeSpan","_getCurrentRangeSpan","pushed","autoSync","pristine","pristineData","_updatePristineForModel","_removeItems","itemsToRemove","removePristine","shouldRemovePristine","found","_eachItem","_removePristineForModel","pushMove","_moveItems","moved","hasGroups","_pushInDestroyed","removeModel","_removeModelFromRanges","notFetched","promises","_sendSubmit","_send","when","then","_accept","_syncEnd","_change","cancelChanges","_cancelModel","_changesCanceled","_markOfflineUpdatesAsDirty","__state__","hasChanges","serverGroup","_handleCustomErrors","_executeOnPristineForModel","_eachPristineItem","_pristineForModel","_modelCanceled","_submit","reject","_promise","converted","_params","_queueRequest","isPrevented","_dequeueRequest","_readAggregates","replaceSubset","_serverGroupsTotal","_aggregateResult","itemIds","_skip","endless","_changeHandler","updatePristine","timestamp","_timeStamp","outerStart","outerEnd","_sortRanges","_groupsFlat","_appendToGroupsFlat","_updateOuterRangesLength","_getGroupByUid","xhr","errorThrown","_requestInProgress","_pending","_shouldWrap","_updateTotalForAction","_calculateAggregates","_take","currentRangeStart","_clearEmptyGroups","_queryProcess","resultData","dataToAggregate","_setView","_setFilterTotal","_mergeState","_currentRangeStart","moreItemsCount","_hasExpandedSubGroups","_findGroupedRange","itemsLength","groupCount","itemsToSkip","taken","_fetchGroupItems","_fetchingGroupItems","skipped","includeParents","excludeHeader","currentItems","_expandedSubGroupItemsCount","includeCurrentItems","subGroup","endSpecified","groupItemsSkip","firstItem","lastItem","expandedSubGroupItemsCount","groupItemCount","getGroupItems","subgroups","_composeItemsFilter","findSubgroups","_timeout","_groupItemsSuccessHandler","totalField","totalCount","_updateRangePristineData","countAdded","_currentRequestTimeStamp","_skipRequestsInProgress","indexOfCurrentGroup","currentGroup","dataLength","indexes","rangesLength","_containsSubGroup","_cloneGroup","subgroup","currentSubGroup","filterTotal","setDefaultValue","fetch","_query","next","totalPages","_pageableQueryOptions","getGroupsFlat","groupsTotal","includeExpanded","_calculateGroupsTotal","itemsField","ignoreState","_groupsTotal","countGroupRange","_emptyAggregates","ceil","inRange","_findRange","lastRange","firstItemUid","enableRequestsInProgress","pageSkip","_processRangeData","_originalPageSkip","_originalSize","_adjustPageSkip","_groupRangeExists","_rangeExists","prefetch","skipIdx","takeIdx","startIndex","endIndex","rangeData","rangeEnd","processed","flatData","prevRangeEnd","remote","groupMapOptions","isGroupPaged","startField","endField","_mergeGroups","_getRangesMismatch","mismatch","prevGroup","eventData","_omitPrefetch","paging","sorting","filtering","_prefetchSuccessHandler","_multiplePrefetch","prevRange","_getPrevRange","_getNextRange","availableItemsCount","_removeModelFromRange","_updateRangesLength","mismatchFound","mismatchLength","lengthDifference","rangeLength","transportOptions","fieldIndex","cells","cell","tbody","tBodies","rows","fieldCount","inferTable","optgroup","firstField","secondField","specified","inferSelect","Node","hasChildren","childrenField","childrenOptions","hasChildrenObject","_childrenOptions","_initChildren","_loaded","_updateChildrenField","loaded","level","_childrenLoaded","load","_matchFilter","dataMethod","_attachBubbleHandlers","_hierarchicalFilter","_childrenLoading","isLoading","_markHierarchicalQuery","_updateHierarchicalFilter","_find","inferList","list","textChild","textField","urlField","spriteCssClassField","imageUrlField","_dataSource","Buffer","viewSize","disablePrefetch","_prefetching","_reset","_syncWithDataSource","setViewSize","_recalculate","itemPresent","dataOffset","prefetchThreshold","midPageThreshold","nextMidRange","nextPageThreshold","nextFullRange","pullBackThreshold","previousMidRange","previousFullRange","_goToRange","nextRange","syncDataSource","prefetchOffset","expanding","_expanding","_syncPending","_firstItemUid","BatchBuffer","batchSize","batchBuffer","endreached","prefetching","prefetched","encode","binders","VALUE","SOURCE","EVENTS","CHECKED","deleteExpando","Binding","dependencies","_access","_parents","dependency","currentSource","EventBinding","TemplateBinding","Binder","bindings","binding","TypedBinder","parsedValue","_parseValue","dataSourceBinding","bindingName","_dataBinding","dataBinding","_dataBound","dataBound","_itemChange","itemChange","bindElement","_ns","removedItems","unbindElementTree","all","addedItems","hds","addedDataItems","multiselect","Select","MultiSelect","DropDownTree","treeview","retrievePrimitiveValues","dataValueField","readonly","dataFormat","invisible","valueUpdate","_initChange","autoBind","valueField","valueAttr","innerText","cloneNode","reference","insertBefore","unbindElementChildren","checked","selectedIndex","selected","valueIndex","valuePrimitive","sourceValue","optionIndex","optionValue","check","_range","floatingLabel","_valueIsObservableObject","_valueIsObservableArray","_source","valueLength","sourceItem","dataTextField","isObservableObject","cascadeFrom","listView","bound","_preselect","dropdowntree","oldValues","selectedNode","nonPrimitiveValues","_isMultipleSelection","_getAllChecked","removeIndex","newValue","old","arraySplice","selectedValue","gantt","_isBound","scheduler","grid","badge","addLength","shifted","shiftedLength","BindingTarget","toDestroy","hasValue","hasSource","hasEvents","hasChecked","hasCss","widgetBinding","WidgetBindingTarget","specificBinders","applyBinding","binder","keyValueRegExp","whiteSpaceRegExp","parseBindings","token","colonIndex","createBindings","childrenCopy","unbindElement","bindingTargetForRole","dom","destroyWidget","bindingTarget","destroyWidgets","namespace","observableHierarchy","recursiveRead","TRANSITION_START","TRANSITION_END","SHOW","HIDE","sizzleErrorRegExp","bodyRegExp","SHOW_START","SAME_VIEW_REQUESTED","VIEW_SHOW","VIEW_TYPE_DETERMINED","AFTER","classNames","View","renderOnInit","_createElement","wrapInSections","_renderSections","_wrap","_evalTemplate","evalTemplate","_useWithBlock","_fragments","detachOnHide","detachOnDestroy","notInitialized","_eachFragment","ViewClone","triggerBeforeShow","triggerBeforeHide","showStart","showEnd","hideEnd","detach","purge","fragments","methodName","getElementById","contents","replaceWith","_wrapper","_createContent","_createHeader","_createFooter","contentSelector","contentElement","footer","Layout","containers","_createContainer","showIn","ViewContainer","Fragment","attach","transitionRegExp","running","after","locationID","theTransition","transitionData","parseTransition","ViewEngine","sandbox","_hideViews","rootView","layouts","viewContainer","showView","remoteViewURLPrefix","_findViewElement","reload","_createView","urlPath","wrapInner","_locate","$angular","_findViewElementById","_createSpaView","_createMobileView","defaultTransition","loader","getLayout","getLayoutProxy","modelScope","viewOptions","isJQueryPromise","isNativePromise","catch","signalr","hub","invoke","callbacks","_crud","server","OS","invalidZeroEvents","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","PRESS","HOLD","SELECT","START","MOVE","CANCEL","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","mouse","pointer","ENABLE_GLOBAL_SURFACE","touchDelta","touch1","touch2","x1","y1","x2","y2","dx","dy","center","distance","sqrt","getTouches","currentTarget","identifier","pointerId","TouchAxis","_updateLocationData","startLocation","velocity","timeStamp","timeDelta","initialDelta","Touch","userEvents","touchInfo","useClickAsTap","threshold","initialTouch","pressEvent","_clicks","supportDoubleTap","_moved","_finished","press","_holdTimeout","_hold","minHold","_trigger","_tap","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","dispose","_start","endTime","activeTouches","isMoved","startTime","xDelta","yDelta","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","eventNS","surface","ownerDocument","pressed","defaultAction","touchAction","preventDragEvent","surfaceElement","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","capture","_isMultiTouch","_apiCall","_maxTouchesReached","_select","which","_move","_eachTouch","_end","_click","pageX","pageY","matchingTouch","ClickMoveClick","_downStarted","_down","_downTarget","_up","currentMilestone","_preventCancel","clickMoveClick","defaultThreshold","lastDropTarget","$window","draggables","dropTargets","dropAreas","KEYUP","DRAGSTART","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","numericCssPropery","within","containerBoundaries","minX","minY","TapCapture","_press","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","measure","scrollSize","makeVirtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","dragMove","resistance","translateAxis","Pane","elastic","gesturestart","gesture","gesturechange","coordinates","previousGesture","previousCenter","scaleDelta","offsetX","offsetY","scaleWith","TRANSFORM_STYLE","Movable","webkitTransformOrigin","_saveCoordinates","by","scaleTo","newCoordinates","destroyDroppable","groupName","droppables","DropTarget","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","_cache","DropTargetArea","Draggable","_activated","_startClickMoveClick","_drag","_onCancel","hold","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","holdToDrag","autoScroll","cancelHold","_updateHint","boundaries","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","currentTargetOffset","scopeTarget","scopeFrom","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","findScrollableParent","_lastEvent","_processMovement","autoScrollVelocity","scrollableViewPort","_scrollCompenstation","_scrollVelocity","_scrollInterval","_autoScroll","_withDropTarget","targetElement","compensation","yIsScrollable","xIsScrollable","isRootNode","scrollableRoot","yInBounds","xInBounds","_cancel","initialTarget","targets","areas","theTarget","theFilter","targetLen","areaLen","checkTarget","mouseX","mouseY","rect","AUTO_SCROLL_AREA","utils","RELEASECLASS","REFRESHCLASS","SCROLL","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","controlsId","elementSize","scrollMovable","alwaysVisible","paneSize","sizeRatio","_ariaValue","visibility","_native","prepend","scrollElement","fixedContainer","avoidScrolling","velocityX","velocityY","horizontalSwipe","verticalSwipe","pane","zoomSnapBack","animatedScroller","scrollTo","mousewheelScrolling","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","ctrlKey","_wheelTimeout","pullOffset","visibleScrollHints","pullTemplate","releaseTemplate","refreshTemplate","contentResized","_scale","zoomOut","animatedScrollTo","pullHandled","refreshHint","hintContainer","yinertia","xinertia","_paneChange","_dragEnd","scrollBar","elementId","OPEN","CLOSE","DEACTIVATE","ACTIVATE","CENTER","TOP","BOTTOM","ABSOLUTE","BODY","LOCATION","EFFECTS","ACTIVE","ACTIVEBORDER","ACTIVEBORDERREGEXP","ACTIVECHILDREN","DOCUMENT_ELEMENT","WINDOW","NS","Popup","parentPopup","collisions","collision","downEvent","anchor","_hovered","scrollArea","animation","open","_animationClose","_mousedownProxy","_mousedown","_resizeProxy","toggleTarget","toggleEvent","viewport","copyAnchorStyles","modal","adjustSize","omitOriginOffsets","_hideDirClass","_closing","_toggleResize","fixed","listbox","_resizeOnWrap","flipped","_position","_openAnimation","_showDirClass","_location","dirClass","skipEffects","openEffects","closeEffects","popup","_resizeTimeout","_scrollableParents","_fit","viewPortSize","output","_flip","anchorSize","boxSize","siblingContainer","parentZIndex","viewportOffset","viewportWidth","viewportHeight","isWindow","origins","positions","siblings","_align","pos","offsetParent","offsets","flipPos","wrapperHeight","appendToOffset","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","anchorWidth","anchorHeight","tabKeyTrapNS","TabKeyTrap","trap","_keepInTrap","removeTrap","shouldTrap","_focusableElements","sortedElements","_sortFocusableElements","_nextFocusable","_focus","tabIndex","attrName","_haveSelectionRange","contentWindow","elementType","HTMLBase","stylingOptions","_addClasses","previouslyAddedClasses","outerHTML","KI_PREFFIX","KSVG_PREFFIX","FLIP_HORIZONTAL","FLIP_PREFIX","FLIP_VERTICAL","ICON_TYPES","svg","HTMLSvgIcon","font","HTMLFontIcon","FLIP_CLASSES","HTMLBaseIcon","flip","iconClass","_className","icon","currentIconClass","includes","svgElm","iconNameMatch","svgIcons","viewBox","xmlns","renderIcon","iconType","getIconRenderer","accessibilityIcon","aggregateFieldsIcon","alignBottomIcon","alignCenterIcon","alignItemsBaselineAltIcon","alignItemsBaselineIcon","alignItemsCenterAltIcon","alignItemsCenterIcon","alignItemsEndAltIcon","alignItemsEndIcon","alignItemsStartAltIcon","alignItemsStartIcon","alignItemsStretchAltIcon","alignItemsStretchIcon","alignJustifyIcon","alignLeftIcon","alignMiddleIcon","alignRemoveIcon","alignRightIcon","alignSelfCenterAltIcon","alignSelfCenterIcon","alignSelfEndAltIcon","alignSelfEndIcon","alignSelfStartAltIcon","alignSelfStartIcon","alignSelfStretchAltIcon","alignSelfStretchIcon","alignToGridIcon","alignTopIcon","allIcon","anchorIcon","applyFormatIcon","arrowDownIcon","arrowLeftIcon","arrowOverflowDownIcon","arrowRightIcon","arrowRotateCcwIcon","arrowRotateCcwSmallIcon","arrowRotateCwIcon","arrowRotateCwSmallIcon","arrowUpIcon","arrowsAxesIcon","arrowsLeftRightIcon","arrowsMoveIcon","arrowsNoChangeIcon","arrowsNoRepeatIcon","arrowsSwapIcon","arrowsTopBottomIcon","barcodeIcon","barcodeOutlineIcon","barcodeQrCodeScannerIcon","barcodeScannerIcon","behanceBoxIcon","behanceIcon","bellIcon","binocularsIcon","bloggerBoxIcon","bloggerIcon","blurIcon","boldIcon","bookIcon","borderBottomIcon","borderColorIcon","borderLeftIcon","borderRadiusBottomLeftIcon","borderRadiusBottomRightIcon","borderRadiusIcon","borderRadiusTopLeftIcon","borderRadiusTopRightIcon","borderRightIcon","borderStyleBottomIcon","borderStyleIcon","borderStyleLeftIcon","borderStyleRightIcon","borderStyleTopIcon","borderTopIcon","borderTypeIcon","bordersAllIcon","bordersInsideHorizontalIcon","bordersInsideIcon","bordersInsideVerticalIcon","bordersNoneIcon","bordersOutsideIcon","bordersShowHideIcon","boxSizingIcon","brightnessContrastIcon","bringBackwardIcon","bringForwardIcon","bringToBackIcon","bringToFrontIcon","brushIcon","buildingBlocksIcon","buttonIcon","calculatorIcon","calendarDateIcon","calendarIcon","cameraIcon","cancelCircleIcon","cancelIcon","cancelOutlineIcon","caretAltDownIcon","caretAltExpandIcon","caretAltLeftIcon","caretAltRightIcon","caretAltToBottomIcon","caretAltToLeftIcon","caretAltToRightIcon","caretAltToTopIcon","caretAltUpIcon","caretBlIcon","caretBrIcon","caretDoubleAltDownIcon","caretDoubleAltLeftIcon","caretDoubleAltRightIcon","caretDoubleAltUpIcon","caretTlIcon","caretTrIcon","cartIcon","categorizeIcon","cellSplitHorizontallyIcon","cellSplitVerticallyIcon","cellsMergeHorizontallyIcon","cellsMergeIcon","cellsMergeVerticallyIcon","changeManuallyIcon","chartAreaClusteredIcon","chartAreaRangeIcon","chartAreaStacked100Icon","chartAreaStackedIcon","chartBarClusteredIcon","chartBarRangeIcon","chartBarStacked100Icon","chartBarStackedIcon","chartBubbleIcon","chartCandlestickIcon","chartChoroplethIcon","chartColumnClusteredIcon","chartColumnRangeIcon","chartColumnStacked100Icon","chartColumnStackedIcon","chartDoughnutIcon","chartLineIcon","chartLineMarkersIcon","chartLineStacked100Icon","chartLineStacked100MarkersIcon","chartLineStackedIcon","chartLineStackedMarkersIcon","chartOhlcIcon","chartPieIcon","chartRadarFilledIcon","chartRadarIcon","chartRadarMarkersIcon","chartRoseIcon","chartScatterIcon","chartScatterSmoothLinesIcon","chartScatterSmoothLinesMarkersIcon","chartScatterStraightLinesIcon","chartScatterStraightLinesMarkersIcon","checkCircleIcon","checkIcon","checkOutlineIcon","checkboxCheckedIcon","checkboxIcon","checkboxIndeterminateIcon","checkboxNullIcon","chevronDoubleDownIcon","chevronDoubleLeftIcon","chevronDoubleRightIcon","chevronDoubleUpIcon","chevronDownIcon","chevronLeftIcon","chevronRightIcon","chevronUpIcon","circleIcon","clearCssIcon","clipboardCodeIcon","clipboardHtmlIcon","clipboardIcon","clipboardMarkdownIcon","clipboardTextIcon","clipboardWordAltIcon","clipboardWordIcon","clockArrowRotateIcon","clockIcon","closedCaptionsIcon","cloudIcon","codeIcon","codeSnippetIcon","colResizeIcon","columnFreezeIcon","columnsIcon","commentIcon","commentRemoveIcon","commentsRemoveIcon","connectorIcon","convertLowercaseIcon","convertUppercaseIcon","copyFormatIcon","copyIcon","cropIcon","crosstabIcon","crosstabWizardIcon","csIcon","csprojIcon","css3Icon","cssIcon","customFormatIcon","customIconIcon","cutIcon","dataCsvIcon","dataIcon","dataJsonIcon","dataOdsIcon","dataRestIcon","dataSdsIcon","dataSqlIcon","dataWebIcon","decimalDecreaseIcon","decimalIncreaseIcon","decreaseHorizontalSpacingIcon","decreaseVerticalSpacingIcon","deliciousBoxIcon","deliciousIcon","detailSectionIcon","diggBoxIcon","diggIcon","dimensionsIcon","displayBlockIcon","displayFlexIcon","displayInlineBlockIcon","displayInlineFlexIcon","divIcon","divideIcon","documentManagerIcon","dollarIcon","downloadIcon","downloadLightIcon","dragAndDropIcon","dribbbleBoxIcon","dribbbleIcon","dropletIcon","dropletSlashIcon","dropletSliderIcon","editToolsIcon","envelopBoxIcon","envelopIcon","envelopLinkIcon","envelopeBoxIcon","envelopeIcon","envelopeLinkIcon","equalIcon","exclamationCircleIcon","exeIcon","exportIcon","eyeIcon","eyeSlashIcon","eyedropperIcon","facebookBoxIcon","facebookIcon","fileAddIcon","fileAscxIcon","fileAudioIcon","fileBacIcon","fileConfigIcon","fileCsvIcon","fileDataIcon","fileDiscImageIcon","fileErrorIcon","fileExcelIcon","fileFlashIcon","fileFooterIcon","fileHeaderIcon","fileHorizontalIcon","fileIcon","fileImageIcon","fileMdbIcon","filePdfIcon","filePptIcon","filePresentationIcon","fileProgrammingIcon","filePsdIcon","fileReportIcon","fileTxtIcon","fileTypescriptIcon","fileVideoIcon","fileWordIcon","fileWrenchIcon","fileZipIcon","filesErrorIcon","filmIcon","filterAddExpressionIcon","filterAddGroupIcon","filterClearIcon","filterIcon","filterSmallIcon","filterSortAscSmallIcon","filterSortDescSmallIcon","flashManagerIcon","flipHorizontalIcon","flipVerticalIcon","folderAddIcon","folderIcon","folderMoreIcon","folderOpenIcon","folderUpIcon","fontFamilyIcon","fontGrowIcon","fontShrinkIcon","fontSizeIcon","foregroundColorIcon","formElementIcon","formIcon","formatCodeBlockIcon","formulaFxIcon","forwardIcon","fullscreenExitIcon","fullscreenIcon","gapColumnIcon","gapRowIcon","gaugeLinearIcon","gaugeRadialIcon","gearIcon","gearsIcon","globeIcon","globeLinkIcon","globeOutlineIcon","globeUnlinkIcon","googleBoxIcon","googleIcon","googlePlusBoxIcon","googlePlusIcon","graphIcon","grayscaleIcon","greaterOrEqualIcon","gridIcon","gridLayoutIcon","groupBoxIcon","groupCollectionIcon","groupFooterSectionIcon","groupHeaderSectionIcon","groupIcon","groupSectionIcon","h1Icon","h2Icon","h3Icon","h4Icon","h5Icon","h6Icon","handIcon","handleDragIcon","handleResizeAltIcon","handleResizeIcon","hdIcon","heartIcon","heartOutlineIcon","homeIcon","horizontalRuleIcon","html5Icon","hyperlinkOpenIcon","hyperlinkOpenSmIcon","imageAbsolutePositionIcon","imageAddIcon","imageEditIcon","imageExportIcon","imageIcon","imageMapEditorIcon","imageResizeIcon","imagesIcon","importIcon","inboxIcon","increaseHorizontalSpacingIcon","increaseVerticalSpacingIcon","indentIcon","infoCircleIcon","inheritedIcon","insertBottomIcon","insertMiddleIcon","insertTopIcon","invertColorsIcon","italicIcon","jsIcon","justifyContentAroundAltIcon","justifyContentAroundIcon","justifyContentBetweenAltIcon","justifyContentBetweenIcon","justifyContentCenterAltIcon","justifyContentCenterIcon","justifyContentEndAltIcon","justifyContentEndIcon","justifyContentStartAltIcon","justifyContentStartIcon","kpiStatusDenyIcon","kpiStatusHoldIcon","kpiStatusOpenIcon","launchIcon","layout1By4Icon","layout2By2Icon","layoutIcon","layoutSideBySideIcon","layoutStackedIcon","lessOrEqualIcon","letterSpaceIcon","levelDownIcon","levelToTopIcon","levelUpIcon","lineHeightIcon","linkAddIcon","linkIcon","linkVerticalIcon","linkedinBoxIcon","linkedinIcon","listLatinBigIcon","listLatinSmallIcon","listOrderedIcon","listRomanBigIcon","listRomanLowerIcon","listRomanSmallIcon","listRomanUpperIcon","listUnorderedIcon","listUnorderedOutlineIcon","listUnorderedSquareIcon","lockIcon","loginIcon","logoutIcon","makeHorizontalSpacingEqualIcon","makeSameHeightIcon","makeSameSizeIcon","makeSameWidthIcon","makeVerticalSpacingEqualIcon","mapMarkerIcon","mapMarkerTargetIcon","maxHeightIcon","maxWidthIcon","mediaManagerIcon","menuIcon","minHeightIcon","minWidthIcon","minusCircleIcon","minusIcon","minusOutlineIcon","minusSmIcon","mirrorIcon","moreHorizontalIcon","moreVerticalIcon","musicNotesIcon","myspaceBoxIcon","myspaceIcon","nonRecurrenceIcon","notEqualIcon","outdentIcon","outlineOffsetIcon","outlineWidthIcon","overlapIcon","paddingBottomIcon","paddingIcon","paddingLeftIcon","paddingRightIcon","paddingTopIcon","pageFooterSectionIcon","pageHeaderSectionIcon","paletteIcon","paneFreezeIcon","paperPlaneIcon","paperclipAltIcon","paperclipIcon","paragraphAddIcon","parameterBooleanIcon","parameterDateTimeIcon","parameterFloatIcon","parameterIntegerIcon","parameterStringIcon","parametersByteArrayIcon","parametersIcon","parametersUnknownIcon","passwordIcon","pauseIcon","pauseSmIcon","pencilIcon","percentIcon","photosIcon","pinIcon","pinterestBoxIcon","pinterestIcon","playIcon","playSmIcon","playlistIcon","plusCircleIcon","plusIcon","plusOutlineIcon","plusSmIcon","pointerIcon","positionBottomIcon","positionLeftIcon","positionRightIcon","positionTopIcon","printIcon","puzzlePieceIcon","qrCodeIcon","qrCodeOutlineIcon","qrCodeScannerIcon","questionCircleIcon","radiobuttonCheckedIcon","radiobuttonIcon","redditBoxIcon","redditIcon","redoIcon","regularExpressionIcon","removeHorizontalSpacingIcon","removeVerticalSpacingIcon","reorderIcon","replaceAllIcon","replaceSingleIcon","reportElementIcon","rewindIcon","rightDoubleQuotesIcon","rotateIcon","rotateLeftIcon","rotateRightIcon","roundCornersIcon","rowFreezeIcon","rowsIcon","rssBoxIcon","rssIcon","saveIcon","searchIcon","selectAllIcon","selectBoxIcon","setColumnPositionIcon","shapeLineIcon","shapesIcon","shareIcon","sharpenIcon","signatureIcon","silverlightIcon","sizeToGridIcon","slidersIcon","slnIcon","snapGridIcon","snapToGridlinesIcon","snapToSnaplinesIcon","sortAscIcon","sortAscSmallIcon","sortClearIcon","sortDescIcon","sortDescSmallIcon","spellCheckerIcon","starIcon","starOutlineIcon","stickIcon","stopIcon","stopSmIcon","strikethroughIcon","stripAllFormattingIcon","stripCssFormatIcon","stripFontElementsIcon","stripSpanElementsIcon","stripWordFormattingIcon","stumbleUponBoxIcon","stumbleUponIcon","subreportIcon","subscriptIcon","sumIcon","supscriptIcon","symbolIcon","tableAddIcon","tableAlignBottomCenterIcon","tableAlignBottomLeftIcon","tableAlignBottomRightIcon","tableAlignMiddleCenterIcon","tableAlignMiddleLeftIcon","tableAlignMiddleRightIcon","tableAlignRemoveIcon","tableAlignTopCenterIcon","tableAlignTopLeftIcon","tableAlignTopRightIcon","tableBodyIcon","tableCellDeleteIcon","tableCellIcon","tableCellPropertiesIcon","tableColumnDeleteIcon","tableColumnGroupsIcon","tableColumnInsertLeftIcon","tableColumnInsertRightIcon","tableCornerIcon","tableDeleteIcon","tableIcon","tablePositionCenterIcon","tablePositionEndIcon","tablePositionStartIcon","tablePropertiesIcon","tableRowDeleteIcon","tableRowGroupsIcon","tableRowInsertAboveIcon","tableRowInsertBelowIcon","tableUnmergeIcon","tableWizardIcon","tellAFriendBoxIcon","tellAFriendIcon","templateManagerIcon","textClipIcon","textOverflowIcon","textTruncateIcon","textWrapArrowIcon","textWrapIcon","textareaIcon","textboxHiddenIcon","textboxIcon","thumbnailsDownIcon","thumbnailsLeftIcon","thumbnailsRightIcon","thumbnailsUpIcon","tocSectionIcon","tocSectionLevelIcon","toggleFullScreenModeIcon","toolbarFloatIcon","trackChangesAcceptAllIcon","trackChangesAcceptIcon","trackChangesEnableIcon","trackChangesIcon","trackChangesRejectAllIcon","trackChangesRejectIcon","transparencyIcon","trashIcon","tumblrBoxIcon","tumblrIcon","twitterBoxIcon","twitterIcon","underlineIcon","undoIcon","ungroupIcon","unlinkIcon","unlinkVerticalIcon","unlockIcon","unpinIcon","unstickIcon","uploadIcon","userIcon","validationDataIcon","validationXhtmlIcon","vbIcon","vbprojIcon","videoExternalIcon","vimeoBoxIcon","vimeoIcon","volumeDownIcon","volumeMuteIcon","volumeUpIcon","warningCircleIcon","warningTriangleIcon","wholeWordIcon","windowIcon","windowMinimizeIcon","windowRestoreIcon","wrenchIcon","xCircleIcon","xIcon","xOutlineIcon","yammerBoxIcon","yammerIcon","youtubeBoxIcon","youtubeIcon","zoomActualSizeIcon","zoomBestFitIcon","zoomInIcon","zoomOutIcon","FontIcon","_icon","SvgIcon","DOCUMENT","ARIAIDSUFFIX","DESCRIBEDBY","CONTENTLOAD","KCONTENTFRAME","TEMPLATE","autoHide","callout","IFRAMETEMPLATE","POSITIONS","REVERSE","DIRCLASSES","DIMENSIONS","restoreTitle","restoreTitleAttributeForElement","saveTitleAttributeForElement","saveTitleAttributes","TooltipBase","_isShownOnMouseEnter","_showOn","showOn","_keydown","showAfter","hideAfter","_saveTitle","_show","_isShownOnClick","_isShownOnFocus","_positionCallout","elementOffset","offsetAmount","_offset","arrow","arrowWidth","isTopLeft","isFlipped","marginRule","_addDescribedBy","ariaId","describedBy","_removeDescribedBy","arrayAttr","finalArray","finalDescribedbyAttr","tooltipId","currentDescribedBy","_openPopup","Tooltip","_documentKeyDownHandler","_documentKeyDown","_mouseenter","_mouseleave","_blur","_appendContent","iframe","contentOptions","showIframe","_ajaxRequest","_initPopup","activate","_closeButtonClick","_closePopup","util","createPromise","promiseAll","extendStatic","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","color","colorNames","regexp","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","other","NaN","c1","c2","r","Bytes","RGB","HSV","toHSL","l","HSL","hex","alpha","n","p","hue2rgb","alphaFromHex","Color","this$1$1","resolvedColor","resolveColor","formatRegex","re","processor","channels","normalizeByte","padDigit","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","LRUCache","_length","put","entry","_head","_tail","newer","older","REPLACE_REGEX","normalizeText","objectKey","hashKey","defaultMeasureBox","DEFAULT_OPTIONS","baselineMarkerSize","TextMetrics","baseline","cacheKey","cachedResult","measureBox","baselineMarker","_baselineMarker","textStr","offsetTop","measureText","kendoDrawingUtil","kendoUtil","supportBrowser","HasObservers","Class$$1","observers","_observers","addObserver","removeObserver","_suspended","observer","optionsChange","geometryChange","suspend","resume","_observerField","append$1$1","second","arabicToRoman","roman","defined","defId","definitionId","DEG_TO_RAD","PI","MAX_NUM","MAX_VALUE","MIN_NUM","deg","radians","KEY_STR","encodeBase64","utfInput","hi","low","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","eventCoordinates","eventElement","isTransparent","limitValue","mergeSort","cmp","ai","bi","rad","degrees","power","valueOrDefault","bindEvents","getBoundingClientRect","clientTop","clientLeft","elementStyles","stylesArray","getPixels","size$1","unbindEvents","elementPadding","paddingLeft","paddingTop","Matrix","multiplyCopy","matrix","invert","det","separator","unit","angle","cos","sin","scaleX","scaleY","IDENTITY","matrixRegexp","transformMatrix","matrixString","parseMatrix","elementScale","parentElement","parentMatrix","toString$1","OptionsStore","HasObservers$$1","parentObj","_clear","wrapped","setAccessor","getAccessor","withAccessors","TBase","capitalized","defineAccessors","toMatrix","Point","superclass","staticAccessors","originPoint","translateWith","point","scaleCopy","transformCopy","distanceTo","doRound","arg0","arg1","maxX","maxY","minPoint","maxPoint","defineProperties","Size","Rect","cornerRadius","setOrigin","setCornerRadius","getOrigin","getCornerRadius","topLeft","bottomRight","topRight","bottomLeft","bbox","tl","tr","br","bl","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","intersect","rect1","rect2","Transformation","_matrix","_optionsChange","multiply","transform$1","Element$1","prototypeAccessors","parentTransform","currentTransform","combinedMatrix","elementMatrix","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","stroke","ellipseExtremeAngles","ry","extremeX","extremeY","PI_DIV_2","Circle$2","Circle","setCenter","setRadius","getCenter","pointAt","_pointAt","extremeAngles","currentPointX","currentPointY","currentPoint","pointDistance","paintable","anonymous","newFill","IDENTITY_MATRIX_HASH","measurable","matrixHash","_bboxCache","_matrixHash","_bbox","strokeWidth","geometryAccessor","withGeometry","defineGeometryAccessors","geometry","rawBBox","_geometry","PRECISION","close$1","tolerance","closeOrLess","pow$1","Arc$2","Arc","radiusX","radiusY","startAngle","endAngle","anticlockwise","xRotation","radian","curvePoints","interval","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","nextAngle","points","_intervalCurvePoints","cp1","cp2","p2","endPoint","currentAngleX","bboxStartAngle","currentAngleY","oldStart","p1","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","startPoint","intersection","p0","p3","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","cx","cy","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","ElementsArray","_splice","_add","_remove","_clearObserver","_setObserver","GeometryElementsArray","ElementsArray$$1","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","img","cNumber","addConstant","negate","multiplyConstant","nthRoot","rad$$1","nthR","isReal","numberSign$1","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","polynomial","roots","lineIntersectionsCount","intersects","pointAccessor","withPoints","definePointAccessors","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","segment","intersectionsCount","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","removeDuplicates","lineFunction","getControlPoints","tangent","xField","yField","restrict","switchOrientation","calculateFunction","isLine","getTangent","monotonic","isMonotonicByField","invertAxis","numberSign","secondCP","secondControlPoint","oldXField","firstCP","firstControlPoint","restrictControlPoint","cp","xValue","yValue","ShapeMap","isRelative","lineTo","curveTo","toLineParamaters","arcTo","lastControlIn","previousCommand","segments","reflectionPoint","cubicControlPoints","quadraticToCubicControlPoints","isVertical","insertPosition","third","scaledPoint","SEGMENT_REGEX","SPLIT_REGEX","parsePath","pathInstance","closePath","parseParameters","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","elementsClippedBoundingBox","SPACE","Path","lineJoin","point$$1","lastSegment","arc","_addArcSegments","closed","segmentStart","segmentEnd","currentType","print","pathWidth","segmentBox","MultiPath","fromRect","curveFromPoints","pointsIn","initialControlPoint","lastControlPoint","controlPoints","cp0","controlPoints$1","controlPoints$2","tangent$2","pointsToCurve","fromArc","prototypeAccessors$1","toPath","Text","Image$1","Image","_rect","traversable","traverse","Group","childrenChange","_reparent","insertAt","removeAt","newParent","translateToPoint","transofrm","alignStart","align","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","revers","forEachReverse","Group$$1","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","elementStart","groupBox","_initGroups","groupsSize","ref$1","groupOrigin","elementOrigin","groupStart","arrangeElements","groupIdx","lineSize","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","Rect$2","Rect$$1","alignElements","alignment","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","wrapElements","stacks","maxSize","stack","stackSize","addElementToStack","getStacks","startElement","elementIdx","StopsArray","optionsAccessor","GradientStop","arg","defineOptionsAccessors","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","instance$1","easingFunctions","swing","linear","easeOutElastic","asin","AnimationFactory","_items","_options","easing","finish","abort","loop","_stopped","wallTime","easingPosition","PathParser","BaseNode","srcElement","observe","removeSelf","invalidate","Surface$2","Observable$$1","Surface","_kendoExportVisual","exportVisual","_handler","_mousemove","_visual","_enableTracking","draw","domNode","_kendoNode","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","padding","_surfacePoint","coord","inverseTransform","renderAttr","renderAllAttr","attrs","renderStyle","NODE_MAP","SVG_NS","NONE","styleAttr","replaceStyleAttr","restoreStyleAttr","styleString","applyStyle","renderSVG","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","renderSVG$1","DefinitionMap","isDefinition","BaseNode$$1","definitions","clearDefinitions","childNode","createDefinitions","attachTo","setElement","childElement","renderChildren","updateDefinition","allAttr","allCss","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","getElementsByTagName","hashIndex","GradientStopNode","Node$$1","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","GradientNode$$1","RadialGradientNode","ClipNode","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","RootNode","defs","firstElementChild","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","BUTT","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","undefined","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","ArcNode","PathNode$$1","CircleNode","GroupNode","ImageNode","mapPosition","mapSource","renderPosition","renderSource","MultiPathNode","RectNode","ENTITY_REGEX","decodeEntities","TextNode","setY","renderContent","renderTextAnchor","rtl","Surface$3","BaseSurface","_root","_template","_rootElement","ctm","getScreenCTM","alignToScreen","mouseover","mouseout","visual","svgStyles","NODE_MAP$2","renderPath","ctx","prevOut","bezierCurveTo","Node$2","initClip","clearClip","setClip","beginPath","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","GroupNode$2","renderTo","RootNode$2","canvas","getContext","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","shape","_quadNode","pointShapes","QuadNode","QuadRoot$$1","inBounds","nodeRect","nodeBottomRight","inserted","halfWidth","halfHeight","ROOT_SIZE","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","levelWeight","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","PathNode$2","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","gradient","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","strokeStyle","lineWidth","mozDash","webkitLineDash","ArcNode$2","CircleNode$2","ImageNode$2","onLoad","onError","crossOrigin","onload","onerror","drawImage","MultiPathNode$2","RectNode$2","TextNode$2","textAlign","fillText","strokeText","instance$2","support$1","Surface$4","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","rootElement","loadingStates","resolveDataURL","toDataURL","currentShape","_currentShape","hasDocument","SurfaceFactory","implementation","hasFeature","preferred","exportGroup","rootGroup","exportRoot","svg$1","slice$1$1","thing","KENDO_PSEUDO_ELEMENT","IMAGE_CACHE","nodeInfo","microsoft","TextRect","Text$$1","_pdfRect","setCSS","cloneNodes","$el","$clone","dive","canvases","canvas$$1","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","tok","skip_ws","read_stop","to1","to2","num","parseAngle","read_linear_gradient","read_url","splitProperty","last$$1","in_paren","in_string","looking_at","getFontURL","getFontHeight","getFontFaces","doc","styleSheets","doStylesheet","ss","cssRules","ex","styleSheet","family","bold","italic","findFonts","addRule","addRules","incCounter","inc","resetCounter","doCounters","def","updateCounters","counterReset","counterIncrement","parseColor$1","whenImagesAreActuallyLoaded","pending","images","cacheImages","urls","getComputedStyle$1","bg","alphaNumeral","pushNodeInfo","decoration","createsStackingContext","_stackingContext","popNodeInfo","updateClipbox","_clipbox","pseudoElt","defa","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","getBorderRadius","sanitizeRadius","getContentBox","wt","wr","wb","wl","radiansToDegrees","setTransform$1","setClipping","clipPath","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","formatCounter","evalPseudoElementContent","displayCounter","getAllCounters","getCounter","getCssText","_renderWithPseudoElements","fake","pseudo","saveClass","_renderElement","kind","place","psel","backgroundColor","textOverflow","saveTextOverflow","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","boxes","innerbox","getClientRects","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","adjustBoxes","drawOneBox","_avoidLinks","selectNodeContents","_pdfLink","listStyleType","listStylePosition","_drawBullet","bullet","boxSizing","renderElement","elementIndex","fontSize","lineHeight","paddingRight","fontFamily","disc","circle","square","drawBullet","clipit","isFormField","exportDOMVisual","wrap$$1","maybeRenderWidget","renderContents","drawEdge","Wtop","Wleft","Wright","rl","rr","transform$$1","drawRoundCorner","ri","drawOneBackground","background","drawBackgroundImage","pxlen","scaledAngle","atan","implicit","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","isFirst","isLast","drawBackground","shouldDrawLeft","shouldDrawRight","inv","renderImage","zIndexSort","sa","sb","za","zb","pa","renderFormField","tag","renderCheckbox","whiteSpace","selectedOptions","getSelectedOption","serializer","XMLSerializer","serializeToString","svg$$1","serializeSVG","floats","renderText","floating","isJustified","columnCount","textTransform","estimateLineLength","prevLineBottom","underline","lineThrough","overline","underlineOffset","forEachRect","underlinePos","drawTextLine","doChunk","selectNode","clientRects","actuallyGetRangeBoundingRect","rectangles","Infinity","origStart","setStart","setEnd","findEOL","eol","startOffset","cc","drawText","textBox","ypos","getTransform","main","_dom_zIndex","groupInStackingContext","mmul","a1","b1","d1","e1","a2","b2","d2","exportImage","surfaceOptions","exportSVG","vAlign","vStack","vWrap","fit","rectSize","drawDOM","defineFont","doOne","cls","avoidLinks","classList","forceBreak","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","makeTemplate","pages","_destructive","adjust","tfoot","ol","li","beforePageBreak","doPageBreak","splitElement","makePage","pageNum","keepTogether","tableLayout","bottomPadding","bottomBorder","saveAdjust","breakAtElement","fall","fallsOnMargin","splitText","firstInParent","colgroup","thead","gridHead","querySelector","repeatHeaders","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","pageClassName","available","nextnode","findEOP","endOffset","handlePageBreaks","canceled","TOOLTIP_CLOSE_TEMPLATE","SurfaceTooltip","_tooltipOptions","popupOptions","_openPopupHandler","_bindEvents","hideDelay","_showHandler","_showEvent","_surfaceLeaveHandler","_surfaceLeave","_mouseleaveHandler","_mousemoveHandler","_hideClick","_tooltipLeave","getPopup","shared","_tooltipShape","tooltip","_updateContent","tooltipOffset","_instance","surfaceOffset","_showTimeout","_autoHide","_measure","_closeButton","_popupRelatedTarget","DrawingSurface","_triggerInstanceHandler","_triggerInstanceEvent","_bindHandler","hideTooltip","_tooltip","showTooltip","geometryTransform","__common_getter_js","ARC","AXIS_LABEL_CLICK","BLACK","CIRCLE","CROSS","DATE","DEFAULT_FONT","DEFAULT_PRECISION","FORMAT_REGEX","INSIDE","MIN_VALUE","NOTE_CLICK","NOTE_HOVER","NOTE_LEAVE","OUTSIDE","ROUNDED_RECT","TRIANGLE","WHITE","constants","COORD_PRECISION","DEFAULT_HEIGHT","DEFAULT_WIDTH","HIGHLIGHT_ZINDEX","DEFAULT_SERIES_OPACITY","SPACE_REGEX","alignPathToPixel","clockwise","angle1","angle2","isObject","styleValue","SIZE_STYLES_REGEX","isSizeField","getSpacing","defaultSpacing","TemplateService","getTemplate","userImplementation","HashMap","_key","TRIGGER","InstanceObserver","handlerMap","callObserver","fnName","requiresHandlers","FontLoader","setDefaultOptions","sparseArrayLimits","fetchFonts","fonts","depth","loadFonts","Promise","preloadFonts","DELETED","LegacySet","_index","_values","has","delete","SetWrapper","Set","autoMajorUnit","relativeValue","theta","cosT","sinT","onCircle","Box","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","targetCenter","shrink","dw","dh","unpad","getHash","overlaps","r1","rotatePoint","r2","r3","r4","toRect","hasSize","sizeFunc","Ring","innerRadius","middle","newRadius","radianAngle","ax","ay","adjacentBox","sector","midAndle","midPoint","hw","hh","ca","vector","startVector","endVector","dist","getBBox","angles","allAngles","numericComparer","startAngleIndex","endAngleIndex","Sector","ShapeBuilder","createRing","innerEnd","ChartElement","initUserOptions","currentChild","getRoot","getSender","service","getService","chartService","translateChildren","childrenCount","renderVisual","createVisual","addVisual","createAnimation","renderComplete","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","sibling","matched","hasHighlight","highlight","createHighlight","toggleHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","category","runningTotal","createGradientOverlay","gradientOptions","overlay","createGradient","supportsPointInactiveOpacity","BoxElement","shrinkToFit","hasSetSize","borderWidth","border","reflowPaddingBox","paddingBox","contentBox","hasBox","visualStyle","ShapeElement","pointData","getElement","borderRadius","visualOptions","RADIAL","GRADIENTS","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","RootElement","rootOptions","gradients","currentBox","createBackground","drawingGradient","hashCode","usedSpace","currentStops","currentStop","innerRadialStops","cleanGradients","FloatElement","_initDirection","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupOptions","maxGroupElementsSize","groupsCount","groupsStart","groupElements","groupElementsCount","elementSize$$1","groupElementStart","elementBox","groupElementsSize","DrawingText","rectToBox","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","Title","_textBox","collapseVerticalMargins","prevBox","buildTitle","defaultOptions","titleOptions","orderTitles","titles","AxisLabel","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","alignEnd","distanceLeft","distanceRight","alignCenter","Note","childAlias","noteTemplate","auto","aliasFor","wrapperBox","lineStart","line","linePoints","createLine","defaultVisual","eventArgs","over","current$1","IntlService","FORMAT_REPLACE_REGEX","FormatService","intlService","_intlService","formatString","intl","localeAuto","locale","current$2","ChartService","chart","isPannable","pannable","lock","DomEventsBuilder","services","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","labelContext","createAxisLabel","clearTitle","lineBox","axisX","axisY","visualSize","notes","parseNoteValue","note","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","altAxis","axes","slotX","slotY","getSlot","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelBox","labelOffset","labelX","labelY","autoRotateLabelAngle","slotWidth","limit","labelAngle","idx$1","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","startPosition","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","limitRange","rangeSize","minValue","maxValue","valueRange","seriesMin","seriesMax","lineDir","lineInfo","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","justified","prepareUserOptions","axisCrossingValue","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_SECOND","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","years","weeks","absoluteDateDiff","addTicks","ticks","toDate","startOfWeek","daysToSubtract","addDuration","dateValue","roundedDate","setMinutes","tzDiff","addHours","setSeconds","setMilliseconds","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","parseDates","dates","CategoryAxis","_ticks","categoriesHash","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","totalRangeIndices","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","_hash","hasMinor","filterOutOfRangePositions","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","minDelta","maxDelta","zoomRange","totalMin","totalMax","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","mapCategories","map$$1","COORDINATE_LIMIT","DateLabelFormats","BASE_UNITS","FIT","categoryRange","EmptyDateRange","displayIndices","displayRange","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","_indices","minIdx","maxIdx","upper","roundedStep","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","span","autoBaseUnitSteps","maxDateGroups","autoUnit","autoUnitIx","units","totalUnits","initUnit","lastCategory","minDiff","categoryIx","defaultBaseUnit","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","isEmpty","totalLimits","panRange","datesRange","indicesRange","autoBaseUnitStep","maxDiff","rangeDiff","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","position$1","autoRotateRangeLabels","hideOverlappingLabels","firstRangeLabel","lastRangeLabel","i$1","rangeLabel","unitFormat","dateFormats","createLabel","rotateLabel","dateRange","limitCoordinate","MIN_VALUE_RANGE$1","NumericAxis","autoOptions","narrowRange","autoMin","narrow","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","axisOptions","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","getValue","isValidRange","ratio","remainder","DateValueAxis","timeUnits","baseUnitTime","actualUnits","unitsToAdd","head","tail","applyDefaults","axisCrossingValues","limittedRange","MIN_VALUE_RANGE$2","LogarithmicAxis","logMaxRemainder","autoAxisMax$1","autoAxisMin$1","throwNegativeValuesError","initRange","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","minorOptions","_minorIntervalOptions","minorStep","GridLinesMixin","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","RadarCategoryAxis","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","PolarAxis","instanceOptions","RadarNumericAxisMixin","polarAxis","bandStyle","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","angularDistance","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarLogarithmicAxis","CurveProcessor","dataPoints","tangent$1","Gradients","classArray","convertableToNumber","field$1","hasClasses","interpolateValue","mousewheelDelta","predicate","autoTextColor","createHashSet","supported","defaultErrorHandler","lteDateIndex","sortedDates","high","SASS_THEMES","ExportMixin","skipLegacy","exportPDF","imageDataURL","Point2D","Box2D","mwDelta","BAR_GAP","BAR_SPACING","SANS","SANS12","SANS16","TRANSPARENT","boxPlotSeries","outliersField","meanField","_brightness","downColor","whiskers","mean","median","bulletSeries","waterfallSeries","seriesDefaults","area","markers","rangeArea","verticalRangeArea","bar","boxPlot","bubble","candlestick","column","heatmap","pie","donut","funnel","horizontalWaterfall","ohlc","radarArea","radarLine","polarArea","polarLine","rangeBar","rangeColumn","scatterLine","verticalArea","verticalBoxPlot","verticalBullet","verticalLine","waterfall","chartBaseTheme","axisDefaults","categoryAxis","subtitle","legend","autoTheme","unsetColor","theme","hook","seriesTemplate","mapColor","varName","queryStyle","setInactiveOpacity","seriesTypes","inactiveOpacity","defaultFont","titleFont","paneTitleFont","labelFont","seriesPos","TEXT","SERIES","gaugeBaseTheme","diagramBaseTheme","shapeDefaults","hover","handles","selectable","connectionDefaults","tools","registerTheme","themeName","gauge","diagram","treeMap","fuse","arr1","arr2","inactiveItems","errorBars","scatter","chartArea","seriesColors","crosshair","rangePlaceholderColor","connectorDefaults","thumb","connectors","INACTIVE","INACTIVE_SHAPE","AXIS","PRIMARY","DIAGRAM_HOVER","noteStyle","sass","datavizConstants","GeometryPoint","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","Aggregates","sumOrNull","avg","getField","row","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","initialValue","srcFields","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","valueGetter","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","globalRange","standardError","getStandardError","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","BORDER_BRIGHTNESS","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","X_ERROR_LOW_FIELD","X_ERROR_HIGH_FIELD","Y_ERROR_LOW_FIELD","Y_ERROR_HIGH_FIELD","INTERPOLATE","GAP","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","PYRAMID","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","LEGEND_ITEM_CLICK","LEGEND_ITEM_HOVER","LEGEND_ITEM_LEAVE","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_CLICK","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT_END","RENDER","SHOW_TOOLTIP","HIDE_TOOLTIP","PANE_RENDER","LOGARITHMIC","CATEGORY","INSIDE_END","INSIDE_BASE","OUTSIDE_END","MOUSEWHEEL","MOUSEWHEEL_DELAY","DRILLDOWN","DRILLDOWN_FIELD","GLASS","TOOLTIP_OFFSET","LINE_MARKER_SIZE","MOUSEWHEEL_ZOOM_RATE","ErrorBarBase","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","evalOptions","dryRun","needsEval","excluded","seriesCount","CategoricalChart","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","addErrorBar","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","owner","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","currentSeries","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","axisIndex","_outOfRangeCallback","seriesIx$1","currentCategory","_bindPoint","seriesIx$2","outOfRangePoint","_bindCache","bindCache","formatPointValue","PointEventsMixin","NoteMixin","createNote","LinePoint","tooltipTracking","_rendered","createMarker","labelText","formatValue","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","highlightVisual","halfSize","tooltipAnchor","clipBox","verticalAlign","horizontalAlign","overlapsBox","unclipElements","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","StepLineMixin","calculateStepPoints","stepAxis","stepDir","previousPoint","toGeometryPoint","stepPoint","lintPoint","StepLineSegment","SplineSegment","curve","LineChartMixin","renderSegments","_segments","sortedPoints","sortPoints","pointCount","seriesMissingValues","createSegment","_addSegment","missingValues","nearestPoint","allPoints","nearestPointDistance","ClipAnimation","_setEnd","setX","anyHasZIndex","ClipAnimationMixin","_setChildrenAnimation","animationPoints","LineChart","AreaSegment","prevSegment","stackPoints","createFill","createStroke","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","_outOfRangeMinPoint","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","chartAxisRanges","chartRange","BarLabel","alignToClipBox","parentBox","hasGradientOverlay","Bar","rectVisual","createRect","strokeOpacity","getBorderColor","baseColor","borderColor","ClusterLayout","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","negativeColor","cluster","getStackWrap","stackWrap","stackGroup","wraps","_stackGroup","zeroSlot","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","areNumbers","CandlestickChart","splitValue","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","reflowWhiskerSlot","medianSlot","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","markersBorder","reflowOutliers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","xAxis","yAxisName","yAxis","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","seriesItem","wrapData","bulletOptions","BaseTooltip","getStyle","pointColor","paddingBottom","tooltipOptions","CrosshairTooltip","formatService","initAxisName","showAt","stickyMode","formattedValue","getAnchor","ref_options","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","ID","appendAxis","appendAxisAt","appendChart","removeAxis","removeChart","allAxes","vGridLines","hGridLines","notifyRender","axisValueField","length$1","axis$1","lineBox$1","paneIndex","appendIfNotNull","segmentVisible","pointVisibility","bindSegments","equalsIgnoreCase","filterSeriesByType","getDateField","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","hasValue$1","findNext","pointHasValue","outPoint","getter$$1","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","_outOfRangeMaxPoint","PlotAreaBase","initSeries","crosshairs","originalOptions","createPanes","createCrosshairs","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","active","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","any","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","shrinkAxisWidth","axisGroupBox","overflowX","shrinkAxisHeight","shrinked","overflowY","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","allPaneAxes","chartPane","remainingHeight","autoHeightPanes","percents","currentPane$1","i$2","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isSingleAxis","PlotAreaEventsMixin","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","setValue","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","_createLabel","labelTo","RangeBarChart","plotLimits","RangeLinePoint","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","srcSeries","processedSeries","_currentPointsCache","_seriesPointsCache","axisPane","categoryField","aggregateSeries","filterSeries","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","getFn","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","firstSeries","categoryAxes","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","targetOptions","axesOptions","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","altKey","toChartAxisRanges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","elementOffset$$1","selectionPosition","_updateAxisRanges","limitValue$1","MousewheelZoom","rate","updateRanges","LegendLayout","legendItem","LegendItem","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","HORIZONTAL","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","hasItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","layout","PlotAreaFactory","_registry","registry","createDiv","closestHandle","Selection","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderLeftWidth","borderRightWidth","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","tap","_gesturestart","_gesturechange","gestureend","_gestureend","_mwTimeout","_state","_rangeEventArgs","_value","_pointInPane","modelCoords","_toModelCoordinates","bodyRect","inBody","moveTarget","oldRange","rightClick","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","slotCenter","BarChartAnimation","fromScale","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","xAxisOptions","yAxisOptions","createXYAxis","inferredDate","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","xAxesOptions","yAxesOptions","axisPane$1","xValues","yValues","updateAxisOptions$1","PieSegment","themeLabels","animationDelay","labelsOptions","labelsDistance","lp","labelHeight","labelWidth","createSegmentVisual","borderOptions","singleSegment","tooltipAlignment","RAD_30","RAD_60","PieChartMixin","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","_takeDistance","amount","boxX","labelDistance","boxY","hAlignLabel","_connectorLines","connectorsColor","connectorLine","centerPoint","sr","crossing","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","sector_center","uat","ub","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","currentSeries$1","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","PolarAreaChart","_hasMissingValuesGap","xComparer","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","isFirstDataPoint","isLastDataPoint","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","createPath","FunnelChart","labelPadding","dynamicSlopeReflow","totalHeight","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","dynamicHeight","PyramidChart","FunnelPlotArea","createChart","chartType","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","HeatmapChart","setRange","minLightnessOffset","hsl","colorScale","indexX","indexY","xRange","yRange","ref$2","xIndex","yIndex","xIn","yIn","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","firstCategory","updateAxisOptions$2","COLOR","FIRST","MAX","MIN","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","_initSurface","fontLoaded","_redraw","_attachEvents","_setElementClass","seriesCopies","aliases","alias","resolveAxisAliases","applySeriesColors","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","_sharedTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","exportOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","drag","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","themeAxisDefaults","mapAxisOptions","axisColor","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","seriesColor","_createPlotArea","_modelOptions","skipSeries","selections","_selectStart","_selectEnd","_clickHandler","_mouseover","_mouseout","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_startDrilldown","obj$1","_shouldAttachMouseMove","_hoveredPoint","_plotAreaHovered","_stopChartHandlers","_gestureDistance","_zooming","mousewheelZoom","previousGestureDistance","_drawingChartElement","leave","_startNavigation","_suppressHover","ranges$1","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_showInactiveOpacity","_displayTooltip","_displayInactiveOpacity","activePoint","multipleSeries","highlightPoints","chartInstance","_activeChartInstance","_chartInstanceFromPoint","_updateSeriesOpacity","_applySeriesOpacity","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","_updateHoveredPoint","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","activeSeries","_activePoint","hasInactiveOpacity","_hasInactiveOpacity","_hideInactiveOpacity","hasDefaultInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","bindCategoryAxisFromSeries","uniqueCategories","bindable","dataIx","dataRow","srcDates","sortDates","uniqueDates","rowCount","rowIx","colCount","colIx","transpose","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","DATA_FIELDS","fieldValue","originalValue","nullValue","BREADCRUMB","ARIA_HIDDEN","CLICK","BLUR","KEYDOWN","DOT","breadcrumbStyles","textboxWrapper","link","delimiter","rootItem","rootLink","overflowIcon","focused","hidden","inputWrapper","Breadcrumb","_editable","bindToLocation","_resizeHandler","navigational","rootIcon","delimiterIcon","rootTitle","_update","_generateSegments","_split","_path","previousDomItems","prevAll","previousItems","_getItems","isRoot","_edit","oldValue","shouldRestoreValue","isEnter","isEsc","isNavigational","canNavigate","_wrapperKeydown","_wrapperClick","_wrapperFocus","_wrapperBlur","elementIsInput","isLastSegment","isOnlyRoot","showIcon","showText","itemClass","linkClass","renderDelimiter","itemTemplate","linkClasses","iconElm","delimiterElm","encoded","linkElm","_displayOverflowIcons","_shrinkItems","lastHidden","delimiterWidth","availableWidth","_showItem","overlayWidth","_stretchItems","trail","ChartBreadcrumb","_attachChartEvents","_renderBreadcrumb","breadcrumb","_onChartDrilldown","_onChartDrilldownLevelChange","resetDrilldownLevel","getKendoChart","breadcrumbElement","_onBreadcrumbClick","findIndex","KendoChart","MOUSELEAVE_NS","DRILLDOWN_LEVEL_CHANGE","DATABOUND","LEAVE","ChartInstanceObserver","legendItemClick","_seriesVisibility","SeriesVisibilityState","_initDataSource","_bindSeries","_bindCategories","_getThemeOptions","_sourceSeries","setDataSource","_hasDataSource","_onDataChanged","_dataChangeHandler","_hasData","_destroyCrosshairTooltips","findSeries","ChartSeries","findSeriesByName","_createSeries","findSeriesByIndex","originalChartArea","_seriesOptions","_initChart","_createChart","_isRtl","_onInit","_initTooltip","tooltips","_crosshairTooltips","_getCrosshairTooltip","_showTooltip","_hideTooltip","_onRender","_copyMembers","_tooltipleave","_onLegendItemClick","_legendItemClick","_onDrilldown","drilldownSeriesFactory","resolved","_onDrilldownData","drilldownSeries","_bindData","groupedSeries","grouped","seriesVisibility","applyByGroup","applyByIndex","seriesData","_groupIx","categoriesData","_bindCategoryAxis","proxyMembers","createProxyMember","nameTemplate","seriesClone","legacyTemplate","groupNameTemplate","_groupValue","PDFMixin","persistSeriesVisibility","saveState","geom","mobileScrollerSelector","_mobileScroller","_closeTooltipHandler","_closeTooltip","_clearShowTimeout","sharedTemplate","colspan","colorMarker","nameColumn","sharedTemplateIterator","_ensureElement","showTimeout","fakeContainer","normalizeStyle","_sharedContent","_pointContent","forceHide","_hideElement","fadeOut","always","tooltipTemplate","xLow","xHigh","yLow","yHigh","_chart","_filterPoints","_clearFields","toggleVisibility","_filterData","DrawingGroup","DrawingPath","ANGULAR_SPEED","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","Path$1","buildLabelElement","styleGeometry","styleBox","getRange","Gauge","contextService","pointerValue","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","defaultSize","_defaultSize","Path$2","Group$2","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","track","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","Point$1","Path$3","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","Group$3","Path$4","BarLinearPointer","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","Group$1","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","pointerType","plotAreaBox","scaleBox","GEO_ARC_ADJUST_ANGLE","Path$5","Group$5","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","Group$6","Path$6","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","Group$4","RadialGauge","_initialPlotArea","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","geometry$$1","setEndAngle","setStartAngle","addRange","RangePointerAnimation","startColor","currentColor","RangePointer","rangeColor","ArcGauge","centerLabelPosition","yLimit","CircularGauge","lowerName","_createInstance","_copyFields","gaugeType","_gaugeType","RadialGaugeWidget","LinearGaugeWidget","ArcGaugeWidget","_centerTemplate","_centerElement","centerTemplate","centerElement","_getCenterElement","CircularGaugeWidget","createExportMethod","exportMethods","numberRegex","alphanumericRegex","getNext","Encoding","quietZoneLength","addQuietZone","initValue","addData","addCheckSum","invalidCharacterError","character","encodings","code39Base","minBaseUnitLength","addStart","addCharacter","pushCheckSum","prepareValues","charData","characterMap","addBase","code39ExtendedBase","addExtended","extendedMappings","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","code39","checkSumMod","minRatio","maxRatio","gapWidth","splitCharacter","patternString","minBaseUnit","minHeight","getBaseUnit","getBaseWidth","characterLength","addPattern","addCharacterGap","patternMappings","w","B","W","A","C","I","J","N","O","P","R","S","U","V","code39extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","code93","cCheckSumTotal","kCheckSumTotal","setBaseUnit","TERMINATION_BAR","checkValues","_getCheckValues","checksum","_findCharacterByValue","cValue","wightedSum","weightedValue","code93extended","state128","encoding","state128AB","FNC4","states","_initMoves","isCode","encodingState","_moves","maxLength","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","SHIFT","states128","next4","dependentStates","_initSubStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","validate","getAI","unsupportedAIError","applicationIdentifiers","multiKey","ids","code128Base","_initStates","checkSum","getNextState","STOP","code128a","code128b","code128c","code128","msiBase","checkSumLength","checkSums","checkSumType","Modulo10","evenSum","oddSum","odd","Modulo11","checkValue","weightedSum","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","msimod10","msimod11","msimod1110","msimod1010","code11","kCheckSumMinLength","DASH_VALUE","DASH","getWeightedSum","kValue","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean13","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","keyTable","arrToAdd","limitedHeight","even","ean8","Barcode","surfaceWrap","_setOptions","_render","textToDisplay","textMargin","barHeight","_getBackground","_getText","_bandsGroup","_getBands","_textbox","terminator","NUMERIC","ALPHA_NUMERIC","BYTE","powersOfTwo","powersOfTwoResult","generatorPolynomials","irregularAlignmentPatternsStartDistance","versionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaRegex","alphaNumericRegex","byteRegex","crossPattern","squarePattern","toDecimal","toBitsString","splitInto","QRDataMode","getVersionIndex","getBitsCharacterCount","bitsInCharacterCount","getModeCountString","modeIndicator","getStringBitsLength","modes","inputLength","mod3","characters","mode","modeInstances","FreeCellVisitor","startColumn","getNextCell","getNextRemainderCell","fillFunctionCell","matrices","bit","fillDataCell","fillData","blocks","block","codewordIdx","cellVisitor","blockIdx","padDataString","dataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","xorPolynomials","multiplyPolynomials","multiplyByConstant","generatePowersOfTwo","firstPolynomial","secondPolynomial","generateGeneratorPolynomials","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","steps","errorCodewords","getBlocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","chooseMode","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","previousMode","modeString","numeric","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","getModes","nextMode","getDataCodewordsCount","getVersion","dataCodewordsCount","errorCorrectionLevel","getDataString","encodeFormatInformation","encodedString","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","dividePolynomials","numberX","numberY","yLength","xLength","getNumberAt","initMatrices","modules","addFormatInformation","encodeVersionInformation","addVersionInformation","quotient","mod","addCentricPattern","addFinderSeparator","nextX","nextY","addFinderPatterns","addAlignmentPatterns","startDistance","addTimingFunctions","scoreMaskMatrixes","scores","previousBits","darkModules","adjacentSameBits","scoreFinderPatternOccurance","scoreAdjacentSameBits","calculateDarkModulesRatioScore","rowColumn","adjacentBits","mod5","EncodingResult","IsoEncoder","getEncodingResult","inputString","UTF8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","bc","significantOnes","QRCodeDataEncoder","encodeData","encodingResult","versionInformation","optimalMatrix","QRCodeDefaults","DEFAULT_SIZE","QUIET_ZONE_LENGTH","DEFAULT_ERROR_CORRECTION_LEVEL","DEFAULT_BACKGROUND","DEFAULT_DARK_MODULE_COLOR","MIN_BASE_UNIT_SIZE","QRCode","quietZoneSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","imageUrl","crossSize","crossOffset","_renderShape","matrixSize","defautLogoSize","QRCodeFunctions","QRCodeFields","FadeOutAnimation","_initialOpacity","NavigatorHint","chartPadding","scroll","minPos","clearHideTimeout","_visible","tooltipStyle","borderTopWidth","_hideTimeout","_hideAnimation","NAVIGATOR_PANE","NAVIGATOR_AXIS","DEFAULT_PANE","Navigator","chartObserver","clean","_redrawSelf","initSelection","mainAxis","axisClone","ClonedObject","selectStart","selectEnd","filterAxes","redrawSlaves","slavePanes","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","user","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","_seriesCount","copyNavigatorCategories","KendoStockChart","StockInstanceObserver","navigatorFilter","navigatorCreated","_initNavigatorOptions","navigatorOptions","isTouch","isFirefox","hasServerFiltering","hasSelect","dummyAxis","buildFilter","_onNavigatorCreated","_navigator","_initNavigatorDataSource","dsOptions","_navigatorDataChangedHandler","_onNavigatorDataChanged","_navigatorDataSource","_bindNavigatorSeries","naviCategories","axesLength","_removeNavigatorDataSource","_onNavigatorFilter","navigatorDataSource","SharedTooltip$1","NO_CROSSHAIR","wrapNumber","Sparkline","_initialWidth","stage","displayState","_autoWidth","inline","_calculateWidth","currentChart","pointWidth","normalizeOptions","KendoSparkline","SparklineTooltip","renderPos","renderSize","sqr","romanToArabic","memoize","isUnicodeLetter","RX_UNICODE_LETTER","withExit","Return","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","loc","datum","greatCircleTo","bearing","datums","WGS84","fromLat","fromLng","dToR","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","fromLngLat","ll","fromLatLng","Extent","nw","se","containsAny","locs","include","includeAll","edges","sw","extent","World","Attribution","_extent","_itemText","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","button","BUTTONS","_keyroot","panStep","_pan","ZoomControl","zoomStep","exp","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","centralMeridian","clamp","proj","lng0","_projectLat","ecc","ts","con","inverse","_inverseY","ecch","phi","dphi","SphericalMercator","Equirectangular","EPSG3857","_proj","_tm","_itm","toLocation","crs","EPSG3395","EPSG4326","projections","layers","Layer","_beforeReset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","ShapeLayer","_initRoot","_markers","_dataChange","_translateSurface","_load","_clearMarkers","_loader","GeoJSONLoader","shapeCreated","cancelled","_createMarker","layer","featureCreated","_panning","locationToView","locator","defaultStyle","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","geojson","features","geometries","BubbleLayer","locationField","opt","scaleType","_scaleType","_createSymbol","_drawSymbol","scales","symbols","SqrtScale","domain","_domain","domainRange","outputRange","_ratio","rel","geo","drawingUtil","TileLayer","subdomains","viewType","_viewType","locationToLayer","viewOrigin","tileTitle","_updateView","TileView","extentToPoint","pool","TilePool","tileSize","urlTemplate","_center","_viewOrigin","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","_tileTitle","tile","createTile","currentIndex","tileOptions","wrapIndex","roundPoint","subdomain","errorUrlTemplate","wrapValue","ImageTile","errorUrl","urlResult","urlOptions","quadkey","_create","maxDist","BingLayer","_scheme","_onMetadata","_fetchMetadata","imagerySet","uriScheme","resourceSets","resource","resources","imageUrlSubdomains","zoomMin","zoomMax","_addAttribution","BingView","imageryProviders","coverageAreas","tileQuadKey","digit","quadKey","bing","MarkerLayer","_markerClick","titleField","_addOne","Marker","addTo","getLocation","getTitle","renderTooltip","contentTemplate","contentUrl","Map","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","controls","layerDefaults","markerDefaults","wraparound","scroller","zoomControl","_setExtent","_getExtent","_layerSize","layerToLocation","viewToLocation","eventOffset","eventToView","eventToLayer","eventToLocation","_setOrigin","_origin","layerWidth","layerHeight","_zoomAround","pivot","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPos","posSelector","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","_scrollOffset","_panComplete","_panEndTS","_scaleToZoom","gestureCenter","centerLocation","tiles","_resetScroller","xBounds","yBounds","_renderLayers","scrollWrap","toZoom","fromZoom","Utils","isNearZero","isDefined","isUndefined","isBoolean","isType","simpleExtend","initArray","serializePoints","res","deserializePoints","randomInteger","DFT","getMatrixAngle","getMatrixScaling","findAngle","sngXComp","sngYComp","findRadian","thisRef","what","fold","constraint","bisort","sortfunc","Easing","Ticker","adapters","lastTime","_this","timerDelegate","onTimerEvent","addAdapter","onComplete","removeHandler","caller","onStep","seekTo","seekFromTo","intervalId","initState","propagate","movement","Range","rangeIntegerScale","plus","minus","times","lengthSquared","middleOf","toPolar","useDegrees","factor","halfpi","Polar","isOnLine","o1","u1","inflate","xy","PathDefiner","rotatedBounds","staicPoint","adornerCenter","thisCenter","scaled","rectBottomRight","intersectLine","start1","end1","start2","end2","isSegment","tangensdiff","Empty","Intersect","rectWithLine","rects","reverseAngle","RectAlign","alignValues","_singleAlign","_left","_right","stretch","_stretch","_top","_middle","_bottom","alignCalc","applyRect","fromSVGMatrix","vm","fromMatrixVector","fromList","translation","scaling","nums","MatrixVector","fromMatrix","randomId","Geometry","_distanceToLineSquared","pt1","pt2","vx","vy","distanceToLine","distanceToPolyline","minimum","HashTable","_buckets","_createGetBucket","_bucketExists","containsKey","hashId","hashes","_hashes","bucket","ht","_hashString","_objectHashId","_hashId","Dictionary","dictionary","_hashTable","forEachValue","forEachKey","Queue","enqueue","kv","links","outgoing","incoming","weight","associatedShape","shortForm","isVirtual","isIsolated","isLinkedTo","getComplement","getChildren","getParents","balance","adjacentTo","removeLink","hasLinkTo","degree","incidentWith","getLinksWith","getNeighbors","neighbors","Link","connection","sourceFound","targetFound","associatedConnection","getCommonNode","isBridging","v1","v2","getNodes","changeSource","changeTarget","changesNodes","oldSource","oldTarget","directTo","createReverseEdge","reversed","Graph","idOrDiagram","_nodeMap","_hasCachedRelationships","cacheRelationships","forceRebuild","assignLevels","startNode","visited","getConnectedComponents","componentIndex","setItemIndices","componentId","_collectConnectedNodes","components","addNodeAndOutgoings","setIds","nodeIndex","nextId","calcBounds","getSpanningTree","_addNode","levelCount","ni","cn","newLink","addLink","treeLevels","takeRandomNode","excludedNodes","incidenceLessThan","isHealthy","hasNode","sourceOrLink","addExistingLink","foundSource","getNode","addNode","foundTarget","removeAllLinks","hasLink","linkOrId","nodeOrId","_removeNode","removeNode","areConnected","n1","n2","layoutRect","newNode","newLinks","saveMapping","nodeMap","linkMap","nOriginal","nCopy","linkOriginal","linkCopy","linearize","addIds","depthFirstTraversal","foundNode","_dftIterator","breadthFirstTraversal","_stronglyConnectedComponents","excludeSingleItems","lowLinks","connected","component","findCycles","isAcyclic","isSubGraph","otherArray","thisArray","makeAcyclic","oneNode","rev","intensityCatalog","flowIntensity","catalogEqualIntensity","intensity","sourceStack","targetStack","targetLink","sources","si","sourceLink","ril","vertexOrder","kk","reversedEdges","Predefined","EightGraph","Mindmap","ThreeGraph","BinaryTree","levels","createBalancedTree","Linear","Tree","siblingsCount","Forest","trees","createBalancedForest","Workflow","Grid","graphString","previousLink","graph","lin","_addShape","kendoDiagram","undoable","addShape","_addConnection","connect","createDiagramFromGraph","doLayout","randomSize","gli","sourceShape","targetShape","SpringLayout","layoutGraph","limitToView","shi","news","counter","lastAdded","treeCount","createRandomConnectedGraph","nodeCount","maxIncidence","isTree","poolNode","randomAdditions","randomDiagram","shapeCount","normalVariable","Markers","none","arrowStart","filledCircle","arrowEnd","diffNumericOptions","Scale","Translation","toMatrixVector","Length","Rotation","CompositeTransform","_transform","_renderTransform","rotateMatrix","scaleMatrix","translatePoint","AutoSizeableMixin","_setScale","originWidth","_originWidth","originHeight","_originHeight","_setTranslate","_initSize","autoSize","_updateSize","_diffNumericOptions","_originSize","drawingContainer","_hover","_measured","_boundingBox","VisualBase","normalizeDrawingOptions","_fill","getColor","_stroke","strokeOptions","fillOptions","GradientClass","TextBlock","_textColor","_font","_initText","fontOptions","fontStyle","fontWeight","sizeChanged","Rectangle","_initPath","_setPosition","_drawPath","sizeOptions","sizeOptionsOrDefault","MarkerBase","_transformToPath","CircleMarker","positionMarker","targetSegment","ArrowMarker","_linePoints","MarkerPathMixin","_getPath","_normalizeMarkerOptions","startCap","endCap","_removeMarker","_createMarkers","markerType","_positionMarker","_capMap","_redrawMarker","pathChange","pathOptions","pathCapType","optionsCap","_redrawMarkers","_createElements","_setData","Line","Polyline","_updatePath","_pointsDiffer","currentPoints","differ","_initImage","_childrenChange","toFront","toBack","_reorderChildren","toIndex","drawingChildren","fixedPosition","childBoundingBox","_includeInBBox","toDrawingRect","drawingRect","_initCircle","circleOptions","_circle","Canvas","_translate","_viewBox","clearHtml","drawingOptions","Cursors","grip","cross","south","east","west","north","rowresize","colresize","HIT_TEST_DISTANCE","ITEMBOUNDSCHANGE","ROTATED","TARGET","HANDLE_NAMES","PositionAdapter","layoutState","froms","tos","subjects","getShapeById","LayoutUndoUnit","initialState","finalState","_initialState","_finalState","undo","setState","redo","conn","ticker","CompositeUnit","undoUnit","ConnectionEditUnit","redoSource","redoTarget","_redoSource","_redoTarget","_undoSource","_undoTarget","_updateConnector","updateModel","ConnectionEditUndoUnit","undoSource","undoTarget","DeleteConnectionUnit","targetConnector","DeleteShapeUnit","TransformUnit","undoStates","adorner","redoStates","refreshBounds","AddConnectionUnit","AddShapeUnit","deselect","PanUndoUnit","initialPosition","finalPosition","finalPos","RotateUnit","undoRotates","redoRotates","redoAngle","_angle","_innerBounds","_initialize","ToFrontUnit","initialIndices","_toIndex","ToBackUnit","UndoRedoService","capacity","begin","commit","execute","_restart","addCompositeItem","EmptyTool","toolService","tryActivate","getCursor","ScrollerTool","tool","scrollable","movableCanvas","virtualScroll","noMeta","hoveredItem","hoveredAdorner","_hoveredConnector","scrollPos","_storePan","PointerTool","selectSingle","_hitTest","_resizingAdorner","isDragHandle","connections","undoRedoService","SelectionTool","isSelected","selectArea","ConnectionTool","connector","_createConnection","_c","canDrag","connectionHandle","_connectionManipulation","_removeHover","activeConnection","_cachedTouchTarget","cachedTouchTarget","sourceConnector","Shape","getConnector","_syncConnectionChanges","_connectorsAdorner","ConnectionEditTool","isActive","handleName","testKey","ToolService","activeTool","_updateHoveredItem","_activateTool","_updateCursor","updateHovered","keyDown","metaKey","toRemove","_triggerRemove","_syncChanges","_destroyToolBar","_discardNewConnection","selectAll","wheel","zoomRate","zoomOptions","setTool","addToSelection","newConnection","disabledShape","hit","selectedConnections","_selectedItems","Connection","_hitTestItems","_hitTestElements","shapeHit","connectionHit","hitTestShapeConnectors","mainLayer","ConnectionRouterBase","LinearConnectionRouter","hitTest","getBounds","PolylineRouter","CascadingRouter","SAME_SIDE_DISTANCE_RATIO","routePoints","_connectorPoints","_floatingPoints","_resolvedSourceConnector","_resolvedTargetConnector","sourcePoint","targetPoint","_connectorSides","boundsPoint","secondarySign","_connectorSide","sideDistance","minSide","shapeBounds","sides","_sameSideDistance","pointX","pointY","sourceConnectorSide","targetConnectorSide","deltaX","sameSideDistance","shiftX","shiftY","cascadeStartHorizontal","_startHorizontal","sourceSide","AdornerBase","_adorners","ConnectionEditAdorner","_ts","sp","tp","spVisual","epVisual","_initialSource","_initialTarget","sourcePointDistance","targetPointDistance","sourceHandle","targetHandle","modelToLayer","ConnectorsAdorner","_refreshHandler","ctr","_clearVisual","ConnectorVisual","_keepCachedTouchTarget","visualChildren","ResizingAdorner","_manipulating","_initSelection","_createHandles","_internalChange","_rotatedHandler","_resizable","_handleOptions","_bounds","handleBounds","handlesCount","_getHandleBounds","_rotationOffset","_startAngle","_rotates","_positions","initialRotates","initialStates","handleOptions","_sp","_cp","_lp","shapeStates","visibleHandles","dragging","newBounds","staticPoint","dtl","dbr","changed","_truncateAngle","_rotating","shouldSnap","thr","_truncateDistance","hitToOppositeSide","_displaceBounds","newCenter","oldBounds","_truncatePositionToGuides","ruler","truncatePositionToGuides","_truncateSizeToGuides","truncateSizeToGuides","snap","snapOptions","snapAngle","snapSize","_diffStates","_syncShapeChanges","rotationThumb","_rotationThumbBounds","Selector","_ep","_adorn","visualBounds","modelToView","_visualBounds","HyperTree","EPSILON","LayoutBase","subtype","nodeDistance","iterations","horizontalSeparation","verticalSeparation","underneathVerticalTopOffset","underneathHorizontalOffset","underneathVerticalSeparation","componentSpacingX","componentSpacingY","layerSeparation","layeredIterations","startRadialAngle","endRadialAngle","radialSeparation","radialFirstLevelSeparation","keepComponentsInOneRadialLayout","ignoreContainers","layoutContainerChildren","ignoreInvisible","animateTransitions","gridLayoutComponents","maxWidth","startX","resultLinkSet","resultNodeSet","moveToOffset","boundingRect","currentHeight","currentWidth","deltax","deltay","nodeBounds","newpoints","currentHorizontalOffset","transferOptions","DiagramToHyperTreeAdapter","shapeMap","edgeMap","finalNodes","finalLinks","ignoredConnections","ignoredShapes","hyperMap","hyperTree","finalGraph","_renormalizeShapes","_renormalizeConnections","mapConnection","mapShape","getEdge","listToRoot","containerGraph","parentContainer","firstNonIgnorableContainer","isContainer","_isIgnorableItem","isContainerConnection","isDescendantOf","scope","isIgnorableItem","isCollapsed","_isVisible","_isTop","isShapeMapped","leastCommonAncestor","al","xa","xb","_isCollapsed","sink","sourceNode","sinkNode","areConnectedAlready","newEdge","finalNodeSet","LayoutState","initialTemperature","temperature","guessBounds","_expectedBounds","refineStage","_repulsion","_attraction","_shake","rho","_InverseSquareForce","wn","hn","wm","hm","_SquareForce","squareSize","TreeLayoutProcessor","treeGraph","layoutSwitch","layoutLeft","setChildrenDirection","setChildrenLayout","TreeDirection","Width","arrange","layoutRight","layoutUp","layoutDown","treeDirection","layoutRadialTree","previousRoot","maxDepth","calculateAngularWidth","radialLayout","Angle","tipOverTree","startFromLevel","aw","diameter","sectorAngle","sortChildren","basevalue","nl","normalizeAngle","col","deltaTheta","deltaThetaHalf","parentSector","childAngleFraction","setPolarLocation","BoundingRectangle","includeStart","rootDirection","rootLayout","childrenLayout","givenSize","shapeWidth","shapeHeight","AngleToParent","SectorAngle","pp","childrenwidth","selfLocation","male","female","leftcount","tipOverTreeStartLevel","TreeLayout","layoutComponents","getTree","getTreeForRoot","LayeredLayout","_initRuntimeProperties","downstreamLinkCount","upstreamLinkCount","uBaryCenter","dBaryCenter","upstreamPriority","downstreamPriority","gridPosition","_prepare","targetLayer","layerMap","layerCount","sortedNodes","o2","o1layer","o2layer","minLayer","linksTo","_dummify","_optimizeCrossings","_swapPairs","arrangeNodes","_moveThingsAround","_dedummify","setMinDist","minDist","layerIndex","minDistances","getMinDist","i1","i2","placeLeftToRight","leftClasses","leftPos","classNodes","placeLeft","POSITIVE_INFINITY","rightSibling","nodeLeftClass","upNodes","downNodes","neighbor","intDiv","placeRightToLeft","rightClasses","rightPos","placeRight","NEGATIVE_INFINITY","leftSibling","nodeRightClass","_getLeftWing","leftWing","computeClasses","_getRightWing","rightWing","wingPair","currentWing","wing","ndsinl","_nodesInLink","vnode","wings","classIndex","_isVerticalLayout","_isHorizontalLayout","_isIncreasingLayout","_gridPositionComparer","currentNode","currDown","downNode","placed","sequenceStart","virtualStartIndex","_firstVirtualNode","virtualStart","sequence","_sequencer","virtualEnd","nextVirtualNode","virtualEndIndex","adjustDirections","fromLayerIndex","layerIncrement","maximumHeight","prevBridge","prevBridgeTarget","nextBridge","nextBridgeTarget","getNeighborOnLayer","clayer","j1","j2","_sequenceSingle","combineSequences","pair","leftHeap","_positionDescendingComparer","rightHeap","_positionAscendingComparer","leftRes","rightRes","leftClass","_getComposite","rightClass","it","layoutLayer","gridPos","iconsidered","considered","n1Priority","n2Priority","nodeGridPos","nodeBaryCenter","calcBaryCenter","nodePriority","moveRight","moveLeft","calcDownData","calcUpData","priority","rightNode","rightNodePriority","leftNode","leftNodePriority","mapVirtualNode","nodeToLinkMap","linkToNodeMap","addLinkBetweenLayers","upLayer","downLayer","oLayer","dLayer","oPos","dPos","depthOfDumminess","dedum","prevLink","moves","iter","optimizeLayerCrossings","presorted","n1BaryCenter","n2BaryCenter","compareByIndex","compareValue","inode","maxIterations","downwards","secondPass","hasSwapped","calcCrossings","memCrossings","crossBefore","countLinksCrossingBetweenTwoLayers","node1","node2","node1GridPos","node2GridPos","crossAfter","ulayer","dlayer","link1","link2","n11","n12","n21","n22","l1","l2","crossings","n11gp","n12gp","numerator","denominator","graphOrNodes","diagramOrGraphOrNodes","GraphAdapter","KBUTTONICON","HTMLButton","iconElement","_textElement","spriteCssClass","newSpan","renderButton","NEXT","DISABLEDSTATE","ARIA_DISABLED","MENU_CLICK","FOCUS","DIRECTIONS","cssClasses","baseItem","IMAGE_TEMPLATE","SPRITE_TEMPLATE","ICON_TEMPLATE","TEXT_TEMPLATE","ITEM_TEMPLATE","LINK_TEMPLATE","findFocusableSibling","getSibling","candidate","ButtonMenu","mainButton","_clickHandlers","_renderList","_renderListItem","menuItem","attributesId","_renderItemButton","class","_hide","_popup","_popupOpenHandler","_popupCloseHandler","_popupExpandHandler","adjustPopupWidth","listItemKeydown","destroyPopup","ARIA_EXPANDED","DISABLED","FOCUSSTATE","SplitButton","_renderButtons","_renderMenu","_enable","_aria","arrowIcon","labelSuffix","wrapperId","arrowButton","_getAppearanceClasses","_mainButton","_arrowButton","menu","kendoButtonMenu","menuOpen","menuOpenHandler","menuClose","menuCloseHandler","menuClick","computedWidth","soft","DropDownButton","iconTemplate","svgIconTemplate","Badge","_content","_appearance","cutoutBorder","roundings","full","sizes","_classNames","_text","_themeColor","_shape","_sizes","_fillMode","_rounded","_roundings","_cutoutBorder","_updateClassNames","keepClassNames","sizeAbbr","roundedAbbr","iconTemplateFunction","MOUSEDOWN","MOUSEUP","FOCUSEDSTATE","ACTIVESTATE","Button","_badge","_removeActive","_addActive","_isNativeButton","err","badgeEelement","badgeOptions","TOGGLE","ARIA_PRESSED","SELECTED","ToggleButton","_selected","SINGLE","MULTIPLE","ButtonGroup","selectedIndices","_buttons","_renderItems","KWIDGET","preventKeyNav","badgeEl","getKendoToggleButton","getKendoButton","_toggleIndex","_resetIndexes","_addButton","btn","_keyDown","buttonGroup","focusableItems","focusedElement","buttons","excludedNodesRegExp","MENU","LINK","LINK_SELECTOR","ICON_SELECTOR","LAST","TIMER","IMAGE","ZINDEX","POINTERDOWN","allPointers","TOUCHSTART","MOUSEENTER","MOUSELEAVE","RESIZE","POPUP_ID_ATTR","POPUP_OPENER_ATTR","KENDOPOPUP","HOVERSTATE","menuSelector","animationContainerSelector","childAnimationContainerSelector","popupSelector","allItemsSelector","itemSelector","availableItemsSelector","exclusionSelector","scrollButtonSelector","touchPointerTypes","ROLE","imageAttr","rendering","wrapperCssClass","firstLevel","itemCssAttributes","imageCssAttributes","imgAttributes","contentCssAttributes","contentAttr","defaultClasses","textClass","groupAttributes","expanded","groupCssClass","groupWrapperCssClass","updateItemClasses","elm","updateArrow","updateFirstLast","getArrowIconName","updateHasAriaPopup","parentLi","getParentLiItems","storeItemSelectEventHandler","selectHandler","getItemSelectEventHandler","setItemData","popupOpenerSelector","popupGroupSelector","getChildPopups","currentPopup","overflowWrapper","childPopupOpener","opener","popupId","popupParentItem","popupElement","itemPopup","parentsScroll","scrollDirection","isPointerTouch","removeSpacesBetweenItems","ul","Menu","_accessors","_templates","_updateClasses","_wrapGroups","_animations","nextItemZIndex","_initOverflow","_attachMenuEventsHandlers","openOnClick","clicked","_ariaId","closeOnClick","hoverDelay","popupCollision","_initData","_overflowWrapper","_checkActiveProxy","_checkActiveElement","_focusHandler","_preventClose","_toggleHover","_removeHoverItem","_mouseleavePopup","_mouseenterPopup","_documentClickHandler","_documentClick","_detachMenuEventsHandlers","backwardBtn","forwardBtn","isHorizontal","_openedPopups","_scrollWrapper","templates","scrollButton","_initScrolling","initialWidth","initialCssWidth","_setOverflowWrapperWidth","_toggleScrollButtons","_popupsWrapper","wrapperCssWidth","wrapperWidth","menuWidth","borders","_reinitOverflow","_destroyOverflow","popupWrapper","popupParentLi","mouseWheelDistance","backward","backwardDouble","forwardDouble","scrolling","touchEvents","scrollValue","mouseenterHandler","mousedownHandler","_closeChildPopups","currentScroll","_toggleDisabled","attemptGetItem","referenceItem","_childPopupElement","before","insertAfter","plain","groupData","renderGroup","itemElement","renderItem","parentItems","_openAfterLoad","visiblePopups","closePopup","_timerTimeout","overflowPopup","_getPopup","_triggerEvent","windowHeight","maxHeight","nextZindex","parentHorizontal","parseDirection","getEffectDirection","kendoPopup","deactivate","_popupOpen","_configurePopupOverflow","_initPopupScrolling","popupOpener","_wrapPopupElement","groupId","skipMouseEvents","_initPopupScrollButtons","scrollButtons","_closeParentPopups","_keyTriggered","_setPopupHeight","popups","_initialHeight","popupOuterHeight","popupOffsetTop","bottomScrollbar","dontClearClose","_isRootItem","_forceClose","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","_itemHasChildren","pointerTouch","isParentClosing","delegateTarget","rootMenuItems","subMenuItems","toElement","stopImmediatePropagation","_closePopups","rootPopup","groupParent","innerPopup","_innerPopup","openHandle","childGroup","childGroupVisible","shouldCloseTheRootItem","formNode","targetHref","sampleHref","isLink","isLocalLink","isTargetLink","_lastClickedElement","handled","_triggerSelect","childPopupId","_parentsUntil","enterKey","overflowMenuParents","itemSelectEventData","_getEventData","isSelectItemDefaultPrevented","isSelectDefaultPrevented","_moveHover","belongsToVertical","_itemBelongsToVertival","_itemDown","_itemUp","_itemEsc","_moveHoverToRoot","menuIsVertical","nextItem","_scrollToItem","_itemRight","parentItem","nextAll","_itemLeft","itemPosition","scrollDir","currentScrollOffset","itemSize","itemOffset","ulSize","scrollButtonSize","_unbindDataSource","_bindDataSource","_errorHandler","_error","findByUid","itemsToUpdate","updateProxy","_updateItem","removeProxy","_removeItem","_appendItems","nextElement","_fieldAccessor","fieldBindings","fieldAccessor","contentHtml","renderItems","itemWrapper","sprite","dataContentField","ContextMenu","_marker","_wire","closes","alignToAnchor","_showProxy","_closeProxy","_triggerFocusOnActivate","_focusMenu","_configurePopupScrolling","_setPopupWidth","windowWidth","popupOuterWidth","popupOffsetLeft","_closeTimeoutProxy","_eventOrigin","_targetChild","_closeHandler","sameTarget","containment","normalClick","_preventProxy","contextMenuElement","_triggerProxy","not","TOOLBAR","TOGGLE_BUTTON","BUTTON_GROUP","SPLIT_BUTTON","MENU_BUTTON","SPACER_CLASS","STATE_SELECTED","STATE_HIDDEN","FORCE_HIDDEN","GROUP_START","GROUP_END","MENU_LINK","MENU_ITEM","OVERFLOW_ANCHOR","TEMPLATE_ITEM","TOOLBAR_TOOL","MENU_LINK_TOGGLE","DROPDOWNLIST","KFOCUS","TABINDEX_MINUS_1","ARIA_CHECKED","SPACER","SEPARATOR","INPUT","GROUP","DATA_UID","DATA_ROLE_SELECTOR","DATA_TOGGLE_SELECTOR","DATA_ROLE_BUTTONMENU","KENDO_FOCUSABLE","OVERFLOW_OPEN","OVERFLOW_CLOSE","OVERFLOW_NEVER","OVERFLOW_AUTO","OVERFLOW_ALWAYS","KENDO_UID_ATTR","NOTHING","UID","K_DROP_DOWN_BUTTON","K_SPLIT_BUTTON","K_TOGGLE_BUTTON","K_BUTTON_GROUP","toolbar","WIDGET_TYPES","splitButton","dropDownButton","popupButton","TOOLBAR_TOOLS_CLASSES","ColorPicker","Switch","SAFE_COMPONENTS","POPUP_BUTTON_TEMPLATE","ToolBar","resizable","_extendToolsOptions","_tabIndex","_shrink","overflowAnchor","_toggleOverflowAnchor","navigateOnTab","overflowMenu","chooser","_getUid","_getItem","buttonsPopupItem","getSelectedFromGroup","parentGroupEl","templateEl","toolbarEl","_groupVisibleButtons","_resetTabIndex","_getAllItems","parentGroup","toggleTools","conditions","condition","toToggle","_processOptions","overflowTemplate","_addTemplate","_addCustomWidget","_addDefaultTool","_addSpacer","_addSeparator","_addAttributes","overflowComponent","_addMenuItem","componentOptions","_addToolbarTool","menuitem","togglable","menuButtons","_onMenuItemSelect","_addPopupButton","widgetElement","popupComponent","commandOn","overflowSeparator","spacer","inputsInTemplate","popupRef","hasButtons","primary","_attachWidgetEvents","_resetOpen","extensions","_focusIn","_focusOut","_onClick","_onToggle","_onSelect","_onOpen","_onClose","_childrenWidth","childrenWidth","flatMap","_mapTool","parentMessages","defaultTools","knownUid","uidSelector","buttonsPopups","_getNextElement","focusableItem","visibleBtns","_hideItem","_showMenuItem","_hideMenuItem","templateItem","isOverflowAnchor","_keyDeactivateTemplate","_keyActivateTemplate","_keyOpenOverflow","_keyFocusFirst","_keyFocusLast","_keyFocusNext","innerFocusable","innerWidget","_mapAttributes","toolOptions","dialog","toggleCondition","_mapComponent","componentMessages","_menuItemSelect","shouldSelect","twin","menuEl","overflowItem","_processInner","parentUid","rootUid","_renderOverflow","horizontalDirection","kendoButton","uploadWrapper","files","toFocus","containerWidth","popupBtnElements","commandElement","visibleCommands","itemOuterWidth","hiddenCommands","firstFocusable","Item","OverflowButton","TemplateItem","ToolBarButton","registerComponent","ToggleInputBase","_initSettings","RENDER_INPUT","inputMethod","HTMLInput","labelPosition","inputClass","labelEl","labelClass","optionalClass","optionalText","wrapperHtml","HTMLCheckBox","HTMLRadioButton","renderCheckBox","renderRadioButton","CheckBox","FOCUSED","STATEDISABLED","NOCLICKCLASS","STATEREADONLY","FloatingLabel","widgetWrapper","useReadOnlyClass","floatCheck","kendo$k","$$1","isFunction$1","Label","_floatingLabel","_label","_unwrapFloating","_floatingLabelContainer","removeFloating","beforeElm","FOCUSABLE","ACTION_SHEET_BOTTOM","ACTION_SHEET_FULLSCREEN","ACTIONABLE_BUTTON_SELECTOR","ACTIONSHEET_TITLE_ID","hexColor","HEADER_TEMPLATE","closeButton","description","defaultItem","iconSize","iconColor","defaultActionButton","ActionSheet","_hasItems","_hasActionButtons","actionButtons","_mapItems","_mapActionButtons","_applyAria","_tabKeyTrap","clickEvent","_clickProxy","fullscreen","footerTemplate","headerTemplate","adaptive","focusOnActivate","defaultItemsMapper","defaultActionButtonsMapper","positionClass","ACTION_SHEET","actionsheetTitleId","popupAnimation","_openHandler","closeButtonPressed","_closeButtonPressed","groupedItems","itemsByGroup","currentItem","topItems","bottomItems","_createItems","contentContainer","hideOverflowContent","inlineStyles","_createActionButtons","actionButtonElement","actionsContainer","_footer","_header","altTarget","_elementHeight","isFullScreen","_focusFirstFocusableElement","firstFocusableElement","_focusLastFocusableElement","lastFocusableElement","_isActionableButton","_triggerAction","isButtonKeyTrigger","allFocusables","lastFocusable","actionButton","percentageUnitsRegex","HOVER","KSELECTED","LOADING","LIST_UL","FIXED_GROUP_HEADER","ITEMSELECTOR","CASCADE","DATA_BINDING","DATA_BOUND","SELECTED_ITEM_CHANGE","HIDDENCLASS","isIE","quotRegExp","alternativeNames","ComboBox","DropDownList","MultiColumnComboBox","ARIA_ACTIVEDESCENDANT","ARIA_BUSY","ARIA_SELECTED","GROUP_ROW_SEL","List","_isSelect","adaptiveMode","largeMQL","mediumMQL","smallMQL","_listSize","_filterHeader","columns","_columnsHeader","_noData","_initValue","noDataTemplate","noData","_renderFooter","_renderNoData","_inputLabel","_focused","_floatCheck","_refreshFloatingLabel","_angularElement","filterTemplate","_isFilterEnabled","filterInput","filterTitle","$header","columnsHeader","colGroup","currentColumn","columnsHeaderTemplate","currentWidthInt","widthStyle","footerEl","_listOptions","changeEventOption","_listChange","listBoundHandler","_listBound","focusedElm","labelledBy","_activateItem","_deactivateItem","groupTemplate","fixedGroupTemplate","listSize","_initList","opts","skipValueUpdate","listOptions","selectedItemChange","VirtualList","_hasActionSheet","StaticList","_setListValue","_updateSelectionState","_listMousedown","_hideClear","_showClear","_clearValue","_clearText","_accessor","_customOption","enforceMinLength","highlightFirst","_clearFilter","_filterSource","isMultiColumnFiltering","filterFields","resetPageSettings","removed","removeFiltersForField","_clearFilterExpressions","newExpression","_pushFilterExpression","isValidFilterExpr","_cascading","setDSFilter","dataSourceState","filtersToRemove","_toggleNoData","_toggleHeader","_allowOpening","_old","_ignoreCase","widgetOptions","fromFilter","_buildExpression","_open","_clearButton","clearButton","_inputValue","_typingTimeout","_emptySearch","_searchByWord","_form","_resetHandler","selectedDataItems","autocomplete","suggest","_userTriggered","_isValueChanged","unifyType","_valueBeforeCascade","_oldIndex","isFiltered","_typing","typing","_dataValue","_offsetHeight","_height","isMccb","_adjustListWidth","autoWidth","_onCloseButtonPressed","_focusItem","noFocusedItem","scrollToIndex","_calculateGroupPadding","groupHeader","_calculatePopupHeight","_calculateColumnsHeaderPadding","_refreshScroll","enableYScroll","_resizePopup","_createPopup","_createActionSheet","_cachedFilterValue","_removeFilterHeader","_removeStaticHeader","_addFilterHeader","popupFilter","_postCreatePopup","_onActionSheetCreate","listViewValue","_clean","tagList","_toggle","preventFocus","touchEnabled","MSPointers","_prevent","_triggerCascade","_cascadeTriggered","_cascadedValue","userTriggered","_triggerChange","_requestStartHandler","_requestEndHandler","requireValueMapper","valueMapper","_initial","_initialIndex","_parentWidget","_cascadeSelect","_cascadeValue","_accessorInput","_accessorSelect","_custom","_syncValueAndText","custom","_hideBusy","_busy","_arrowIcon","_showBusy","_request","_requestEnd","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_getNormalizedDataItem","isIndex","hasOptionLabel","optionLabel","getElementIndex","dataItemByIndex","_getNormalizedSelectCandidate","normalizedCandidate","moveIndex","selectCandidate","_fetch","_get","activeFilter","shouldTrigger","_focusElement","focusout","scrollWith","_fetchData","dataText","dataValue","htmlElement","formId","_cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","cascadeOnCustomValue","currentHandler","STATIC_LIST_NS","_touchHandlers","_optionID","_selectedIndices","_dataItems","_getter","_createOnScrollProxy","_fixedHeader","startY","endY","tapPosition","_touchTriggered","_triggerClick","_scrollId","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","_getValues","_valueGetter","hasCandidate","focusIndex","skipUpdate","_skipUpdate","singleSelection","uiSelectedIndices","added","filtered","_deselectFiltered","_deselect","_valueComparer","_valueDeferred","_valueIndices","_onScroll","_renderHeader","_valueExpr","normalized","_valueType","_dataItemPosition","valueExpr","templateText","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","lastChild","previousSibling","isGrouped","visibleItem","_renderItem","notFirstItem","hasColumns","altRow","isLastGroupedItem","_renderColumns","cspCompliantHtml","dataContext","_lastDSFilter","skipUpdateOnBind","isItemChange","itemsToMatch","selectedLength","unchanged","mapChangedItems","_bound","LIST_ITEM","TABLE_ITEM","GROUPITEM","LISTBOUND","ITEMCHANGE","VIRTUAL_LIST_NS","lastFrom","isPrimitive","placeholderTemplate","renderedColumns","widthValue","renderColumns","webkitTransform","isActivePromise","mockList","contentClasses","_fetching","TABLE_LIST","_selectedDataItems","_selectedIndexes","_rangesList","_promisesList","_triggerListBound","_selectable","listScreens","oppositeBuffer","mapValueTo","_selectProxy","_deferValueSet","mute","_selectingValue","_highlightSelectedItems","_getElementByDataItem","_mute","_createList","_removeSelectedDataItem","_forcePrefetch","_prefetchByValue","_checkValuesOrder","_removedAddedIndexes","dataView","_dataView","forSelection","mapValueToIndex","mapValueToDataItem","_getIndecies","deferredRange","existingRange","isEmptyList","_activeDeferred","_getSkip","_findDataItem","_getRange","triggerEvent","_getElementByIndex","_focusedIndex","_getElementLocation","_screenHeight","heightContainer","isAlreadySelected","prefetchStarted","_selectDeferred","_deselectCurrentValues","_listCreated","_lastScrollTop","hasData","setScreenHeight","yPosition","yDownPostion","screenEnd","_generateItems","_saveInitialRanges","reorder","_buildValueGetter","_setHeight","getList","_listItems","_whenChanged","_reorderList","padHeight","lastRequestedRange","lastRangeStart","rangeStart","flatGroup","groupLength","_getterDeferred","firstItemIndex","_indexConstraint","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","firstVisibleGroup","fixedGroupText","_itemMapper","listType","_currentGroup","_getDataItemsCollection","lastScrollTop","_listIndex","theValidator","downThreshold","upThreshold","listValidator","theNew","currentOffset","list2","range2","reshift","_bufferSizes","opposite","buffers","selectedIndexes","removedindexesCounter","_deselectSingleItem","oldSkip","nsFocusEvent","READONLY","ARIA_READONLY","HOVEREVENTS","STATE_FILTER","STATE_ACCEPT","_focusInputHandler","_focusInput","_optionLabel","_inputTemplate","_prev","_word","_span","_mobile","_attachAriaActiveDescendant","_textAccessor","_optionLabelText","valueTemplate","optionLabelTemplate","_arrow","_focusFilter","_resizeFilterInput","originalPrevent","isInputActive","_optionLabelDataItem","loweredText","_valueSetter","_assignInstance","_buildOptions","optionLabelValue","initialIndex","_presetValue","_selectValue","_filterPaste","_search","_attachFocusHandlers","_focusinHandler","_focusoutHandler","isIFrame","_wrapperMousedown","dropDownWrapper","_keypress","isPopupVisible","_getElementDataItem","_matchText","_shuffleData","splitIndex","optionDataItem","_selectNext","oldFocusedItem","isInLoop","sameCharsOnly","_last","normalizeIndex","charCode","compareElement","jQueryCandidate","_resetOptionLabel","focusedItem","additionalClass","keepState","arrowBtn","SELECTOR","DOMelement","accesskey","unselectable","optionLabelText","getElements","ARIASELECTED","SELECTABLE","UNSELECT","UNSELECTING","INPUTSELECTOR_ICONSSELECTOR_FONT","INPUTSELECTOR_ICONSSELECTOR_SVG","replaceAll","INPUTSELECTOR_SVG_PARTS","INPUTSELECTOR","supportEventDelegation","Selectable","dragToSelect","_lastActive","inputSelectors","ignoreOverlapped","addIdToRanges","_isElement","selectedClass","whichCode","buttonCode","_allowSelection","_lastRange","compareElements","selectRange","_firstSelectee","_notify","_unselect","useAllItems","_selectElement","_invalidateSelectables","rangeSelectedAttr","_currentlyActive","toSelect","_collidesWithActiveElement","marqueeRect","activeElementRect","activeElements","elemRect","tempRect","selectElement","selectedRanges","rangeId","mapLocation","selectedSingleItems","preventNotify","aria","resetTouchEvents","continuousItems","toCompare","elementPosition","firstRect","secondRect","selectableMode","asLowerString","extractFormat","transitionOrigin","cellTemplate","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","SLIDE","CENTURY","NAVIGATE","OTHERMONTH","CELLSELECTOR","CELLSELECTORVALID","MOUSEENTER_WITH_NS","PREVARROW","NEXTARROW","decade","century","HEADERSELECTOR","Calendar","disableDates","getDisabledExpr","_viewWrapper","hasFooter","_today","mousetoggle","toDateObject","_focusView","focusOnNav","_setCurrent","_selectDates","restrictValue","_addClassProxy","_cell","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","selectDates","weekColumnHeader","navigateTo","parentViews","classic","actionAttr","linksSelector","modern","_destroySelectable","_title","_table","_bindTable","_option","navigateToPast","navigateToFuture","navigateUp","navigateDown","isEqualDate","currentView","_oldTable","future","viewWrapper","_changeView","otherMonth","isWeekColumnVisible","addClassToViewContainer","_animate","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","_validateValue","createDate","isInRange","selectedDates","selectableOptions","_onRelatedTarget","_toggleSelection","_cellsBySelector","_addSelectedCellsToArray","_rangeSelection","currentCell","toDateCell","daysDifference","fromDate","daysBetweenTwoDates","addDaysToArray","currentDateIndex","_dateInView","firstDateInView","_isNavigatable","cellIndex","isDisabled","prevent","_todayClick","_keyboardToggleSelection","focusedDate","_nextNavigatable","_keyboardRangeSelection","navigatableDate","_horizontal","viewWidth","_vertical","_selectedCell","isBigger","value1","value2","isEqualMonth","isTodayDisabled","todayClass","_todayClass","executeTemplate","_updateAria","ariaTemplate","valueType","firstVisibleDay","calendarInfo","tzOffsetBefore","resultDATE","tzOffsetDiff","getCalendarInfo","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","shiftArray","shortNames","perRow","build","dateString","weekNumberBuild","date1","date2","month1","year1","month2","year2","calendarMonths","namesFull","setMonth","minYear","maxYear","modular","cellsPerRow","otherMonthTemplate","multiplier","endDate","fromDateUTC","endDateUTC","numberOfDays","dateObject","disabledDates","convertDatesArray","createDisabledExpr","isEqualDatePart","viewsEnum","extendStatics","setPrototypeOf","__extends","TypeError","__","Direction","cloneDate","hour","addMonths","expectedMonth","Day","isEqual","expected","timezones","zoneOffset","ruleOffset","CURRENT_UTC_TIME","zoneRule","currentRule","NO_TZ_INFO","flatten","formatMessage","flattenValues","getZoneRules","_a","addMinutes","dayAbbr","monthAbbr","padNumber","isZoneMissingHour","prevHour","shiftZoneMissingHour","utcDate","dstOffset","convertTimezoneUTC","utcLocal","fromTimezone","toTimezone","baseDiff","midDate","midOffset","ZonedDate","_utcDate","tzOffset","timezoneOffset","localDate","_localDate","enumerable","configurable","fromLocalDate","shiftZone","fixedOffset","adjDate","fromUTCDate","toUTCDate","addTime","utcMid","utcResult","stripTime","getUTCMilliseconds","ms","setUTCMilliseconds","sec","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCMonth","setUTCFullYear","toISOString","timeString","toTimeString","formatOffset","abbrev","abbrTimezone","locales","toLocaleDateString","toLocaleTimeString","toUTCString","toPrimitive","getVarDate","formatUTC","DateInputInteractionMode","Mask","partMap","Constants","Key","padZero","unpadZero","dateSymbolMap","parseToInt","setYears","areDatePartsEqualTo","isValidDate","SHORT_PATTERN_LENGTH_REGEXP","DateObject","formatPlaceholder","_b","cycleTime","_d","_e","autoCorrectParts","leadingZero","typedMonthPart","knownParts","_partiallyInvalidDate","invalidDateParts","startDateOffset","sampleFormat","dateFormatString","setExisting","resetInvalidDate","localeId","cldrKeys","cldr","numbers","monthNames","allFormattedMonths","dayPeriods","allDayPeriods","modifyExisting","getExisting","getFormattedDate","getTextAndFormat","customFormat","partiallyInvalidText","formattedDate","formattedDates","getFormattedInvalidDates","getInvalidDatePartValue","partsForSegment","getPartsForSegment","datePartText","formattedDatesForSymbol","getInvalidDatePart","formattedInvalidDate","modifyPart","invalidDateFound","timeModified","isMonth","isDay","symbolExists","invalidDatePartValue","resetInvalidDateSymbol","monthValue","dayValue","dateCandidate","newValueCandidate","modifyDateSymbolWithValue","dateCandidateExists","markDatePartsAsExisting","setInvalidDatePart","shouldNormalizeCentury","normalizeCentury","parsePart","currentChar","resetSegmentValue","cycleSegmentValue","rawInputValue","rawTextValue","isDeleting","originalFormat","isInCaretMode","dateParts","datePartsLiterals","datePartIndex","flatDateParts","datePart","parseResult","switchToNext","resetPart","hasInvalidDatePart","resetLeadingZero","rawValueStartsWithLiteral","rawValueEndsWithLiteral","endsWith","rawValueHasConsecutiveLiterals","baseDate","baseFormat","replaced","basePrefix","baseSuffix","suffix","convertedBaseFormat","hasFixedFormat","datePartStartIndex","segmentLength","formatToTextLengthDiff","parsedDate","matchMonth","dayPeriod","matchDayPeriod","isZeroCurrentChar","isAbbrMonth","incrementLeadingZero","partPattern","patternValue","currentMaxLength","tryParse","middleNumber","candidateDateString","autoCorrectedPrefixAndSuffix","isCurrentCharParsable","monthNumber","peekedValue","peek","peekedDateString","peekedDate","patternSatisfied","datePartValue","textToParse","month_1","valueCandidate","symbolMap","hasLeadingZero","setLeadingZero","getLeadingZero","twoDigitYear","cropTwoDigitYear","centuryBase","getNormalizedCenturyBase","peekValue","typedChar","monthAsNum","lowerChart","am","pm","dateFormatParts","partLength","returnValue","resultText","resultFormat","processTextSymbolsEnded","ignoreFormatSymbolsCount","formatSymbolIndex","formatSymbolIndexModifier","resetInvalidDatePart","shouldResetInvalidDate","modifyDateSymbolWithOffset","partIndex","segmentPart","maskPartIndex","KeyCode","defaultPrevented","TOUCH_START","MOUSE_DOWN","MOUSE_UP","KEY_DOWN","PASTE","MOUSE_SCROLL","MOUSE_WHEEL","VALUE_CHANGE","INPUT_END","BLUR_END","FOCUS_END","defaultDateInputOptions","hasPlaceholder","millisecond","minute","selectNearestSegmentOnFocus","selectPreviousSegmentOnBackspace","enableMouseWheel","allowCaretMode","autoSwitchParts","autoSwitchKeys","DateInput","_super","currentText","currentFormat","interactionMode","None","previousElementSelection","createDateObject","setTextAndFormat","forceUpdate","onElementDragStart","onElementDrop","onElementClick","onElementMouseDown","onElementMouseUp","onElementInput","onElementKeyDown","onElementFocus","onElementBlur","onElementChange","onElementPaste","onElementMouseWheel","setDateObjectOptions","getDateObjectOptions","resetLocale","Caret","selectNearestSegment","mouseDownStarted","focusedPriorToMouseDown","switchedPartOnPreviousKeyAction","selectionPresent","placeholderToggled","setSelection","selectionByIndex","triggerInput","isPasteInProgress","updateOnPaste","keyDownEvent","isBackspaceKey","isDeleteKey","originalInteractionMode","hasCaret","restorePreviousInputEventState","oldExistingDateValue","oldDateValue","oldText","newText","formatPattern","keyEvent","oldTextSeparator","oldSegmentText","newSegmentText","deletedSymbol","approximateStringMatching","previousElementValue","elementValue","navigationOnly","parsePartsResults","switchPart","parsePartResult","symbolForSelection","lastParseResult","lastParseResultHasNoValue","parsingFailedOnDelete","newExistingDateValue","hasExistingDateValueChanged","newDateValue","currentSelection","diffChar","forceUpdateWithSelection","switchDateSegment","selectionBySymbol","tryTriggerValueChange","triggerInputEnd","triggerFocus","refreshElementValue","triggerFocusEnd","triggerBlur","triggerBlurEnd","triggerChange","triggerKeyDown","keyEventMatchesAutoSwitchKeys","isTabKey","getStepFromSymbol","shouldPreventDefault","modifyDateSegmentValue","triggerMouseWheel","inputFormat","oldDateObjectValue","writeValue","displayFormat","currentSymbol","symbolCandidate","previousFormatSymbol","msDigits","triggerValueChange","elementValueLength","selectionOffset","setElementValue","restorePreviousElementValue","restorePreviousElementSelection","verifyValue","getDateObject","showPlaceholder","newElementValue","selectDateSegment","keyObject","DateInputCommon","STATEINVALID","buildKeys","cultureInfo","getCultureFormat","wrapperClass","skipStyling","_validationIcon","dateInputInstance","inputEnd","_blinkInvalidState","keydown","_emptyMask","_formElement","_hasDateInput","_bindInput","_unbindInput","_addInvalidState","_invalidStateTimeout","_removeInvalidState","_paste","DIV","parseFormats","DateView","bigScreenMQL","smallScreenMQL","omitPopup","dateDiv","_dateViewID","_calendar","popupHovered","selectIsClicked","disabledDate","DatePicker","_initialOptions","_createDateView","_createDateViewProxy","dateView","_createDateInput","_oldText","ARIATemplate","dateInput","_updateARIA","_dateIcon","_dateInput","_navigateCalendarHandler","_navigateCalendar","dateChanged","valueUpdated","textFormatted","_setCalendarAttribute","isSameType","optionsValue","_ariaTemplate","placeholderSupported","SPIN","INTEGER_REGEXP","NumericTextBox","inputType","isStep","_focusout","_arrows","_validation","_input","_focusin","selectValue","restrictDecimals","spinners","selectOnFocus","upArrowText","downArrowText","_toggleText","_upArrowEventHandler","_downArrowEventHandler","_spin","_upArrow","_downArrow","_keyup","_inputHandler","_placeholder","_arrowsWrap","_adjust","arrows","_spinning","buttonHtml","release","_focusing","groupRegExp","extractRegExp","_format","caretPosition","_getFactorValue","_culture","accessKey","_numPadDot","_cachedCaret","_step","decimalSeparator","minInvalid","_isPasted","_numericRegex","fractionRule","_separator","_floatRegExp","truncate","isNotNull","DOMElement","INVALIDMSG","invalidMsgRegExp","INVALIDINPUT","VALIDINPUT","VALIDATIONSUMMARY","INVALIDLABEL","MESSAGEBOX","ARIAINVALID","emailRegExp","urlRegExp","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","NAME","FORM","NOVALIDATE","VALIDATE","VALIDATE_INPUT","patternMatcher","matcher","hasAttribute","parseHtml","parseHTML","searchForMessageContainer","isLabelFor","validator","allowSubmit","validateOnInit","SUMMARYTEMPLATE","Validator","resolvers","ruleResolvers","resolveRules","validateAttributeSelector","_errorTemplate","errorTemplate","_summaryTemplate","validationSummary","_inputSelector","_checkboxSelector","_errors","_isValidated","_validateOnInit","required","email","dateCompare","captcha","noNameCheckbox","namedCheckbox","checkbox","radio","raise","isValidated","isValid","getCaptchaId","_validating","_checkElement","validateOnBlur","_allowSubmit","validateInput","inputs","invalid","showValidationSummary","valid","_checkValidity","lbl","_findMessageContainer","messageText","_extractMessage","messageLabel","wasValid","isInputInner","lblId","_decorateMessageContainer","prevElement","_inputWrapper","inputWrap","inputLabel","errorId","_associateMessageContainer","hideMessages","_disassociateMessageContainers","hideValidationSummary","locators","messageLocators","locate","decorate","ruleKey","nonDefaultMessage","customMessage","_getInputNames","_errorsByName","inputNames","_renderSummary","_summaryClick","errorsList","nameSpecialCharRegExp","EQUAL_SET","specialRules","fieldType","createAttributes","ruleName","validation","DATATYPE","BINDING","stringRule","attributeName","addIdAttribute","kendoEditors","editors","kendoNumericTextBox","editorOptions","kendoDatePicker","kendoTextBox","renderHiddenForMvcCheckbox","kendoCheckBox","convertItems","kendoEditor","editor","tagElement","checkboxes","getEditorTag","mobileEditors","addValidationRules","modelField","shouldRenderHidden","Editable","_isMobile","_validateProxy","_validate","clearContainer","skipFocus","isHidden","isCustomEditor","isKendoEditor","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","validatable","modelFields","bindAttr","isAntiForgeryToken","antiForgeryTokenName","convertToValueBinding","_focusTimeout","_focusEditor","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KWINDOWRESIZEHANDLES","KOVERLAY","KWINDOWMINIMIZED","LOADINGICONCLASS","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","INLINE_FLEX","VISIBLE","CURSOR","REFRESH","RESIZESTART","RESIZEEND","RESTORE","DATADOCOVERFLOWRULE","MINIMIZE_MAXIMIZEICONSELECTORS","KPINICONCLASSSELECTOR","KUNPINICONCLASSSELECTOR","PIN_UNPINICONCLASSSELECTOR","TITLEBAR_BUTTONSSELECTOR","REFRESHICONSELECTOR","WINDOWEVENTSHANDLED","zero","SIZE","toInt","constrain","executableScript","getPosition","offsetLeft","parentOverflowX","parentOverflowY","Window","windowContent","globalWindow","suppressActions","actions","_createWindow","_dimensions","_footerTemplate","_footerMessages","minTop","minLeft","maxTop","maxLeft","_overlay","_buttonEnter","_buttonLeave","_windowActionHandler","_keydownContent","_draggable","pinned","pin","_onDocumentResize","sizeClass","contentBoxSizing","lrBorderWidth","tbBorderWidth","_isPinned","_updateBoundaries","containmentTop","containmentLeft","_animationOptions","resizing","toggleMaximization","resizeHandle","WindowResizing","WindowDragging","dragHandle","_actions","windowSpecificCommands","icons","maximize","cachedOptions","_containerScrollTop","_containerScrollLeft","_enableDocumentScrolling","fade","autoFocus","isMaximized","isMinimized","_closable","_close","newWidth","newHeight","unpin","minimize","preventScroll","_stopDocumentScrolling","_actionForIcon","_modals","windowInstance","windowElements","modals","_object","newTop","newLeft","documentWindow","_scrollIsAppended","titleBar","titleElement","titlebar","scrollContainer","otherModalsVisible","showOptions","Fade","overlayFx","fadeIn","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","systemTriggered","lastModal","_actionable","_shouldFocus","avoidFocus","currentWindow","containmentContext","openAnimation","originalZIndex","windowObject","zIndexNew","windowTop","restoreOptions","_sizingAction","actionId","_storeOverflowRule","$body","$html","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","win","wnd","contentFrame","_triggerRefresh","_ajaxComplete","_loadingIconTimeout","_ajaxError","_ajaxSuccess","_showLoading","iframeSrcAttributes","_preventDragging","dragstart","dragend","addOverlay","removeOverlay","dragcancel","iconName","resizeDirection","initialSize","containerOffset","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","_relativeElMarginLeft","_relativeElMarginTop","windowBottom","windowRight","leftRtlOffset","scrollOffset","newWindowTop","initialWindowPosition","initialPointerPosition","_finishDrag","CASCADING","MAXINT","ITEMROTATE","PAN","TRANSFORMED","BUTTON_TEMPLATE","DefaultConnectors","defaultButtons","imageClass","isAutoConnector","closestConnector","resCtr","minimumDistance","indicesOfItems","extra","DiagramElement","serializable","_contentVisual","_updateContentVisual","_createContentVisual","elementTemplate","_canSelect","Connector","shapeId","tempStr","updateOptionsFromModel","createShapeVisual","updateBounds","_createConnectors","_setOptionsFromModel","modelOptions","filterShapeDataItem","redrawVisual","_isEditable","_redrawVisual","syncChanges","_suspendModelRefresh","_resumeModelRefresh","_rotate","_alignContent","contentVisual","containerRect","aligner","contentBounds","contentRect","alignedBounds","_transformedBounds","_rotatedBounds","_setBounds","_triggerBoundsChange","_layouting","refreshConnections","cloneDataItem","deselected","_internalSelection","_selectionChanged","deltaAngle","newPosition","sc","cons","nameOrPoint","_transformPoint","boundsChange","shapeOptions","shapeVisual","_visualOptions","_updateConnectors","_showConnectors","rotatedPoint","visualTemplate","_initRouter","_sourcePoint","_targetPoint","_setSource","_setTarget","definers","fromConnector","toConnector","dataMap","_dataMap","fromX","fromY","toX","toY","filterConnectionDataItem","connectionsDataSource","clearField","shapeSource","defaultConnector","_removeFromSourceConnector","_clearSourceConnector","_setFromOptions","sourceDefiner","_sourceDefiner","shapeTarget","_removeFromTargetConnector","_clearTargetConnector","_setToOptions","targetDefiner","_targetDefiner","connectorName","setNewTarget","inactiveItem","_inactiveShapeItems","_deferredConnectionUpdates","onActivate","alignToPath","midIdx","_router","pts","_resolveConnectors","_refreshPath","sourceConnectors","targetConnectors","_resolveAutoConnectors","minNonConflictSource","minNonConflictTarget","minSource","minTarget","sourceIdx","targetIdx","minNonConflict","_testRoutePoints","router","passRoute","exclude","_getRouteExclude","_shapesQuadTree","hitTestRect","_isPointInsideShape","boundsX","boundsY","Diagram","_initElements","_extendLayoutOptions","_initDefaults","_interactionDefaults","_initCanvas","adornerLayer","_createHandlers","_clipboard","pauseMouseHandlers","_fetchFreshData","_createGlobalToolBar","_createOptionElements","toolBar","DiagramToolBar","_toolBarClick","createShape","createModel","_createShape","edit","createConnection","_connectionsDataMap","addConnection","editModel","editorType","cancelEdit","shapeEditors","shapeTemplate","connectionSelectorHandler","connectionSelector","connectionEditors","connectionTemplate","PopupEditor","_editArgs","_getEditDataSource","_destroyEditor","saveEdit","userShapeDefaults","copyDefaultOptions","canvasContainer","viewPort","_userEvents","_dragStart","_gestureStart","_gestureChange","_gestureEnd","doubleTap","_mouseMove","_mouseDown","_mouseUp","_syncHandler","_pauseMouseHandlers","_eventPositions","_meta","_createToolBar","ctrlPressed","origEvent","documentToModel","initialCenter","_gesture","_initialCenter","documentToView","updateZoom","_getValidZoom","zoomedPoint","_panTransform","_updateAdorners","pointPosition","shapesLength","_createShapes","_createConnections","_findConnectionTarget","destroyScroller","_destroyGlobalToolBar","_parseBounds","splitDiagramElements","_removeShapeDataItem","_removeConnectionDataItem","_getDiagramItems","_fixOrdering","bringIntoView","newPan","_zoomMainLayer","alignShapes","_getPan","_copyOffset","copied","mapping","_updateCopiedConnection","sourceConnection","di","_containerOffset","viewToDocument","viewToModel","_transformWithMatrix","_matrixInvert","_layerMatrix","layerToModel","_layerMatrixInvert","viewPoint","modelToDocument","setConnectionsDataSource","_connectionDataSource","_redrawConnections","getShapeByModelId","getShapeByModelUid","getConnectionByModelId","getConnectionByModelUid","_transformMainLayer","_finishPan","_storeViewMatrix","_storeLayerMatrix","canvasTransform","shapePos","conPos","removedConnections","_removeShape","_removeConnection","_removeDataItems","recursive","_removeShapeConnections","_addDataItem","_addDataItemByUid","_addDataItems","parentShape","_refreshSource","_bindingRoots","_addItem","preventClosing","singleToolBar","popupZIndex","popupWidth","popupHeight","connectionBounds","_normalizePointZoom","InactiveItemsCollection","undone","redone","_loadingShapes","_loadingConnections","ds","_shapesRefreshHandler","_shapesRequestStartHandler","_shapesErrorHandler","_refreshShapes","_shapesRequestStart","_treeDataSource","_connectionsRefreshHandler","_connectionsRequestStartHandler","_connectionsErrorHandler","_refreshConnections","_connectionsRequestStart","_connectionsError","_shouldRefresh","_removeShapes","_updateShapes","_syncShapes","_rebindShapesAndConnections","_addShapes","_addConnections","_removeConnections","_updateConnections","_addConnectionDataItem","_validateConnector","adorners","_refresh","viewRect","clipWrap","deferredConnectionUpdates","_tools","createToolBar","createTools","appendTools","createPopup","getKendoPopup","_toolBar","kendoToolBar","getKendoToolBar","createTool","toolName","_setAttributes","editTool","deleteTool","rotateAnticlockwiseTool","_appendGroup","_rotateGroup","rotateClockwiseTool","createShapeTool","_createGroup","createConnectionTool","undoTool","_historyGroup","redoTool","_getAttributes","selectedElements","selectedElemens","rotateClockwise","rotateAnticlockwise","Editor","_getFields","createEditable","formContent","_renderTemplate","_renderFields","_cancelClick","_attachButtonEvents","_createButton","_cancelClickHandler","_updateClickHandler","_updateClick","_editUpdateClickHandler","kendoDropDownList","InactiveItem","deffered","_testRect","overlapsBounds","childIdx","shapeIdx","boundsChangeHandler","_boundsChange","rootSize","xIdx","yIdx","mainOptions","ITEM_CREATED","TreeMap","_setLayout","colorField","_layout","SliceAndDice","SliceAndDiceView","Squarified","SquarifiedView","_onDataChange","_wrapItem","htmlSize","compute","_setColors","_cleanItems","createRoot","_colorIdx","colorRange","minRGBtoDecimal","rgbToDecimal","maxRGBtoDecimal","isDarker","colorBrightness","rgbColor","colorByIndex","buildColorFromRGB","colorsByLength","leafNodes","_contentSize","renderHeight","_removeActiveState","_resizeItems","setItemSize","leaf","layoutChildren","parentArea","totalArea","itemsArea","minimumSideValue","layoutHorizontal","squarify","initElement","computeDim","worstAspectRatio","newCoords","layoutRow","layoutLast","layoutV","layoutH","layoutVertical","layoutChange","areaSum","maxArea","rootCoord","newRootCoord","_totalArea","ans","_createTitle","_compile","_createWrap","rootWrap","_createLeaf","_createTile","_tileColorBrightness","_itemCoordinates","titleTemplate","sliceAndDice","minColor","maxColor","currentStep","decimalToRgb","colorLength","colorToRGB","rgbToHex","injector","$defaultCompile","OPTIONS_NOW","toDataSource","$injector","$parse","$timeout","$log","createDataSource","TreeList","TreeView","Scheduler","PivotGrid","PivotConfigurator","PanelBar","$eval","$watch","mew","ignoredAttributes","kDataSource","kOptions","kRebind","kNgModel","kNgDelay","ignoredOwnProperties","formRegExp","kendoRenderedTimeout","RENDERED","origAttr","controller","$scope","$attrs","setTemplate","_cleanUp","controllers","roleattr","createWidget","$emit","$setPristine","TAGNAMES","DateTimePicker","TimePicker","AutoComplete","MaskedTextBox","Upload","ListView","ScrollView","SKIP_SHORTCUTS","MANUAL_DIRECTIVES","directive","pendingPatches","defadvice","klass","isMobile","make","directiveName","directiveFactory","shortcut","dashed","scopeField","kScopeField","createDirectives","$angular_scope","$angular_init","withoutTimeout","itemScope","$$kendoScope","$destroy","destroyScope","vars","$new","digest","$angular_makeEventHandler","kendoEvent","elems","colIdx","locals","_checkBoxSelection","angularDataItem","templateSettings","templateDirectives","WIDGET_TEMPLATE_OPTIONS","Pager","templateName","terminal","delayValue","ngModel","ngForm","ctor","parsed","unresolved","unwatch","createIt","$root","unregister","$attr","$$phase","$apply","originalElement","kendoWidget","exposeWidget","destroyRegister","deregister","$on","destroyWidgetOnScopeDestroy","rebindAttr","templateOptions","templateContents","replaceChild","setupRebind","kNgDisabled","bindToKNgDisabled","kNgReadonly","isReadonly","bindToKNgReadonly","bindToKNgModel","haveChangeOnElement","isForm","formValue","viewRender","$viewValue","$modelValue","$render","formPristine","$pristine","$setViewValue","currentVal","$isEmpty","bindToNgModel","MutationObserver","prevClassList","mo","changes","chg","currClassList","disconnect","propagateClassToWidgetWrapper","optionsPath","addOption","scopeValue","widgetEvents","dataName","eventKey","optionName","DateRangePicker","rangePickerEndModel","rangePickerModels","rangePickerStartModel","_startDateInput","_endDateInput","updating","valueIsCollection","RangeSlider","currentValueLength","$angular_setLogicValue","watchHandler","$watchCollection","changeHandler","$setDirty","$angular_getLogicValue","isDigesting","$digest","origMethod","eventProxy","_triggerTouch","gestureEventProxy","enableSwipe","_swipestart","_swipemove","_dragstart","minXDelta","maxYDelta","maxDuration","doubleTapTimeout","lastTap"],"sources":["kendo.dataviz.mobile.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodataviz = global.kendodataviz || {}, global.kendodataviz.mobile = global.kendodataviz.mobile || {}, global.kendodataviz.mobile.js = factory()));\n})(this, (function () {\n var breakpoints;\n var EVENT = \"change\";\n\n var defaultBreakpoints = {\n small: \"(max-width: 500px)\",\n medium: \"(min-width: 500.1px) and (max-width: 768px)\",\n large: \"(min-width: 768.1px)\",\n };\n\n function createMediaQuery(query) {\n var mediaQueryList = window.matchMedia(query);\n var onEnterCallbacks = [];\n var onLeaveCallbacks = [];\n var onChangeHandlers = [];\n var kendoMediaQuery = { mediaQueryList: mediaQueryList };\n\n var onChangeHandler = function (ev) {\n onChangeHandlers.forEach(function (cb) { return cb(ev); });\n\n if (ev.matches) {\n onEnterCallbacks.forEach(function (cb) { return cb(ev); });\n } else {\n onLeaveCallbacks.forEach(function (cb) { return cb(ev); });\n }\n };\n\n mediaQueryList.addEventListener(EVENT, onChangeHandler);\n\n var onChange = function (cb) {\n onChangeHandlers.push(cb);\n return kendoMediaQuery;\n };\n\n var onEnter = function (cb) {\n onEnterCallbacks.push(cb);\n\n if (mediaQueryList.matches) {\n var media = mediaQueryList.media;\n var matches = true;\n\n var ev = new MediaQueryListEvent(EVENT, {\n media: media,\n matches: matches,\n });\n\n cb(ev);\n }\n\n return kendoMediaQuery;\n };\n\n var onLeave = function (cb) {\n onLeaveCallbacks.push(cb);\n return kendoMediaQuery;\n };\n\n var destroy = function () {\n if (mediaQueryList) {\n mediaQueryList.removeEventListener(EVENT, onChangeHandler);\n }\n onEnterCallbacks = null;\n onLeaveCallbacks = null;\n onChangeHandlers = null;\n mediaQueryList = null;\n kendoMediaQuery = null;\n };\n\n kendoMediaQuery.onChange = onChange;\n kendoMediaQuery.onEnter = onEnter;\n kendoMediaQuery.onLeave = onLeave;\n kendoMediaQuery.destroy = destroy;\n\n return kendoMediaQuery;\n }\n\n function mediaQuery(query) {\n if (!query) {\n return;\n }\n\n breakpoints =\n breakpoints ||\n Object.assign({}, defaultBreakpoints, kendo.defaults.breakpoints);\n\n if (query in breakpoints) {\n query = breakpoints[query];\n }\n\n return createMediaQuery(query);\n }\n\n var __meta__$Y = {\n id: \"core\",\n name: \"Core\",\n category: \"framework\",\n description: \"The core of the Kendo framework.\"\n };\n\n var packageMetadata = {\n name: '@progress/kendo-ui',\n productName: 'Kendo UI',\n productCodes: ['KENDOUICOMPLETE', 'KENDOUI', 'KENDOUI', 'KENDOUICOMPLETE'],\n publishDate: 0,\n version: '2023.2.829'.replace(/^\\s+|\\s+$/g, ''),\n licensingDocsUrl: 'https://docs.telerik.com/kendo-ui/intro/installation/using-license-code'\n };\n\n\n (function($, window, undefined$1) {\n var kendo = window.kendo = window.kendo || { cultures: {} },\n extend = $.extend,\n each = $.each,\n isArray = Array.isArray,\n noop = $.noop,\n math = Math,\n Template,\n JSON = window.JSON || {},\n support = {},\n percentRegExp = /%/,\n formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g,\n boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i,\n numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/,\n MONTH = \"month\",\n HOUR = \"hour\",\n ZONE = \"zone\",\n WEEKDAY = \"weekday\",\n QUARTER = \"quarter\",\n DATE_FIELD_MAP = {\n \"G\": \"era\",\n \"y\": \"year\",\n \"q\": QUARTER,\n \"Q\": QUARTER,\n \"M\": MONTH,\n \"L\": MONTH,\n \"d\": \"day\",\n \"E\": WEEKDAY,\n \"c\": WEEKDAY,\n \"e\": WEEKDAY,\n \"h\": HOUR,\n \"H\": HOUR,\n \"k\": HOUR,\n \"K\": HOUR,\n \"m\": \"minute\",\n \"s\": \"second\",\n \"a\": \"dayperiod\",\n \"t\": \"dayperiod\",\n \"x\": ZONE,\n \"X\": ZONE,\n \"z\": ZONE,\n \"Z\": ZONE\n },\n NAME_TYPES = {\n month: {\n type: \"months\",\n minLength: 3,\n standAlone: \"L\"\n },\n\n quarter: {\n type: \"quarters\",\n minLength: 3,\n standAlone: \"q\"\n },\n\n weekday: {\n type: \"days\",\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: \"c\"\n },\n\n dayperiod: {\n type: \"dayPeriods\",\n minLength: 0\n },\n\n era: {\n type: \"eras\",\n minLength: 0\n }\n },\n FUNCTION = \"function\",\n STRING = \"string\",\n NUMBER = \"number\",\n OBJECT = \"object\",\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n UNDEFINED = \"undefined\",\n PREFIX = \"prefix\",\n ARIA_LABELLEDBY = \"aria-labelledby\",\n ARIA_LABEL = \"aria-label\",\n LABELIDPART = \"_label\",\n getterCache = {},\n setterCache = {},\n slice = [].slice,\n cssPropertiesNames = [ \"themeColor\", \"fillMode\", \"shape\", \"size\", \"rounded\", \"positionMode\" ],\n // avoid extending the depricated properties in latest verions of jQuery\n noDepricateExtend = function() {\n var arguments$1 = arguments;\n\n var src, copyIsArray, copy, name, options, clone,\n target = arguments[ 0 ] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if ( typeof target === \"boolean\" ) {\n deep = target;\n\n // skip the boolean and the target\n target = arguments[ i ] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if ( typeof target !== \"object\" && typeof target !== \"function\") {\n target = {};\n }\n\n // extend jQuery itself if only one argument is passed\n if ( i === length ) {\n target = this;\n i--;\n }\n\n for ( ; i < length; i++ ) {\n\n // Only deal with non-null/undefined values\n if ( ( options = arguments$1[ i ] ) != null ) {\n\n // Extend the base object\n for ( name in options ) {\n // filters, concat and : properties are depricated in the jQuery 3.3.0\n // accessing these properties throw a warning when jQuery migrate is included\n if (name == \"filters\" || name == \"concat\" || name == \":\") {\n continue;\n }\n src = target[ name ];\n copy = options[ name ];\n\n // Prevent never-ending loop\n if ( target === copy ) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n ( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n if ( copyIsArray ) {\n copyIsArray = false;\n clone = src && Array.isArray( src ) ? src : [];\n\n } else {\n clone = src && jQuery.isPlainObject( src ) ? src : {};\n }\n\n // Never move original objects, clone them\n target[ name ] = noDepricateExtend( deep, clone, copy );\n\n // Don't bring in undefined values\n } else if ( copy !== undefined$1 ) {\n target[ name ] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n\n kendo.version = \"2023.2.829\".replace(/^\\s+|\\s+$/g, '');\n\n function Class() {}\n\n Class.extend = function(proto) {\n var base = function() {},\n member,\n that = this,\n subclass = proto && proto.init ? proto.init : function() {\n that.apply(this, arguments);\n },\n fn;\n\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n // Merge object members\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n\n fn.constructor = subclass;\n subclass.extend = that.extend;\n\n return subclass;\n };\n\n Class.prototype._initOptions = function(options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n var isPresent = kendo.isPresent = function (value) { return value !== null && value !== undefined$1; };\n var isBlank = kendo.isBlank = function (value) { return value === null || value === undefined$1; };\n var isString = kendo.isString = function (value) { return typeof value === 'string'; };\n var isNumeric = kendo.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n var isDate = kendo.isDate = function (value) { return value && value.getTime; };\n var isFunction = kendo.isFunction = function (value) { return typeof value === 'function'; };\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable = Class.extend({\n init: function() {\n this._events = {};\n },\n\n bind: function(eventName, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined$1) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return that;\n },\n\n one: function(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n\n first: function(eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n },\n\n trigger: function(eventName, e) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n e = e || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n },\n\n unbind: function(eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined$1) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n });\n\n\n function compilePart(part, stringPart) {\n if (stringPart) {\n return \"'\" +\n part.split(\"'\").join(\"\\\\'\")\n .split('\\\\\"').join('\\\\\\\\\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\") + \"'\";\n } else {\n var first = part.charAt(0),\n rest = part.substring(1);\n\n if (first === \"=\") {\n return \"+(\" + rest + \")+\";\n } else if (first === \":\") {\n return \"+$kendoHtmlEncode(\" + rest + \")+\";\n } else {\n return \";\" + part + \";$kendoOutput+=\";\n }\n }\n }\n\n var argumentNameRegExp = /^\\w+/,\n encodeRegExp = /\\$\\{([^}]*)\\}/g,\n escapedCurlyRegExp = /\\\\\\}/g,\n curlyRegExp = /__CURLY__/g,\n escapedSharpRegExp = /\\\\#/g,\n sharpRegExp = /__SHARP__/g,\n zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n\n Template = {\n paramName: \"data\", // name of the parameter of the generated template\n useWithBlock: true, // whether to wrap the template in a with() block\n render: function(template, data) {\n var idx,\n length,\n html = \"\";\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n\n return html;\n },\n compile: function(template, options) {\n var settings = extend({}, this, options),\n paramName = settings.paramName,\n argumentName = paramName.match(argumentNameRegExp)[0],\n useWithBlock = settings.useWithBlock,\n functionBody = \"var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;\",\n fn,\n parts,\n idx;\n\n if (isFunction(template)) {\n return template;\n }\n\n functionBody += useWithBlock ? \"with(\" + paramName + \"){\" : \"\";\n\n functionBody += \"$kendoOutput=\";\n\n parts = template\n .replace(escapedCurlyRegExp, \"__CURLY__\")\n .replace(encodeRegExp, \"#=$kendoHtmlEncode($1)#\")\n .replace(curlyRegExp, \"}\")\n .replace(escapedSharpRegExp, \"__SHARP__\")\n .split(\"#\");\n\n for (idx = 0; idx < parts.length; idx ++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n\n functionBody += useWithBlock ? \";}\" : \";\";\n\n functionBody += \"return $kendoOutput;\";\n\n functionBody = functionBody.replace(sharpRegExp, \"#\");\n\n try {\n // This function evaluation is required for legacy support of the Kendo Template syntax - non CSP compliant.\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n if (kendo.debugTemplates) {\n window.console.warn((\"Invalid template:'\" + template + \"' Generated code:'\" + functionBody + \"'\"));\n } else {\n throw new Error(kendo.format(\"Invalid template:'{0}' Generated code:'{1}'\", template, functionBody));\n }\n }\n }\n };\n\n function pad(number, digits, end) {\n number = number + \"\";\n digits = digits || 2;\n end = digits - number.length;\n\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n\n return number;\n }\n\n //JSON stringify\n (function() {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n rep,\n toString = {}.toString;\n\n\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n\n Date.prototype.toJSON = function() {\n var that = this;\n\n return isFinite(that.valueOf()) ?\n pad(that.getUTCFullYear(), 4) + \"-\" +\n pad(that.getUTCMonth() + 1) + \"-\" +\n pad(that.getUTCDate()) + \"T\" +\n pad(that.getUTCHours()) + \":\" +\n pad(that.getUTCMinutes()) + \":\" +\n pad(that.getUTCSeconds()) + \"Z\" : null;\n };\n\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {\n return this.valueOf();\n };\n }\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? \"\\\"\" + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === STRING ? c :\n \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\n }\n\n function str(key, holder) {\n var i,\n k,\n v,\n length,\n mind = gap,\n partial,\n value = holder[key],\n type;\n\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === \"[object Array]\") {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? \"[]\" : gap ?\n \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" :\n \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n\n v = partial.length === 0 ? \"{}\" : gap ?\n \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" :\n \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function(value, replacer, space) {\n var i;\n gap = \"\";\n indent = \"\";\n\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n } else if (typeof space === STRING) {\n indent = space;\n }\n\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error(\"JSON.stringify\");\n }\n\n return str(\"\", { \"\": value });\n };\n }\n })();\n\n // Date and Number formatting\n (function() {\n var dateFormatRegExp = /EEEE|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g,\n standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i,\n literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g,\n commaRegExp = /\\,/g,\n EMPTY = \"\",\n POINT = \".\",\n COMMA = \",\",\n SHARP = \"#\",\n ZERO = \"0\",\n PLACEHOLDER = \"??\",\n EN = \"en-US\",\n objectToString = {}.toString;\n\n //cultures\n kendo.cultures = kendo.cultures || {}; // Ensure cultures object exists\n kendo.cultures[\"en-US\"] = {\n name: EN,\n numberFormat: {\n pattern: [\"-n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n percent: {\n pattern: [\"-n %\", \"n %\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"%\"\n },\n currency: {\n name: \"US Dollar\",\n abbr: \"USD\",\n pattern: [\"($n)\", \"$n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"$\"\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n namesAbbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n namesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n },\n months: {\n names: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n namesAbbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n },\n AM: [ \"AM\", \"am\", \"AM\" ],\n PM: [ \"PM\", \"pm\", \"PM\" ],\n patterns: {\n d: \"M/d/yyyy\",\n D: \"dddd, MMMM dd, yyyy\",\n F: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n g: \"M/d/yyyy h:mm tt\",\n G: \"M/d/yyyy h:mm:ss tt\",\n m: \"MMMM dd\",\n M: \"MMMM dd\",\n s: \"yyyy'-'MM'-'ddTHH':'mm':'ss\",\n t: \"h:mm tt\",\n T: \"h:mm:ss tt\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\",\n y: \"MMMM, yyyy\",\n Y: \"MMMM, yyyy\"\n },\n \"/\": \"/\",\n \":\": \":\",\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n\n\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split(\"-\")[0]] || null;\n }\n\n return null;\n }\n\n return null;\n }\n\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n\n return culture || kendo.cultures.current;\n }\n\n kendo.culture = function(cultureName) {\n var cultures = kendo.cultures, culture;\n\n if (cultureName !== undefined$1) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n return cultures.current;\n }\n };\n\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n\n //set current culture to en-US.\n kendo.culture(EN);\n\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n\n var calendar = culture.calendars.standard,\n days = calendar.days,\n months = calendar.months;\n\n format = format.pattern || calendar.patterns[format] || format;\n\n return format.replace(dateFormatRegExp, function(match) {\n var minutes;\n var result;\n var sign;\n\n if (match === \"d\") {\n result = date.getDate();\n } else if (match === \"dd\") {\n result = pad(date.getDate());\n } else if (match === \"ddd\") {\n result = days.namesAbbr[date.getDay()];\n } else if (match === \"dddd\" || match === \"EEEE\") {\n result = days.names[date.getDay()];\n } else if (match === \"M\") {\n result = date.getMonth() + 1;\n } else if (match === \"MM\") {\n result = pad(date.getMonth() + 1);\n } else if (match === \"MMM\") {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === \"MMMM\") {\n result = months.names[date.getMonth()];\n } else if (match === \"yy\") {\n result = pad(date.getFullYear() % 100);\n } else if (match === \"yyyy\") {\n result = pad(date.getFullYear(), 4);\n } else if (match === \"h\" ) {\n result = date.getHours() % 12 || 12;\n } else if (match === \"hh\") {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === \"H\") {\n result = date.getHours();\n } else if (match === \"HH\") {\n result = pad(date.getHours());\n } else if (match === \"m\") {\n result = date.getMinutes();\n } else if (match === \"mm\") {\n result = pad(date.getMinutes());\n } else if (match === \"s\") {\n result = date.getSeconds();\n } else if (match === \"ss\") {\n result = pad(date.getSeconds());\n } else if (match === \"f\") {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === \"ff\") {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === \"fff\") {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === \"tt\" || match === \"aa\") {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === \"zzz\") {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n\n result = math.abs(minutes / 60).toString().split(\".\")[0];\n minutes = math.abs(minutes) - (result * 60);\n\n result = (sign ? \"+\" : \"-\") + pad(result);\n result += \":\" + pad(minutes);\n } else if (match === \"zz\" || match === \"z\") {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n\n result = math.abs(result).toString().split(\".\")[0];\n result = (sign ? \"+\" : \"-\") + (match === \"zz\" ? pad(result) : result);\n }\n\n return result !== undefined$1 ? result : match.slice(1, match.length - 1);\n });\n }\n\n //number formatting\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n\n var numberFormat = culture.numberFormat,\n decimal = numberFormat[POINT],\n precision = numberFormat.decimals,\n pattern = numberFormat.pattern[0],\n literals = [],\n symbol,\n isCurrency, isPercent,\n customPrecision,\n formatAndPrecision,\n negative = number < 0,\n integer,\n fraction,\n integerLength,\n fractionLength,\n replacement = EMPTY,\n value = EMPTY,\n idx,\n length,\n ch,\n hasGroup,\n hasNegativeFormat,\n decimalIndex,\n sharpIndex,\n zeroIndex,\n hasZero, hasSharp,\n percentIndex,\n currencyIndex,\n startZeroIndex,\n start = -1,\n end;\n\n //return empty string if no number\n if (number === undefined$1) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return number;\n }\n\n //if no format then return number.toString() or number.toLocaleString() if culture.name is not defined\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n\n formatAndPrecision = standardFormatRegExp.exec(format);\n\n // standard formatting\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n\n isCurrency = format === \"c\";\n isPercent = format === \"p\";\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n\n customPrecision = formatAndPrecision[2];\n\n if (customPrecision) {\n precision = +customPrecision;\n }\n\n //return number in exponential format\n if (format === \"e\") {\n var exp = customPrecision ? number.toExponential(precision) : number.toExponential(); // toExponential() and toExponential(undefined) differ in FF #653438.\n\n return exp.replace(POINT, numberFormat[POINT]);\n }\n\n // multiply if format is percent\n if (isPercent) {\n number *= 100;\n }\n\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n\n integer = number[0];\n fraction = number[1];\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n value = groupInteger(integer, 0, integer.length, numberFormat);\n\n if (fraction) {\n value += decimal + fraction;\n }\n\n if (format === \"n\" && !negative) {\n return value;\n }\n\n number = EMPTY;\n\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n\n if (ch === \"n\") {\n number += value;\n } else if (ch === \"$\" || ch === \"%\") {\n number += symbol;\n } else {\n number += ch;\n }\n }\n\n return number;\n }\n\n //custom formatting\n //\n //separate format by sections.\n\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", \"\"),\n literal = match.slice(1).replace(quoteChar, \"\");\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n\n format = format.split(\";\");\n if (negative && format[1]) {\n //get negative format\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0 && format[2]) {\n //format for zeros\n format = format[2];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n //return format if it is string constant.\n return format;\n }\n } else {\n format = format[0];\n }\n\n percentIndex = format.indexOf(\"%\");\n currencyIndex = format.indexOf(\"$\");\n\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n\n //multiply number if the format has percent\n if (isPercent) {\n number *= 100;\n }\n\n if (isCurrency && format[currencyIndex - 1] === \"\\\\\") {\n format = format.split(\"\\\\\").join(\"\");\n isCurrency = false;\n }\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n\n if (decimalIndex != -1) {\n fraction = number.toString().split(\"e\");\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n var rounded = round(number, sharpIndex, negative);\n\n while (rounded.charAt(rounded.length - 1) === ZERO && sharpIndex > 0 && sharpIndex > zeroIndex) {\n sharpIndex--;\n\n rounded = round(number, sharpIndex, negative);\n }\n\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n }\n\n number = round(number, idx, negative);\n\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n\n //define the index of the first digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n //define the index of the last digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n\n if (start == length) {\n end = start;\n }\n\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n\n integerLength = integer.length;\n fractionLength = fraction.length;\n\n if (negative && (number * -1) >= 0) {\n negative = false;\n }\n\n number = format.substring(0, start);\n\n if (negative && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), numberFormat);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n //replace symbol placeholders\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += (ch === \"$\" || ch === \"%\") ? symbol : ch;\n }\n number = value;\n }\n\n length = literals.length;\n\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n\n return number;\n }\n\n var groupInteger = function(number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n integer = number.substring(start, end);\n integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined$1 ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n if (idx > 0) {\n parts.push(integer.substring(0, idx));\n }\n break;\n }\n }\n\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n\n return number;\n };\n\n var round = function(value, precision, negative) {\n precision = precision || 0;\n\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + precision) : precision)));\n\n if (negative) {\n value = -value;\n }\n\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? (+value[1] - precision) : -precision));\n\n return value.toFixed(Math.min(precision, 20));\n };\n\n var toString = function(value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === \"[object Date]\") {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n\n return value !== undefined$1 ? value : \"\";\n };\n\n kendo.format = function(fmt) {\n var values = arguments;\n\n return fmt.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\");\n });\n };\n\n kendo._extractFormat = function(format) {\n if (format.slice(0,3) === \"{0:\") {\n format = format.slice(3, format.length - 1);\n }\n\n return format;\n };\n\n kendo._activeElement = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n\n kendo._round = round;\n kendo._outerWidth = function(element, includeMargin) { return $(element).outerWidth(includeMargin || false) || 0; };\n kendo._outerHeight = function(element, includeMargin) { return $(element).outerHeight(includeMargin || false) || 0; };\n kendo.toString = toString;\n })();\n\n\n (function() {\n var nonBreakingSpaceRegExp = /\\u00A0/g,\n spaceRegExp = /\\s/g,\n exponentRegExp = /[eE][\\-+]?[0-9]+/,\n shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/,\n longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n offsetRegExp = /[+-]\\d*/,\n FORMATS_SEQUENCE = [ [], [ \"G\", \"g\", \"F\" ], [ \"D\", \"d\", \"y\", \"m\", \"T\", \"t\" ] ],\n STANDARD_FORMATS = [\n [\n \"yyyy-MM-ddTHH:mm:ss.fffffffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fffffff\",\n \"yyyy-MM-ddTHH:mm:ss.fffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fff\",\n \"ddd MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:sszzz\",\n \"yyyy-MM-ddTHH:mmzzz\",\n \"yyyy-MM-ddTHH:mmzz\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm:ss\"\n ], [\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy/MM/dd HH:mm\"\n ], [\n \"yyyy/MM/dd\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n ]\n ],\n numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n },\n objectToString = {}.toString;\n\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n\n //if date's day is different than the typed one - adjust\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n\n function lowerArray(data) {\n var idx = 0,\n length = data.length,\n array = [];\n\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + \"\").toLowerCase();\n }\n\n return array;\n }\n\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n\n return newLocalInfo;\n }\n\n function parseExact(value, format, culture, strict) {\n if (!value) {\n return null;\n }\n\n var lookAhead = function(match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n },\n getNumber = function(size) {\n var rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}'),\n match = value.substr(valueIdx, size).match(rg);\n\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n },\n getIndexByName = function(names, lower) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = value.substr(valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n },\n checkLiteral = function() {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n },\n calendar = culture.calendars.standard,\n year = null,\n month = null,\n day = null,\n hours = null,\n minutes = null,\n seconds = null,\n milliseconds = null,\n idx = 0,\n valueIdx = 0,\n literal = false,\n date = new Date(),\n twoDigitYearMax = calendar.twoDigitYearMax || 2029,\n defaultYear = date.getFullYear(),\n ch, count, length, pattern,\n pmHour, UTC, matches,\n amDesignators, pmDesignators,\n hoursOffset, minutesOffset,\n hasTime, match;\n\n if (!format) {\n format = \"d\"; //shord date format\n }\n\n //if format is part of the patterns get real format\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n\n format = format.split(\"\");\n length = format.length;\n\n for (; idx < length; idx++) {\n ch = format[idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === \"d\") {\n count = lookAhead(\"d\");\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n\n if (day !== null && count > 2) {\n continue;\n }\n\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? \"namesAbbr\" : \"names\"], true);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === \"M\") {\n count = lookAhead(\"M\");\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1; //because month is zero based\n } else if (ch === \"y\") {\n count = lookAhead(\"y\");\n year = getNumber(count);\n\n if (year === null) {\n return null;\n }\n\n if (count == 2) {\n if (typeof twoDigitYearMax === \"string\") {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n\n year = (defaultYear - defaultYear % 100) + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === \"h\" ) {\n lookAhead(\"h\");\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === \"H\") {\n lookAhead(\"H\");\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === \"m\") {\n lookAhead(\"m\");\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === \"s\") {\n lookAhead(\"s\");\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === \"f\") {\n count = lookAhead(\"f\");\n\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count); //move value index position\n\n if (milliseconds !== null) {\n milliseconds = parseFloat(\"0.\" + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n\n } else if (ch === \"t\") {\n count = lookAhead(\"t\");\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n\n pmHour = getIndexByName(pmDesignators);\n if (!pmHour && !getIndexByName(amDesignators)) {\n return null;\n }\n }\n else if (ch === \"z\") {\n UTC = true;\n count = lookAhead(\"z\");\n\n if (value.substr(valueIdx, 1) === \"Z\") {\n checkLiteral();\n continue;\n }\n\n matches = value.substr(valueIdx, 6)\n .match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n\n if (!matches) {\n return null;\n }\n\n matches = matches[0].split(\":\");\n\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n\n if (!minutesOffset && hoursOffset.length > 3) { //(+|-)[hh][mm] format is used\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n\n if (count > 2) {\n minutesOffset = matches[0][0] + minutesOffset;\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, -59, 59)) {\n return null;\n }\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n\n // if more characters follow, assume wrong format\n // https://github.com/telerik/kendo-ui-core/issues/3476\n if (strict && !/^\\s*$/.test(value.substr(valueIdx))) {\n return null;\n }\n\n hasTime = hours !== null || minutes !== null || seconds || null;\n\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset;\n }\n\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n\n if (year < 100) {\n value.setFullYear(year);\n }\n\n if (value.getDate() !== day && UTC === undefined$1) {\n return null;\n }\n\n return value;\n }\n\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n offset = offset.substring(1);\n offset = (parseInt(offset.substr(0, 2), 10) * 60) + parseInt(offset.substring(2), 10);\n\n return sign * offset;\n }\n\n function getDefaultFormats(culture) {\n var length = math.max(FORMATS_SEQUENCE.length, STANDARD_FORMATS.length);\n var calendar = culture.calendar || culture.calendars.standard;\n var patterns = calendar.patterns;\n var cultureFormats, formatIdx, idx;\n var formats = [];\n\n for (idx = 0; idx < length; idx++) {\n cultureFormats = FORMATS_SEQUENCE[idx];\n for (formatIdx = 0; formatIdx < cultureFormats.length; formatIdx++) {\n formats.push(patterns[cultureFormats[formatIdx]]);\n }\n formats = formats.concat(STANDARD_FORMATS[idx]);\n }\n\n return formats;\n }\n\n function internalParseDate(value, formats, culture, strict) {\n if (objectToString.call(value) === \"[object Date]\") {\n return value;\n }\n\n var idx = 0;\n var date = null;\n var length;\n var tzoffset;\n\n if (value && value.indexOf(\"/D\") === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n\n culture = kendo.getCulture(culture);\n\n if (!formats) {\n formats = getDefaultFormats(culture);\n }\n\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture, strict);\n if (date) {\n return date;\n }\n }\n\n return date;\n }\n\n kendo.parseDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, false);\n };\n\n kendo.parseExactDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, true);\n };\n\n kendo.parseInt = function(value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n\n kendo.parseFloat = function(value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (typeof value === NUMBER) {\n return value;\n }\n\n value = value.toString();\n culture = kendo.getCulture(culture);\n\n var number = culture.numberFormat,\n percent = number.percent,\n currency = number.currency,\n symbol = currency.symbol,\n percentSymbol = percent.symbol,\n negative = value.indexOf(\"-\"),\n parts, isPercent;\n\n //handle exponential number\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number[\".\"], \".\"));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n\n if (value.indexOf(symbol) > -1 || (format && format.toLowerCase().indexOf(\"c\") > -1)) {\n number = currency;\n parts = number.pattern[0].replace(\"$\", symbol).split(\"n\");\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], \"\").replace(parts[1], \"\");\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n\n value = value.replace(\"-\", \"\")\n .replace(symbol, \"\")\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(number[\",\"].replace(nonBreakingSpaceRegExp, \" \")).join(\"\")\n .replace(spaceRegExp, \"\")\n .replace(number[\".\"], \".\");\n\n value = parseFloat(value);\n\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n\n if (value && isPercent) {\n value /= 100;\n }\n\n return value;\n };\n })();\n\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + \"box-shadow\") || element.css(\"box-shadow\"),\n radius = shadow ? shadow.match(boxShadowRegExp) || [ 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0 ],\n blur = math.max((+radius[3]), +(radius[4] || 0));\n\n return {\n left: (-radius[1]) + blur,\n right: (+radius[1]) + blur,\n bottom: (+radius[2]) + blur\n };\n }\n\n function wrap(element, autosize, resize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n windowOuterWidth = outerWidth(window);\n\n parent.parent().removeClass(\"k-animation-container-sm\");\n\n if (!parent.hasClass(\"k-child-animation-container\")) {\n var width = element[0].style.width,\n height = element[0].style.height,\n percentWidth = percentRegExp.test(width),\n percentHeight = percentRegExp.test(height),\n forceWidth = element.hasClass(\"k-tooltip\") || element.is(\".k-menu-horizontal.k-context-menu\");\n\n percentage = percentWidth || percentHeight;\n\n if (!percentWidth && (!autosize || (autosize && width) || forceWidth)) { width = autosize ? outerWidth(element) + 1 : outerWidth(element); }\n if (!percentHeight && (!autosize || (autosize && height)) || element.is(\".k-menu-horizontal.k-context-menu\")) { height = outerHeight(element); }\n\n element.wrap(\n $(\"
\")\n .addClass(\"k-child-animation-container\")\n .css({\n width: width,\n height: height\n }));\n parent = element.parent();\n\n parent.wrap(\n $(\"
\")\n .addClass(\"k-animation-container\")\n .attr(\"role\", \"region\")\n );\n\n if (percentage) {\n element.css({\n width: \"100%\",\n height: \"100%\"\n });\n }\n } else {\n wrapResize(element, autosize);\n }\n\n parent = parent.parent();\n\n if (windowOuterWidth < outerWidth(parent)) {\n parent.addClass(\"k-animation-container-sm\");\n resize = true;\n }\n\n if (resize) {\n wrapResize(element, autosize);\n }\n\n return parent;\n }\n\n function wrapResize(element, autosize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n wrapper = element.closest(\".k-animation-container\"),\n visible = element.is(\":visible\"),\n wrapperStyle = parent[0].style,\n elementHeight = element[0].style.height;\n\n if (wrapper.is(\":hidden\")) {\n wrapper.css({\n display: \"\",\n position: \"\"\n });\n }\n\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n\n if (!percentage) {\n if (!visible) {\n element.add(parent).show();\n }\n parent.css(\"width\", \"\"); // Needed to get correct width dimensions\n parent.css({\n width: autosize ? outerWidth(element) + 1 : outerWidth(element),\n });\n\n if (elementHeight === \"auto\") {\n element.css({ height: outerHeight(parent) });\n } else {\n parent.css({\n height: outerHeight(element)\n });\n }\n\n if (!visible) {\n element.hide();\n }\n }\n }\n\n function deepExtend(destination) {\n var arguments$1 = arguments;\n\n var i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments$1[i]);\n }\n\n return destination;\n }\n\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray,\n LazyObservableArray = kendo.data.LazyObservableArray,\n DataSource = kendo.data.DataSource,\n HierarchicalDataSource = kendo.data.HierarchicalDataSource,\n property,\n propValue,\n propType,\n propInit,\n destProp;\n\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit &&\n propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray &&\n propInit !== DataSource && propInit !== HierarchicalDataSource && propInit !== RegExp &&\n (!kendo.isFunction(window.ArrayBuffer) || propInit !== ArrayBuffer) && !(propValue instanceof HTMLElement)) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n }\n\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined$1 ? dflt : agent;\n }\n\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function(strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n\n return styles;\n }\n\n function isScrollable(element) {\n if (element.dataset[kendo.ns + \"scrollable\"] === \"false\") {\n return false;\n }\n\n if (element && element.className && typeof(element.className) === \"string\" && element.className.indexOf(\"k-auto-scrollable\") > -1) {\n return true;\n }\n\n var overflow = getComputedStyles(element, [\"overflow\"]).overflow;\n return overflow.indexOf(\"auto\") > -1 || overflow.indexOf(\"scroll\") > -1;\n }\n\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var browserVersion = support.browser.version;\n var el, isRtl;\n\n if (element instanceof $ && value !== undefined$1) {\n element.each(function(i, e) {\n scrollLeft(e, value);\n });\n\n return;\n } else {\n el = element instanceof $ ? element[0] : element;\n }\n\n if (!el) {\n return;\n }\n\n isRtl = support.isRtl(element);\n\n // After updating browser detection,\n // Test in which if should the Safari browsers go\n if (value !== undefined$1) {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && (mozila || webkit) && value > 0) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n\n (function() {\n support._scrollbar = undefined$1;\n\n support.scrollbar = function(refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement(\"div\"),\n result;\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n\n return result;\n }\n };\n\n support.isRtl = function(element) {\n return $(element).closest(\".k-rtl\").length > 0;\n };\n\n var table = document.createElement(\"table\");\n\n // Internet Explorer does not support setting the innerHTML of TBODY and TABLE elements\n try {\n table.innerHTML = \"\";\n\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n\n support.touch = \"ontouchstart\" in window;\n\n var docStyle = document.documentElement.style;\n var transitions = support.transitions = false,\n transforms = support.transforms = false,\n elementProto = \"HTMLElement\" in window ? HTMLElement.prototype : [];\n\n support.hasHW3D = (\"WebKitCSSMatrix\" in window && \"m11\" in new window.WebKitCSSMatrix()) || \"MozPerspective\" in docStyle || \"msPerspective\" in docStyle;\n support.cssFlexbox = (\"flexWrap\" in docStyle) || (\"WebkitFlexWrap\" in docStyle) || (\"msFlexWrap\" in docStyle);\n\n each([ \"Moz\", \"webkit\", \"O\", \"ms\" ], function() {\n var prefix = this.toString(),\n hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix != \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.devicePixelRatio = window.devicePixelRatio === undefined$1 ? 1 : window.devicePixelRatio;\n\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e$1) {\n //window.outerWidth throws error when in IE showModalDialog.\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n\n support.detectOS = function(ua) {\n var os = false, minorVersion, match = [],\n notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent == \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, \"default\");\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone || (/file|local|wmapp/).test(window.location.protocol) || os.cordova; // Use file protocol to detect appModes.\n\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n\n break;\n }\n }\n }\n return os;\n };\n\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n\n support.hasNativeScrolling = false;\n\n if (mobileOS.ios || (mobileOS.android && mobileOS.majorVersion > 2) || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n\n support.delayedClick = function() {\n\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (mobileOS.ios) {\n return true;\n }\n\n if (mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n return !($(\"meta[name=viewport]\").attr(\"content\") || \"\").match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n\n support.detectBrowser = function(ua) {\n var browser = false,\n match = [],\n chromiumEdgeMatch = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n if (browser.chrome) {\n chromiumEdgeMatch = ua.match(/(edg)[ \\/]([\\w.]+)/i);\n\n if (chromiumEdgeMatch) {\n browser.chromiumEdge = true;\n }\n }\n\n break;\n }\n }\n }\n\n return browser;\n };\n\n support.browser = support.detectBrowser(navigator.userAgent);\n\n if (!mobileOS && support.touch && support.browser.safari) {\n mobileOS = support.mobileOS = {\n ios: true,\n tablet: \"tablet\",\n device: \"ipad\",\n majorVersion: 13\n };\n }\n\n support.detectClipboardAccess = function() {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported(\"copy\") : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported(\"cut\") : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported(\"paste\") : false\n };\n\n if (support.browser.chrome) {\n //not using queryCommandSupported due to chromium issues 476508 and 542948\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n\n return commands;\n };\n\n support.clipboard = support.detectClipboardAccess();\n\n support.zoomLevel = function() {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n\n return support.touch ? (docEl.clientWidth / window.innerWidth) :\n browser.msie && browser.version >= 10 ? (((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth) : 1;\n } catch (e) {\n return 1;\n }\n };\n\n (function(browser) {\n // add browser-specific CSS class\n var cssClass = \"\",\n docElement = $(document.documentElement),\n majorVersion = parseInt(browser.version, 10);\n\n if (browser.msie) {\n cssClass = \"ie\";\n } else if (browser.mozilla) {\n cssClass = \"ff\";\n } else if (browser.safari) {\n cssClass = \"safari\";\n } else if (browser.webkit) {\n cssClass = \"webkit\";\n } else if (browser.opera) {\n cssClass = \"opera\";\n } else if (browser.edge) {\n cssClass = \"edge\";\n }\n\n if (cssClass) {\n cssClass = \"k-\" + cssClass + \" k-\" + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += \" k-mobile\";\n }\n\n if (!support.cssFlexbox) {\n cssClass += \" k-no-flexbox\";\n }\n\n docElement.addClass(cssClass);\n })(support.browser);\n\n support.eventCapture = document.documentElement.addEventListener;\n\n var input = document.createElement(\"input\");\n\n support.placeholder = \"placeholder\" in input;\n support.propertyChangeEvent = \"onpropertychange\" in input;\n\n support.input = (function() {\n var types = [\"number\", \"date\", \"time\", \"month\", \"week\", \"datetime\", \"datetime-local\"];\n var length = types.length;\n var value = \"test\";\n var result = {};\n var idx = 0;\n var type;\n\n for (;idx < length; idx++) {\n type = types[idx];\n input.setAttribute(\"type\", type);\n input.value = value;\n\n result[type.replace(\"-\", \"\")] = input.type !== \"text\" && input.value !== value;\n }\n\n return result;\n })();\n\n input.style.cssText = \"float:left;\";\n\n support.cssFloat = !!input.style.cssFloat;\n\n input = null;\n\n support.stableSort = (function() {\n // Chrome sort is not stable for more than *10* items\n // IE9+ sort is not stable for than *512* items\n var threshold = 513;\n\n var sorted = [{\n index: 0,\n field: \"b\"\n }];\n\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: \"a\"\n });\n }\n\n sorted.sort(function(a, b) {\n return a.field > b.field ? 1 : (a.field < b.field ? -1 : 0);\n });\n\n return sorted[0].index === 1;\n })();\n\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector ||\n elementProto.msMatchesSelector || elementProto.oMatchesSelector ||\n elementProto.matchesSelector || elementProto.matches ||\n function( selector ) {\n var nodeList = document.querySelectorAll ? ( this.parentNode || document ).querySelectorAll( selector ) || [] : $(selector),\n i = nodeList.length;\n\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n\n return false;\n };\n\n support.matchMedia = \"matchMedia\" in window;\n\n support.pushState = window.history && window.history.pushState;\n\n support.hashChange = \"onhashchange\" in window;\n\n support.customElements = \"registerElement\" in window.document;\n\n var chrome = support.browser.chrome,\n mobileChrome = support.browser.crios,\n mozilla = support.browser.mozilla,\n safari = support.browser.safari;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.kineticScrollNeeded = mobileOS && (mobileOS.device !== \"ipad\" || mobileOS.majorVersion < 13) && (support.touch || support.msPointers || support.pointers);\n })();\n\n\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != \"toJSON\") { // Ignore fake IE7 toJSON.\n result++;\n }\n }\n\n return result;\n }\n\n function getOffset(element, type, positioned) {\n if (!type) {\n type = \"offset\";\n }\n\n var offset = element[type]();\n // clone ClientRect object to JS object (jQuery3)\n var result = {\n top: offset.top,\n right: offset.right,\n bottom: offset.bottom,\n left: offset.left\n };\n\n // IE10 touch zoom is living in a separate viewport\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n var sign = support.isRtl(element) ? 1 : -1;\n\n result.top -= (window.pageYOffset - (document.documentElement.scrollTop));\n result.left -= (window.pageXOffset + (sign * document.documentElement.scrollLeft));\n }\n\n return result;\n }\n\n var directions = {\n left: { reverse: \"right\" },\n right: { reverse: \"left\" },\n down: { reverse: \"up\" },\n up: { reverse: \"down\" },\n top: { reverse: \"bottom\" },\n bottom: { reverse: \"top\" },\n \"in\": { reverse: \"out\" },\n out: { reverse: \"in\" }\n };\n\n function parseEffects(input) {\n var effects = {};\n\n each((typeof input === \"string\" ? input.split(\" \") : input), function(idx) {\n effects[idx] = this;\n });\n\n return effects;\n }\n\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n\n var effects = {};\n\n $.extend(effects, {\n enabled: true,\n Element: function(element) {\n this.element = $(element);\n },\n\n promise: function(element, options) {\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (options.init) {\n options.init();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element); // call the external complete callback with the element\n }\n\n element.dequeue();\n },\n\n disable: function() {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n\n enable: function() {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n\n effects.promiseShim = effects.promise;\n\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n // options is the list of effect names separated by space e.g. animate(element, \"fadeIn slideDown\")\n\n // only callback is provided e.g. animate(element, options, function() {});\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n\n return extend({\n //default options\n effects: {},\n duration: 400, //jQuery default duration\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, { completeCallback: options.complete, complete: noop }); // Move external complete callback, so deferred.resolve can be always executed.\n\n }\n\n function animate(element, options, duration, reverse, complete) {\n var idx = 0,\n length = element.length,\n instance;\n\n for (; idx < length; idx ++) {\n instance = $(element[idx]);\n instance.queue(function() {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n\n return element;\n }\n\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n }\n\n if (!(\"kendoAnimate\" in $.fn)) {\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n\n kendoAnimate: function(options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n\n kendoAddClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n\n kendoRemoveClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function(classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n\n var ampRegExp = /&/g,\n ltRegExp = //g;\n function htmlEncode(value) {\n return (\"\" + value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n }\n\n function unescape(value) {\n var template;\n\n try {\n template = window.decodeURIComponent(value);\n } catch (error) {\n // If the string contains Unicode characters\n // the decodeURIComponent() will throw an error.\n // Therefore: convert to UTF-8 character\n template = value.replace(/%u([\\dA-F]{4})|%([\\dA-F]{2})/gi, function(_, m1, m2) {\n return String.fromCharCode(parseInt(\"0x\" + (m1 || m2), 16));\n });\n }\n\n return template;\n }\n\n var eventTarget = function(e) {\n return e.target;\n };\n\n if (support.touch) {\n\n eventTarget = function(e) {\n var touches = \"originalEvent\" in e ? e.originalEvent.changedTouches : \"changedTouches\" in e ? e.changedTouches : null;\n\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n\n each([\"swipe\", \"swipeLeft\", \"swipeRight\", \"swipeUp\", \"swipeDown\", \"doubleTap\", \"tap\"], function(m, value) {\n $.fn[value] = function(callback) {\n return this.on(value, callback);\n };\n });\n }\n\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = \"mousedown touchstart\";\n support.mouseup = \"mouseup touchend\";\n support.mousemove = \"mousemove touchmove\";\n support.mousecancel = \"mouseleave touchcancel\";\n support.click = \"click\";\n support.resize = \"resize\";\n } else {\n support.mousedown = \"touchstart\";\n support.mouseup = \"touchend\";\n support.mousemove = \"touchmove\";\n support.mousecancel = \"touchcancel\";\n support.click = \"touchend\";\n support.resize = \"orientationchange\";\n }\n } else if (support.pointers) {\n support.mousemove = \"pointermove\";\n support.mousedown = \"pointerdown\";\n support.mouseup = \"pointerup\";\n support.mousecancel = \"pointercancel\";\n support.click = \"pointerup\";\n support.resize = \"orientationchange resize\";\n } else if (support.msPointers) {\n support.mousemove = \"MSPointerMove\";\n support.mousedown = \"MSPointerDown\";\n support.mouseup = \"MSPointerUp\";\n support.mousecancel = \"MSPointerCancel\";\n support.click = \"MSPointerUp\";\n support.resize = \"orientationchange resize\";\n } else {\n support.mousemove = \"mousemove\";\n support.mousedown = \"mousedown\";\n support.mouseup = \"mouseup\";\n support.mousecancel = \"mouseleave\";\n support.click = \"click\";\n support.resize = \"resize\";\n }\n\n var wrapExpression = function(members, paramName) {\n var result = paramName || \"d\",\n index,\n idx,\n length,\n member,\n count = 1;\n\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== \"\") {\n index = member.indexOf(\"[\");\n\n if (index !== 0) {\n if (index == -1) {\n member = \".\" + member;\n } else {\n count++;\n member = \".\" + member.substring(0, index) + \" || {})\" + member.substring(index);\n }\n }\n\n count++;\n result += member + ((idx < length - 1) ? \" || {})\" : \")\");\n }\n }\n return new Array(count).join(\"(\") + result;\n },\n localUrlRe = /^([a-z]+:)?\\/\\//i;\n\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || { },\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n keys: {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n },\n support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: \"\",\n attr: function(value) {\n return \"data-\" + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: Template.compile.bind(Template),\n render: Template.render.bind(Template),\n stringify: JSON.stringify.bind(JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n unescape: unescape,\n isLocalUrl: function(url) {\n return url && !localUrlRe.test(url);\n },\n mediaQuery: mediaQuery,\n\n expr: function(expression, safe, paramName) {\n expression = expression || \"\";\n\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n\n paramName = paramName || \"d\";\n\n if (expression && expression.charAt(0) !== \"[\") {\n expression = \".\" + expression;\n }\n\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g,'\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g,\"'$1_$DOT$_$2'\");\n expression = wrapExpression(expression.split(\".\"), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, \".\");\n } else {\n expression = paramName + expression;\n }\n\n return expression;\n },\n\n exprToArray: function (expression, safe) {\n expression = expression || \"\";\n var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n var fields = [];\n\n expression.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(kendo.isPresent(index) ? index : (indexAccessor || field));\n return undefined$1;\n });\n\n return fields;\n },\n\n getter: function(expression, safe) {\n var key = expression + safe;\n\n return getterCache[key] = getterCache[key] || (function (obj) {\n var fields = kendo.exprToArray(expression, safe);\n\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!kendo.isPresent(result) && safe) {\n return result;\n }\n }\n\n return result;\n });\n },\n\n setter: function(expression) {\n return setterCache[expression] = setterCache[expression] || (function (obj, value) {\n var fields = kendo.exprToArray(expression);\n\n var innerSetter = function (ref) {\n var parent = ref.parent;\n var val = ref.val;\n var prop = ref.prop;\n var props = ref.props;\n\n if (props.length) {\n parent = parent[props.shift()];\n innerSetter({ parent: parent, val: val, prop: prop, props: props });\n } else {\n parent[prop] = val;\n }\n };\n\n innerSetter({\n parent: obj,\n val: value,\n prop: fields.pop(),\n props: fields\n });\n });\n },\n\n accessor: function(expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n\n guid: function() {\n var id = \"\", i, random, chars = \"abcdef\";\n\n id += chars[Math.floor(Math.random() * Math.floor(chars.length))];\n\n for (i = 1; i < 32; i++) {\n random = math.random() * 16 | 0;\n\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += \"-\";\n }\n id += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);\n }\n\n return id;\n },\n\n roleSelector: function(role) {\n return role.replace(/(\\S+)/g, \"[\" + kendo.attr(\"role\") + \"=$1],\").slice(0, -1);\n },\n\n directiveSelector: function(directives) {\n var selectors = directives.split(\" \");\n\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != \"view\") {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, \"$1-$2\");\n }\n }\n }\n\n return selectors.join(\" \").replace(/(\\S+)/g, \"kendo-mobile-$1,\").slice(0, -1);\n },\n\n triggeredByInput: function(e) {\n return (/^(label|input|textarea|select)$/i).test(e.target.tagName);\n },\n\n onWidgetRegistered: function(callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n\n logToConsole: function(message, type) {\n var console = window.console;\n\n if (!kendo.suppressLog && typeof(console) != \"undefined\" && console.log) {\n console[type || \"log\"](message);\n }\n }\n });\n\n var Widget = Observable.extend( {\n init: function(element, options) {\n var that = this;\n\n validatePackage();\n\n that.element = kendo.jQuery(element).handler(that);\n\n that.angular(\"init\", options);\n\n Observable.fn.init.call(that);\n\n var dataSource = options ? options.dataSource : null;\n var props;\n\n if (options) {\n props = (that.componentTypes || {})[(options || {}).componentType];\n }\n\n if (dataSource) {\n // avoid deep cloning the data source\n options = extend({}, options, { dataSource: {} });\n }\n\n options = that.options = extend(true, {}, that.options, that.defaults, props || {}, options);\n\n if (dataSource) {\n options.dataSource = dataSource;\n }\n\n if (!that.element.attr(kendo.attr(\"role\"))) {\n that.element.attr(kendo.attr(\"role\"), (options.name || \"\").toLowerCase());\n }\n\n that.element.data(\"kendo\" + options.prefix + options.name, that);\n\n that.bind(that.events, options);\n },\n\n events: [],\n\n options: {\n prefix: \"\"\n },\n\n _hasBindingTarget: function() {\n return !!this.element[0].kendoBindingTarget;\n },\n\n _tabindex: function(target) {\n target = target || this.wrapper;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n\n element.removeAttr(TABINDEX);\n\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n\n setOptions: function(options) {\n this._clearCssClasses(options);\n this._setEvents(options);\n $.extend(this.options, options);\n this._applyCssClasses();\n },\n\n _setEvents: function(options) {\n var that = this,\n idx = 0,\n length = that.events.length,\n e;\n\n for (; idx < length; idx ++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n\n that.bind(that.events, options);\n },\n\n resize: function(force) {\n var size = this.getSize(),\n currentSize = this._size;\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n },\n\n getSize: function() {\n return kendo.dimensions(this.element);\n },\n\n size: function(size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n\n setSize: $.noop,\n _resize: $.noop,\n\n destroy: function() {\n var that = this;\n\n that.element.removeData(\"kendo\" + that.options.prefix + that.options.name);\n that.element.removeData(\"handler\");\n that.unbind();\n },\n _destroy: function() {\n this.destroy();\n },\n angular: function() {},\n\n _muteAngularRebind: function(callback) {\n this._muteRebind = true;\n\n callback.call(this);\n\n this._muteRebind = false;\n },\n\n _applyCssClasses: function(element) {\n var protoOptions = this.__proto__.options,\n options = this.options,\n el = element || this.wrapper || this.element,\n classes = [],\n i, prop, validFill, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (validFill && validFill.length) {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop],\n fill: options.fillMode\n }));\n }\n } else {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop]\n }));\n }\n }\n }\n\n el.addClass(classes.join(\" \"));\n },\n\n _ariaLabel: function(target) {\n var that = this,\n inputElm = that.element,\n inputId = inputElm.attr(\"id\"),\n labelElm = $(\"label[for=\\\"\" + inputId + \"\\\"]\"),\n ariaLabel = inputElm.attr(ARIA_LABEL),\n ariaLabelledBy = inputElm.attr(ARIA_LABELLEDBY),\n labelId;\n\n if (target[0] === inputElm[0]) {\n return;\n }\n\n if (ariaLabel) {\n target.attr(ARIA_LABEL, ariaLabel);\n } else if (ariaLabelledBy) {\n target.attr(ARIA_LABELLEDBY, ariaLabelledBy);\n } else if (labelElm.length) {\n labelId = labelElm.attr(\"id\") || that._generateLabelId(labelElm, inputId || kendo.guid());\n target.attr(ARIA_LABELLEDBY, labelId);\n }\n },\n\n _clearCssClasses: function(newOptions, element) {\n var protoOptions = this.__proto__.options,\n currentOptions = this.options,\n el = element || this.wrapper || this.element,\n i, prop, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop) && newOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop],\n fill: currentOptions.fillMode\n }));\n } else {\n if (prop === \"fillMode\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"themeColor\",\n value: currentOptions.themeColor,\n fill: currentOptions.fillMode\n }));\n }\n\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop]\n }));\n }\n }\n }\n },\n\n _generateLabelId: function(label, inputId) {\n var labelId = inputId + LABELIDPART;\n\n label.attr(\"id\", labelId);\n\n return labelId;\n },\n });\n\n var DataBoundWidget = Widget.extend({\n // Angular consumes these.\n dataItems: function() {\n return this.dataSource.flatView();\n },\n\n _angularItems: function(cmd) {\n var that = this;\n that.angular(cmd, function() {\n return {\n elements: that.items(),\n data: $.map(that.dataItems(), function(dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n });\n\n kendo.dimensions = function(element, dimensions) {\n var domElement = element[0];\n\n if (dimensions) {\n element.css(dimensions);\n }\n\n return { width: domElement.offsetWidth, height: domElement.offsetHeight };\n };\n\n kendo.notify = noop;\n\n var templateRegExp = /template$/i,\n jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/,\n jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]+\\]$/,\n dashRegExp = /([A-Z])/g;\n\n function parseOption(element, option) {\n var value;\n\n if (option.indexOf(\"data\") === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n\n option = option.replace(dashRegExp, \"-$1\");\n value = element.getAttribute(\"data-\" + kendo.ns + option);\n\n if (value === null) {\n value = undefined$1;\n } else if (value === \"null\") {\n value = null;\n } else if (value === \"true\") {\n value = true;\n } else if (value === \"false\") {\n value = false;\n } else if (numberRegExp.test(value) && option != \"mask\" && option != \"format\") {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n try {\n value = JSON.parse(value);\n } catch (error) {\n // Fallback to function eval for legacy reason - non CSP compliant\n value = new Function(\"return (\" + value + \")\")();\n }\n }\n\n return value;\n }\n\n function parseOptions(element, options, source) {\n var result = {},\n option,\n value,\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n for (option in options) {\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n\n if (templateRegExp.test(option) && role != \"drawer\") {\n if (typeof value === \"string\") {\n if ($(\"#\" + value).length) {\n value = kendo.template($(\"#\" + value).html());\n } else if (source) {\n value = kendo.template(source[value]);\n }\n } else {\n value = element.getAttribute(option);\n }\n }\n\n result[option] = value;\n }\n }\n\n return result;\n }\n\n kendo.initWidget = function(element, options, roles) {\n var result,\n option,\n widget,\n idx,\n length,\n role,\n value,\n dataSource,\n fullPath,\n widgetKeyRegExp;\n\n // Preserve backwards compatibility with (element, options, namespace) signature, where namespace was kendo.ui\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n\n element = element.nodeType ? element : element[0];\n\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n if (!role) {\n return;\n }\n\n fullPath = role.indexOf(\".\") === -1;\n\n // look for any widget that may be already instantiated based on this role.\n // The prefix used is unknown, hence the regexp\n //\n\n if (fullPath) {\n widget = roles[role];\n } else { // full namespace path - like kendo.ui.Widget\n widget = kendo.getter(role)(window);\n }\n\n var data = $(element).data(),\n widgetKey = widget ? \"kendo\" + widget.fn.options.prefix + widget.fn.options.name : \"\";\n\n if (fullPath) {\n widgetKeyRegExp = new RegExp(\"^kendo.*\" + role + \"$\", \"i\");\n } else { // full namespace path - like kendo.ui.Widget\n widgetKeyRegExp = new RegExp(\"^\" + widgetKey + \"$\", \"i\");\n }\n\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n // we have detected a widget of the same kind - save its reference, we will set its options\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n\n if (!widget) {\n return;\n }\n\n dataSource = parseOption(element, \"dataSource\");\n\n options = $.extend({}, parseOptions(element, $.extend({}, widget.fn.options, widget.fn.defaults) ), options);\n\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n options[option] = kendo.getter(value)(window);\n }\n }\n\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n\n return result;\n };\n\n kendo.rolesFromNamespaces = function(namespaces) {\n var roles = [],\n idx,\n length;\n\n if (!namespaces[0]) {\n namespaces = [kendo.ui, kendo.dataviz.ui];\n }\n\n for (idx = 0, length = namespaces.length; idx < length; idx ++) {\n roles[idx] = namespaces[idx].roles;\n }\n\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n\n kendo.init = function(element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n kendo.initWidget(this, {}, roles);\n });\n };\n\n kendo.destroy = function(element) {\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n var data = $(this).data();\n\n for (var key in data) {\n if (key.indexOf(\"kendo\") === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n\n function resizableWidget() {\n var widget = $(this);\n return ($.inArray(widget.attr(\"data-\" + kendo.ns + \"role\"), [\"slider\", \"rangeslider\", \"breadcrumb\"]) > -1) || widget.is(\":visible\");\n }\n\n kendo.resize = function(element, force) {\n var widgets = $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().filter(resizableWidget);\n\n if (!widgets.length) {\n return;\n }\n\n // sort widgets based on their parent-child relation\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n\n // resize widgets\n $.each(widgetsArray, function() {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n\n kendo.parseOptions = parseOptions;\n\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function(container, toggle, options) {\n var mask = container.find(\".k-loading-mask\"),\n support = kendo.support,\n browser = support.browser,\n isRtl, leftRight, webkitCorrection, containerScrollLeft, cssClass;\n\n options = $.extend({}, {\n width: \"100%\",\n height: \"100%\",\n top: container.scrollTop(),\n opacity: false\n }, options);\n\n cssClass = options.opacity ? 'k-loading-mask k-opaque' : 'k-loading-mask';\n\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? \"right\" : \"left\";\n containerScrollLeft = kendo.scrollLeft(container);\n webkitCorrection = browser.webkit ? (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft) : 0;\n\n mask = $(kendo.format(\"
{1}
\", cssClass, kendo.ui.progress.messages.loading))\n .width(options.width).height(options.height)\n .css(\"top\", options.top)\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\n .prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function(widget, register, prefix) {\n var name = widget.fn.options.name,\n getter;\n\n register = register || kendo.ui;\n prefix = prefix || \"\";\n\n register[name] = widget;\n\n register.roles[name.toLowerCase()] = widget;\n\n getter = \"getKendo\" + prefix + name;\n name = \"kendo\" + prefix + name;\n\n var widgetEntry = { name: name, widget: widget, prefix: prefix || \"\" };\n kendo.widgets.push(widgetEntry);\n\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n\n $.fn[name] = function(options) {\n var value = this,\n args;\n\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n\n this.each(function() {\n var widget = $.data(this, name),\n method,\n result;\n\n if (!widget) {\n throw new Error(kendo.format(\"Cannot call method '{0}' of {1} before it is initialized\", options, name));\n }\n\n method = widget[options];\n\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format(\"Cannot find method '{0}' of {1}\", options, name));\n }\n\n result = method.apply(widget, args);\n\n if (result !== undefined$1) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function() {\n return new widget(this, options);\n });\n }\n\n return value;\n };\n\n $.fn[name].widget = widget;\n\n $.fn[getter] = function() {\n return this.data(name);\n };\n }\n });\n\n kendo.ui.progress.messages = {\n loading: \"Loading...\"\n };\n\n var ContainerNullObject = { bind: function() { return this; }, nullObject: true, options: {} };\n\n var MobileWidget = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass(\"km-widget\");\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n\n options: {\n prefix: \"Mobile\"\n },\n\n events: [],\n\n view: function() {\n var viewElement = this.element.closest(kendo.roleSelector(\"view splitview modalview drawer\"));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n\n viewHasNativeScrolling: function() {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n\n container: function() {\n var element = this.element.closest(kendo.roleSelector(\"view layout modalview drawer splitview\"));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n\n extend(kendo.mobile, {\n init: function(element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n\n roles: {},\n\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, \"Mobile\");\n }\n }\n });\n\n deepExtend(kendo.dataviz, {\n init: function(element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n\n kendo.touchScroller = function(elements, options) {\n // return the first touch scroller\n if (!options) { options = {}; }\n\n options.useNative = true;\n\n return $(elements).map(function(idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data(\"kendoMobileScroller\")) {\n element.kendoMobileScroller(options);\n return element.data(\"kendoMobileScroller\");\n } else {\n return false;\n }\n })[0];\n };\n\n kendo.preventDefault = function(e) {\n e.preventDefault();\n };\n\n kendo.widgetInstance = function(element, suites) {\n var role = element.data(kendo.ns + \"role\"),\n widgets = [], i, length,\n elementData = element.data(\"kendoView\");\n\n if (role) {\n // HACK!!! mobile view scroller widgets are instantiated on data-role=\"content\" elements. We need to discover them when resizing.\n if (role === \"content\") {\n role = \"scroller\";\n }\n\n // kendo.View is not a ui plugin\n\n if (role === \"view\" && elementData) {\n return elementData;\n }\n\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i ++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n }\n else {\n widgets = [ kendo.ui.roles[role], kendo.dataviz.ui.roles[role], kendo.mobile.ui.roles[role] ];\n }\n\n if (role.indexOf(\".\") >= 0) {\n widgets = [ kendo.getter(role)(window) ];\n }\n\n for (i = 0, length = widgets.length; i < length; i ++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n\n kendo.onResize = function(callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function() { setTimeout(callback, 600); };\n }\n\n $(window).on(support.resize, handler);\n return handler;\n };\n\n kendo.unbindResize = function(callback) {\n $(window).off(support.resize, callback);\n };\n\n kendo.attrValue = function(element, key) {\n return element.data(kendo.ns + key);\n };\n\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n nodeName === \"a\" ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN\n ) &&\n visible(element);\n }\n\n function visible(element) {\n return $.expr.pseudos.visible(element) &&\n !$(element).parents().addBack().filter(function() {\n return $.css(this,\"visibility\") === \"hidden\";\n }).length;\n }\n\n $.extend($.expr.pseudos, {\n kendoFocusable: function(element) {\n var idx = $.attr(element, \"tabindex\");\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n\n var MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseenter\", \"mouseleave\", \"mouseover\", \"mouseout\", \"mouseup\", \"click\"];\n var EXCLUDE_BUST_CLICK_SELECTOR = \"label, input, [data-rel=external]\";\n\n var MouseEventNormalizer = {\n setupMouseMute: function() {\n var idx = 0,\n length = MOUSE_EVENTS.length,\n element = document.documentElement;\n\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n\n MouseEventNormalizer.mouseTrap = true;\n\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n\n var handler = function(e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === \"click\") {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n\n muteMouse: function(e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n\n unMuteMouse: function() {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function() {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n if (support.msPointers && !(\"onmspointerenter\" in window)) { // IE10\n // Create MSPointerEnter/MSPointerLeave events using mouseover/out and event-time checks\n $.each({\n MSPointerEnter: \"MSPointerOver\",\n MSPointerLeave: \"MSPointerOut\"\n }, function( orig, fix ) {\n $.event.special[ orig ] = {\n delegateType: fix,\n bindType: fix,\n\n handle: function( event ) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !$.contains( target, related )) ) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply( this, arguments );\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n\n\n var getEventMap = function(e) { return (eventMap[e] || e); },\n eventRegEx = /([^ ]+)/g;\n\n kendo.applyEventMap = function(events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n\n if (ns) {\n events = events.replace(eventRegEx, \"$1.\" + ns);\n }\n\n return events;\n };\n\n kendo.keyDownHandler = function(e, widget) {\n var events = widget._events.kendoKeydown;\n\n if (!events) {\n return true;\n }\n\n events = events.slice();\n e.sender = widget;\n e.preventKendoKeydown = false;\n for (var idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(widget, e);\n }\n\n return !e.preventKendoKeydown;\n };\n\n var on = $.fn.on;\n\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n\n noDepricateExtend(true, kendoJQuery, $);\n\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n\n kendoJQuery.fn.constructor = kendoJQuery;\n\n kendoJQuery.fn.init = function(selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n\n var rootjQuery = kendoJQuery(document);\n\n extend(kendoJQuery.fn, {\n handler: function(handler) {\n this.data(\"handler\", handler);\n return this;\n },\n\n autoApplyNS: function(ns) {\n this.data(\"kendoNS\", ns || kendo.guid());\n return this;\n },\n\n on: function() {\n var that = this,\n ns = that.data(\"kendoNS\");\n\n // support for event map signature\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n\n var context = that,\n args = slice.call(arguments);\n\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n\n var callback = args[args.length - 1],\n events = kendo.applyEventMap(args[0], ns);\n\n // setup mouse trap\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n\n var selector = args.length === 2 ? null : args[1],\n bustClick = events.indexOf(\"click\") > -1 && events.indexOf(\"touchend\") > -1;\n\n on.call(this,\n {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n },\n selector,\n {\n bustClick: bustClick\n });\n }\n\n if (arguments[0].indexOf(\"keydown\") !== -1 && args[1] && args[1].options) {\n args[0] = events;\n var widget = args[1];\n var keyDownCallBack = args[args.length - 1];\n args[args.length - 1] = function(e) {\n if (kendo.keyDownHandler(e, widget)) {\n return keyDownCallBack.apply(this, [e]);\n }\n };\n on.apply(that, args);\n return that;\n }\n\n if (typeof callback === STRING) {\n context = that.data(\"handler\");\n callback = context[callback];\n\n args[args.length - 1] = function(e) {\n callback.call(context, e);\n };\n }\n\n args[0] = events;\n\n on.apply(that, args);\n\n return that;\n },\n\n kendoDestroy: function(ns) {\n ns = ns || this.data(\"kendoNS\");\n\n if (ns) {\n this.off(\".\" + ns);\n }\n\n return this;\n }\n });\n\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n\n kendo.timezone = (function() {\n var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\n var days = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\n\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n\n if (!cache) {\n rule[8] = cache = {};\n }\n\n if (cache[year]) {\n return cache[year];\n }\n\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf(\"last\") === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf(\">=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n } else if (on.indexOf(\"<=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n }\n\n return cache[year] = date;\n }\n\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n\n if (!rules) {\n var time = zone.split(\":\");\n var offset = 0;\n\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\n }\n\n var year = new Date(utcTime).getUTCFullYear();\n\n rules = jQuery.grep(rules, function(rule) {\n var from = rule[0];\n var to = rule[1];\n\n return from <= year && (to >= year || (from == year && to == \"only\") || to == \"max\");\n });\n\n rules.push(utcTime);\n\n rules.sort(function(a, b) {\n if (typeof a != \"number\") {\n a = Number(ruleToDate(year, a));\n }\n\n if (typeof b != \"number\") {\n b = Number(ruleToDate(year, b));\n }\n\n return a - b;\n });\n\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n\n return isNaN(rule) ? rule : null;\n }\n\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n\n if (typeof zoneRules === \"string\") {\n zoneRules = zones[zoneRules];\n }\n\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n\n if (until && utcTime > until) {\n break;\n }\n }\n\n var zone = zoneRules[idx + 1];\n\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + \".\");\n }\n\n return zone;\n }\n\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(),\n utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(),\n utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n\n var zone = findZone(utcTime, zones, timezone);\n\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n\n function offset(utcTime, timezone) {\n if (timezone == \"Etc/UTC\" || timezone == \"Etc/GMT\") {\n return 0;\n }\n\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n var base = zone[2];\n\n if (base.indexOf(\"/\") >= 0) {\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf(\"%s\") >= 0) {\n return base.replace(\"%s\", (!rule || rule[7] == \"-\") ? '' : rule[7]);\n }\n\n return base;\n }\n\n function convert(date, fromOffset, toOffset) {\n var tempToOffset = toOffset;\n var diff;\n\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n\n var fromLocalOffset = date.getTimezoneOffset();\n\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = date.getTimezoneOffset();\n\n if (typeof tempToOffset == STRING) {\n tempToOffset = this.offset(date, tempToOffset);\n }\n\n diff = (toLocalOffset - fromLocalOffset) + (toOffset - tempToOffset);\n\n return new Date(date.getTime() + diff * 60000);\n }\n\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n\n function toLocalDate(time) {\n return this.apply(new Date(time), \"Etc/UTC\");\n }\n\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n })();\n\n kendo.date = (function() {\n var MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000;\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n\n dir = dir || 1;\n day = ((day - date.getDay()) + (7 * dir)) % 7;\n\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n\n function firstDayOfMonth(date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n }\n\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0),\n first = firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n }\n\n function firstDayOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n }\n\n function lastDayOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n }\n\n function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== 1) {\n return addDays(dayOfWeek(date, weekStartDay, -1), 4);\n }\n\n return addDays(date, (4 - (date.getDay() || 7)));\n }\n\n function calcWeekInYear(date, weekStartDay) {\n var firstWeekInYear = new Date(date.getFullYear(), 0, 1, -6);\n\n var newDate = moveDateToWeekStart(date, weekStartDay);\n\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n\n var days = Math.floor(diffInMS / MS_PER_DAY);\n\n return 1 + Math.floor(days / 7);\n }\n\n function weekInYear(date, weekStartDay) {\n if (weekStartDay === undefined$1) {\n weekStartDay = kendo.culture().calendar.firstDay;\n }\n\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n\n var weekNumber = calcWeekInYear(date, weekStartDay);\n\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n\n return weekNumber;\n }\n\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(),\n date.getDate(), date.getHours(), date.getMinutes(),\n date.getSeconds(), date.getMilliseconds());\n }\n\n function getMilliseconds(date) {\n return toInvariantTime(date).getTime() - getDate(toInvariantTime(date));\n }\n\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msValue;\n\n if (!value || msMin == msMax) {\n return true;\n }\n\n if (min >= max) {\n max += MS_PER_DAY;\n }\n\n msValue = getMilliseconds(value);\n\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(),\n msMax = max.getTime(),\n msValue;\n\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n\n msValue = value.getTime();\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n\n date.setTime(date.getTime() + milliseconds);\n\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n\n function setHours(date, time) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n adjustDST(date, time.getHours());\n return date;\n }\n\n function today() {\n return getDate(new Date());\n }\n\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n\n return staticDate;\n }\n\n function addYear(date, offset) {\n var currentDate = new Date(date);\n\n return new Date(currentDate.setFullYear(currentDate.getFullYear() + offset));\n }\n\n function addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === \"LITERAL\") {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: \"literal\",\n pattern: value\n });\n }\n }\n\n function isHour12(pattern) {\n return pattern === \"h\" || pattern === \"K\";\n }\n\n function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n }\n\n return nameType;\n }\n\n function startsWith(text, searchString, position) {\n position = position || 0;\n return text.indexOf(searchString, position) === position;\n }\n\n function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (typeof format === \"string\") {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n }\n\n function splitDateFormat(format) {\n var info = kendo.culture();\n var pattern = datePattern(format, info).replace(\"dddd\", \"EEEE\").replace(\"tt\", \"aa\");\n var parts = [];\n var dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|t{1,2}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n var specifier;\n var type;\n var part;\n var names;\n var minLength;\n var patternLength;\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (startsWith(value, '\"') || startsWith(value, \"'\")) {\n addLiteral(parts, value);\n } else {\n specifier = value[0];\n type = DATE_FIELD_MAP[specifier];\n part = {\n type: type,\n pattern: value\n };\n\n if (type === \"hour\") {\n part.hour12 = isHour12(value);\n }\n\n names = NAME_TYPES[type];\n\n if (names) {\n minLength = typeof names.minLength === \"number\" ? names.minLength : names.minLength[specifier];\n patternLength = value.length;\n\n if (patternLength >= minLength && value !== \"aa\") {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n }\n\n function dateFormatNames(options) {\n var type = options.type;\n var nameType = options.nameType;\n var info = kendo.culture();\n if (nameType === \"wide\") {\n nameType = \"names\";\n }\n if (nameType === \"abbreviated\") {\n nameType = \"namesAbbr\";\n }\n if (nameType === \"narrow\") {\n nameType = \"namesShort\";\n }\n var result = info.calendar[type][nameType];\n if (!result) {\n result = info.calendar[type][\"name\"];\n }\n return result;\n }\n\n function dateFieldName(options) {\n var info = kendo.culture();\n var dateFields = info.calendar.dateFields;\n var fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType];\n }\n\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function(date) {\n return addDays(date, 1);\n },\n previousDay: function(date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n splitDateFormat: splitDateFormat,\n dateFieldName: dateFieldName,\n dateFormatNames: dateFormatNames,\n lastDayOfMonth: lastDayOfMonth,\n weekInYear: weekInYear,\n getMilliseconds: getMilliseconds,\n firstDayOfYear: firstDayOfYear,\n lastDayOfYear: lastDayOfYear,\n nextYear: function(date) {\n return addYear(date, 1);\n },\n previousYear: function(date) {\n return addYear(date, -1);\n }\n };\n })();\n\n\n kendo.stripWhitespace = function(element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function(node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else { // IE7/8 support\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n\n var animationFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n kendo.animationFrame = function(callback) {\n animationFrame.call(window, callback);\n };\n\n var animationQueue = [];\n\n kendo.queueAnimation = function(callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n\n kendo.runNextAnimation = function() {\n kendo.animationFrame(function() {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n\n kendo.parseQueryStringParams = function(url) {\n var queryString = url.split('?')[1] || \"\",\n params = {},\n paramParts = queryString.split(/&|=/),\n length = paramParts.length,\n idx = 0;\n\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== \"\") {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n\n return params;\n };\n\n kendo.elementUnderCursor = function(e) {\n if (typeof e.x.client != \"undefined\") {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n\n kendo.wheelDeltaY = function(jQueryEvent) {\n var e = jQueryEvent.originalEvent,\n deltaY = e.wheelDeltaY,\n delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined$1 || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n };\n\n kendo.throttle = function(fn, delay) {\n var timeout;\n var lastExecTime = 0;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\n }\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n };\n\n\n kendo.caret = function(element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined$1;\n\n if (end === undefined$1) {\n end = start;\n }\n\n if (element[0]) {\n element = element[0];\n }\n\n if (isPosition && element.disabled) {\n return;\n }\n\n try {\n if (element.selectionStart !== undefined$1) {\n if (isPosition) {\n element.focus();\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {// without the timeout the caret is at the end of the input\n setTimeout(function() { element.setSelectionRange(start, end); }, 0);\n }\n else {\n element.setSelectionRange(start, end);\n }\n } else {\n start = [element.selectionStart, element.selectionEnd];\n }\n } else if (document.selection) {\n if ($(element).is(\":visible\")) {\n element.focus();\n }\n\n rangeElement = element.createTextRange();\n\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart(\"character\", start);\n rangeElement.moveEnd(\"character\", end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(),\n selectionStart, selectionEnd;\n\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n\n start = [selectionStart, selectionEnd];\n }\n }\n } catch (e) {\n /* element is not focused or it is not in the DOM */\n start = [];\n }\n\n return start;\n };\n\n kendo.antiForgeryTokens = function() {\n var tokens = { },\n csrf_token = $(\"meta[name=csrf-token],meta[name=_csrf]\").attr(\"content\"),\n csrf_param = $(\"meta[name=csrf-param],meta[name=_csrf_header]\").attr(\"content\");\n\n $(\"input[name^='__RequestVerificationToken']\").each(function() {\n tokens[this.name] = this.value;\n });\n\n if (csrf_param !== undefined$1 && csrf_token !== undefined$1) {\n tokens[csrf_param] = csrf_token;\n }\n\n return tokens;\n };\n\n kendo.cycleForm = function(form) {\n var firstElement = form.find(\"input, .k-widget, .k-dropdownlist, .k-combobox\").first();\n var lastElement = form.find(\"button, .k-button\").last();\n\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.trigger(\"focus\");\n }\n }\n\n lastElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n\n firstElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n\n kendo.focusElement = function(element) {\n var scrollTopPositions = [];\n var scrollableParents = element.parentsUntil(\"body\")\n .filter(function(index, element) {\n var computedStyle = kendo.getComputedStyles(element, [\"overflow\"]);\n return computedStyle.overflow !== \"visible\";\n })\n .add(window);\n\n scrollableParents.each(function(index, parent) {\n scrollTopPositions[index] = $(parent).scrollTop();\n });\n\n try {\n //The setActive method does not cause the document to scroll to the active object in the current page\n element[0].setActive();\n } catch (e) {\n element[0].focus();\n }\n\n scrollableParents.each(function(index, parent) {\n $(parent).scrollTop(scrollTopPositions[index]);\n });\n };\n\n kendo.focusNextElement = function() {\n if (document.activeElement) {\n var focussable = $(\":kendoFocusable\");\n var index = focussable.index(document.activeElement);\n\n if (index > -1) {\n var nextElement = focussable[index + 1] || focussable[0];\n nextElement.focus();\n }\n }\n };\n\n kendo.trim = function(value) {\n if (!!value) {\n return value.toString().trim();\n } else {\n return \"\";\n }\n };\n\n kendo.getWidgetFocusableElement = function(element) {\n var nextFocusable = element.closest(\":kendoFocusable\"),\n widgetInstance = kendo.widgetInstance(element),\n target;\n\n if (nextFocusable.length) {\n target = nextFocusable;\n } else if (widgetInstance) {\n target = widgetInstance.options.name === 'Editor' ?\n $(widgetInstance.body) :\n widgetInstance.wrapper.find(\":kendoFocusable\").first();\n } else {\n target = element;\n }\n\n return target;\n };\n\n kendo.addAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n element.attr(attribute, (current + \" \" + value).trim());\n }\n };\n\n kendo.removeAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n element.attr(attribute, current.replace(value, \"\").trim());\n };\n\n kendo.toggleAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n kendo.addAttribute(element, attribute, value);\n } else {\n kendo.removeAttribute(element, attribute, value);\n }\n };\n\n kendo.matchesMedia = function(mediaQuery) {\n var media = kendo._bootstrapToMedia(mediaQuery) || mediaQuery;\n return support.matchMedia && window.matchMedia(media).matches;\n };\n\n kendo._bootstrapToMedia = function(bootstrapMedia) {\n return {\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n }[bootstrapMedia];\n };\n\n kendo.fileGroupMap = {\n audio: [\".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"],\n video: [\".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\",\n \".rm\", \".swf\", \".vob\", \".wmv\"],\n image: [\".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\",\n \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"],\n txt: [\".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"],\n presentation: [\".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"],\n data: [\".xlr\", \".xls\", \".xlsx\"],\n programming: [\".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\",\n \".sys\", \".cfg\", \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\",\n \".php\", \".rss\", \".xhtml\"],\n pdf: [\".pdf\"],\n config: [\".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"],\n zip: [\".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"],\n \"disc-image\": [\".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"]\n };\n\n kendo.getFileGroup = function(extension, withPrefix) {\n var fileTypeMap = kendo.fileGroupMap;\n var groups = Object.keys(fileTypeMap);\n var type = \"file\";\n\n if (extension === undefined$1 || !extension.length) {\n return type;\n }\n\n for (var i = 0; i < groups.length; i += 1) {\n var extensions = fileTypeMap[groups[i]];\n\n if (extensions.indexOf(extension.toLowerCase()) > -1) {\n return withPrefix ? \"file-\" + groups[i] : groups[i];\n }\n }\n\n return type;\n };\n\n kendo.getFileSizeMessage = function(size) {\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n\n if (size === 0) {\n return '0 Byte';\n }\n\n var i = parseInt(Math.floor(Math.log(size) / Math.log(1024)), 10);\n return Math.round(size / Math.pow(1024, i), 2) + ' ' + sizes[i];\n };\n\n kendo.selectorFromClasses = function(classes) {\n return \".\" + classes.split(\" \").join(\".\");\n };\n\n // Standardized Properties and CSS classes\n\n var themeColorValues = ['base', 'primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n var fillValues = ['solid', 'outline', 'flat'];\n //var postitionValues = ['edge', 'outside', 'inside'];\n var shapeValues = ['rectangle', 'square'];\n var sizeValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n var roundedValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n //var alignValues = [ ['top start', 'top-start'], ['top end', 'top-end'], ['bottom start', 'bottom-start'], ['bottom end', 'bottom-end'] ];\n var positionModeValues = [ 'fixed', 'static', 'sticky', 'absolute' ];\n var resizeValues = [ ['both', 'resize'], ['horizontal', 'resize-x'], ['vertical', 'resize-y'] ];\n var overflowValues = [ 'auto', 'hidden', 'visible', 'scroll', 'clip' ];\n\n kendo.cssProperties = (function() {\n var defaultValues = {},\n propertyDictionary = {};\n\n function registerPrefix(widget, prefix) {\n var dict = kendo.cssProperties.propertyDictionary;\n\n if (!dict[widget]) {\n dict[widget] = {};\n }\n\n dict[widget][PREFIX] = prefix;\n }\n\n function registerValues(widget, args) {\n var dict = kendo.cssProperties.propertyDictionary,\n i, j, prop, values, newValues, currentValue;\n\n for (i = 0; i < args.length; i++) {\n prop = args[i].prop;\n newValues = args[i].values;\n\n if (!dict[widget][prop]) {\n dict[widget][prop] = {};\n }\n\n values = dict[widget][prop];\n\n for (j = 0; j < newValues.length; j++) {\n currentValue = newValues[j];\n\n if (isArray(newValues[j])) {\n values[currentValue[0]] = currentValue[1];\n } else {\n values[currentValue] = currentValue;\n }\n }\n }\n }\n\n function registerCssClass(propName, value, shorthand) {\n if (!defaultValues[propName]) {\n defaultValues[propName] = {};\n }\n\n defaultValues[propName][value] = shorthand || value;\n }\n\n function registerCssClasses(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n registerCssClass(propName, arr[i]);\n }\n }\n }\n\n function getValidClass(args) {\n var widget = args.widget,\n propName = args.propName,\n value = args.value,\n fill = args.fill,\n cssProperties = kendo.cssProperties,\n defaultValues = cssProperties.defaultValues[propName],\n widgetProperties = cssProperties.propertyDictionary[widget],\n overridePrefix = args.prefix,\n widgetValues, validValue, prefix;\n\n if (!widgetProperties) {\n return \"\";\n }\n\n widgetValues = widgetProperties[propName];\n validValue = widgetValues ? widgetValues[value] || defaultValues[value] : defaultValues[value];\n\n if (validValue) {\n if (propName === \"themeColor\") {\n prefix = widgetProperties[PREFIX] + fill + \"-\";\n } else if (propName === \"positionMode\") {\n prefix = \"k-pos-\";\n } else if (propName === \"rounded\") {\n prefix = \"k-rounded-\";\n } else if (propName === \"resize\") {\n prefix = \"k-\";\n } else if (propName === \"overflow\") {\n prefix = \"k-overflow-\";\n } else {\n prefix = widgetProperties[PREFIX];\n }\n\n prefix = overridePrefix || prefix;\n\n return prefix + validValue;\n } else {\n return \"\";\n }\n }\n\n registerCssClasses(\"themeColor\", themeColorValues);\n registerCssClasses(\"fillMode\", fillValues);\n registerCssClasses(\"shape\", shapeValues);\n registerCssClasses(\"size\", sizeValues);\n registerCssClasses(\"positionMode\", positionModeValues);\n registerCssClasses(\"rounded\", roundedValues);\n registerCssClasses(\"resize\", resizeValues);\n registerCssClasses(\"overflow\", overflowValues);\n\n return {\n positionModeValues: positionModeValues,\n roundedValues: roundedValues,\n sizeValues: sizeValues,\n shapeValues: shapeValues,\n fillModeValues: fillValues,\n themeColorValues: themeColorValues,\n\n defaultValues: defaultValues,\n propertyDictionary: propertyDictionary,\n\n registerValues: registerValues,\n getValidClass: getValidClass,\n registerPrefix: registerPrefix\n };\n }());\n\n //To do: delete below after implementing new styles and classes for BottomNavigation\n kendo.registerCssClass = function(propName, value, shorthand) {\n if (!kendo.propertyToCssClassMap[propName]) {\n kendo.propertyToCssClassMap[propName] = {};\n }\n\n kendo.propertyToCssClassMap[propName][value] = shorthand || value;\n };\n\n kendo.registerCssClasses = function(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n kendo.registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n kendo.registerCssClass(propName, arr[i]);\n }\n }\n };\n\n kendo.getValidCssClass = function(prefix, propName, value) {\n var validValue = kendo.propertyToCssClassMap[propName][value];\n\n if (validValue) {\n return prefix + validValue;\n }\n };\n\n kendo.propertyToCssClassMap = {};\n\n kendo.registerCssClasses(\"themeColor\", themeColorValues);\n kendo.registerCssClasses(\"fill\", fillValues);\n //kendo.registerCssClasses(\"postition\", postitionValues);\n kendo.registerCssClasses(\"shape\", shapeValues);\n kendo.registerCssClasses(\"size\", sizeValues);\n //kendo.registerCssClasses(\"align\", alignValues);\n kendo.registerCssClasses(\"positionMode\", positionModeValues);\n\n kendo.applyStylesFromKendoAttributes = function(element, styleProps) {\n var selector = styleProps.map(function (styleProp){ return (\"[\" + (kendo.attr((\"style-\" + styleProp))) + \"]\"); }).join(',');\n element.find(selector).addBack(selector).each(function (_, currentElement) {\n var $currentElement = $(currentElement);\n styleProps.forEach(function(styleProp) {\n var kendoAttr = kendo.attr((\"style-\" + styleProp));\n if ($currentElement.attr(kendoAttr)) {\n $currentElement.css(styleProp, $currentElement.attr(kendoAttr));\n $currentElement.removeAttr(kendoAttr);\n }\n });\n });\n };\n\n // jQuery deferred helpers\n\n // influenced from: https://gist.github.com/fearphage/4341799\n kendo.whenAll = function(array) {\n var resolveValues = arguments.length == 1 && Array.isArray(array) ? array : Array.prototype.slice.call(arguments),\n length = resolveValues.length,\n remaining = length,\n deferred = $.Deferred(),\n i = 0,\n failed = 0,\n rejectContexts = Array(length),\n rejectValues = Array(length),\n resolveContexts = Array(length),\n value;\n\n function updateFunc(index, contexts, values) {\n return function() {\n if (values != resolveValues) {\n failed++;\n }\n\n deferred.notifyWith(\n contexts[index] = this,\n values[index] = Array.prototype.slice.call(arguments)\n );\n\n if (!(--remaining)) {\n deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);\n }\n };\n }\n\n for (; i < length; i++) {\n if ((value = resolveValues[i]) && kendo.isFunction(value.promise)) {\n value.promise()\n .done(updateFunc(i, resolveContexts, resolveValues))\n .fail(updateFunc(i, rejectContexts, rejectValues));\n }\n\n else {\n deferred.notifyWith(this, value);\n --remaining;\n }\n }\n\n if (!remaining) {\n deferred.resolveWith(resolveContexts, resolveValues);\n }\n\n return deferred.promise();\n };\n\n // kendo.saveAs -----------------------------------------------\n (function() {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $(\"
\").attr({\n action: proxyURL,\n method: \"POST\",\n target: proxyTarget\n });\n\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n data.contentType = parts[0].replace(\"data:\", \"\");\n data.base64 = parts[1];\n\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('').attr({\n value: data[name],\n name: name,\n type: \"hidden\"\n }).appendTo(form);\n }\n }\n\n form.appendTo(\"body\").submit().remove();\n }\n\n var fileSaver = document.createElement(\"a\");\n var downloadAttribute = \"download\" in fileSaver && !kendo.support.browser.edge;\n\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI; // could be a Blob object\n\n if (typeof dataURI == \"string\") {\n var parts = dataURI.split(\";base64,\");\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n }\n\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(dataURI);\n });\n }\n\n kendo.saveAs = function(options) {\n var save = postToProxy;\n\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n })();\n\n // kendo proxySetters\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n\n Object.keys(data || {}).forEach(function(property) {\n Object.defineProperty(observable, property, {\n get: function() {\n return data[property];\n },\n set: function(value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n\n return observable;\n };\n\n kendo.getSeriesColors = function() {\n var seriesColorsTemplate = '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
',\n series = $(seriesColorsTemplate),\n colors = [];\n\n series.appendTo($('body'));\n\n series.each(function(i, item) {\n colors.push($(item).css(\"background-color\"));\n });\n\n series.remove();\n\n return colors;\n };\n\n kendo.isElement = function(element) {\n return element instanceof Element || element instanceof HTMLDocument;\n };\n\n // Kendo defaults\n (function() {\n\n kendo.defaults = kendo.defaults || {};\n kendo.setDefaults = function(key, value) {\n var path = key.split(\".\");\n var curr = kendo.defaults;\n\n key = path.pop();\n\n path.forEach(function(part) {\n if (curr[part] === undefined$1) {\n curr[part] = {};\n }\n\n curr = curr[part];\n });\n\n if (value.constructor === Object) {\n curr[key] = deepExtend({}, curr[key], value);\n } else {\n curr[key] = value;\n }\n };\n\n // Use external global flags for templates.\n kendo.debugTemplates = window.DEBUG_KENDO_TEMPLATES;\n\n // Setup default mediaQuery breakpoints\n kendo.setDefaults('breakpoints', defaultBreakpoints);\n })();\n\n // Implement type() as it has been depricated in jQuery\n (function() {\n kendo.class2type = {};\n\n jQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n function( _i, name ) {\n kendo.class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n } );\n\n kendo.type = function(obj) {\n if ( obj == null ) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ?\n kendo.class2type[Object.prototype.toString.call(obj)] || \"object\" :\n typeof obj;\n };\n }());\n\n var KendoLicensing = { validatePackage: function() {},setScriptKey: function() {} };\n\n window.KendoLicensing = {\n setScriptKey: KendoLicensing.setScriptKey\n };\n\n function validatePackage() {\n KendoLicensing.validatePackage(packageMetadata);\n }\n\n })(jQuery, window);\n var kendo$Z = kendo;\n\n var __meta__$X = {\n id: \"fx\",\n name: \"Effects\",\n category: \"framework\",\n description: \"Required for animation effects in all Kendo UI widgets.\",\n depends: [ \"core\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n fx = kendo.effects,\n each = $.each,\n extend = $.extend,\n support = kendo.support,\n browser = support.browser,\n transforms = support.transforms,\n transitions = support.transitions,\n scaleProperties = { scale: 0, scalex: 0, scaley: 0, scale3d: 0 },\n translateProperties = { translate: 0, translatex: 0, translatey: 0, translate3d: 0 },\n hasZoom = (typeof document.documentElement.style.zoom !== \"undefined\") && !transforms,\n matrix3dRegExp = /matrix3?d?\\s*\\(.*,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?/i,\n cssParamsRegExp = /^(-?[\\d\\.\\-]+)?[\\w\\s]*,?\\s*(-?[\\d\\.\\-]+)?[\\w\\s]*/i,\n translateXRegExp = /translatex?$/i,\n oldEffectsRegExp = /(zoom|fade|expand)(\\w+)/,\n singleEffectRegExp = /(zoom|fade|expand)/,\n unitRegExp = /[xy]$/i,\n transformProps = [\"perspective\", \"rotate\", \"rotatex\", \"rotatey\", \"rotatez\", \"rotate3d\", \"scale\", \"scalex\", \"scaley\", \"scalez\", \"scale3d\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"translatez\", \"translate3d\", \"matrix\", \"matrix3d\"],\n transform2d = [\"rotate\", \"scale\", \"scalex\", \"scaley\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"matrix\"],\n transform2units = { \"rotate\": \"deg\", scale: \"\", skew: \"px\", translate: \"px\" },\n cssPrefix = transforms.css,\n round = Math.round,\n BLANK = \"\",\n PX = \"px\",\n NONE = \"none\",\n AUTO = \"auto\",\n WIDTH = \"width\",\n HEIGHT = \"height\",\n HIDDEN = \"hidden\",\n ORIGIN = \"origin\",\n ABORT_ID = \"abortId\",\n OVERFLOW = \"overflow\",\n TRANSLATE = \"translate\",\n POSITION = \"position\",\n COMPLETE_CALLBACK = \"completeCallback\",\n TRANSITION = cssPrefix + \"transition\",\n TRANSFORM = cssPrefix + \"transform\",\n BACKFACE = cssPrefix + \"backface-visibility\",\n PERSPECTIVE = cssPrefix + \"perspective\",\n DEFAULT_PERSPECTIVE = \"1500px\",\n TRANSFORM_PERSPECTIVE = \"perspective(\" + DEFAULT_PERSPECTIVE + \")\",\n directions = {\n left: {\n reverse: \"right\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: -1\n },\n right: {\n reverse: \"left\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: 1\n },\n down: {\n reverse: \"up\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: 1\n },\n up: {\n reverse: \"down\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: -1\n },\n top: {\n reverse: \"bottom\"\n },\n bottom: {\n reverse: \"top\"\n },\n \"in\": {\n reverse: \"out\",\n modifier: -1\n },\n out: {\n reverse: \"in\",\n modifier: 1\n },\n\n vertical: {\n reverse: \"vertical\"\n },\n\n horizontal: {\n reverse: \"horizontal\"\n }\n };\n\n kendo.directions = directions;\n\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n if (transitions) {\n return fx.stopQueue(this, clearQueue || false, gotoEnd || false);\n } else {\n return this.stop(clearQueue, gotoEnd);\n }\n }\n });\n\n /* jQuery support for all transform animations (FF 3.5/3.6, Opera 10.x, IE9 */\n\n if (transforms && !transitions) {\n each(transform2d, function(idx, value) {\n $.fn[value] = function(val) {\n if (typeof val == \"undefined\") {\n return animationProperty(this, value);\n } else {\n var that = $(this)[0],\n transformValue = value + \"(\" + val + transform2units[value.replace(unitRegExp, \"\")] + \")\";\n\n if (that.style.cssText.indexOf(TRANSFORM) == -1) {\n $(this).css(TRANSFORM, transformValue);\n } else {\n that.style.cssText = that.style.cssText.replace(new RegExp(value + \"\\\\(.*?\\\\)\", \"i\"), transformValue);\n }\n }\n return this;\n };\n\n $.fx.step[value] = function(fx) {\n $(fx.elem)[value](fx.now);\n };\n });\n\n var curProxy = $.fx.prototype.cur;\n $.fx.prototype.cur = function() {\n if (transform2d.indexOf(this.prop) != -1) {\n return parseFloat($(this.elem)[this.prop]());\n }\n\n return curProxy.apply(this, arguments);\n };\n }\n\n kendo.toggleClass = function(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n if (transitions) {\n options = extend({\n exclusive: \"all\",\n duration: 400,\n ease: \"ease-out\"\n }, options);\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease);\n setTimeout(function() {\n element.css(TRANSITION, \"\").css(HEIGHT);\n }, options.duration); // TODO: this should fire a kendoAnimate session instead.\n }\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n };\n\n kendo.parseEffects = function(input, mirror) {\n var effects = {};\n\n if (typeof input === \"string\") {\n each(input.split(\" \"), function(idx, value) {\n var redirectedEffect = !singleEffectRegExp.test(value),\n resolved = value.replace(oldEffectsRegExp, function(match, $1, $2) {\n return $1 + \":\" + $2.toLowerCase();\n }), // Support for old zoomIn/fadeOut style, now deprecated.\n effect = resolved.split(\":\"),\n direction = effect[1],\n effectBody = {};\n\n if (effect.length > 1) {\n effectBody.direction = (mirror && redirectedEffect ? directions[direction].reverse : direction);\n }\n\n effects[effect[0]] = effectBody;\n });\n } else {\n each(input, function(idx) {\n var direction = this.direction;\n\n if (direction && mirror && !singleEffectRegExp.test(idx)) {\n this.direction = directions[direction].reverse;\n }\n\n effects[idx] = this;\n });\n }\n\n return effects;\n };\n\n function parseInteger(value) {\n return parseInt(value, 10);\n }\n\n function parseCSS(element, property) {\n return parseInteger(element.css(property));\n }\n\n function keys(obj) {\n var acc = [];\n for (var propertyName in obj) {\n acc.push(propertyName);\n }\n return acc;\n }\n\n function strip3DTransforms(properties) {\n for (var key in properties) {\n if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) {\n delete properties[key];\n }\n }\n\n return properties;\n }\n\n function normalizeCSS(element, properties) {\n var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed;\n\n for (key in properties) {\n lowerKey = key.toLowerCase();\n isTransformed = transforms && transformProps.indexOf(lowerKey) != -1;\n\n if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) {\n delete properties[key];\n } else {\n value = properties[key];\n\n if (isTransformed) {\n transformation.push(key + \"(\" + value + \")\");\n } else {\n cssValues[key] = value;\n }\n }\n }\n\n if (transformation.length) {\n cssValues[TRANSFORM] = transformation.join(\" \");\n }\n\n return cssValues;\n }\n\n if (transitions) {\n extend(fx, {\n transition: function(element, properties, options) {\n var css,\n delay = 0,\n oldKeys = element.data(\"keys\") || [],\n timeoutID;\n\n options = extend({\n duration: 200,\n ease: \"ease-out\",\n complete: null,\n exclusive: \"all\"\n },\n options\n );\n\n var stopTransitionCalled = false;\n\n var stopTransition = function() {\n if (!stopTransitionCalled) {\n stopTransitionCalled = true;\n\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n\n element\n .removeData(ABORT_ID)\n .dequeue()\n .css(TRANSITION, \"\")\n .css(TRANSITION);\n\n options.complete.call(element);\n }\n };\n\n options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration;\n\n css = normalizeCSS(element, properties);\n\n $.merge(oldKeys, keys(css));\n\n if ($.hasOwnProperty(\"uniqueSort\")) {\n element\n .data(\"keys\", $.uniqueSort(oldKeys))\n .height();\n } else {\n element\n .data(\"keys\", $.unique(oldKeys))\n .height();\n }\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease).css(TRANSITION);\n element.css(css).css(TRANSFORM);\n\n /**\n * Use transitionEnd event for browsers who support it - but duplicate it with setTimeout, as the transitionEnd event will not be triggered if no CSS properties change.\n * This should be cleaned up at some point (widget by widget), and refactored to widgets not relying on the complete callback if no transition occurs.\n *\n * For IE9 and below, resort to setTimeout.\n */\n if (transitions.event) {\n element.one(transitions.event, stopTransition);\n if (options.duration !== 0) {\n delay = 500;\n }\n }\n\n timeoutID = setTimeout(stopTransition, options.duration + delay);\n element.data(ABORT_ID, timeoutID);\n element.data(COMPLETE_CALLBACK, stopTransition);\n },\n\n stopQueue: function(element, clearQueue, gotoEnd) {\n var cssValues,\n taskKeys = element.data(\"keys\"),\n retainPosition = (!gotoEnd && taskKeys),\n completeCallback = element.data(COMPLETE_CALLBACK);\n\n if (retainPosition) {\n cssValues = kendo.getComputedStyles(element[0], taskKeys);\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n if (retainPosition) {\n element.css(cssValues);\n }\n\n return element\n .removeData(\"keys\")\n .stop(clearQueue);\n }\n });\n }\n\n function animationProperty(element, property) {\n if (transforms) {\n var transform = element.css(TRANSFORM);\n if (transform == NONE) {\n return property == \"scale\" ? 1 : 0;\n }\n\n var match = transform.match(new RegExp(property + \"\\\\s*\\\\(([\\\\d\\\\w\\\\.]+)\")),\n computed = 0;\n\n if (match) {\n computed = parseInteger(match[1]);\n } else {\n match = transform.match(matrix3dRegExp) || [0, 0, 0, 0, 0];\n property = property.toLowerCase();\n\n if (translateXRegExp.test(property)) {\n computed = parseFloat(match[3] / match[2]);\n } else if (property == \"translatey\") {\n computed = parseFloat(match[4] / match[2]);\n } else if (property == \"scale\") {\n computed = parseFloat(match[2]);\n } else if (property == \"rotate\") {\n computed = parseFloat(Math.atan2(match[2], match[1]));\n }\n }\n\n return computed;\n } else {\n return parseFloat(element.css(property));\n }\n }\n\n var EffectSet = kendo.Class.extend({\n init: function(element, options) {\n var that = this;\n\n that.element = element;\n that.effects = [];\n that.options = options;\n that.restore = [];\n },\n\n run: function(effects) {\n var that = this,\n effect,\n idx, jdx,\n length = effects.length,\n element = that.element,\n options = that.options,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children,\n childrenLength;\n\n that.effects = effects;\n\n deferred.done(that.complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n effect = effects[idx];\n\n effect.setReverse(options.reverse);\n effect.setOptions(options);\n\n that.addRestoreProperties(effect.restore);\n\n effect.prepare(start, end);\n\n children = effect.children();\n\n for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx ++) {\n children[jdx].duration(options.duration).run();\n }\n }\n\n // legacy support for options.properties\n for (var effectName in options.effects) {\n extend(end, options.effects[effectName].properties);\n }\n\n // Show the element initially\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms && !options.reset) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start)\n .css(TRANSFORM); // Nudge\n\n for (idx = 0; idx < length; idx ++) {\n effects[idx].setup();\n }\n\n if (options.init) {\n options.init();\n }\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, extend({}, options, { complete: deferred.resolve }));\n\n return deferred.promise();\n },\n\n stop: function() {\n $(this.element).kendoStop(true, true);\n },\n\n addRestoreProperties: function(restore) {\n var element = this.element,\n value,\n i = 0,\n length = restore.length;\n\n for (; i < length; i ++) {\n value = restore[i];\n\n this.restore.push(value);\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n complete: function() {\n var that = this,\n idx = 0,\n element = that.element,\n options = that.options,\n effects = that.effects,\n length = effects.length;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n this.restoreCallback();\n\n if (hasZoom && !transforms) {\n setTimeout(this.restoreCallback.bind(this), 0); // Again jQuery callback in IE8-\n }\n\n for (; idx < length; idx ++) {\n effects[idx].teardown();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n }\n });\n\n fx.promise = function(element, options) {\n var effects = [],\n effectClass,\n effectSet = new EffectSet(element, options),\n parsedEffects = kendo.parseEffects(options.effects),\n effect;\n\n options.effects = parsedEffects;\n\n for (var effectName in parsedEffects) {\n effectClass = fx[capitalize(effectName)];\n\n if (effectClass) {\n effect = new effectClass(element, parsedEffects[effectName].direction);\n effects.push(effect);\n }\n }\n\n if (effects[0]) {\n effectSet.run(effects);\n } else { // Not sure how would an fx promise reach this state - means that you call kendoAnimate with no valid effects? Why?\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.init) {\n options.init();\n }\n\n element.dequeue();\n effectSet.complete();\n }\n };\n\n extend(fx, {\n animate: function(elements, properties, options) {\n var useTransition = options.transition !== false;\n delete options.transition;\n\n if (transitions && \"transition\" in fx && useTransition) {\n fx.transition(elements, properties, options);\n } else {\n if (transforms) {\n elements.animate(strip3DTransforms(properties), { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n } else {\n elements.each(function() {\n var element = $(this),\n multiple = {};\n\n each(transformProps, function(idx, value) { // remove transforms to avoid IE and older browsers confusion\n var params,\n currentValue = properties ? properties[value] + \" \" : null; // We need to match\n\n if (currentValue) {\n var single = properties;\n\n if (value in scaleProperties && properties[value] !== undefined$1) {\n params = currentValue.match(cssParamsRegExp);\n if (transforms) {\n extend(single, { scale: +params[0] });\n }\n } else {\n if (value in translateProperties && properties[value] !== undefined$1) {\n var position = element.css(POSITION),\n isFixed = (position == \"absolute\" || position == \"fixed\");\n\n if (!element.data(TRANSLATE)) {\n if (isFixed) {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"top\") || 0,\n left: parseCSS(element, \"left\") || 0,\n bottom: parseCSS(element, \"bottom\"),\n right: parseCSS(element, \"right\")\n });\n } else {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"marginTop\") || 0,\n left: parseCSS(element, \"marginLeft\") || 0\n });\n }\n }\n\n var originalPosition = element.data(TRANSLATE);\n\n params = currentValue.match(cssParamsRegExp);\n if (params) {\n\n var dX = value == TRANSLATE + \"y\" ? +null : +params[1],\n dY = value == TRANSLATE + \"y\" ? +params[1] : +params[2];\n\n if (isFixed) {\n if (!isNaN(originalPosition.right)) {\n if (!isNaN(dX)) { extend(single, { right: originalPosition.right - dX }); }\n } else {\n if (!isNaN(dX)) { extend(single, { left: originalPosition.left + dX }); }\n }\n\n if (!isNaN(originalPosition.bottom)) {\n if (!isNaN(dY)) { extend(single, { bottom: originalPosition.bottom - dY }); }\n } else {\n if (!isNaN(dY)) { extend(single, { top: originalPosition.top + dY }); }\n }\n } else {\n if (!isNaN(dX)) { extend(single, { marginLeft: originalPosition.left + dX }); }\n if (!isNaN(dY)) { extend(single, { marginTop: originalPosition.top + dY }); }\n }\n }\n }\n }\n\n if (!transforms && value != \"scale\" && value in single) {\n delete single[value];\n }\n\n if (single) {\n extend(multiple, single);\n }\n }\n });\n\n if (browser.msie) {\n delete multiple.scale;\n }\n\n element.animate(multiple, { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n });\n }\n }\n }\n });\n\n fx.animatedPromise = fx.promise;\n\n var Effect = kendo.Class.extend({\n init: function(element, direction) {\n var that = this;\n that.element = element;\n that._direction = direction;\n that.options = {};\n that._additionalEffects = [];\n\n if (!that.restore) {\n that.restore = [];\n }\n },\n\n // Public API\n reverse: function() {\n this._reverse = true;\n return this.run();\n },\n\n play: function() {\n this._reverse = false;\n return this.run();\n },\n\n add: function(additional) {\n this._additionalEffects.push(additional);\n return this;\n },\n\n direction: function(value) {\n this._direction = value;\n return this;\n },\n\n duration: function(duration) {\n this._duration = duration;\n return this;\n },\n\n compositeRun: function() {\n var that = this,\n effectSet = new EffectSet(that.element, { reverse: that._reverse, duration: that._duration }),\n effects = that._additionalEffects.concat([ that ]);\n\n return effectSet.run(effects);\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n idx = 0,\n restore = that.restore,\n length = restore.length,\n value,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children = that.children(),\n childrenLength = children.length;\n\n deferred.done(that._complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n value = restore[idx];\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].duration(that._duration).run();\n }\n\n that.prepare(start, end);\n\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start).css(TRANSFORM); // Trick webkit into re-rendering\n\n that.setup();\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, { duration: that._duration, complete: deferred.resolve });\n\n return deferred.promise();\n },\n\n stop: function() {\n var idx = 0,\n children = this.children(),\n childrenLength = children.length;\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].stop();\n }\n\n $(this.element).kendoStop(true, true);\n return this;\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n _complete: function() {\n var that = this,\n element = that.element;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n that.restoreCallback();\n\n if (that.shouldHide()) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (hasZoom && !transforms) {\n setTimeout(that.restoreCallback.bind(that), 0); // Again jQuery callback in IE8-\n }\n\n that.teardown();\n },\n\n /////////////////////////// Support for kendo.animate;\n setOptions: function(options) {\n extend(true, this.options, options);\n },\n\n children: function() {\n return [];\n },\n\n shouldHide: $.noop,\n\n setup: $.noop,\n prepare: $.noop,\n teardown: $.noop,\n directions: [],\n\n setReverse: function(reverse) {\n this._reverse = reverse;\n return this;\n }\n });\n\n function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1);\n }\n\n function createEffect(name, definition) {\n var effectClass = Effect.extend(definition),\n directions = effectClass.prototype.directions;\n\n fx[capitalize(name)] = effectClass;\n\n fx.Element.prototype[name] = function(direction, opt1, opt2, opt3) {\n return new effectClass(this.element, direction, opt1, opt2, opt3);\n };\n\n each(directions, function(idx, theDirection) {\n fx.Element.prototype[name + capitalize(theDirection)] = function(opt1, opt2, opt3) {\n return new effectClass(this.element, theDirection, opt1, opt2, opt3);\n };\n });\n }\n\n var FOUR_DIRECTIONS = [\"left\", \"right\", \"up\", \"down\"],\n IN_OUT = [\"in\", \"out\"];\n\n createEffect(\"slideIn\", {\n directions: FOUR_DIRECTIONS,\n\n divisor: function(value) {\n this.options.divisor = value;\n return this;\n },\n\n prepare: function(start, end) {\n var that = this,\n tmp,\n element = that.element,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n direction = directions[that._direction],\n offset = -direction.modifier * (direction.vertical ? outerHeight(element) : outerWidth(element)),\n startValue = offset / (that.options && that.options.divisor || 1) + PX,\n endValue = \"0px\";\n\n if (that._reverse) {\n tmp = start;\n start = end;\n end = tmp;\n }\n\n if (transforms) {\n start[direction.transition] = startValue;\n end[direction.transition] = endValue;\n } else {\n start[direction.property] = startValue;\n end[direction.property] = endValue;\n }\n }\n });\n\n createEffect(\"tile\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, previous) {\n Effect.prototype.init.call(this, element, direction);\n this.options = { previous: previous };\n },\n\n previousDivisor: function(value) {\n this.options.previousDivisor = value;\n return this;\n },\n\n children: function() {\n var that = this,\n reverse = that._reverse,\n previous = that.options.previous,\n divisor = that.options.previousDivisor || 1,\n dir = that._direction;\n\n var children = [ kendo.fx(that.element).slideIn(dir).setReverse(reverse) ];\n\n if (previous) {\n children.push( kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse) );\n }\n\n return children;\n }\n });\n\n function createToggleEffect(name, property, defaultStart, defaultEnd) {\n createEffect(name, {\n directions: IN_OUT,\n\n startValue: function(value) {\n this._startValue = value;\n return this;\n },\n\n endValue: function(value) {\n this._endValue = value;\n return this;\n },\n\n shouldHide: function() {\n return this._shouldHide;\n },\n\n prepare: function(start, end) {\n var that = this,\n startValue,\n endValue,\n out = this._direction === \"out\",\n startDataValue = that.element.data(property),\n startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart);\n\n if (startDataValueIsSet) {\n startValue = startDataValue;\n } else if (typeof this._startValue !== \"undefined\") {\n startValue = this._startValue;\n } else {\n startValue = out ? defaultStart : defaultEnd;\n }\n\n if (typeof this._endValue !== \"undefined\") {\n endValue = this._endValue;\n } else {\n endValue = out ? defaultEnd : defaultStart;\n }\n\n if (this._reverse) {\n start[property] = endValue;\n end[property] = startValue;\n } else {\n start[property] = startValue;\n end[property] = endValue;\n }\n\n that._shouldHide = end[property] === defaultEnd;\n }\n });\n }\n\n createToggleEffect(\"fade\", \"opacity\", 1, 0);\n createToggleEffect(\"zoom\", \"scale\", 1, 0.01);\n\n createEffect(\"slideMargin\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n origin = element.data(ORIGIN),\n offset = options.offset,\n margin,\n reverse = that._reverse;\n\n if (!reverse && origin === null) {\n element.data(ORIGIN, parseFloat(element.css(\"margin-\" + options.axis)));\n }\n\n margin = (element.data(ORIGIN) || 0);\n end[\"margin-\" + options.axis] = !reverse ? margin + offset : margin;\n }\n });\n\n createEffect(\"slideTo\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n offset = options.offset.split(\",\"),\n reverse = that._reverse;\n\n if (transforms) {\n end.translatex = !reverse ? offset[0] : 0;\n end.translatey = !reverse ? offset[1] : 0;\n } else {\n end.left = !reverse ? offset[0] : 0;\n end.top = !reverse ? offset[1] : 0;\n }\n element.css(\"left\");\n }\n });\n\n createEffect(\"expand\", {\n directions: [\"horizontal\", \"vertical\"],\n\n restore: [ OVERFLOW ],\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n reverse = that._reverse,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n setLength = element[0].style[property],\n oldLength = element.data(property),\n length = parseFloat(oldLength || setLength),\n realLength = round(element.css(property, AUTO)[property]());\n\n start.overflow = HIDDEN;\n\n length = (options && options.reset) ? realLength || length : length || realLength;\n\n end[property] = (reverse ? 0 : length) + PX;\n start[property] = (reverse ? length : 0) + PX;\n\n if (oldLength === undefined$1) {\n element.data(property, setLength);\n }\n },\n\n shouldHide: function() {\n return this._reverse;\n },\n\n teardown: function() {\n var that = this,\n element = that.element,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n length = element.data(property);\n\n if (length == AUTO || length === BLANK) {\n setTimeout(function() { element.css(property, AUTO).css(property); }, 0); // jQuery animate complete callback in IE is called before the last animation step!\n }\n }\n });\n\n var TRANSFER_START_STATE = { position: \"absolute\", marginLeft: 0, marginTop: 0, scale: 1 };\n /**\n * Intersection point formulas are taken from here - http://zonalandeducation.com/mmts/intersections/intersectionOfTwoLines1/intersectionOfTwoLines1.html\n * Formula for a linear function from two points from here - http://demo.activemath.org/ActiveMath2/search/show.cmd?id=mbase://AC_UK_calculus/functions/ex_linear_equation_two_points\n * The transform origin point is the intersection point of the two lines from the top left corners/top right corners of the element and target.\n * The math and variables below MAY BE SIMPLIFIED (zeroes removed), but this would make the formula too cryptic.\n */\n createEffect(\"transfer\", {\n init: function(element, target) {\n this.element = element;\n this.options = { target: target };\n this.restore = [];\n },\n\n setup: function() {\n this.element.appendTo(document.body);\n },\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n outerBox = fx.box(element),\n innerBox = fx.box(that.options.target),\n currentScale = animationProperty(element, \"scale\"),\n scale = fx.fillScale(innerBox, outerBox),\n transformOrigin = fx.transformOrigin(innerBox, outerBox);\n\n extend(start, TRANSFER_START_STATE);\n end.scale = 1;\n\n element.css(TRANSFORM, \"scale(1)\").css(TRANSFORM);\n element.css(TRANSFORM, \"scale(\" + currentScale + \")\");\n\n start.top = outerBox.top;\n start.left = outerBox.left;\n start.transformOrigin = transformOrigin.x + PX + \" \" + transformOrigin.y + PX;\n\n if (that._reverse) {\n start.scale = scale;\n } else {\n end.scale = scale;\n }\n }\n });\n\n\n var CLIPS = {\n top: \"rect(auto auto $size auto)\",\n bottom: \"rect($size auto auto auto)\",\n left: \"rect(auto $size auto auto)\",\n right: \"rect(auto auto auto $size)\"\n };\n\n var ROTATIONS = {\n top: { start: \"rotatex(0deg)\", end: \"rotatex(180deg)\" },\n bottom: { start: \"rotatex(-180deg)\", end: \"rotatex(0deg)\" },\n left: { start: \"rotatey(0deg)\", end: \"rotatey(-180deg)\" },\n right: { start: \"rotatey(180deg)\", end: \"rotatey(0deg)\" }\n };\n\n function clipInHalf(container, direction) {\n var vertical = kendo.directions[direction].vertical,\n size = (container[vertical ? HEIGHT : WIDTH]() / 2) + \"px\";\n\n return CLIPS[direction].replace(\"$size\", size);\n }\n\n createEffect(\"turningPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n prepare: function(start, end) {\n var that = this,\n reverse = that._reverse,\n direction = reverse ? directions[that._direction].reverse : that._direction,\n rotation = ROTATIONS[direction];\n\n start.zIndex = 1;\n\n if (that._clipInHalf) {\n start.clip = clipInHalf(that._container, kendo.directions[direction].reverse);\n }\n\n start[BACKFACE] = HIDDEN;\n\n end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end);\n start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start);\n },\n\n setup: function() {\n this._container.append(this.element);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n clipInHalf: function(value) {\n this._clipInHalf = value;\n return this;\n },\n\n temporary: function() {\n this.element.addClass('temp-page');\n return this;\n }\n });\n\n createEffect(\"staticPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n restore: [\"clip\"],\n\n prepare: function(start, end) {\n var that = this,\n direction = that._reverse ? directions[that._direction].reverse : that._direction;\n\n start.clip = clipInHalf(that._container, direction);\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n }\n });\n\n createEffect(\"pageturn\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n faceClone = options.face.clone(true).removeAttr(\"id\"),\n backClone = options.back.clone(true).removeAttr(\"id\"),\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse),\n kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse),\n kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse)\n ];\n },\n\n prepare: function(start, end) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n // hack to trigger transition end.\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n teardown: function() {\n this.element.find(\".temp-page\").remove();\n }\n });\n\n createEffect(\"flip\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse)\n ];\n },\n\n prepare: function(start) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n }\n });\n\n var RESTORE_OVERFLOW = !support.mobileOS.android;\n var IGNORE_TRANSITION_EVENT_SELECTOR = \".km-touch-scrollbar, .km-actionsheet-wrapper\";\n\n createEffect(\"replace\", {\n _before: $.noop,\n _after: $.noop,\n init: function(element, previous, transitionClass) {\n Effect.prototype.init.call(this, element);\n this._previous = $(previous);\n this._transitionClass = transitionClass;\n },\n\n duration: function() {\n throw new Error(\"The replace effect does not support duration setting; the effect duration may be customized through the transition class rule\");\n },\n\n beforeTransition: function(callback) {\n this._before = callback;\n return this;\n },\n\n afterTransition: function(callback) {\n this._after = callback;\n return this;\n },\n\n _both: function() {\n return $().add(this._element).add(this._previous);\n },\n\n _containerClass: function() {\n var direction = this._direction,\n containerClass = \"k-fx k-fx-start k-fx-\" + this._transitionClass;\n\n if (direction) {\n containerClass += \" k-fx-\" + direction;\n }\n\n if (this._reverse) {\n containerClass += \" k-fx-reverse\";\n }\n\n return containerClass;\n },\n\n complete: function(e) {\n if (!this.deferred || (e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR))) {\n return;\n }\n\n var container = this.container;\n\n container\n .removeClass(\"k-fx-end\")\n .removeClass(this._containerClass())\n .off(transitions.event, this.completeProxy);\n\n this._previous.hide().removeClass(\"k-fx-current\");\n this.element.removeClass(\"k-fx-next\");\n\n if (RESTORE_OVERFLOW) {\n container.css(OVERFLOW, \"\");\n }\n\n if (!this.isAbsolute) {\n this._both().css(POSITION, \"\");\n }\n\n this.deferred.resolve();\n delete this.deferred;\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n previous = that._previous,\n container = element.parents().filter(previous.parents()).first(),\n both = that._both(),\n deferred = $.Deferred(),\n originalPosition = element.css(POSITION),\n originalOverflow;\n\n // edge case for grid/scheduler, where the previous is already destroyed.\n if (!container.length) {\n container = element.parent();\n }\n\n this.container = container;\n this.deferred = deferred;\n this.isAbsolute = originalPosition == \"absolute\";\n\n if (!this.isAbsolute) {\n both.css(POSITION, \"absolute\");\n }\n\n if (RESTORE_OVERFLOW) {\n originalOverflow = container.css(OVERFLOW);\n container.css(OVERFLOW, \"hidden\");\n }\n\n if (!transitions) {\n this.complete();\n } else {\n element.addClass(\"k-fx-hidden\");\n\n container.addClass(this._containerClass());\n\n this.completeProxy = this.complete.bind(this);\n container.on(transitions.event, this.completeProxy);\n\n kendo.animationFrame(function() {\n element.removeClass(\"k-fx-hidden\").addClass(\"k-fx-next\");\n previous.css(\"display\", \"\").addClass(\"k-fx-current\");\n that._before(previous, element);\n kendo.animationFrame(function() {\n container.removeClass(\"k-fx-start\").addClass(\"k-fx-end\");\n that._after(previous, element);\n });\n });\n }\n\n return deferred.promise();\n },\n\n stop: function() {\n this.complete();\n }\n });\n\n var Animation = kendo.Class.extend({\n init: function() {\n var that = this;\n that._tickProxy = that._tick.bind(that);\n that._started = false;\n },\n\n tick: $.noop,\n done: $.noop,\n onEnd: $.noop,\n onCancel: $.noop,\n\n start: function() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n kendo.animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n },\n\n enabled: function() {\n return true;\n },\n\n cancel: function() {\n this._started = false;\n this.onCancel();\n },\n\n _tick: function() {\n var that = this;\n if (!that._started) { return; }\n\n that.tick();\n\n if (!that.done()) {\n kendo.animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n });\n\n var Transition = Animation.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Animation.fn.init.call(that);\n },\n\n done: function() {\n return this.timePassed() >= this.duration;\n },\n\n timePassed: function() {\n return Math.min(this.duration, (new Date()) - this.startDate);\n },\n\n moveTo: function(options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n\n that.duration = typeof options.duration == \"number\" ? options.duration : 300;\n\n that.tick = that._easeProxy(options.ease);\n\n that.startDate = new Date();\n that.start();\n },\n\n _easeProxy: function(ease) {\n var that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n });\n\n extend(Transition, {\n easeOutExpo: function(t, b, c, d) {\n return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n\n easeOutBack: function(t, b, c, d, s) {\n s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n });\n\n fx.Animation = Animation;\n fx.Transition = Transition;\n fx.createEffect = createEffect;\n\n fx.box = function(element) {\n element = $(element);\n var result = element.offset();\n result.width = kendo._outerWidth(element);\n result.height = kendo._outerHeight(element);\n return result;\n };\n\n fx.transformOrigin = function(inner, outer) {\n var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width),\n y = (inner.top - outer.top) * outer.height / (outer.height - inner.height);\n\n return {\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y\n };\n };\n\n fx.fillScale = function(inner, outer) {\n return Math.min(inner.width / outer.width, inner.height / outer.height);\n };\n\n fx.fitScale = function(inner, outer) {\n return Math.max(inner.width / outer.width, inner.height / outer.height);\n };\n })(window.kendo.jQuery);\n var kendo$Y = kendo;\n\n var __meta__$W = {\n id: \"router\",\n name: \"Router\",\n category: \"framework\",\n description: \"The Router class is responsible for tracking the application state and navigating between the application states.\",\n depends: [ \"core\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n support = kendo.support,\n location = window.location,\n history = window.history,\n CHECK_URL_INTERVAL = 50,\n BROKEN_BACK_NAV = kendo.support.browser.msie,\n hashStrip = /^#*/,\n document = window.document;\n\n function absoluteURL(path, pathPrefix) {\n if (!pathPrefix) {\n return path;\n }\n\n if (path + \"/\" === pathPrefix) {\n path = pathPrefix;\n }\n\n var regEx = new RegExp(\"^\" + pathPrefix, \"i\");\n\n if (!regEx.test(path)) {\n path = pathPrefix + \"/\" + path;\n }\n\n return location.protocol + '//' + (location.host + \"/\" + path).replace(/\\/\\/+/g, '/');\n }\n\n function hashDelimiter(bang) {\n return bang ? \"#!\" : \"#\";\n }\n\n function locationHash(hashDelimiter) {\n var href = location.href;\n\n // ignore normal anchors if in hashbang mode - however, still return \"\" if no hash present\n if (hashDelimiter === \"#!\" && href.indexOf(\"#\") > -1 && href.indexOf(\"#!\") < 0) {\n return null;\n }\n\n return href.split(hashDelimiter)[1] || \"\";\n }\n\n function stripRoot(root, url) {\n if (url.indexOf(root) === 0) {\n return (url.substr(root.length)).replace(/\\/\\//g, '/');\n } else {\n return url;\n }\n }\n\n var HistoryAdapter = kendo.Class.extend({\n back: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.back(); });\n } else {\n history.back();\n }\n },\n\n forward: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.forward(); });\n } else {\n history.forward();\n }\n },\n\n length: function() {\n return history.length;\n },\n\n replaceLocation: function(url) {\n location.replace(url);\n }\n });\n\n var PushStateAdapter = HistoryAdapter.extend({\n init: function(root) {\n this.root = root;\n },\n\n navigate: function(to) {\n history.pushState({}, document.title, absoluteURL(to, this.root));\n },\n\n replace: function(to) {\n history.replaceState({}, document.title, absoluteURL(to, this.root));\n },\n\n normalize: function(url) {\n return stripRoot(this.root, url);\n },\n\n current: function() {\n var current = location.pathname;\n\n if (location.search) {\n current += location.search;\n }\n\n return stripRoot(this.root, current);\n },\n\n change: function(callback) {\n $(window).bind(\"popstate.kendo\", callback);\n },\n\n stop: function() {\n $(window).unbind(\"popstate.kendo\");\n },\n\n normalizeCurrent: function(options) {\n var fixedUrl,\n root = options.root,\n pathname = location.pathname,\n hash = locationHash(hashDelimiter(options.hashBang));\n\n if (root === pathname + \"/\") {\n fixedUrl = root;\n }\n\n if (root === pathname && hash) {\n fixedUrl = absoluteURL(hash.replace(hashStrip, ''), root);\n }\n\n if (fixedUrl) {\n history.pushState({}, document.title, fixedUrl);\n }\n }\n });\n\n function fixHash(url) {\n return url.replace(/^(#)?/, \"#\");\n }\n\n function fixBang(url) {\n return url.replace(/^(#(!)?)?/, \"#!\");\n }\n\n var HashAdapter = HistoryAdapter.extend({\n init: function(bang) {\n this._id = kendo.guid();\n this.prefix = hashDelimiter(bang);\n this.fix = bang ? fixBang : fixHash;\n },\n\n navigate: function(to) {\n location.hash = this.fix(to);\n },\n\n replace: function(to) {\n this.replaceLocation(this.fix(to));\n },\n\n normalize: function(url) {\n if (url.indexOf(this.prefix) < 0) {\n return url;\n } else {\n return url.split(this.prefix)[1];\n }\n },\n\n change: function(callback) {\n if (support.hashChange) {\n $(window).on(\"hashchange.\" + this._id, callback);\n } else {\n this._interval = setInterval(callback, CHECK_URL_INTERVAL);\n }\n },\n\n stop: function() {\n $(window).off(\"hashchange.\" + this._id);\n clearInterval(this._interval);\n },\n\n current: function() {\n return locationHash(this.prefix);\n },\n\n normalizeCurrent: function(options) {\n var pathname = location.pathname,\n root = options.root;\n\n if (options.pushState && root !== pathname) {\n this.replaceLocation(root + this.prefix + stripRoot(root, pathname));\n return true; // browser will reload at this point.\n }\n\n return false;\n }\n });\n\n var History = kendo.Observable.extend({\n start: function(options) {\n options = options || {};\n\n this.bind([CHANGE, BACK, SAME], options);\n\n if (this._started) {\n return;\n }\n\n this._started = true;\n\n options.root = options.root || \"/\";\n\n var adapter = this.createAdapter(options),\n current;\n\n // adapter may reload the document\n if (adapter.normalizeCurrent(options)) {\n return;\n }\n\n current = adapter.current();\n\n $.extend(this, {\n adapter: adapter,\n root: options.root,\n historyLength: adapter.length(),\n current: current,\n locations: [current]\n });\n\n adapter.change(this._checkUrl.bind(this));\n },\n\n createAdapter: function(options) {\n return support.pushState && options.pushState ? new PushStateAdapter(options.root) : new HashAdapter(options.hashBang);\n },\n\n stop: function() {\n if (!this._started) {\n return;\n }\n this.adapter.stop();\n this.unbind(CHANGE);\n this._started = false;\n },\n\n change: function(callback) {\n this.bind(CHANGE, callback);\n },\n\n replace: function(to, silent) {\n\n this._navigate(to, silent, function(adapter) {\n adapter.replace(to);\n this.locations[this.locations.length - 1] = this.current;\n });\n },\n\n navigate: function(to, silent) {\n if (to === \"#:back\") {\n this.backCalled = true;\n this.adapter.back();\n return;\n }\n\n this._navigate(to, silent, function(adapter) {\n adapter.navigate(to);\n this.locations.push(this.current);\n });\n },\n\n _navigate: function(to, silent, callback) {\n var adapter = this.adapter;\n\n to = adapter.normalize(to);\n\n if (this.current === to || this.current === decodeURIComponent(to)) {\n this.trigger(SAME);\n return;\n }\n\n if (!silent) {\n if (this.trigger(CHANGE, { url: to, decode: false })) {\n return;\n }\n }\n\n this.current = to;\n\n callback.call(this, adapter);\n\n this.historyLength = adapter.length();\n },\n\n _checkUrl: function() {\n var adapter = this.adapter,\n current = adapter.current(),\n newLength = adapter.length(),\n navigatingInExisting = this.historyLength === newLength,\n back = current === this.locations[this.locations.length - 2] && navigatingInExisting,\n backCalled = this.backCalled,\n prev = this.current;\n\n if (current === null || this.current === current || this.current === decodeURIComponent(current)) {\n return true;\n }\n\n this.historyLength = newLength;\n this.backCalled = false;\n\n this.current = current;\n\n if (back && this.trigger(\"back\", { url: prev, to: current })) {\n adapter.forward();\n this.current = prev;\n return;\n }\n\n if (this.trigger(CHANGE, { url: current, backButtonPressed: !backCalled })) {\n if (back) {\n adapter.forward();\n } else {\n adapter.back();\n this.historyLength --;\n }\n this.current = prev;\n return;\n }\n\n if (back) {\n this.locations.pop();\n } else {\n this.locations.push(current);\n }\n }\n });\n\n kendo.History = History;\n kendo.History.HistoryAdapter = HistoryAdapter;\n kendo.History.HashAdapter = HashAdapter;\n kendo.History.PushStateAdapter = PushStateAdapter;\n kendo.absoluteURL = absoluteURL;\n kendo.history = new History();\n })(window.kendo.jQuery);\n var kendo$X = kendo;\n\n (function() {\n var kendo = window.kendo,\n history = kendo.history,\n Observable = kendo.Observable,\n INIT = \"init\",\n ROUTE_MISSING = \"routeMissing\",\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n optionalParam = /\\((.*?)\\)/g,\n namedParam = /(\\(\\?)?:\\w+/g,\n splatParam = /\\*\\w+/g,\n escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n function namedParamReplace(match, optional) {\n return optional ? match : '([^\\/]+)';\n }\n\n function routeToRegExp(route, ignoreCase) {\n return new RegExp('^' + route\n .replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, namedParamReplace)\n .replace(splatParam, '(.*?)') + '$', ignoreCase ? \"i\" : \"\");\n }\n\n function stripUrl(url) {\n return url.replace(/(\\?.*)|(#.*)/g, \"\");\n }\n\n var Route = kendo.Class.extend({\n init: function(route, callback, ignoreCase) {\n if (!(route instanceof RegExp)) {\n route = routeToRegExp(route, ignoreCase);\n }\n\n this.route = route;\n this._callback = callback;\n },\n\n callback: function(url, back, decode) {\n var params,\n idx = 0,\n length,\n queryStringParams = kendo.parseQueryStringParams(url);\n queryStringParams._back = back;\n\n url = stripUrl(url);\n params = this.route.exec(url).slice(1);\n length = params.length;\n\n if (decode) {\n for (; idx < length; idx ++) {\n if (typeof params[idx] !== 'undefined') {\n params[idx] = decodeURIComponent(params[idx]);\n }\n }\n }\n\n params.push(queryStringParams);\n\n this._callback.apply(null, params);\n },\n\n worksWith: function(url, back, decode) {\n if (this.route.test(stripUrl(url))) {\n this.callback(url, back, decode);\n return true;\n } else {\n return false;\n }\n }\n });\n\n var Router = Observable.extend({\n init: function(options) {\n if (!options) {\n options = {};\n }\n\n Observable.fn.init.call(this);\n\n this.routes = [];\n this.pushState = options.pushState;\n this.hashBang = options.hashBang;\n this.root = options.root;\n this.ignoreCase = options.ignoreCase !== false;\n\n this.bind([INIT, ROUTE_MISSING, CHANGE, SAME, BACK], options);\n },\n\n destroy: function() {\n history.unbind(CHANGE, this._urlChangedProxy);\n history.unbind(SAME, this._sameProxy);\n history.unbind(BACK, this._backProxy);\n this.unbind();\n },\n\n start: function() {\n var that = this,\n sameProxy = function() { that._same(); },\n backProxy = function(e) { that._back(e); },\n urlChangedProxy = function(e) { that._urlChanged(e); };\n\n history.start({\n same: sameProxy,\n change: urlChangedProxy,\n back: backProxy,\n pushState: that.pushState,\n hashBang: that.hashBang,\n root: that.root\n });\n\n // eslint-disable-next-line no-undef\n var initEventObject = { url: history.current || \"/\", preventDefault: $.noop };\n\n if (!that.trigger(INIT, initEventObject)) {\n that._urlChanged(initEventObject);\n }\n\n this._urlChangedProxy = urlChangedProxy;\n this._backProxy = backProxy;\n },\n\n route: function(route, callback) {\n this.routes.push(new Route(route, callback, this.ignoreCase));\n },\n\n navigate: function(url, silent) {\n kendo.history.navigate(url, silent);\n },\n\n replace: function(url, silent) {\n kendo.history.replace(url, silent);\n },\n\n _back: function(e) {\n if (this.trigger(BACK, { url: e.url, to: e.to })) {\n e.preventDefault();\n }\n },\n\n _same: function() {\n this.trigger(SAME);\n },\n\n _urlChanged: function(e) {\n var url = e.url;\n var decode = !!e.decode;\n var back = e.backButtonPressed;\n\n if (!url) {\n url = \"/\";\n }\n\n if (this.trigger(CHANGE, { url: e.url, params: kendo.parseQueryStringParams(e.url), backButtonPressed: back })) {\n e.preventDefault();\n return;\n }\n\n var idx = 0,\n routes = this.routes,\n route,\n length = routes.length;\n\n for (; idx < length; idx ++) {\n route = routes[idx];\n\n if (route.worksWith(url, back, decode)) {\n return;\n }\n }\n\n if (this.trigger(ROUTE_MISSING, { url: url, params: kendo.parseQueryStringParams(url), backButtonPressed: back })) {\n e.preventDefault();\n }\n }\n });\n\n kendo.Router = Router;\n })();\n\n /*\n This code is copied/inspired by the internal @progress/kendo-data-query repo:\n https://github.com/telerik/kendo-data-query/tree/develop/src/filtering\n\n !!!\n 1. If updates are to be synced consider the accentFoldingFiltering,\n which at the moment is not present as a feature in the data-query-package.\n\n 2. Double-check available operators as well.\n\n 3. Make sure objs are strings -> i.e., replace (a || \"\") to (a + '')\n !!!\n\n In future, if we consider reusing the code directly we should revise the above omissions.\n */\n\n var logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n };\n\n var operatorsMap = {\n isnullorempty: function (a) { return kendo.isBlank(a) || a === ''; },\n isnotnullorempty: function (a) { return kendo.isPresent(a) && a !== ''; },\n contains: function (a, b) { return (a + '').indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a + '').indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a + '').lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return kendo.isPresent(a); },\n isnull: function (a) { return kendo.isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a + '').lastIndexOf(b, 0) === 0; }\n };\n\n var dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\n var convertValue = function (value, ignoreCase, accentFoldingFiltering) {\n if (value != null && kendo.isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n } else if (ignoreCase) {\n return accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase();\n }\n } else if (value != null && kendo.isDate(value)) {\n return value.getTime();\n }\n return value;\n };\n\n var typedGetter = function (prop, value, ignoreCase, accentFoldingFiltering) {\n if (!kendo.isPresent(value)) {\n return prop;\n }\n\n var acc = prop;\n\n if (kendo.isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = function (a) {\n var x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return accentFoldingFiltering ? x.toLocaleLowerCase(accentFoldingFiltering) : x.toLowerCase();\n } else {\n return kendo.isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n\n if (kendo.isDate(value)) {\n return function (a) {\n var x = acc(a);\n return kendo.isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n };\n\n var transformFilter = function (ref) {\n var field = ref.field;\n var ignoreCase = ref.ignoreCase;\n var value = ref.value;\n var operator = ref.operator; if ( operator === void 0 ) operator = 'eq';\n var accentFoldingFiltering = ref.accentFoldingFiltering;\n\n field = !kendo.isPresent(field) ? function (a) { return a; } : field;\n\n ignoreCase = kendo.isPresent(ignoreCase) ? ignoreCase : true;\n\n var itemProp = typedGetter(\n kendo.isFunction(field) ? field : kendo.getter(field, true),\n value,\n ignoreCase,\n accentFoldingFiltering\n );\n\n value = convertValue(value, ignoreCase, accentFoldingFiltering);\n\n var op = kendo.isFunction(operator) ? operator : operatorsMap[operator];\n\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n };\n\n var isCompositeFilterDescriptor = function (source) { return kendo.isPresent(source.filters); };\n\n var transformCompositeFilter = function (filter) {\n var accentFoldingFiltering = filter.accentFoldingFiltering;\n var combiner = logic[filter.logic || 'and'];\n return filter.filters\n .filter(kendo.isPresent)\n .map(function (x) { return (isCompositeFilterDescriptor(x) ? transformCompositeFilter(extendAccentFolding(x, accentFoldingFiltering)) : transformFilter(extendAccentFolding(x, accentFoldingFiltering))); })\n .reduce(combiner.concat, combiner.identity);\n };\n\n var extendAccentFolding = function (filter, accentFoldingFiltering) { return (kendo.isPresent(accentFoldingFiltering) ? Object.assign(filter, { accentFoldingFiltering: accentFoldingFiltering }) : filter); };\n\n var filterExprNoEval = function(expr) {\n return transformCompositeFilter(expr);\n };\n\n var __meta__$V = {\n id: \"data.odata\",\n name: \"OData\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n NEWLINE = \"\\r\\n\",\n DOUBLELINE = \"\\r\\n\\r\\n\",\n isFunction = kendo.isFunction,\n odataFilters = {\n eq: \"eq\",\n neq: \"ne\",\n gt: \"gt\",\n gte: \"ge\",\n lt: \"lt\",\n lte: \"le\",\n contains: \"substringof\",\n doesnotcontain: \"substringof\",\n endswith: \"endswith\",\n startswith: \"startswith\",\n isnull: \"eq\",\n isnotnull: \"ne\",\n isnullorempty: \"eq\",\n isnotnullorempty: \"ne\",\n isempty: \"eq\",\n isnotempty: \"ne\"\n },\n odataFiltersVersionFour = extend({}, odataFilters, {\n contains: \"contains\"\n }),\n mappers = {\n pageSize: $.noop,\n page: $.noop,\n filter: function(params, filter, useVersionFour) {\n if (filter) {\n filter = toOdataFilter(filter, useVersionFour);\n if (filter) {\n params.$filter = filter;\n }\n }\n },\n sort: function(params, orderby) {\n var expr = $.map(orderby, function(value) {\n var order = value.field.replace(/\\./g, \"/\");\n\n if (value.dir === \"desc\") {\n order += \" desc\";\n }\n\n return order;\n }).join(\",\");\n\n if (expr) {\n params.$orderby = expr;\n }\n },\n skip: function(params, skip) {\n if (skip) {\n params.$skip = skip;\n }\n },\n take: function(params, take) {\n if (take) {\n params.$top = take;\n }\n }\n },\n defaultDataType = {\n read: {\n dataType: \"jsonp\"\n }\n };\n\n function toOdataFilter(filter, useOdataFour) {\n var result = [],\n logic = filter.logic || \"and\",\n idx,\n length,\n field,\n type,\n format,\n operator,\n value,\n ignoreCase,\n filters = filter.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n value = filter.value;\n operator = filter.operator;\n\n if (filter.filters) {\n filter = toOdataFilter(filter, useOdataFour);\n } else {\n ignoreCase = filter.ignoreCase;\n field = field.replace(/\\./g, \"/\");\n filter = odataFilters[operator];\n if (useOdataFour) {\n filter = odataFiltersVersionFour[operator];\n }\n\n if (operator === \"isnullorempty\") {\n filter = kendo.format(\"{0} {1} null or {0} {1} ''\", field, filter);\n } else if (operator === \"isnotnullorempty\") {\n filter = kendo.format(\"{0} {1} null and {0} {1} ''\", field, filter);\n } else if (operator === \"isnull\" || operator === \"isnotnull\") {\n filter = kendo.format(\"{0} {1} null\", field, filter);\n } else if (operator === \"isempty\" || operator === \"isnotempty\") {\n filter = kendo.format(\"{0} {1} ''\", field, filter);\n } else if (filter && value !== undefined$1) {\n type = kendo.type(value);\n if (type === \"string\") {\n format = \"'{1}'\";\n value = value.replace(/'/g, \"''\");\n\n if (ignoreCase === true) {\n field = \"tolower(\" + field + \")\";\n }\n\n } else if (type === \"date\") {\n if (useOdataFour) {\n format = \"{1:yyyy-MM-ddTHH:mm:ss+00:00}\";\n value = kendo.timezone.apply(value, 'Etc/UTC');\n } else {\n format = \"datetime'{1:yyyy-MM-ddTHH:mm:ss}'\";\n }\n } else {\n format = \"{1}\";\n }\n\n if (filter.length > 3) {\n if (filter !== \"substringof\") {\n format = \"{0}({2},\" + format + \")\";\n } else {\n format = \"{0}(\" + format + \",{2})\";\n if (operator === \"doesnotcontain\") {\n if (useOdataFour) {\n format = \"{0}({2},'{1}') eq -1\";\n filter = \"indexof\";\n } else {\n format += \" eq false\";\n }\n }\n }\n } else {\n format = \"{2} {0} \" + format;\n }\n\n filter = kendo.format(format, filter, value, field);\n }\n }\n\n result.push(filter);\n }\n\n filter = result.join(\" \" + logic + \" \");\n\n if (result.length > 1) {\n filter = \"(\" + filter + \")\";\n }\n\n return filter;\n }\n\n function stripMetadata(obj) {\n for (var name in obj) {\n if (name.indexOf(\"@odata\") === 0) {\n delete obj[name];\n }\n }\n }\n\n function hex16() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\n }\n\n function createBoundary(prefix) {\n return prefix + hex16() + '-' + hex16() + '-' + hex16();\n }\n\n function createDelimeter(boundary, close) {\n var result = NEWLINE + \"--\" + boundary;\n\n if (close) {\n result += \"--\";\n }\n\n return result;\n }\n\n function createCommand(transport, item, httpVerb, command) {\n var transportUrl = transport.options[command].url;\n var commandPrefix = kendo.format(\"{0} \", httpVerb);\n\n if (isFunction(transportUrl)) {\n return commandPrefix + transportUrl(item);\n } else {\n return commandPrefix + transportUrl;\n }\n }\n\n function getOperationHeader(changeset, changeId) {\n var header = \"\";\n\n header += createDelimeter(changeset, false);\n header += NEWLINE + 'Content-Type: application/http';\n header += NEWLINE + 'Content-Transfer-Encoding: binary';\n header += NEWLINE + 'Content-ID: ' + changeId;\n\n return header;\n }\n\n function getOperationContent(item) {\n var content = \"\";\n\n content += NEWLINE + \"Content-Type: application/json;odata=minimalmetadata\";\n content += NEWLINE + \"Prefer: return=representation\";\n content += DOUBLELINE + kendo.stringify(item);\n\n return content;\n }\n\n function getOperations(collection, changeset, changeId, command, transport, skipContent) {\n var requestBody = \"\";\n\n for (var i = 0; i < collection.length; i++) {\n requestBody += getOperationHeader(changeset, changeId);\n requestBody += DOUBLELINE + createCommand(transport, collection[i], transport.options[command].type, command) + ' HTTP/1.1';\n if (!skipContent) {\n requestBody += getOperationContent(collection[i]);\n }\n requestBody += NEWLINE;\n changeId++;\n }\n\n return requestBody;\n }\n\n function processCollection(colection, boundary, changeset, changeId, transport, command, skipContent) {\n var requestBody = \"\";\n\n requestBody += getBoundary(boundary, changeset);\n requestBody += getOperations(colection, changeset, changeId, command, transport, skipContent);\n requestBody += createDelimeter(changeset, true);\n requestBody += NEWLINE;\n\n return requestBody;\n }\n\n function getBoundary(boundary,changeset) {\n var requestBody = \"\";\n\n requestBody += \"--\" + boundary + NEWLINE;\n requestBody += \"Content-Type: multipart/mixed; boundary=\" + changeset + NEWLINE;\n\n return requestBody;\n }\n\n function createBatchRequest(transport, colections) {\n \t\tvar options = extend({}, transport.options.batch);\n var boundary = createBoundary(\"sf_batch_\");\n var requestBody = \"\";\n var changeId = 0;\n var batchURL = transport.options.batch.url;\n var changeset = createBoundary(\"sf_changeset_\");\n\n options.type = transport.options.batch.type;\n options.url = isFunction(batchURL) ? batchURL() : batchURL;\n \t\toptions.headers = extend(options.headers || {}, {\n \t\t\t\"Content-Type\": \"multipart/mixed; boundary=\" + boundary\n \t\t});\n\n if (colections.updated.length) {\n requestBody += processCollection(colections.updated, boundary, changeset, changeId, transport, \"update\", false);\n changeId += colections.updated.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.destroyed.length) {\n requestBody += processCollection(colections.destroyed, boundary, changeset, changeId, transport, \"destroy\", true);\n changeId += colections.destroyed.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.created.length) {\n requestBody += processCollection(colections.created, boundary, changeset, changeId, transport, \"create\", false);\n }\n\n requestBody += createDelimeter(boundary, true);\n\n options.data = requestBody;\n\n return options;\n }\n\n function parseBatchResponse(responseText) {\n var responseMarkers = responseText.match(/--changesetresponse_[a-z0-9-]+$/gm);\n var markerIndex = 0;\n var collections = [];\n var changeBody;\n var status;\n var code;\n var marker;\n var jsonModel;\n\n collections.push({ models: [], passed: true });\n\n for (var i = 0; i < responseMarkers.length; i++) {\n marker = responseMarkers[i];\n if (marker.lastIndexOf('--', marker.length - 1)) {\n if (i < responseMarkers.length - 1) {\n collections.push({ models: [], passed: true });\n }\n continue;\n }\n\n if (!markerIndex) {\n markerIndex = responseText.indexOf(marker);\n } else {\n markerIndex = responseText.indexOf(marker, markerIndex + marker.length);\n }\n\n changeBody = responseText.substring(markerIndex, responseText.indexOf(\"--\", markerIndex + 1));\n status = changeBody.match(/^HTTP\\/1\\.\\d (\\d{3}) (.*)$/gm).pop();\n code = kendo.parseFloat(status.match(/\\d{3}/g).pop());\n\n if (code >= 200 && code <= 299) {\n jsonModel = changeBody.match(/\\{.*\\}/gm);\n if (jsonModel) {\n collections[collections.length - 1].models.push(JSON.parse(jsonModel[0]));\n }\n } else {\n collections[collections.length - 1].passed = false;\n }\n\n }\n\n return collections;\n }\n\n extend(true, kendo.data, {\n schemas: {\n odata: {\n type: \"json\",\n data: function(data) {\n return data.d.results || [data.d];\n },\n total: \"d.__count\"\n }\n },\n transports: {\n odata: {\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"jsonp\",\n jsonp: \"$callback\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type, useVersionFour) {\n var params,\n value,\n option,\n dataType;\n\n options = options || {};\n type = type || \"read\";\n dataType = (this.options || defaultDataType)[type];\n dataType = dataType ? dataType.dataType : \"json\";\n\n if (type === \"read\") {\n params = {\n $inlinecount: \"allpages\"\n };\n\n if (dataType != \"json\") {\n params.$format = \"json\";\n }\n\n for (option in options) {\n if (mappers[option]) {\n mappers[option](params, options[option], useVersionFour);\n } else {\n params[option] = options[option];\n }\n }\n } else {\n if (dataType !== \"json\") {\n throw new Error(\"Only json dataType can be used for \" + type + \" operation.\");\n }\n\n if (type !== \"destroy\") {\n for (option in options) {\n value = options[option];\n if (typeof value === \"number\") {\n options[option] = value + \"\";\n }\n }\n\n params = kendo.stringify(options);\n }\n }\n\n return params;\n }\n }\n }\n });\n\n extend(true, kendo.data, {\n schemas: {\n \"odata-v4\": {\n type: \"json\",\n data: function(data) {\n if (Array.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n stripMetadata(data[i]);\n }\n return data;\n } else {\n data = $.extend({}, data);\n stripMetadata(data);\n\n if (data.value) {\n return data.value;\n }\n return [data];\n }\n },\n total: function(data) {\n return data[\"@odata.count\"];\n }\n }\n },\n transports: {\n \"odata-v4\": {\n batch: {\n type: \"POST\"\n },\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"json\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type) {\n var result = kendo.data.transports.odata.parameterMap(options, type, true);\n if (type == \"read\") {\n result.$count = true;\n delete result.$inlinecount;\n }\n\n \t\t\t\t\tif (result && result.$filter) {\n \t\t\t\t\t\t// Remove the single quotation marks around the GUID (OData v4).\n \t\t\t\t\t\tresult.$filter = result.$filter.replace(/('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')/ig, function(x) {\n \t\t\t\t\t\t\treturn x.substring(1, x.length - 1);\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n\n return result;\n },\n submit: function(e) {\n var that = this;\n var options = createBatchRequest(that, e.data);\n var collections = e.data;\n\n if (!collections.updated.length && !collections.destroyed.length && !collections.created.length) {\n return;\n }\n\n $.ajax(extend(true, {}, {\n success: function(response) {\n var responses = parseBatchResponse(response);\n var index = 0;\n var current;\n\n if (collections.updated.length) {\n current = responses[index];\n if (current.passed) {\n // Pass either the obtained models or an empty array if only status codes are returned.\n e.success(current.models.length ? current.models : [], \"update\");\n }\n index++;\n }\n if (collections.destroyed.length) {\n current = responses[index];\n if (current.passed) {\n // For delete operations OData returns only status codes.\n // Passing empty array to datasource will force it to correctly remove the deleted items from the pristine collection.\n e.success([], \"destroy\");\n }\n index++;\n }\n if (collections.created.length) {\n current = responses[index];\n if (current.passed) {\n e.success(current.models, \"create\");\n }\n }\n },\n error: function(response, status, error) {\n e.error(response, status, error);\n }\n }, options));\n }\n }\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$W = kendo;\n\n var __meta__$U = {\n id: \"data.xml\",\n name: \"XML\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n map = $.map,\n each = $.each,\n extend = $.extend,\n getter = kendo.getter,\n Class = kendo.Class;\n\n var XmlDataReader = Class.extend({\n init: function(options) {\n var that = this,\n total = options.total,\n model = options.model,\n parse = options.parse,\n errors = options.errors,\n serialize = options.serialize,\n data = options.data;\n\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n if (isPlainObject(value) && value.field) {\n if (!kendo.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n\n var id = model.id;\n if (id) {\n var idField = {};\n\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n\n that.model = model;\n }\n\n if (total) {\n if (typeof total == \"string\") {\n total = that.getter(total);\n that.total = function(data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == \"function\") {\n that.total = total;\n }\n }\n\n if (errors) {\n if (typeof errors == \"string\") {\n errors = that.getter(errors);\n that.errors = function(data) {\n return errors(data) || null;\n };\n } else if (typeof errors == \"function\") {\n that.errors = errors;\n }\n }\n\n if (data) {\n if (typeof data == \"string\") {\n data = that.xpathToMember(data);\n that.data = function(value) {\n var result = that.evaluate(value, data),\n modelInstance;\n\n result = isArray(result) ? result : [result];\n\n if (that.model && model.fields) {\n modelInstance = new that.model();\n\n return map(result, function(value) {\n if (value) {\n var record = {}, field;\n\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n\n return record;\n }\n });\n }\n\n return result;\n };\n } else if (typeof data == \"function\") {\n that.data = data;\n }\n }\n\n if (typeof parse == \"function\") {\n var xmlParse = that.parse;\n\n that.parse = function(data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n\n if (typeof serialize == \"function\") {\n that.serialize = serialize;\n }\n },\n total: function(result) {\n return this.data(result).length;\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n serialize: function(data) {\n return data;\n },\n parseDOM: function(element) {\n var result = {},\n parsedNode,\n node,\n nodeType,\n nodeName,\n member,\n attribute,\n attributes = element.attributes,\n attributeCount = attributes.length,\n idx;\n\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result[\"@\" + attribute.nodeName] = attribute.nodeValue;\n }\n\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n\n if (nodeType === 3 || nodeType === 4) {\n // text nodes or CDATA are stored as #text field\n result[\"#text\"] = node.nodeValue;\n } else if (nodeType === 1) {\n // elements are stored as fields\n parsedNode = this.parseDOM(node);\n\n nodeName = node.nodeName;\n\n member = result[nodeName];\n\n if (isArray(member)) {\n // elements of same nodeName are stored as array\n member.push(parsedNode);\n } else if (member !== undefined$1) {\n member = [member, parsedNode];\n } else {\n member = parsedNode;\n }\n\n result[nodeName] = member;\n }\n }\n return result;\n },\n\n evaluate: function(value, expression) {\n var members = expression.split(\".\"),\n member,\n result,\n length,\n intermediateResult,\n idx;\n\n while (member = members.shift()) {\n value = value[member];\n\n if (isArray(value)) {\n result = [];\n expression = members.join(\".\");\n\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n\n result.push.apply(result, intermediateResult);\n }\n\n return result;\n }\n }\n\n return value;\n },\n\n parse: function(xml) {\n var documentElement,\n tree,\n result = {};\n\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n\n tree = this.parseDOM(documentElement);\n\n result[documentElement.nodeName] = tree;\n\n return result;\n },\n\n xpathToMember: function(member, raw) {\n if (!member) {\n return \"\";\n }\n\n member = member.replace(/^\\//, \"\") // remove the first \"/\"\n .replace(/\\//g, \".\"); // replace all \"/\" with \".\"\n\n if (member.indexOf(\"@\") >= 0) {\n // replace @attribute with '[\"@attribute\"]'\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n\n if (member.indexOf(\"text()\") >= 0) {\n // replace \".text()\" with '[\"#text\"]'\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n\n return member;\n },\n getter: function(member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: {\n xml: XmlDataReader\n }\n });\n })(window.kendo.jQuery);\n var kendo$V = kendo;\n\n var __meta__$T = {\n id: \"data\",\n name: \"Data source\",\n category: \"framework\",\n description: \"Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.\",\n depends: [ \"core\" ],\n features: [ {\n id: \"data-odata\",\n name: \"OData\",\n description: \"Support for accessing Open Data Protocol (OData) services.\",\n depends: [ \"data.odata\" ]\n }, {\n id: \"data-signalr\",\n name: \"SignalR\",\n description: \"Support for binding to SignalR hubs.\",\n depends: [ \"data.signalr\" ]\n }, {\n id: \"data-XML\",\n name: \"XML\",\n description: \"Support for binding to XML.\",\n depends: [ \"data.xml\" ]\n }]\n };\n\n\n (function($, undefined$1) {\n var extend = $.extend,\n isPlainObject = $.isPlainObject,\n isEmptyObject = $.isEmptyObject,\n isArray = Array.isArray,\n grep = $.grep,\n ajax = $.ajax,\n map,\n each = $.each,\n noop = $.noop,\n kendo = window.kendo,\n isFunction = kendo.isFunction,\n Observable = kendo.Observable,\n Class = kendo.Class,\n STRING = \"string\",\n FUNCTION = \"function\",\n ASCENDING = \"asc\",\n CREATE = \"create\",\n READ = \"read\",\n UPDATE = \"update\",\n DESTROY = \"destroy\",\n CHANGE = \"change\",\n SYNC = \"sync\",\n GET = \"get\",\n ERROR = \"error\",\n REQUESTSTART = \"requestStart\",\n PROGRESS = \"progress\",\n REQUESTEND = \"requestEnd\",\n ITEMSLOADED = \"itemsLoaded\",\n ITEMLOAD = \"itemLoad\",\n crud = [CREATE, READ, UPDATE, DESTROY],\n identity = function(o) { return o; },\n getter = kendo.getter,\n stringify = kendo.stringify,\n math = Math,\n push = [].push,\n join = [].join,\n pop = [].pop,\n splice = [].splice,\n shift = [].shift,\n slice = [].slice,\n unshift = [].unshift,\n toString = {}.toString,\n stableSort = kendo.support.stableSort,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n objectKeys = [];\n\n var ObservableArray = Observable.extend({\n init: function(array, type) {\n var that = this;\n\n that.type = type || ObservableObject;\n\n Observable.fn.init.call(that);\n\n that.length = array.length;\n\n that.wrapAll(array, that);\n that._loadPromises = [];\n that._loadedNodes = [];\n },\n\n at: function(index) {\n return this[index];\n },\n\n toJSON: function(serializeFunctions) {\n var idx, length = this.length, value, json = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n value = this[idx];\n\n if (value instanceof ObservableObject) {\n value = value.toJSON(serializeFunctions);\n }\n\n json[idx] = value;\n }\n\n return json;\n },\n\n parent: noop,\n\n wrapAll: function(source, target) {\n var that = this,\n idx,\n length,\n parent = function() {\n return that;\n };\n\n target = target || [];\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n target[idx] = that.wrap(source[idx], parent);\n }\n\n return target;\n },\n\n wrap: function(object, parent) {\n var that = this,\n observable;\n\n if (object !== null && toString.call(object) === \"[object Object]\") {\n observable = object instanceof that.type || object instanceof Model;\n\n if (!observable) {\n object = object instanceof ObservableObject ? object.toJSON() : object;\n object = new that.type(object);\n }\n\n object.parent = parent;\n\n object.bind(CHANGE, function(e) {\n var isGroup = object.hasOwnProperty(\"hasSubgroups\");\n that.trigger(CHANGE, {\n field: e.field,\n node: e.node,\n index: e.index,\n items: e.items || [this],\n action: e.node || isGroup ? (e.action || \"itemloaded\") : \"itemchange\"\n });\n });\n\n object.bind(ITEMLOAD, function(e) {\n that._loadPromises.push(e.promise);\n that._loading = true;\n\n e.promise.done(function() {\n that._loadedNodes.push(e.node);\n var index = that._loadPromises.indexOf(e.promise);\n that._loadPromises.splice(index, 1);\n\n if (!that._loadPromises.length) {\n that._loading = false;\n that.trigger(ITEMSLOADED, { collection: that, nodes: that._loadedNodes });\n that._loadedNodes = [];\n }\n });\n });\n }\n\n return object;\n },\n\n loading: function() {\n return this._loading;\n },\n\n push: function() {\n var index = this.length,\n items = this.wrapAll(arguments),\n result;\n\n result = push.apply(this, items);\n\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n\n return result;\n },\n\n slice: slice,\n\n sort: [].sort,\n\n join: join,\n\n pop: function() {\n var length = this.length, result = pop.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: length - 1,\n items: [result]\n });\n }\n\n return result;\n },\n\n splice: function(index, howMany, item) {\n var items = this.wrapAll(slice.call(arguments, 2)),\n result, i, len;\n\n result = splice.apply(this, [index, howMany].concat(items));\n\n if (result.length) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: index,\n items: this.omitCache && this.omitCache.length ? result.concat(this.omitCache) : result\n });\n this.omitCache = [];\n }\n\n for (i = 0, len = result.length; i < len; i++) {\n if (result[i] && result[i].children) {\n result[i].unbind(CHANGE);\n }\n }\n }\n\n if (item) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n }\n return result;\n },\n\n shift: function() {\n var length = this.length, result = shift.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: 0,\n items: [result]\n });\n }\n\n return result;\n },\n\n unshift: function() {\n var items = this.wrapAll(arguments),\n result;\n\n result = unshift.apply(this, items);\n\n this.trigger(CHANGE, {\n action: \"add\",\n index: 0,\n items: items\n });\n\n return result;\n },\n\n indexOf: function(item) {\n var that = this,\n idx,\n length;\n\n for (idx = 0, length = that.length; idx < length; idx++) {\n if (that[idx] === item) {\n return idx;\n }\n }\n return -1;\n },\n\n forEach: function(callback, thisArg) {\n var idx = 0;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n callback.call(context, this[idx], idx, this);\n }\n },\n\n map: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n result[idx] = callback.call(context, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduce: function(callback) {\n var idx = 0,\n result,\n length = this.length;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx < length) {\n result = this[idx++];\n }\n\n for (; idx < length; idx++) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduceRight: function(callback) {\n var idx = this.length - 1,\n result;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx > 0) {\n result = this[idx--];\n }\n\n for (; idx >= 0; idx--) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n filter: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n result[result.length] = item;\n }\n }\n\n return result;\n },\n\n find: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return item;\n }\n }\n },\n\n every: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (!callback.call(context, item, idx, this)) {\n return false;\n }\n }\n\n return true;\n },\n\n some: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return true;\n }\n }\n\n return false;\n },\n\n // non-standard collection methods\n remove: function(item) {\n var idx = this.indexOf(item);\n\n if (idx !== -1) {\n this.splice(idx, 1);\n }\n },\n\n empty: function() {\n this.splice(0, this.length);\n }\n });\n\n // Polyfill for Symbol.iterator\n if (typeof Symbol !== \"undefined\" && Symbol.iterator && !ObservableArray.prototype[Symbol.iterator]) {\n ObservableArray.prototype[Symbol.iterator] = [][Symbol.iterator];\n }\n\n var LazyObservableArray = ObservableArray.extend({\n init: function(data, type, events) {\n var parentFn = function() { return this; };\n\n Observable.fn.init.call(this);\n\n this.type = type || ObservableObject;\n\n if (events) {\n this._events = events;\n }\n\n for (var idx = 0; idx < data.length; idx++) {\n this[idx] = data[idx];\n }\n\n this.length = idx;\n this._parent = parentFn.bind(this);\n },\n at: function(index) {\n var item = this[index];\n\n if (!(item instanceof this.type)) {\n item = this[index] = this.wrap(item, this._parent);\n } else {\n item.parent = this._parent;\n }\n\n return item;\n }\n });\n\n function eventHandler(context, type, field, prefix) {\n return function(e) {\n var event = {}, key;\n\n for (key in e) {\n event[key] = e[key];\n }\n\n if (prefix) {\n event.field = field + \".\" + e.field;\n } else {\n event.field = field;\n }\n\n if (type == CHANGE && context._notifyChange) {\n context._notifyChange(event);\n }\n\n context.trigger(type, event);\n };\n }\n\n function isPrimitiveType(value) {\n return (typeof value === \"object\" && Object.getPrototypeOf(value) === Object.getPrototypeOf({}))\n || Object.getPrototypeOf(value) === Object.getPrototypeOf(new Date())\n || typeof value !== \"object\";\n }\n\n function ownKeys(value, ignoreObjectKeys) {\n var props = [];\n var protoKeys = [];\n var keys, filteredObjectKeys;\n\n value = value || {};\n\n if (!isPrimitiveType(value)) {\n protoKeys = Object.getOwnPropertyNames(Object.getPrototypeOf(value)).filter(function (f) { return f.indexOf(\"__\") !== 0; });\n }\n\n keys = Object.getOwnPropertyNames(value).concat(protoKeys);\n\n filteredObjectKeys = objectKeys.filter(function(key) {\n return keys.indexOf(key) < 0;\n });\n\n while (value) {\n Object.getOwnPropertyNames(value).forEach(function(prop) {\n if (props.indexOf(prop) === -1 && (!ignoreObjectKeys || filteredObjectKeys.indexOf(prop) < 0)) {\n props.push(prop);\n }\n });\n value = Object.getPrototypeOf(value);\n }\n\n return props;\n }\n\n objectKeys = ownKeys({}, false);\n\n var ObservableObject = Observable.extend({\n init: function(value) {\n var that = this,\n member,\n keys = ownKeys(value, true),\n parent = function() {\n return that;\n };\n\n Observable.fn.init.call(this);\n\n this._handlers = {};\n\n keys.forEach(function(field) {\n member = value[field];\n\n if (typeof member === \"object\" && member && !member.getTime && field.charAt(0) != \"_\") {\n member = that.wrap(member, field, parent);\n }\n\n that[field] = member;\n });\n\n that.uid = kendo.guid();\n },\n\n shouldSerialize: function(field, serializeFunctions) {\n return this.hasOwnProperty(field) && field !== \"_handlers\" && field !== \"_events\" && ((serializeFunctions && serializeFunctions[field]) || typeof this[field] !== FUNCTION) && field !== \"uid\";\n },\n\n forEach: function(f) {\n for (var i in this) {\n if (this.shouldSerialize(i)) {\n f(this[i], i);\n }\n }\n },\n\n toJSON: function(serializeFunctions) {\n var result = {}, value, field;\n\n for (field in this) {\n if (this.shouldSerialize(field, serializeFunctions)) {\n value = this[field];\n\n if (value instanceof ObservableObject || value instanceof ObservableArray) {\n value = value.toJSON(serializeFunctions);\n }\n\n result[field] = value;\n }\n }\n\n return result;\n },\n\n get: function(field) {\n var that = this, result;\n\n that.trigger(GET, { field: field });\n\n if (field === \"this\") {\n result = that;\n } else {\n result = kendo.getter(field, true)(that);\n }\n\n return result;\n },\n\n _set: function(field, value) {\n var that = this;\n var composite = field.indexOf(\".\") >= 0;\n\n if (composite) {\n var paths = field.split(\".\"),\n path = \"\";\n\n while (paths.length > 1) {\n path += paths.shift();\n var obj = kendo.getter(path, true)(that);\n if (obj instanceof ObservableObject) {\n obj.set(paths.join(\".\"), value);\n return composite;\n }\n path += \".\";\n }\n }\n\n kendo.setter(field)(that, value);\n\n return composite;\n },\n\n set: function(field, value) {\n var that = this,\n isSetPrevented = false,\n composite = field.indexOf(\".\") >= 0,\n current = kendo.getter(field, true)(that);\n\n if (current !== value) {\n if (current instanceof Observable && this._handlers[field]) {\n if (this._handlers[field].get) {\n current.unbind(GET, this._handlers[field].get);\n }\n current.unbind(CHANGE, this._handlers[field].change);\n }\n\n isSetPrevented = that.trigger(\"set\", { field: field, value: value });\n\n if (!isSetPrevented) {\n if (!composite) {\n value = that.wrap(value, field, function() { return that; });\n }\n if (!that._set(field, value) || field.indexOf(\"(\") >= 0 || field.indexOf(\"[\") >= 0) {\n that.trigger(CHANGE, { field: field });\n }\n }\n }\n\n return isSetPrevented;\n },\n\n parent: noop,\n\n wrap: function(object, field, parent) {\n var that = this;\n var get;\n var change;\n var type = toString.call(object);\n\n if (object != null && (type === \"[object Object]\" || type === \"[object Array]\")) {\n var isObservableArray = object instanceof ObservableArray;\n var isDataSource = object instanceof DataSource;\n\n if (type === \"[object Object]\" && !isDataSource && !isObservableArray) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n get = eventHandler(that, GET, field, true);\n object.bind(GET, get);\n change = eventHandler(that, CHANGE, field, true);\n object.bind(CHANGE, change);\n\n that._handlers[field] = { get: get, change: change };\n } else if (type === \"[object Array]\" || isObservableArray || isDataSource) {\n if (!isObservableArray && !isDataSource) {\n object = new ObservableArray(object);\n }\n\n change = eventHandler(that, CHANGE, field, false);\n\n object.bind(CHANGE, change);\n\n that._handlers[field] = { change: change };\n }\n\n object.parent = parent;\n }\n\n return object;\n }\n });\n\n function equal(x, y) {\n if (x === y) {\n return true;\n }\n\n var xtype = kendo.type(x), ytype = kendo.type(y), field;\n\n if (xtype !== ytype) {\n return false;\n }\n\n if (xtype === \"date\") {\n return x.getTime() === y.getTime();\n }\n\n if (xtype !== \"object\" && xtype !== \"array\") {\n return false;\n }\n\n for (field in x) {\n if (!equal(x[field], y[field])) {\n return false;\n }\n }\n\n return true;\n }\n\n var parsers = {\n \"number\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseFloat(value);\n },\n\n \"date\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseDate(value);\n },\n\n \"boolean\": function(value) {\n if (typeof value === STRING) {\n if (value.toLowerCase() === \"null\") {\n return null;\n } else {\n return value.toLowerCase() === \"true\";\n }\n }\n return value != null ? !!value : value;\n },\n\n \"string\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return value != null ? (value + \"\") : value;\n },\n\n \"default\": function(value) {\n return value;\n }\n };\n\n var defaultValues = {\n \"string\": \"\",\n \"number\": 0,\n \"date\": new Date(),\n \"boolean\": false,\n \"default\": \"\"\n };\n\n function getFieldByName(obj, name) {\n var field,\n fieldName;\n\n for (fieldName in obj) {\n field = obj[fieldName];\n if (isPlainObject(field) && field.field && field.field === name) {\n return field;\n } else if (field === name) {\n return field;\n }\n }\n return null;\n }\n\n var Model = ObservableObject.extend({\n init: function(data) {\n var that = this;\n\n if (!data || $.isEmptyObject(data)) {\n data = $.extend({}, that.defaults, data);\n\n if (that._initializers) {\n for (var idx = 0; idx < that._initializers.length; idx++) {\n var name = that._initializers[idx];\n data[name] = that.defaults[name]();\n }\n }\n }\n\n ObservableObject.fn.init.call(that, data);\n\n that.dirty = false;\n that.dirtyFields = {};\n\n if (that.idField) {\n that.id = that.get(that.idField);\n\n if (that.id === undefined$1) {\n that.id = that._defaultId;\n }\n }\n },\n\n shouldSerialize: function(field) {\n return ObservableObject.fn.shouldSerialize.call(this, field) &&\n field !== \"uid\" && !(this.idField !== \"id\" && field === \"id\") &&\n field !== \"dirty\" && field !== \"dirtyFields\" && field !== \"_accessors\";\n },\n\n _parse: function(field, value) {\n var that = this,\n fieldName = field,\n fields = (that.fields || {}),\n parse;\n\n field = fields[field];\n if (!field) {\n field = getFieldByName(fields, fieldName);\n }\n if (field) {\n parse = field.parse;\n if (!parse && field.type) {\n parse = parsers[field.type.toLowerCase()];\n }\n }\n\n return parse ? parse(value) : value;\n },\n\n _notifyChange: function(e) {\n var action = e.action;\n\n if (action == \"add\" || action == \"remove\") {\n this.dirty = true;\n this.dirtyFields[e.field] = true;\n }\n },\n\n editable: function(field) {\n field = (this.fields || {})[field];\n return field ? field.editable !== false : true;\n },\n\n set: function(field, value) {\n var that = this;\n var dirty = that.dirty;\n\n if (that.editable(field)) {\n value = that._parse(field, value);\n\n if (!equal(value, that.get(field))) {\n that.dirty = true;\n that.dirtyFields[field] = true;\n\n if (ObservableObject.fn.set.call(that, field, value) && !dirty) {\n that.dirty = dirty;\n\n if (!that.dirty) {\n that.dirtyFields[field] = false;\n }\n }\n } else {\n that.trigger(\"equalSet\", { field: field, value: value });\n }\n }\n },\n\n accept: function(data) {\n var that = this,\n parent = function() { return that; },\n field;\n\n for (field in data) {\n var value = data[field];\n\n if (field.charAt(0) != \"_\") {\n value = that.wrap(data[field], field, parent);\n }\n\n that._set(field, value);\n }\n\n if (that.idField) {\n that.id = that.get(that.idField);\n }\n\n that.dirty = false;\n that.dirtyFields = {};\n },\n\n isNew: function() {\n return this.id === this._defaultId;\n }\n });\n\n Model.define = function(base, options) {\n if (options === undefined$1) {\n options = base;\n base = Model;\n }\n\n var model,\n proto = extend({ defaults: {} }, options),\n name,\n field,\n type,\n value,\n idx,\n length,\n fields = {},\n originalName,\n id = proto.id,\n functionFields = [];\n\n if (id) {\n proto.idField = id;\n }\n\n if (proto.id) {\n delete proto.id;\n }\n\n if (id) {\n proto.defaults[id] = proto._defaultId = \"\";\n }\n\n if (toString.call(proto.fields) === \"[object Array]\") {\n for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n field = proto.fields[idx];\n if (typeof field === STRING) {\n fields[field] = {};\n } else if (field.field) {\n fields[field.field] = field;\n }\n }\n proto.fields = fields;\n }\n\n for (name in proto.fields) {\n field = proto.fields[name];\n type = field.type || \"default\";\n value = null;\n originalName = name;\n\n name = typeof (field.field) === STRING ? field.field : name;\n\n if (!field.nullable) {\n value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined$1 ? field.defaultValue : defaultValues[type.toLowerCase()];\n\n if (typeof value === \"function\") {\n functionFields.push(name);\n }\n }\n\n if (options.id === name) {\n proto._defaultId = value;\n }\n\n proto.defaults[originalName !== name ? originalName : name] = value;\n\n if ($.isPlainObject(field)) {\n field.parse = field.parse || parsers[type];\n } else {\n field = {\n parse: parsers[type]\n };\n }\n }\n\n if (functionFields.length > 0) {\n proto._initializers = functionFields;\n }\n\n model = base.extend(proto);\n model.define = function(options) {\n return Model.define(model, options);\n };\n\n if (proto.fields) {\n model.fields = proto.fields;\n model.idField = proto.idField;\n }\n\n return model;\n };\n\n var Comparer = {\n selector: function(field) {\n return isFunction(field) ? field : getter(field);\n },\n\n compare: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n a = selector(a);\n b = selector(b);\n\n if (a == null && b == null) {\n return 0;\n }\n\n if (a == null) {\n return -1;\n }\n\n if (b == null) {\n return 1;\n }\n\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n\n return a > b ? 1 : (a < b ? -1 : 0);\n };\n },\n\n create: function(sort) {\n var compare = sort.compare || this.compare(sort.field);\n\n if (sort.dir == \"desc\") {\n return function(a, b) {\n return compare(b, a, true);\n };\n }\n\n return compare;\n },\n\n combine: function(comparers) {\n return function(a, b) {\n var result = comparers[0](a, b),\n idx,\n length;\n\n for (idx = 1, length = comparers.length; idx < length; idx ++) {\n result = result || comparers[idx](a, b);\n }\n\n return result;\n };\n }\n };\n\n var StableComparer = extend({}, Comparer, {\n asc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return -1;\n }\n\n if (valueB == null) {\n return 1;\n }\n\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB);\n }\n\n return valueA > valueB ? 1 : -1;\n };\n },\n\n desc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return 1;\n }\n\n if (valueB == null) {\n return -1;\n }\n\n if (valueB.localeCompare) {\n return valueB.localeCompare(valueA);\n }\n\n return valueA < valueB ? 1 : -1;\n };\n },\n create: function(sort) {\n return this[sort.dir](sort.field);\n }\n });\n\n map = function(array, callback) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = callback(array[idx], idx, array);\n }\n\n return result;\n };\n\n var operators = (function() {\n\n function quote(str) {\n if (typeof str == \"string\") {\n str = str.replace(/[\\r\\n]+/g, \"\");\n }\n return JSON.stringify(str);\n }\n\n function textOp(impl) {\n return function(a, b, ignore, accentFoldingFiltering) {\n b += \"\";\n if (ignore) {\n a = \"(\" + a + \" + '').toString()\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n b = ((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase());\n }\n return impl(a, quote(b), ignore);\n };\n }\n\n function operator(op, a, b, ignore, accentFoldingFiltering) {\n if (b != null) {\n if (typeof b === STRING) {\n var date = dateRegExp.exec(b);\n if (date) {\n b = new Date(+date[1]);\n } else if (ignore) {\n b = quote(((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase()));\n a = \"((\" + a + \" || '')+'')\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n } else {\n b = quote(b);\n }\n }\n\n if (b.getTime) {\n //b looks like a Date\n a = \"(\" + a + \"&&\" + a + \".getTime?\" + a + \".getTime():\" + a + \")\";\n b = b.getTime();\n }\n }\n\n return a + \" \" + op + \" \" + b;\n }\n\n function getMatchRegexp(pattern) {\n // take a pattern, as supported by Excel match filter, and\n // convert it to the equivalent JS regular expression.\n // Excel patterns support:\n //\n // * - match any sequence of characters\n // ? - match a single character\n //\n // to match a literal * or ?, they must be prefixed by a tilde (~)\n for (var rx = \"/^\", esc = false, i = 0; i < pattern.length; ++i) {\n var ch = pattern.charAt(i);\n if (esc) {\n rx += \"\\\\\" + ch;\n } else if (ch == \"~\") {\n esc = true;\n continue;\n } else if (ch == \"*\") {\n rx += \".*\";\n } else if (ch == \"?\") {\n rx += \".\";\n } else if (\".+^$()[]{}|\\\\/\\n\\r\\u2028\\u2029\\xA0\".indexOf(ch) >= 0) {\n rx += \"\\\\\" + ch;\n } else {\n rx += ch;\n }\n esc = false;\n }\n return rx + \"$/\";\n }\n\n return {\n quote: function(value) {\n if (value && value.getTime) {\n return \"new Date(\" + value.getTime() + \")\";\n }\n return quote(value);\n },\n eq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"==\", a, b, ignore, accentFoldingFiltering);\n },\n neq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"!=\", a, b, ignore, accentFoldingFiltering);\n },\n gt: function(a, b, ignore) {\n return operator(\">\", a, b, ignore);\n },\n gte: function(a, b, ignore) {\n return operator(\">=\", a, b, ignore);\n },\n lt: function(a, b, ignore) {\n return operator(\"<\", a, b, ignore);\n },\n lte: function(a, b, ignore) {\n return operator(\"<=\", a, b, ignore);\n },\n startswith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == 0\";\n }),\n doesnotstartwith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == -1\";\n }),\n endswith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") >= 0\";\n }),\n doesnotendwith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") < 0\";\n }),\n contains: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") >= 0\";\n }),\n doesnotcontain: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") == -1\";\n }),\n matches: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n doesnotmatch: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return \"!\" + getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n isempty: function(a) {\n return a + \" === ''\";\n },\n isnotempty: function(a) {\n return a + \" !== ''\";\n },\n isnull: function(a) {\n return \"(\" + a + \" == null)\";\n },\n isnotnull: function(a) {\n return \"(\" + a + \" != null)\";\n },\n isnullorempty: function(a) {\n return \"(\" + a + \" === null) || (\" + a + \" === '')\";\n },\n isnotnullorempty: function(a) {\n return \"(\" + a + \" !== null) && (\" + a + \" !== '')\";\n }\n };\n })();\n\n function Query(data) {\n this.data = data || [];\n }\n\n // Continue to support legacy unsafe-eval for the spreadsheet\n Query.filterExpr = function(expression, options) {\n if ( options === void 0 ) options = { noEval: false };\n\n if (options.noEval) {\n // using no-eval for most cases\n return filterExprNoEval(expression);\n }\n\n var expressions = [],\n logic = { and: \" && \", or: \" || \" },\n idx,\n length,\n filter,\n expr,\n fieldFunctions = [],\n operatorFunctions = [],\n field,\n operator,\n filters = expression.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n operator = filter.operator;\n\n if (filter.filters) {\n expr = Query.filterExpr(filter);\n //Nested function fields or operators - update their index e.g. __o[0] -> __o[1]\n filter = expr.expression\n .replace(/__o\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__o[\" + (operatorFunctions.length + index) + \"]\";\n })\n .replace(/__f\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__f[\" + (fieldFunctions.length + index) + \"]\";\n });\n\n operatorFunctions.push.apply(operatorFunctions, expr.operators);\n fieldFunctions.push.apply(fieldFunctions, expr.fields);\n } else {\n if (typeof field === FUNCTION) {\n expr = \"__f[\" + fieldFunctions.length + \"](d)\";\n fieldFunctions.push(field);\n } else {\n expr = kendo.expr(field);\n }\n\n if (typeof operator === FUNCTION) {\n filter = \"__o[\" + operatorFunctions.length + \"](\" + expr + \", \" + operators.quote(filter.value) + \")\";\n operatorFunctions.push(operator);\n } else {\n filter = operators[(operator || \"eq\").toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined$1 ? filter.ignoreCase : true, expression.accentFoldingFiltering);\n }\n }\n\n expressions.push(filter);\n }\n\n return { expression: \"(\" + expressions.join(logic[expression.logic]) + \")\", fields: fieldFunctions, operators: operatorFunctions };\n };\n\n function normalizeSort(field, dir) {\n if (field) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return grep(descriptors, function(d) { return !!d.dir; });\n }\n }\n\n function sortFields(sorts, dir) {\n var sortObject = {};\n\n if (sorts) {\n var descriptor = typeof sorts === STRING ? { field: sorts, dir: dir } : sorts,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n for (var i = 0; i < descriptors.length; i++) {\n sortObject[descriptors[i].field] = { dir: descriptors[i].dir, index: i + 1 };\n }\n }\n\n return sortObject;\n }\n\n var operatorMap = {\n \"==\": \"eq\",\n equals: \"eq\",\n isequalto: \"eq\",\n equalto: \"eq\",\n equal: \"eq\",\n \"!=\": \"neq\",\n ne: \"neq\",\n notequals: \"neq\",\n isnotequalto: \"neq\",\n notequalto: \"neq\",\n notequal: \"neq\",\n \"<\": \"lt\",\n islessthan: \"lt\",\n lessthan: \"lt\",\n less: \"lt\",\n \"<=\": \"lte\",\n le: \"lte\",\n islessthanorequalto: \"lte\",\n lessthanequal: \"lte\",\n \">\": \"gt\",\n isgreaterthan: \"gt\",\n greaterthan: \"gt\",\n greater: \"gt\",\n \">=\": \"gte\",\n isgreaterthanorequalto: \"gte\",\n greaterthanequal: \"gte\",\n ge: \"gte\",\n notsubstringof: \"doesnotcontain\",\n isnull: \"isnull\",\n isempty: \"isempty\",\n isnotempty: \"isnotempty\"\n };\n\n function normalizeOperator(expression) {\n var idx,\n length,\n filter,\n operator,\n filters = expression.filters;\n\n if (filters) {\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n operator = filter.operator;\n\n if (operator && typeof operator === STRING) {\n filter.operator = operatorMap[operator.toLowerCase()] || operator;\n }\n\n normalizeOperator(filter);\n }\n }\n }\n\n function normalizeFilter(expression) {\n if (expression && !isEmptyObject(expression)) {\n if (isArray(expression) || !expression.filters) {\n expression = {\n logic: \"and\",\n filters: isArray(expression) ? expression : [expression]\n };\n }\n\n normalizeOperator(expression);\n\n return expression;\n }\n }\n\n Query.normalizeFilter = normalizeFilter;\n\n function compareDescriptor(f1, f2) {\n if (f1.logic || f2.logic) {\n return false;\n }\n\n return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n }\n\n function normalizeDescriptor(filter) {\n filter = filter || {};\n\n if (isEmptyObject(filter)) {\n return { logic: \"and\", filters: [] };\n }\n\n return normalizeFilter(filter);\n }\n\n function fieldComparer(a, b) {\n if (b.logic || (a.field > b.field)) {\n return 1;\n } else if (a.field < b.field) {\n return -1;\n } else {\n return 0;\n }\n }\n\n function compareFilters(expr1, expr2) {\n expr1 = normalizeDescriptor(expr1);\n expr2 = normalizeDescriptor(expr2);\n\n if (expr1.logic !== expr2.logic) {\n return false;\n }\n\n var f1, f2;\n var filters1 = (expr1.filters || []).slice();\n var filters2 = (expr2.filters || []).slice();\n\n if (filters1.length !== filters2.length) {\n return false;\n }\n\n filters1 = filters1.sort(fieldComparer);\n filters2 = filters2.sort(fieldComparer);\n\n for (var idx = 0; idx < filters1.length; idx++) {\n f1 = filters1[idx];\n f2 = filters2[idx];\n\n if (f1.logic && f2.logic) {\n if (!compareFilters(f1, f2)) {\n return false;\n }\n } else if (!compareDescriptor(f1, f2)) {\n return false;\n }\n }\n\n return true;\n }\n\n Query.compareFilters = compareFilters;\n\n function normalizeAggregate(expressions) {\n return isArray(expressions) ? expressions : [expressions];\n }\n\n function normalizeGroup(field, dir, compare, skipItemSorting) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir, compare: compare, skipItemSorting: skipItemSorting } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return map(descriptors, function(d) {\n return {\n field: d.field,\n dir: d.dir || \"asc\",\n aggregates: d.aggregates,\n compare: d.compare,\n skipItemSorting: d.skipItemSorting\n };\n });\n }\n\n function normalizeGroupWithoutCompare(field, dir, compare) {\n var descriptors = normalizeGroup(field, dir, compare);\n\n for (var i = 0; i < descriptors.length; i++) {\n delete descriptors[i].compare;\n }\n\n return descriptors;\n }\n\n function anyGroupDescriptorHasCompare(groupDescriptors) {\n var descriptors = isArray(groupDescriptors) ? groupDescriptors : [groupDescriptors];\n\n for (var i = 0; i < descriptors.length; i++) {\n if (descriptors[i] && isFunction(descriptors[i].compare)) {\n return true;\n }\n }\n\n return false;\n }\n\n Query.prototype = {\n toArray: function() {\n return this.data;\n },\n range: function(index, count) {\n return new Query(this.data.slice(index, index + count));\n },\n skip: function(count) {\n return new Query(this.data.slice(count));\n },\n take: function(count) {\n return new Query(this.data.slice(0, count));\n },\n select: function(selector) {\n return new Query(map(this.data, selector));\n },\n order: function(selector, dir, inPlace) {\n var sort = { dir: dir };\n\n if (selector) {\n if (selector.compare) {\n sort.compare = selector.compare;\n } else {\n sort.field = selector;\n }\n }\n\n if (inPlace) {\n return new Query(this.data.sort(Comparer.create(sort)));\n }\n\n return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n },\n orderBy: function(selector, inPlace) {\n return this.order(selector, \"asc\", inPlace);\n },\n orderByDescending: function(selector, inPlace) {\n return this.order(selector, \"desc\", inPlace);\n },\n sort: function(field, dir, comparer, inPlace) {\n var idx,\n length,\n descriptors = normalizeSort(field, dir),\n comparers = [];\n\n comparer = comparer || Comparer;\n\n if (descriptors.length) {\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n comparers.push(comparer.create(descriptors[idx]));\n }\n\n return this.orderBy({ compare: comparer.combine(comparers) }, inPlace);\n }\n\n return this;\n },\n\n filter: function(expressions) {\n var compiled,\n data = this.data,\n result = [];\n\n expressions = normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n return this;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n result = data.filter(compiled);\n return new Query(result);\n },\n\n group: function(descriptors, allData, options) {\n descriptors = normalizeGroup(descriptors || []);\n allData = allData || this.data;\n\n var that = this,\n result = new Query(that.data),\n descriptor;\n\n if (descriptors.length > 0) {\n descriptor = descriptors[0];\n\n if (options && options.groupPaging) {\n result = new Query(allData).groupAllData(descriptor, allData).select(function(group) {\n var data = new Query(allData).filter([{\n field: group.field,\n operator: \"eq\",\n value: group.value,\n ignoreCase: false\n }]);\n var items = descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray(), options).toArray() : group.items;\n return {\n field: group.field,\n value: group.value,\n hasSubgroups: descriptors.length > 1,\n items: items,\n aggregates: data.aggregate(descriptor.aggregates),\n uid: kendo.guid(),\n itemCount: items.length,\n subgroupCount: items.length\n };\n });\n\n } else {\n result = result.groupBy(descriptor).select(function(group) {\n var data = new Query(allData).filter([ { field: group.field, operator: \"eq\", value: group.value, ignoreCase: false } ]);\n return {\n field: group.field,\n value: group.value,\n items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray()).toArray() : group.items,\n hasSubgroups: descriptors.length > 1,\n aggregates: data.aggregate(descriptor.aggregates)\n };\n });\n }\n }\n return result;\n },\n\n groupBy: function(descriptor) {\n var that = this;\n\n if (isEmptyObject(descriptor) || !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? this.data : this._sortForGrouping(field, descriptor.dir || \"asc\"),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = that._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n groupAllData: function(descriptor, allData) {\n if (isEmptyObject(descriptor) || this.data && !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? allData : new Query(allData).sort(field, descriptor.dir || \"asc\", StableComparer).toArray(),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = this._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n _sortForGrouping: function(field, dir) {\n var idx, length,\n data = this.data;\n\n if (!stableSort) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n data[idx].__position = idx;\n }\n\n data = new Query(data).sort(field, dir, StableComparer).toArray();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n delete data[idx].__position;\n }\n return data;\n }\n\n return this.sort(field, dir).toArray();\n },\n\n _sortGroups: function(groups, descriptor) {\n var result = groups;\n\n if (descriptor && isFunction(descriptor.compare)) {\n result = new Query(result).order({ compare: descriptor.compare }, descriptor.dir || ASCENDING).toArray();\n }\n\n return result;\n },\n\n aggregate: function(aggregates) {\n var idx,\n len,\n result = {},\n state = {};\n\n if (aggregates && aggregates.length) {\n for (idx = 0, len = this.data.length; idx < len; idx++) {\n calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n }\n }\n return result;\n }\n };\n\n function groupValueComparer(a, b) {\n if (a && a.getTime && b && b.getTime) {\n return a.getTime() === b.getTime();\n }\n return a === b;\n }\n\n function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n aggregates = aggregates || [];\n var idx,\n aggr,\n functionName,\n len = aggregates.length;\n\n for (idx = 0; idx < len; idx++) {\n aggr = aggregates[idx];\n functionName = aggr.aggregate;\n var field = aggr.field;\n accumulator[field] = accumulator[field] || {};\n state[field] = state[field] || {};\n state[field][functionName] = state[field][functionName] || {};\n accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n }\n }\n\n var functions = {\n sum: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n return accumulator;\n },\n count: function(accumulator) {\n return (accumulator || 0) + 1;\n },\n average: function(accumulator, item, accessor, index, length, state) {\n var value = accessor.get(item);\n\n if (state.count === undefined$1) {\n state.count = 0;\n }\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n if (isNumber(value)) {\n state.count++;\n }\n\n if (index == length - 1 && isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n },\n max: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n\n function isNumber(val) {\n return typeof val === \"number\" && !isNaN(val);\n }\n\n function isDate(val) {\n return val && val.getTime;\n }\n\n function toJSON(array) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = array[idx].toJSON();\n }\n\n return result;\n }\n\n Query.normalizeGroup = normalizeGroup;\n Query.normalizeSort = normalizeSort;\n\n Query.process = function(data, options, inPlace) {\n options = options || {};\n\n var group = options.group;\n var customGroupSort = anyGroupDescriptorHasCompare(normalizeGroup(group || []));\n var query = new Query(data),\n groupDescriptorsWithoutCompare = normalizeGroupWithoutCompare(group || []),\n normalizedSort = normalizeSort(options.sort || []),\n sort = customGroupSort ? normalizedSort : groupDescriptorsWithoutCompare.concat(normalizedSort),\n groupDescriptorsWithoutSort,\n total,\n filterCallback = options.filterCallback,\n filter = options.filter,\n skip = options.skip,\n take = options.take;\n\n if (sort && inPlace) {\n query = query.sort(sort, undefined$1, undefined$1, inPlace);\n }\n\n if (filter) {\n query = query.filter(filter);\n\n if (filterCallback) {\n query = filterCallback(query);\n }\n\n total = query.toArray().length;\n }\n\n if (sort) {\n if (!inPlace) {\n query = query.sort(sort);\n }\n\n if (group) {\n data = query.toArray();\n }\n }\n\n if (customGroupSort) {\n query = query.group(group, data, options);\n\n if (skip !== undefined$1 && take !== undefined$1 && !options.groupPaging) {\n query = new Query(flatGroups(query.toArray())).range(skip, take);\n\n groupDescriptorsWithoutSort = map(groupDescriptorsWithoutCompare, function(groupDescriptor) {\n return extend({}, groupDescriptor, {\n skipItemSorting: true\n });\n });\n\n query = query.group(groupDescriptorsWithoutSort, data, options);\n }\n } else {\n if (skip !== undefined$1 && take !== undefined$1) {\n total = query.data.length;\n\n if (skip + take > total && options.virtual) {\n skip -= skip + take - total;\n skip = skip < 0 ? 0 : skip;\n }\n query = query.range(skip, take);\n }\n\n if (group && (!isEmptyObject(group) || group.length !== 0)) {\n query = query.group(group, data, options);\n }\n }\n\n return {\n total: total,\n data: query.toArray()\n };\n };\n\n var LocalTransport = Class.extend({\n init: function(options) {\n this.data = options.data;\n },\n\n read: function(options) {\n options.success(this.data);\n },\n update: function(options) {\n options.success(options.data);\n },\n create: function(options) {\n options.success(options.data);\n },\n destroy: function(options) {\n options.success(options.data);\n }\n });\n\n var RemoteTransport = Class.extend( {\n init: function(options) {\n var that = this, parameterMap;\n\n options = that.options = extend({}, that.options, options);\n\n each(crud, function(index, type) {\n if (typeof options[type] === STRING) {\n options[type] = {\n url: options[type]\n };\n }\n });\n\n that.cache = options.cache ? Cache.create(options.cache) : {\n find: noop,\n add: noop\n };\n\n parameterMap = options.parameterMap;\n\n if (options.submit) {\n that.submit = options.submit;\n }\n\n if (isFunction(options.push)) {\n that.push = options.push;\n }\n\n if (!that.push) {\n that.push = identity;\n }\n\n that.parameterMap = isFunction(parameterMap) ? parameterMap : function(options) {\n var result = {};\n\n each(options, function(option, value) {\n if (option in parameterMap) {\n option = parameterMap[option];\n if (isPlainObject(option)) {\n value = option.value(value);\n option = option.key;\n }\n }\n\n result[option] = value;\n });\n\n return result;\n };\n },\n\n options: {\n parameterMap: identity\n },\n\n create: function(options) {\n return ajax(this.setup(options, CREATE));\n },\n\n read: function(options) {\n var that = this,\n success,\n error,\n result,\n cache = that.cache;\n\n options = that.setup(options, READ);\n\n success = options.success || noop;\n error = options.error || noop;\n\n result = cache.find(options.data);\n\n if (result !== undefined$1) {\n success(result);\n } else {\n options.success = function(result) {\n cache.add(options.data, result);\n\n success(result);\n };\n\n $.ajax(options);\n }\n },\n\n update: function(options) {\n return ajax(this.setup(options, UPDATE));\n },\n\n destroy: function(options) {\n return ajax(this.setup(options, DESTROY));\n },\n\n setup: function(options, type) {\n options = options || {};\n\n var that = this,\n parameters,\n operation = that.options[type],\n data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n\n options = extend(true, {}, operation, options);\n parameters = extend(true, {}, data, options.data);\n\n options.data = that.parameterMap(parameters, type);\n\n if (isFunction(options.url)) {\n options.url = options.url(parameters);\n }\n\n return options;\n }\n });\n\n var Cache = Class.extend({\n init: function() {\n this._store = {};\n },\n add: function(key, data) {\n if (key !== undefined$1) {\n this._store[stringify(key)] = data;\n }\n },\n find: function(key) {\n return this._store[stringify(key)];\n },\n clear: function() {\n this._store = {};\n },\n remove: function(key) {\n delete this._store[stringify(key)];\n }\n });\n\n Cache.create = function(options) {\n var store = {\n \"inmemory\": function() { return new Cache(); }\n };\n\n if (isPlainObject(options) && isFunction(options.find)) {\n return options;\n }\n\n if (options === true) {\n return new Cache();\n }\n\n return store[options]();\n };\n\n function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n setters = {},\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n originalName = fieldNames[getter];\n\n if (originalName && originalName !== getter) {\n if (!setters[originalName]) {\n setters[originalName] = kendo.setter(originalName);\n }\n setters[originalName](record, getters[getter](record));\n delete record[getter];\n }\n }\n }\n }\n\n function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n record[getter] = modelInstance._parse(getter, getters[getter](record));\n\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n delete record[originalName];\n }\n }\n }\n }\n\n function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n idx,\n fieldName,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n\n fieldName = originalFieldNames[record.field];\n if (fieldName && fieldName != record.field) {\n record.field = fieldName;\n }\n\n record.value = modelInstance._parse(record.field, record.value);\n\n if (record.items) {\n if (record.hasSubgroups) {\n convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n } else {\n convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n }\n }\n }\n }\n\n function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n data = originalFunction(data);\n\n return wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames)(data);\n };\n }\n\n function wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n\n if (data && !isEmptyObject(getters)) {\n if (toString.call(data) !== \"[object Array]\" && !(data instanceof ObservableArray)) {\n data = [data];\n }\n\n converter(data, getters, new model(), originalFieldNames, fieldNames);\n }\n\n return data || [];\n };\n }\n\n var DataReader = Class.extend({\n init: function(schema) {\n var that = this, member, get, model, base;\n\n schema = schema || {};\n\n for (member in schema) {\n get = schema[member];\n\n that[member] = typeof get === STRING ? getter(get) : get;\n }\n\n base = schema.modelBase || Model;\n\n if (isPlainObject(that.model)) {\n that.model = model = base.define(that.model);\n }\n\n var dataFunction = that.data.bind(that);\n\n that._dataAccessFunction = dataFunction;\n\n if (that.model) {\n var groupsFunction = that.groups.bind(that),\n serializeFunction = that.serialize.bind(that),\n originalFieldNames = {},\n getters = {},\n serializeGetters = {},\n fieldNames = {},\n shouldSerialize = false,\n fieldName,\n name;\n\n model = that.model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n var fromName;\n\n fieldName = field;\n\n if (isPlainObject(value) && value.field) {\n fieldName = value.field;\n } else if (typeof value === STRING) {\n fieldName = value;\n }\n\n if (isPlainObject(value) && value.from) {\n fromName = value.from;\n }\n\n shouldSerialize = shouldSerialize || (fromName && fromName !== field) || fieldName !== field;\n name = fromName || fieldName;\n getters[field] = name.indexOf(\".\") !== -1 ? getter(name, true) : getter(name);\n serializeGetters[field] = getter(field);\n originalFieldNames[fromName || fieldName] = field;\n fieldNames[field] = fromName || fieldName;\n });\n\n if (!schema.serialize && shouldSerialize) {\n that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n }\n }\n\n that._dataAccessFunction = dataFunction;\n that._wrapDataAccessBase = wrapDataAccessBase(model, convertRecords, getters, originalFieldNames, fieldNames);\n that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n }\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n parse: identity,\n data: identity,\n total: function(data) {\n return data.length;\n },\n groups: identity,\n aggregates: function() {\n return {};\n },\n serialize: function(data) {\n return data;\n }\n });\n\n function fillLastGroup(originalGroup, newGroup) {\n var currOriginal;\n var currentNew;\n\n if (newGroup.items && newGroup.items.length) {\n for (var i = 0; i < newGroup.items.length; i++) {\n currOriginal = originalGroup.items[originalGroup.items.length - 1];\n currentNew = newGroup.items[i];\n if (currOriginal && currentNew) {\n if (currOriginal.hasSubgroups && currOriginal.value == currentNew.value) {\n fillLastGroup(currOriginal, currentNew);\n } else if (currOriginal.field && currOriginal.value == currentNew.value) {\n currOriginal.items.omitChangeEvent = true;\n currOriginal.items.push.apply(currOriginal.items, currentNew.items);\n currOriginal.items.omitChangeEvent = false;\n } else {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n } else if (currentNew) {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n }\n }\n }\n function mergeGroups(target, dest, skip, take) {\n var group,\n idx = 0,\n items;\n\n while (dest.length && take) {\n group = dest[idx];\n items = group.items;\n\n var length = items.length;\n\n if (target && target.field === group.field && target.value === group.value) {\n if (target.hasSubgroups && target.items.length) {\n mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n } else {\n items = items.slice(skip, skip + take);\n target.items = target.items.concat(items);\n }\n dest.splice(idx--, 1);\n } else if (group.hasSubgroups && items.length) {\n mergeGroups(group, items, skip, take);\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n } else {\n items = items.slice(skip, skip + take);\n group.items = items;\n\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n }\n\n if (items.length === 0) {\n skip -= length;\n } else {\n skip = 0;\n take -= items.length;\n }\n\n if (++idx >= dest.length) {\n break;\n }\n }\n\n if (idx < dest.length) {\n dest.splice(idx, dest.length - idx);\n }\n }\n\n function flatGroups(groups, indexFunction) {\n var result = [];\n var groupsLength = (groups || []).length;\n var group;\n var items;\n var indexFn = isFunction(indexFunction) ? indexFunction : function(array, index) {\n return array[index];\n };\n\n for (var groupIndex = 0; groupIndex < groupsLength; groupIndex++) {\n group = indexFn(groups, groupIndex);\n\n if (group.hasSubgroups) {\n result = result.concat(flatGroups(group.items));\n } else {\n items = group.items;\n\n for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(indexFn(items, itemIndex));\n }\n }\n }\n return result;\n }\n\n function flattenGroups(data) {\n var idx,\n result = [],\n length,\n items,\n itemIndex;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n result = result.concat(flattenGroups(group.items));\n } else {\n items = group.items;\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(items.at(itemIndex));\n }\n }\n }\n }\n return result;\n }\n\n function wrapGroupItems(data, model) {\n var idx, length, group;\n if (model) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n wrapGroupItems(group.items, model);\n } else {\n group.items = new LazyObservableArray(group.items, model, group.items._events);\n }\n }\n }\n }\n }\n\n function eachGroupItems(data, func) {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx].hasSubgroups) {\n if (eachGroupItems(data[idx].items, func)) {\n return true;\n }\n } else if (func(data[idx].items, data[idx])) {\n return true;\n }\n }\n }\n\n function replaceInRanges(ranges, data, item, observable) {\n for (var idx = 0; idx < ranges.length; idx++) {\n if (ranges[idx].data === data) {\n break;\n }\n if (replaceInRange(ranges[idx].data, item, observable)) {\n break;\n }\n }\n }\n\n function replaceInRange(items, item, observable) {\n for (var idx = 0, length = items.length; idx < length; idx++) {\n if (items[idx] && items[idx].hasSubgroups) {\n return replaceInRange(items[idx].items, item, observable);\n } else if (items[idx] === item || items[idx] === observable) {\n items[idx] = observable;\n return true;\n }\n }\n }\n\n function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n var item = view[viewIndex];\n\n if (!item || item instanceof type) {\n continue;\n }\n\n if (item.hasSubgroups !== undefined$1 && !serverGrouping) {\n replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n } else {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] === item) {\n view[viewIndex] = data.at(idx);\n replaceInRanges(ranges, data, item, view[viewIndex]);\n break;\n }\n }\n }\n }\n }\n\n function removeModel(data, model) {\n if (!data) {\n return;\n }\n var length = data.length;\n var dataItem;\n var idx;\n\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n data.splice(idx, 1);\n return dataItem;\n }\n }\n }\n\n function indexOfPristineModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return (item.uid && item.uid == model.uid) || (item[model.idField] === model.id && model.id !== model._defaultId);\n });\n }\n return -1;\n }\n\n function indexOfModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return item.uid == model.uid;\n });\n }\n return -1;\n }\n\n function indexOf(data, comparer) {\n var idx, length;\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (comparer(data[idx])) {\n return idx;\n }\n }\n\n return -1;\n }\n\n function fieldNameFromModel(fields, name) {\n if (fields && !isEmptyObject(fields)) {\n var descriptor = fields[name];\n var fieldName;\n if (isPlainObject(descriptor)) {\n fieldName = descriptor.from || descriptor.field || name;\n } else {\n fieldName = fields[name] || name;\n }\n\n if (isFunction(fieldName)) {\n return name;\n }\n\n return fieldName;\n }\n return name;\n }\n\n function convertFilterDescriptorsField(descriptor, model) {\n var idx,\n length,\n target = {};\n\n for (var field in descriptor) {\n if (field !== \"filters\") {\n target[field] = descriptor[field];\n }\n }\n\n if (descriptor.filters) {\n target.filters = [];\n for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n }\n } else {\n target.field = fieldNameFromModel(model.fields, target.field);\n }\n return target;\n }\n\n function convertDescriptorsField(descriptors, model) {\n var idx,\n length,\n result = [],\n target,\n descriptor;\n\n for (idx = 0, length = descriptors.length; idx < length; idx ++) {\n target = {};\n\n descriptor = descriptors[idx];\n\n for (var field in descriptor) {\n target[field] = descriptor[field];\n }\n\n target.field = fieldNameFromModel(model.fields, target.field);\n\n if (target.aggregates && isArray(target.aggregates)) {\n target.aggregates = convertDescriptorsField(target.aggregates, model);\n }\n result.push(target);\n }\n return result;\n }\n\n var DataSource = Observable.extend({\n init: function(options) {\n var that = this, model, data;\n\n if (options) {\n data = options.data;\n }\n\n options = that.options = extend({}, that.options, options);\n\n that._map = {};\n that._prefetch = {};\n that._data = [];\n that._pristineData = [];\n that._ranges = [];\n that._view = [];\n that._pristineTotal = 0;\n that._destroyed = [];\n that._pageSize = options.pageSize;\n that._page = options.page || (options.pageSize ? 1 : undefined$1);\n that._sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n that._filter = normalizeFilter(options.filter);\n that._group = normalizeGroup(options.group);\n that._aggregate = options.aggregate;\n that._total = options.total;\n that._groupPaging = options.groupPaging;\n\n if (that._groupPaging) {\n that._groupsState = {};\n }\n that._shouldDetachObservableParents = true;\n\n Observable.fn.init.call(that);\n\n that.transport = Transport.create(options, data, that);\n\n if (isFunction(that.transport.push)) {\n that.transport.push({\n pushCreate: that._pushCreate.bind(that),\n pushUpdate: that._pushUpdate.bind(that),\n pushDestroy: that._pushDestroy.bind(that)\n });\n }\n\n if (options.offlineStorage != null) {\n if (typeof options.offlineStorage == \"string\") {\n var key = options.offlineStorage;\n\n that._storage = {\n getItem: function() {\n return JSON.parse(localStorage.getItem(key));\n },\n setItem: function(item) {\n localStorage.setItem(key, stringify(that.reader.serialize(item)));\n }\n };\n } else {\n that._storage = options.offlineStorage;\n }\n }\n\n that.reader = new kendo.data.readers[options.schema.type || \"json\" ](options.schema);\n\n model = that.reader.model || {};\n\n that._detachObservableParents();\n\n that._data = that._observe(that._data);\n that._online = true;\n\n that.bind([\"push\", ERROR, CHANGE, REQUESTSTART, SYNC, REQUESTEND, PROGRESS], options);\n },\n\n options: {\n data: null,\n schema: {\n modelBase: Model\n },\n offlineStorage: null,\n serverSorting: false,\n serverPaging: false,\n serverFiltering: false,\n serverGrouping: false,\n serverAggregates: false,\n batch: false,\n inPlaceSort: false\n },\n\n clone: function() {\n return this;\n },\n\n online: function(value) {\n if (value !== undefined$1) {\n if (this._online != value) {\n this._online = value;\n\n if (value) {\n return this.sync();\n }\n }\n\n return $.Deferred().resolve().promise();\n } else {\n return this._online;\n }\n },\n\n offlineData: function(state) {\n if (this.options.offlineStorage == null) {\n return null;\n }\n\n if (state !== undefined$1) {\n return this._storage.setItem(state);\n }\n\n return this._storage.getItem() || [];\n },\n\n _isGrouped: function() {\n var group = this.group() || [];\n\n return group.length;\n },\n\n _isServerGrouped: function() {\n var group = this.group() || [];\n\n return this.options.serverGrouping && group.length;\n },\n\n _isServerGroupPaged: function() {\n return this._isServerGrouped() && this._groupPaging;\n },\n\n _isGroupPaged: function() {\n var group = this._group || [];\n\n return this._groupPaging && group.length;\n },\n\n _pushCreate: function(result) {\n this._push(result, \"pushCreate\");\n },\n\n _pushUpdate: function(result) {\n this._push(result, \"pushUpdate\");\n },\n\n _pushDestroy: function(result) {\n this._push(result, \"pushDestroy\");\n },\n\n _push: function(result, operation) {\n var data = this._readData(result);\n\n if (!data) {\n data = result;\n }\n\n this[operation](data);\n },\n\n _flatData: function(data, skip) {\n if (data) {\n if (this._isServerGrouped()) {\n return flattenGroups(data);\n }\n\n if (!skip) {\n for (var idx = 0; idx < data.length; idx++) {\n data.at(idx);\n }\n }\n }\n\n return data;\n },\n\n parent: noop,\n\n get: function(id) {\n var idx, length, data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].id == id) {\n return data[idx];\n }\n }\n },\n\n getByUid: function(id) {\n return this._getByUid(id, this._data);\n },\n\n _getByUid: function(id, dataItems) {\n var idx, length, data = this._flatData(dataItems, this.options.useRanges);\n\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].uid == id) {\n return data[idx];\n }\n }\n },\n\n indexOf: function(model) {\n return indexOfModel(this._data, model);\n },\n\n at: function(index) {\n return this._data.at(index);\n },\n\n data: function(value) {\n var that = this;\n if (value !== undefined$1) {\n that._detachObservableParents();\n that._data = this._observe(value);\n\n that._pristineData = value.slice(0);\n\n that._storeData();\n\n that._ranges = [];\n that.trigger(\"reset\");\n that._addRange(that._data);\n\n that._total = that._data.length;\n that._pristineTotal = that._total;\n\n that._process(that._data);\n } else {\n if (that._data) {\n for (var idx = 0; idx < that._data.length; idx++) {\n that._data.at(idx);\n }\n }\n\n return that._data;\n }\n },\n\n view: function(value) {\n if (value === undefined$1) {\n return this._view;\n } else {\n this._view = this._observeView(value);\n }\n },\n\n _observeView: function(data) {\n var that = this;\n replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n\n var view = new LazyObservableArray(data, that.reader.model);\n view.parent = function() { return that.parent(); };\n return view;\n },\n\n flatView: function() {\n var groups = this.group() || [];\n\n if (groups.length) {\n return flattenGroups(this._view);\n } else {\n return this._view;\n }\n },\n\n add: function(model) {\n return this.insert(this._data.length, model);\n },\n\n _createNewModel: function(model) {\n if (this.reader.model) {\n return new this.reader.model(model);\n }\n\n if (model instanceof ObservableObject) {\n return model;\n }\n\n return new ObservableObject(model);\n },\n\n insert: function(index, model) {\n if (!model) {\n model = index;\n index = 0;\n }\n\n if (!(model instanceof Model)) {\n model = this._createNewModel(model);\n }\n\n if (this._isServerGrouped()) {\n this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n } else {\n this._data.splice(index, 0, model);\n }\n\n this._insertModelInRange(index, model);\n\n return model;\n },\n\n pushInsert: function(index, items) {\n var that = this;\n var rangeSpan = that._getCurrentRangeSpan();\n\n if (!items) {\n items = index;\n index = 0;\n }\n\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n\n var result = this.insert(index, item);\n\n pushed.push(result);\n\n var pristine = result.toJSON();\n\n if (this._isServerGrouped()) {\n pristine = this._wrapInEmptyGroup(pristine);\n }\n\n this._pristineData.push(pristine);\n\n if (rangeSpan && rangeSpan.length) {\n $(rangeSpan).last()[0].pristineData.push(pristine);\n }\n\n index++;\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"create\",\n items: pushed\n });\n }\n },\n\n pushCreate: function(items) {\n this.pushInsert(this._data.length, items);\n },\n\n pushUpdate: function(items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n\n var target = this.get(model.id);\n\n if (target) {\n pushed.push(target);\n\n target.accept(item);\n\n target.trigger(CHANGE);\n\n this._updatePristineForModel(target, item);\n } else {\n this.pushCreate(item);\n }\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n pushDestroy: function(items) {\n var pushed = this._removeItems(items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"destroy\",\n items: pushed\n });\n }\n },\n\n _removeItems: function(itemsToRemove, removePristine) {\n if (!isArray(itemsToRemove)) {\n itemsToRemove = [itemsToRemove];\n }\n\n var shouldRemovePristine = typeof removePristine !== \"undefined\" ? removePristine : true;\n\n var destroyed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < itemsToRemove.length; idx ++) {\n var item = itemsToRemove[idx];\n var model = this._createNewModel(item);\n var found = false;\n var index = idx;\n\n this._eachItem(this._data, function(items) {\n // Ensure all children of a parent are removed before the change event is triggered.\n if (index !== itemsToRemove.length - 1) {\n items.omitChangeEvent = true;\n items.omitCache = [];\n } else {\n items.omitChangeEvent = false;\n }\n\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.id === model.id) {\n /* When the change event is omitted, certain calculations such as 'total' are broken because only the last item reaches the change handler.\n Keep track of all child items that had their change event omitted and when the change is finally triggered, concat them to the result.*/\n if (items.omitChangeEvent) {\n items.omitCache.push(item);\n }\n destroyed.push(item);\n items.splice(idx, 1);\n found = true;\n break;\n }\n }\n });\n\n if (found && shouldRemovePristine) {\n this._removePristineForModel(model);\n this._destroyed.pop();\n }\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return destroyed;\n },\n\n pushMove: function(index, items) {\n var pushed = this._moveItems(index, items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n _moveItems: function(index, items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var moved = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var i = 0; i < items.length; i ++) {\n var item = items[i];\n var model = this._createNewModel(item);\n\n this._eachItem(this._data, function(dataItems) {\n for (var idx = 0; idx < dataItems.length; idx++) {\n var dataItem = dataItems.at(idx);\n if (dataItem.id === model.id) {\n moved.push(dataItem);\n dataItems.splice(index >= idx ? --index : index, 0, dataItems.splice(idx, 1)[0]);\n index++;\n break;\n }\n }\n });\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return moved;\n },\n\n remove: function(model) {\n var result,\n that = this,\n hasGroups = that._isServerGrouped();\n\n if (hasGroups && model.uid && (!model.isNew || !model.isNew())) {\n that._pushInDestroyed(model);\n }\n\n this._eachItem(that._data, function(items) {\n result = removeModel(items, model);\n\n if (result && hasGroups) {\n return true;\n }\n });\n\n this._removeModelFromRanges(model);\n\n return model;\n },\n\n destroyed: function() {\n return this._destroyed;\n },\n\n created: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew() && !data[idx].notFetched) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n updated: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && !data[idx].isNew()) && data[idx].dirty) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n sync: function() {\n var that = this,\n created = [],\n updated = [],\n destroyed = that._destroyed;\n\n var promise = $.Deferred().resolve().promise();\n\n if (that.online()) {\n\n if (!that.reader.model) {\n return promise;\n }\n\n created = that.created();\n updated = that.updated();\n\n var promises = [];\n\n if (that.options.batch && that.transport.submit) {\n promises = that._sendSubmit(created, updated, destroyed);\n } else {\n promises.push.apply(promises, that._send(\"create\", created));\n promises.push.apply(promises, that._send(\"update\", updated));\n promises.push.apply(promises, that._send(\"destroy\", destroyed));\n }\n\n promise = $.when\n .apply(null, promises)\n .then(function() {\n var arguments$1 = arguments;\n\n var idx, length;\n\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n if (arguments$1[idx]) {\n that._accept(arguments$1[idx]);\n }\n }\n\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n\n that.trigger(SYNC);\n\n if (that._isServerGroupPaged()) {\n that.read();\n }\n });\n } else {\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n }\n\n return promise;\n },\n\n _syncEnd: noop,\n\n cancelChanges: function(model) {\n var that = this;\n\n if (model instanceof kendo.data.Model) {\n that._cancelModel(model);\n } else {\n that._destroyed = [];\n that._detachObservableParents();\n that._data = that._observe(that._pristineData);\n if (that.options.serverPaging) {\n that._total = that._pristineTotal;\n }\n\n that._ranges = [];\n that._addRange(that._data, 0);\n\n that._changesCanceled();\n\n that._change();\n\n that._markOfflineUpdatesAsDirty();\n\n if (that._isServerGrouped()) {\n that.read();\n }\n }\n },\n\n _changesCanceled: noop,\n\n _markOfflineUpdatesAsDirty: function() {\n var that = this;\n\n if (that.options.offlineStorage != null) {\n that._eachItem(that._data, function(items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.__state__ == \"update\" || item.__state__ == \"create\") {\n item.dirty = true;\n }\n }\n });\n }\n },\n\n hasChanges: function() {\n var idx,\n length,\n data = this._flatData(this._data, this.options.useRanges);\n\n if (this._destroyed.length) {\n return true;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && data[idx].isNew()) || data[idx].dirty) {\n return true;\n }\n }\n\n return false;\n },\n\n _accept: function(result) {\n var that = this,\n models = result.models,\n response = result.response,\n idx = 0,\n serverGroup = that._isServerGrouped(),\n pristine = that._pristineData,\n type = result.type,\n length;\n\n that.trigger(REQUESTEND, { response: response, type: type });\n\n if (response && !isEmptyObject(response)) {\n response = that.reader.parse(response);\n\n if (that._handleCustomErrors(response)) {\n return;\n }\n\n response = that.reader.data(response);\n\n if (!isArray(response)) {\n response = [response];\n }\n } else {\n response = $.map(models, function(model) { return model.toJSON(); } );\n }\n\n if (type === \"destroy\") {\n that._destroyed = [];\n }\n\n for (idx = 0, length = models.length; idx < length; idx++) {\n if (type !== \"destroy\") {\n models[idx].accept(response[idx]);\n\n if (type === \"create\") {\n pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx].toJSON()) : response[idx]);\n } else if (type === \"update\") {\n that._updatePristineForModel(models[idx], response[idx]);\n }\n } else {\n that._removePristineForModel(models[idx]);\n }\n }\n },\n\n _updatePristineForModel: function(model, values) {\n this._executeOnPristineForModel(model, function(index, items) {\n kendo.deepExtend(items[index], values);\n });\n },\n\n _executeOnPristineForModel: function(model, callback) {\n this._eachPristineItem(\n function(items) {\n var index = indexOfPristineModel(items, model);\n if (index > -1) {\n callback(index, items);\n return true;\n }\n });\n },\n\n _removePristineForModel: function(model) {\n this._executeOnPristineForModel(model, function(index, items) {\n items.splice(index, 1);\n });\n },\n\n _readData: function(data) {\n var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n return read.call(this.reader, data);\n },\n\n _eachPristineItem: function(callback) {\n var that = this;\n var options = that.options;\n var rangeSpan = that._getCurrentRangeSpan();\n\n that._eachItem(that._pristineData, callback);\n\n if (options.serverPaging && options.useRanges) {\n each(rangeSpan, function(i, range) {\n that._eachItem(range.pristineData, callback);\n });\n }\n },\n\n _eachItem: function(data, callback) {\n if (data && data.length) {\n if (this._isServerGrouped()) {\n eachGroupItems(data, callback);\n } else {\n callback(data);\n }\n }\n },\n\n _pristineForModel: function(model) {\n var pristine,\n idx,\n callback = function(items) {\n idx = indexOfPristineModel(items, model);\n if (idx > -1) {\n pristine = items[idx];\n return true;\n }\n };\n\n this._eachPristineItem(callback);\n\n return pristine;\n },\n\n _cancelModel: function(model) {\n var that = this;\n var pristine = this._pristineForModel(model);\n\n this._eachItem(this._data, function(items) {\n var idx = indexOfModel(items, model);\n if (idx >= 0) {\n if (pristine && (!model.isNew() || pristine.__state__)) {\n items[idx].accept(pristine);\n\n if (pristine.__state__ == \"update\") {\n items[idx].dirty = true;\n }\n\n } else {\n that._modelCanceled(model);\n\n items.splice(idx, 1);\n\n that._removeModelFromRanges(model);\n }\n }\n });\n },\n\n _modelCanceled: noop,\n\n _submit: function(promises, data) {\n var that = this;\n\n that.trigger(REQUESTSTART, { type: \"submit\" });\n\n that.trigger(PROGRESS);\n\n that.transport.submit(extend({\n success: function(response, type) {\n var promise = $.grep(promises, function(x) {\n return x.type == type;\n })[0];\n\n if (promise) {\n promise.resolve({\n response: response,\n models: promise.models,\n type: type\n });\n }\n },\n error: function(response, status, error) {\n for (var idx = 0; idx < promises.length; idx++) {\n promises[idx].reject(response);\n }\n\n that.error(response, status, error);\n }\n }, data));\n },\n\n _sendSubmit: function(created, updated, destroyed) {\n var that = this,\n promises = [];\n\n if (that.options.batch) {\n if (created.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"create\";\n deferred.models = created;\n }));\n }\n\n if (updated.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"update\";\n deferred.models = updated;\n }));\n }\n\n if (destroyed.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"destroy\";\n deferred.models = destroyed;\n }));\n }\n\n that._submit(promises, {\n data: {\n created: that.reader.serialize(toJSON(created)),\n updated: that.reader.serialize(toJSON(updated)),\n destroyed: that.reader.serialize(toJSON(destroyed))\n }\n });\n }\n\n return promises;\n },\n\n _promise: function(data, models, type) {\n var that = this;\n\n return $.Deferred(function(deferred) {\n that.trigger(REQUESTSTART, { type: type });\n\n that.trigger(PROGRESS);\n\n that.transport[type].call(that.transport, extend({\n success: function(response) {\n deferred.resolve({\n response: response,\n models: models,\n type: type\n });\n },\n error: function(response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, data));\n }).promise();\n },\n\n _send: function(method, data) {\n var that = this,\n idx,\n length,\n promises = [],\n converted = that.reader.serialize(toJSON(data));\n\n if (that.options.batch) {\n if (data.length) {\n promises.push(that._promise( { data: { models: converted } }, data , method));\n }\n } else {\n for (idx = 0, length = data.length; idx < length; idx++) {\n promises.push(that._promise( { data: converted[idx] }, [ data[idx] ], method));\n }\n }\n\n return promises;\n },\n\n read: function(data) {\n var that = this, params = that._params(data);\n var deferred = $.Deferred();\n\n that._queueRequest(params, function() {\n var isPrevented = that.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n that.trigger(PROGRESS);\n\n that._ranges = [];\n that.trigger(\"reset\");\n if (that.online()) {\n that.transport.read({\n data: params,\n success: function(data) {\n that._ranges = [];\n that.success(data, params);\n\n deferred.resolve();\n },\n error: function() {\n var args = slice.call(arguments);\n\n that.error.apply(that, args);\n\n deferred.reject.apply(deferred, args);\n }\n });\n } else if (that.options.offlineStorage != null) {\n that.success(that.offlineData(), params);\n\n deferred.resolve();\n }\n } else {\n that._dequeueRequest();\n\n deferred.resolve(isPrevented);\n }\n });\n\n return deferred.promise();\n },\n\n _readAggregates: function(data) {\n return this.reader.aggregates(data);\n },\n\n success: function(data) {\n var that = this,\n options = that.options,\n items,\n replaceSubset;\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n if (that.online()) {\n data = that.reader.parse(data);\n\n if (that._handleCustomErrors(data)) {\n that._dequeueRequest();\n return;\n }\n\n that._total = that.reader.total(data);\n\n if (that._isServerGroupPaged()) {\n that._serverGroupsTotal = that._total;\n }\n\n if (that._pageSize > that._total) {\n that._pageSize = that._total;\n if (that.options.pageSize && that.options.pageSize > that._pageSize) {\n that._pageSize = that.options.pageSize;\n }\n }\n\n if (that._aggregate && options.serverAggregates) {\n that._aggregateResult = that._readAggregates(data);\n }\n\n data = that._readData(data);\n\n that._destroyed = [];\n } else {\n data = that._readData(data);\n\n items = [];\n var itemIds = {};\n var model = that.reader.model;\n var idField = model ? model.idField : \"id\";\n var idx;\n\n for (idx = 0; idx < this._destroyed.length; idx++) {\n var id = this._destroyed[idx][idField];\n itemIds[id] = id;\n }\n\n for (idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var state = item.__state__;\n if (state == \"destroy\") {\n if (!itemIds[item[idField]]) {\n this._pushInDestroyed(this._createNewModel(item));\n }\n } else {\n items.push(item);\n }\n }\n\n data = items;\n\n that._total = data.length;\n }\n\n that._pristineTotal = that._total;\n replaceSubset = that._skip && that._data.length && that._skip < that._data.length;\n\n if (that.options.endless) {\n if (replaceSubset) {\n that._pristineData.splice(that._skip, that._pristineData.length);\n }\n items = data.slice(0);\n for (var j = 0; j < items.length; j++) {\n that._pristineData.push(items[j]);\n }\n } else {\n that._pristineData = data.slice(0);\n }\n\n that._detachObservableParents();\n\n if (that.options.endless) {\n that._data.unbind(CHANGE, that._changeHandler);\n\n if (that._isServerGrouped() && that._data[that._data.length - 1].value === data[0].value) {\n fillLastGroup(that._data[that._data.length - 1], data[0]);\n data.shift();\n }\n\n data = that._observe(data);\n if (replaceSubset) {\n that._data.splice(that._skip, that._data.length);\n }\n for (var i = 0; i < data.length; i++) {\n that._data.push(data[i]);\n }\n that._data.bind(CHANGE, that._changeHandler);\n } else {\n that._data = that._observe(data);\n }\n\n that._markOfflineUpdatesAsDirty();\n\n that._storeData();\n\n that._addRange(that._data);\n\n that._process(that._data);\n\n that._dequeueRequest();\n },\n\n _detachObservableParents: function() {\n if (this._data && this._shouldDetachObservableParents) {\n for (var idx = 0; idx < this._data.length; idx++) {\n if (this._data[idx].parent) {\n this._data[idx].parent = noop;\n }\n }\n }\n },\n\n _storeData: function(updatePristine) {\n var serverGrouping = this._isServerGrouped();\n var model = this.reader.model;\n\n function items(data) {\n var state = [];\n\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data.at(idx);\n var item = dataItem.toJSON();\n\n if (serverGrouping && dataItem.items) {\n item.items = items(dataItem.items);\n } else {\n item.uid = dataItem.uid;\n\n if (model) {\n if (dataItem.isNew()) {\n item.__state__ = \"create\";\n } else if (dataItem.dirty) {\n item.__state__ = \"update\";\n }\n }\n }\n state.push(item);\n }\n\n return state;\n }\n\n if (this.options.offlineStorage != null) {\n var state = items(this._data);\n\n var destroyed = [];\n\n for (var idx = 0; idx < this._destroyed.length; idx++) {\n var item = this._destroyed[idx].toJSON();\n item.__state__ = \"destroy\";\n destroyed.push(item);\n }\n\n this.offlineData(state.concat(destroyed));\n\n if (updatePristine) {\n this._pristineData = this.reader.reader ? this.reader.reader._wrapDataAccessBase(state) : this.reader._wrapDataAccessBase(state);\n }\n }\n },\n\n _addRange: function(data, skip) {\n var that = this,\n start = typeof (skip) !== \"undefined\" ? skip : (that._skip || 0),\n end,\n range = {\n data: data,\n pristineData: data.toJSON(),\n timestamp: that._timeStamp()\n };\n\n if (this._isGroupPaged()) {\n end = start + data.length;\n range.outerStart = start;\n range.outerEnd = end;\n } else {\n end = start + that._flatData(data, true).length;\n }\n\n range.start = start;\n range.end = end;\n that._ranges.push(range);\n that._sortRanges();\n\n if (that._isGroupPaged()) {\n if (!that._groupsFlat) {\n that._groupsFlat = [];\n }\n that._appendToGroupsFlat(range.data);\n that._updateOuterRangesLength();\n }\n },\n\n _appendToGroupsFlat: function(data) {\n var length = data.length;\n\n for (var i = 0; i < length; i++) {\n this._groupsFlat.push(data[i]);\n }\n },\n\n _getGroupByUid: function(uid) {\n var length = this._groupsFlat.length;\n var group;\n\n for (var i = 0; i < length; i++) {\n group = this._groupsFlat[i];\n if (group.uid === uid) {\n return group;\n }\n }\n },\n\n _sortRanges: function() {\n this._ranges.sort(function(x, y) {\n return x.start - y.start;\n });\n },\n\n error: function(xhr, status, errorThrown) {\n this._dequeueRequest();\n this.trigger(REQUESTEND, { });\n this.trigger(ERROR, { xhr: xhr, status: status, errorThrown: errorThrown });\n },\n\n _params: function(data) {\n var that = this,\n options = extend({\n take: that.take(),\n skip: that.skip(),\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate,\n groupPaging: !!that._groupPaging\n }, data);\n\n if (!that.options.serverPaging) {\n delete options.take;\n delete options.skip;\n delete options.page;\n delete options.pageSize;\n }\n\n if (!that.options.serverGrouping) {\n delete options.group;\n } else if (that.reader.model && options.group) {\n options.group = convertDescriptorsField(options.group, that.reader.model);\n }\n\n if (!that.options.serverFiltering) {\n delete options.filter;\n } else if (that.reader.model && options.filter) {\n options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n }\n\n if (!that.options.serverSorting) {\n delete options.sort;\n } else if (that.reader.model && options.sort) {\n options.sort = convertDescriptorsField(options.sort, that.reader.model);\n }\n\n if (!that.options.serverAggregates) {\n delete options.aggregate;\n } else if (that.reader.model && options.aggregate) {\n options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n }\n\n if (!that.options.groupPaging) {\n delete options.groupPaging;\n }\n\n return options;\n },\n\n _queueRequest: function(options, callback) {\n var that = this;\n if (!that._requestInProgress) {\n that._requestInProgress = true;\n that._pending = undefined$1;\n callback();\n } else {\n that._pending = { callback: callback.bind(that), options: options };\n }\n },\n\n _dequeueRequest: function() {\n var that = this;\n that._requestInProgress = false;\n if (that._pending) {\n that._queueRequest(that._pending.options, that._pending.callback);\n }\n },\n\n _handleCustomErrors: function(response) {\n if (this.reader.errors) {\n var errors = this.reader.errors(response);\n if (errors) {\n this.trigger(ERROR, { xhr: null, status: \"customerror\", errorThrown: \"custom error\", errors: errors });\n return true;\n }\n }\n return false;\n },\n\n _shouldWrap: function(data) {\n var model = this.reader.model;\n\n if (model && data.length) {\n return !(data[0] instanceof model);\n }\n\n return false;\n },\n\n _observe: function(data) {\n var that = this,\n model = that.reader.model;\n\n that._shouldDetachObservableParents = true;\n\n if (data instanceof ObservableArray) {\n that._shouldDetachObservableParents = false;\n if (that._shouldWrap(data)) {\n data.type = that.reader.model;\n data.wrapAll(data, data);\n }\n } else {\n var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n data = new arrayType(data, that.reader.model);\n data.parent = function() { return that.parent(); };\n }\n\n if (that._isServerGrouped()) {\n wrapGroupItems(data, model);\n }\n\n if (that._changeHandler && that._data && that._data instanceof ObservableArray &&\n !(that.options.useRanges && that.options.serverPaging)) {\n that._data.unbind(CHANGE, that._changeHandler);\n } else {\n that._changeHandler = that._change.bind(that);\n }\n\n return data.bind(CHANGE, that._changeHandler);\n },\n\n _updateTotalForAction: function(action, items) {\n var that = this;\n\n var total = parseInt(that._total, 10);\n\n if (!isNumber(that._total)) {\n total = parseInt(that._pristineTotal, 10);\n }\n if (action === \"add\") {\n total += items.length;\n } else if (action === \"remove\") {\n total -= items.length;\n } else if (action !== \"itemchange\" && action !== \"sync\" && !that.options.serverPaging) {\n total = that._pristineTotal;\n } else if (action === \"sync\") {\n total = that._pristineTotal = parseInt(that._total, 10);\n }\n\n that._total = total;\n },\n\n _pushInDestroyed: function(model) {\n var isPushed = this._destroyed.find(function(item) {\n return item.uid === model.uid;\n });\n if (!isPushed) {\n this._destroyed.push(model);\n }\n },\n\n _change: function(e) {\n var that = this, idx, length, action = e ? e.action : \"\";\n\n if (action === \"remove\") {\n for (idx = 0, length = e.items.length; idx < length; idx++) {\n if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n that._pushInDestroyed(e.items[idx]);\n }\n }\n }\n\n if (that.options.autoSync && (action === \"add\" || action === \"remove\" || action === \"itemchange\")) {\n\n var handler = function(args) {\n if (args.action === \"sync\") {\n that.unbind(\"change\", handler);\n that._updateTotalForAction(action, e.items);\n }\n };\n\n that.first(\"change\", handler);\n\n that.sync();\n\n } else {\n that._updateTotalForAction(action, e ? e.items : []);\n\n that._process(that._data, e);\n }\n },\n\n _calculateAggregates: function(data, options) {\n options = options || {};\n\n var query = new Query(data),\n aggregates = options.aggregate,\n filter = options.filter;\n\n if (filter) {\n query = query.filter(filter);\n }\n\n return query.aggregate(aggregates);\n },\n\n _process: function(data, e) {\n var that = this,\n options = {},\n result;\n\n if (that.options.serverPaging !== true) {\n options.skip = that._skip;\n options.take = that._take || that._pageSize;\n\n if (options.skip === undefined$1 && that._page !== undefined$1 && that._pageSize !== undefined$1) {\n options.skip = (that._page - 1) * that._pageSize;\n }\n\n if (that.options.useRanges) {\n options.skip = that.currentRangeStart();\n }\n }\n\n if (that.options.serverSorting !== true) {\n options.sort = that._sort;\n }\n\n if (that.options.serverFiltering !== true) {\n options.filter = that._filter;\n }\n\n if (that.options.serverGrouping !== true) {\n options.group = that._group;\n }\n\n if (that.options.serverAggregates !== true) {\n options.aggregate = that._aggregate;\n }\n\n if (that.options.serverGrouping) {\n that._clearEmptyGroups(data);\n }\n\n options.groupPaging = that._groupPaging;\n\n if (that._isGroupPaged() && e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n result = that._queryProcess(data, {\n aggregate: that._aggregate\n });\n } else {\n result = that._queryProcess(data, options);\n }\n\n if (that._filter && e && e.action === \"add\") {\n var model = e.items[0],\n resultData = result.data;\n\n if (that._isGrouped() && !this._isServerGrouped()) {\n resultData = flattenGroups(resultData);\n }\n\n var modelIsInView = resultData.find(function(item) {\n return item.uid === model.uid;\n });\n\n if (!modelIsInView) {\n result.data.splice(model.index, 0, that._isGrouped() ? that._wrapInEmptyGroup(model) : model);\n result.total++;\n }\n }\n\n if (that.options.serverAggregates !== true) {\n // for performance reasons, calculate aggregates for part of the data only after query process\n // this is necessary in the TreeList when paging\n that._aggregateResult = that._calculateAggregates(result.dataToAggregate || data, options);\n }\n\n that._setView(result, options, e);\n\n that._setFilterTotal(result.total, false);\n\n e = e || {};\n\n e.items = e.items || that._view;\n\n that.trigger(CHANGE, e);\n },\n\n _setView: function(result, options, e) {\n var that = this;\n\n if (that._isGroupPaged() && !that._isServerGrouped()) {\n if (e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n that.view(result.data);\n that._updateOuterRangesLength();\n } else {\n that._ranges = [];\n var query = new Query(result.data);\n that._addRange(that._observe(result.data));\n\n if (options.skip + options.take > result.data.length) {\n options.skip = result.data.length - options.take;\n }\n\n that.view(query.range(options.skip, options.take).toArray());\n }\n\n } else {\n that.view(result.data);\n }\n },\n\n _clearEmptyGroups: function(data) {\n for (var idx = data.length - 1; idx >= 0; idx--) {\n var group = data[idx];\n if (group.hasSubgroups) {\n this._clearEmptyGroups(group.items);\n }\n\n if (group.items && !group.items.length && !group.itemCount) {\n splice.apply(group.parent(), [idx, 1]);\n }\n }\n },\n\n _queryProcess: function(data, options) {\n if (this.options.inPlaceSort) {\n return Query.process(data, options, this.options.inPlaceSort);\n }\n else {\n return Query.process(data, options);\n }\n },\n\n _mergeState: function(options) {\n var that = this;\n\n if (options !== undefined$1) {\n that._pageSize = options.pageSize;\n that._page = options.page;\n that._sort = options.sort;\n that._filter = options.filter;\n that._group = options.group;\n that._aggregate = options.aggregate;\n that._skip = that._currentRangeStart = options.skip;\n that._take = options.take;\n\n if (that._skip === undefined$1) {\n that._skip = that._currentRangeStart = that.skip();\n options.skip = that.skip();\n }\n\n if (that._take === undefined$1 && that._pageSize !== undefined$1) {\n that._take = that._pageSize;\n options.take = that._take;\n }\n\n if (that.options.virtual) {\n options.virtual = that.options.virtual;\n }\n\n if (options.sort) {\n that._sort = options.sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n }\n\n if (options.filter) {\n that._filter = options.filter = (that.options.accentFoldingFiltering && !$.isEmptyObject(options.filter)) ? $.extend({}, normalizeFilter(options.filter), { accentFoldingFiltering: that.options.accentFoldingFiltering }) : normalizeFilter(options.filter);\n }\n\n if (options.group) {\n that._group = options.group = normalizeGroup(options.group);\n }\n if (options.aggregate) {\n that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n }\n }\n return options;\n },\n\n query: function(options) {\n var result;\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n\n if (remote || ((this._data === undefined$1 || this._data.length === 0) && !this._destroyed.length)) {\n if (this.options.endless) {\n var moreItemsCount = options.pageSize - this.pageSize();\n if (moreItemsCount > 0) {\n moreItemsCount = this.pageSize();\n options.page = options.pageSize / moreItemsCount;\n options.pageSize = moreItemsCount;\n } else {\n options.page = 1;\n this.options.endless = false;\n }\n }\n return this.read(this._mergeState(options));\n }\n\n var isPrevented = this.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n this.trigger(PROGRESS);\n if (options) {\n options.groupPaging = this._groupPaging;\n }\n result = this._queryProcess(this._data, this._mergeState(options));\n\n this._setFilterTotal(result.total, true);\n\n this._aggregateResult = this._calculateAggregates(result.dataToAggregate || this._data, options);\n this._setView(result, options);\n this.trigger(REQUESTEND, { type: \"read\" });\n this.trigger(CHANGE, { items: result.data, action: options ? options.action : \"\" });\n }\n\n return $.Deferred().resolve(isPrevented).promise();\n },\n\n _hasExpandedSubGroups: function(group) {\n var result = false;\n var length = group.items ? group.items.length : 0;\n\n if (!group.hasSubgroups) {\n return false;\n }\n\n for (var i = 0; i < length; i++) {\n if (this._groupsState[group.items[i].uid]) {\n result = true;\n break;\n }\n }\n return result;\n },\n\n _findGroupedRange: function(data, result, options, parents, callback) {\n var that = this;\n var length = data.length;\n var group;\n var current;\n var itemsLength;\n var groupCount;\n var itemsToSkip;\n\n for (var i = 0; i < length; i++) {\n group = data[i];\n\n if (options.taken >= options.take) {\n break;\n }\n\n if (!that._getGroupByUid(group.uid)) {\n that._groupsFlat.push(group);\n }\n\n if (that._groupsState[group.uid]) {\n if (that._isServerGroupPaged()) {\n if (that._fetchGroupItems(group, options, parents, callback)) {\n that._fetchingGroupItems = true;\n return;\n }\n groupCount = (group.subgroupCount || group.itemCount) + 1;\n itemsToSkip = options.skip - options.skipped;\n if (!that._hasExpandedSubGroups(group) && itemsToSkip > groupCount) {\n options.skipped += groupCount;\n continue;\n }\n }\n\n if (options.includeParents && options.skipped < options.skip) {\n options.skipped++;\n group.excludeHeader = true;\n } else if (options.includeParents) {\n options.taken++;\n group.excludeHeader = false;\n }\n\n if (group.hasSubgroups && group.items && group.items.length) {\n group.currentItems = [];\n\n if (!parents) {\n parents = [];\n }\n parents.push(group);\n\n that._findGroupedRange(group.items, group.currentItems, options, parents, callback);\n parents.pop();\n\n if (group.currentItems.length || options.taken > 0) {\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n } else {\n current = [];\n itemsLength = group.items.length;\n\n for (var j = 0; j < itemsLength; j++) {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n\n if (options.taken >= options.take) {\n break;\n }\n current.push(group.items[j]);\n options.taken++;\n }\n\n if (current.length || options.taken > 0) {\n group.currentItems = current;\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n }\n } else {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n result.push(group);\n options.taken++;\n }\n }\n },\n\n _expandedSubGroupItemsCount: function(group, end, includeCurrentItems) {\n var that = this;\n var result = 0;\n var subGroup;\n var endSpecified = typeof end === \"number\";\n var length = endSpecified ? end : group.subgroupCount;\n var temp;\n\n if (!group.hasSubgroups) {\n return result;\n }\n\n for (var i = 0; i < length; i++) {\n subGroup = group.items[i];\n\n if (!subGroup) {\n break;\n }\n\n if (subGroup.hasSubgroups && that._groupsState[group.uid]) {\n temp = that._expandedSubGroupItemsCount(subGroup, length, true);\n result += temp;\n\n if (endSpecified) {\n length -= temp;\n }\n } else if (!subGroup.hasSubgroups && that._groupsState[subGroup.uid]) {\n temp = subGroup.items ? subGroup.items.length : 0;\n result += temp;\n if (endSpecified) {\n length -= temp;\n }\n }\n\n if (includeCurrentItems) {\n result += 1;\n if (endSpecified) {\n length -= 1;\n }\n }\n\n if (endSpecified && result > length) {\n return result;\n }\n }\n\n return result;\n },\n\n _fetchGroupItems: function(group, options, parents, callback) {\n var that = this;\n var groupItemsSkip;\n var firstItem;\n var lastItem;\n var groupItemCount = group.hasSubgroups ? group.subgroupCount : group.itemCount;\n var take = options.take;\n var skipped = options.skipped;\n var pageSize = that.take();\n var expandedSubGroupItemsCount;\n\n if (options.includeParents) {\n if (skipped < options.skip) {\n skipped += 1;\n } else {\n take -= 1;\n }\n }\n\n if (!group.items || (group.items && !group.items.length)) {\n that.getGroupItems(group, options, parents, callback, 0);\n return true;\n } else {\n expandedSubGroupItemsCount = this._expandedSubGroupItemsCount(group, options.skip - skipped);\n groupItemsSkip = Math.max(options.skip - (skipped + expandedSubGroupItemsCount), 0);\n\n if (groupItemsSkip >= groupItemCount) {\n return false;\n }\n\n firstItem = group.items[groupItemsSkip];\n lastItem = group.items[Math.min(groupItemsSkip + take, groupItemCount - 1)];\n\n if (firstItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor(groupItemsSkip / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n\n if (lastItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor((groupItemsSkip + pageSize) / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n }\n },\n\n getGroupItems: function(group, options, parents, callback, groupItemsSkip, page) {\n var that = this;\n var take;\n var filter;\n var data;\n var subgroups;\n\n if (!group.items) {\n group.items = [];\n }\n\n take = that.take();\n filter = this._composeItemsFilter(group, parents);\n data = {\n page: page || 1,\n pageSize: take,\n skip: groupItemsSkip,\n take: take,\n filter: filter,\n aggregate: that._aggregate,\n sort: that._sort\n };\n subgroups = that.findSubgroups(group);\n\n if (subgroups && subgroups.length) {\n data.group = subgroups;\n data.groupPaging = true;\n }\n\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function() {\n that._queueRequest(data, function() {\n if (!that.trigger(REQUESTSTART, {\n type: \"read\"\n })) {\n that.transport.read({\n data: data,\n success: that._groupItemsSuccessHandler(group, options.skip, that.take(), callback, groupItemsSkip),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n },\n\n _groupItemsSuccessHandler: function(group, skip, take, callback, groupItemsSkip) {\n var that = this;\n var timestamp = that._timeStamp();\n callback = isFunction(callback) ? callback : noop;\n var totalField = that.options.schema && that.options.schema.total ? that.options.schema.total : \"Total\";\n\n return function(data) {\n var temp;\n var model = Model.define(that.options.schema.model);\n var totalCount;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, {\n response: data,\n type: \"read\"\n });\n\n if (isFunction(totalField)) {\n totalCount = totalField(data);\n } else {\n totalCount = data[totalField];\n }\n\n data = that.reader.parse(data);\n\n if (group.hasSubgroups) {\n temp = that.reader.groups(data);\n group.subgroupCount = totalCount;\n } else {\n temp = that.reader.data(data);\n temp = temp.map(function(item) {\n return new model(item);\n });\n }\n\n group.items.omitChangeEvent = true;\n for (var i = 0; i < totalCount; i++) {\n if (i >= groupItemsSkip && i < (groupItemsSkip + take) ) {\n group.items.splice(i, 1, temp[i - groupItemsSkip]);\n } else {\n if (!group.items[i]) {\n group.items.splice(i, 0, { notFetched: true });\n }\n }\n }\n group.items.omitChangeEvent = false;\n\n that._updateRangePristineData(group);\n that._fetchingGroupItems = false;\n\n if (!group.countAdded) {\n that._serverGroupsTotal += totalCount;\n group.countAdded = true;\n }\n\n that.range(skip, take, callback, \"expandGroup\");\n\n if (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress) {\n that.trigger(CHANGE, {});\n }\n };\n },\n\n findSubgroups: function(group) {\n var indexOfCurrentGroup = this._group.map(function(g) {\n return g.field;\n }).indexOf(group.field);\n\n return this._group.slice(indexOfCurrentGroup + 1, this._group.length);\n },\n\n _composeItemsFilter: function(group, parents) {\n var filter = {\n logic: \"and\",\n filters: []\n };\n\n if (this.filter()) {\n filter.filters.push(this.filter());\n }\n\n filter = extend(true, {}, filter);\n filter.filters.push({\n field: group.field,\n operator: \"eq\",\n value: group.value\n });\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n filter.filters.push({\n field: parents[i].field,\n operator: \"eq\",\n value: parents[i].value\n });\n }\n }\n\n return filter;\n },\n\n _updateRangePristineData: function(group) {\n var that = this;\n var ranges = that._ranges;\n var rangesLength = ranges.length;\n var temp;\n var currentGroup;\n var range;\n var dataLength;\n var indexes;\n var currIdx;\n\n for (var i = 0; i < rangesLength; i++) {\n range = ranges[i];\n dataLength = range.data.length;\n indexes = [];\n temp = null;\n\n for (var j = 0; j < dataLength; j++) {\n currentGroup = range.data[j];\n indexes.push(j);\n\n if ((currentGroup.uid === group.uid) || (currentGroup.hasSubgroups && currentGroup.items.length && that._containsSubGroup(currentGroup, group, indexes))) {\n break;\n }\n indexes.pop();\n }\n\n if (indexes.length) {\n temp = ranges[i].pristineData;\n\n while (indexes.length > 1) {\n currIdx = indexes.splice(0, 1)[0];\n temp = temp[currIdx].items;\n }\n temp[indexes[0]] = that._cloneGroup(group);\n break;\n }\n }\n },\n\n _containsSubGroup: function(group, subgroup, indexes) {\n var that = this;\n var length = group.items.length;\n var currentSubGroup;\n\n if (group.hasSubgroups && length) {\n for (var i = 0; i < length; i++) {\n currentSubGroup = group.items[i];\n indexes.push(i);\n if (currentSubGroup.uid === subgroup.uid ||\n (currentSubGroup.hasSubgroups &&\n currentSubGroup.items.length &&\n that._containsSubGroup(currentSubGroup, subgroup, indexes))) {\n return true;\n }\n indexes.pop();\n }\n }\n\n },\n\n _cloneGroup: function(group) {\n var that = this;\n group = typeof group.toJSON == \"function\" ? group.toJSON() : group;\n\n if (group.items && group.items.length) {\n group.items = group.items.map(function(item) {\n return that._cloneGroup(item);\n });\n }\n\n return group;\n },\n\n _setFilterTotal: function(filterTotal, setDefaultValue) {\n var that = this;\n\n if (!that.options.serverFiltering) {\n if (filterTotal !== undefined$1) {\n that._total = filterTotal;\n } else if (setDefaultValue) {\n that._total = that._data.length;\n }\n }\n },\n\n fetch: function(callback) {\n var that = this;\n var fn = function(isPrevented) {\n if (isPrevented !== true && isFunction(callback)) {\n callback.call(that);\n }\n };\n\n return this._query().done(fn);\n },\n\n _query: function(options) {\n var that = this;\n\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate()\n }, options));\n },\n\n next: function(options) {\n var that = this,\n page = that.page(),\n total = that.total();\n\n options = options || {};\n\n if (!page || (total && page + 1 > that.totalPages())) {\n return;\n }\n\n that._skip = that._currentRangeStart = page * that.take();\n\n page += 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n prev: function(options) {\n var that = this,\n page = that.page();\n\n options = options || {};\n\n if (!page || page === 1) {\n return;\n }\n\n that._skip = that._currentRangeStart = that._skip - that.take();\n\n page -= 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n page: function(val) {\n var that = this,\n skip;\n\n if (val !== undefined$1) {\n val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n var take = that.take();\n\n if (that._isGroupPaged()) {\n val -= 1;\n that.range(val * take, take, null, \"page\");\n return;\n }\n that._query(that._pageableQueryOptions({ page: val }));\n return;\n }\n skip = that.skip();\n\n return skip !== undefined$1 ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined$1;\n },\n\n pageSize: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query(that._pageableQueryOptions({ pageSize: val, page: 1 }));\n return;\n }\n\n return that.take();\n },\n\n sort: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that.trigger(\"sort\");\n that._query({ sort: val });\n return;\n }\n\n return that._sort;\n },\n\n filter: function(val) {\n var that = this;\n\n if (val === undefined$1) {\n return that._filter;\n }\n\n that.trigger(\"reset\");\n that._query({ filter: val, page: 1 });\n },\n\n group: function(val) {\n var that = this;\n var options = { group: val };\n\n if (that._groupPaging) {\n // clear ranges if ungrouping is performed\n if (val !== undefined$1 && (!val || !val.length) ) {\n that._ranges = [];\n }\n options.page = 1;\n }\n\n if (val !== undefined$1) {\n that._query(options);\n return;\n }\n\n return that._group;\n },\n\n getGroupsFlat: function(data) {\n var idx,\n result = [],\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data[idx];\n if (group.hasSubgroups) {\n result = result.concat(this.getGroupsFlat(group.items));\n }\n\n result.push(group);\n }\n\n return result;\n },\n\n total: function() {\n return parseInt(this._total || 0, 10);\n },\n\n groupsTotal: function(includeExpanded) {\n var that = this;\n\n if (!that._group.length) {\n return that.total();\n }\n\n if (that._isServerGrouped()) {\n if (that._serverGroupsTotal) {\n return that._serverGroupsTotal;\n }\n that._serverGroupsTotal = that.total();\n\n return that._serverGroupsTotal;\n }\n\n return that._calculateGroupsTotal(that._ranges.length ? that._ranges[0].data : [], includeExpanded);\n },\n\n _calculateGroupsTotal: function(groups, includeExpanded, itemsField, ignoreState) {\n var that = this;\n itemsField = itemsField || \"items\";\n var total;\n var length;\n\n if (that._group.length && groups) {\n total = 0;\n length = groups.length;\n\n for (var i = 0; i < length; i++) {\n total += that.groupCount(groups[i], includeExpanded, itemsField, ignoreState);\n }\n that._groupsTotal = total;\n return total;\n }\n\n that._groupsTotal = that._data.length;\n return that._groupsTotal;\n },\n\n groupCount: function(group, includeExpanded, itemsField, ignoreState) {\n var that = this;\n var total = 0;\n\n if (group.hasSubgroups && that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total += 1;\n }\n\n group[itemsField].forEach(function(subgroup) {\n total += that.groupCount(subgroup, includeExpanded, itemsField, ignoreState);\n });\n } else {\n if (that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total++;\n }\n total += group[itemsField] ? group[itemsField].length : 0;\n } else {\n total++;\n }\n }\n return total;\n },\n\n countGroupRange: function(range) {\n var total = 0;\n var length = range.length;\n\n for (var i = 0; i < length; i++) {\n total += this.groupCount(range[i], true);\n }\n\n return total;\n },\n\n aggregate: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query({ aggregate: val });\n return;\n }\n\n return that._aggregate;\n },\n\n aggregates: function() {\n var result = this._aggregateResult;\n\n if (isEmptyObject(result)) {\n result = this._emptyAggregates(this.aggregate());\n }\n\n return result;\n },\n\n _emptyAggregates: function(aggregates) {\n var result = {};\n\n if (!isEmptyObject(aggregates)) {\n var aggregate = {};\n\n if (!isArray(aggregates)) {\n aggregates = [aggregates];\n }\n\n for (var idx = 0; idx < aggregates.length; idx++) {\n aggregate[aggregates[idx].aggregate] = 0;\n result[aggregates[idx].field] = aggregate;\n }\n }\n\n return result;\n },\n\n _pageableQueryOptions: function(options) {\n return options;\n },\n\n _wrapInEmptyGroup: function(model) {\n var groups = this.group(),\n parent,\n group,\n idx,\n length;\n\n for (idx = groups.length - 1, length = 0; idx >= length; idx--) {\n group = groups[idx];\n parent = {\n value: model.get ? model.get(group.field) : model[group.field],\n field: group.field,\n items: parent ? [parent] : [model],\n hasSubgroups: !!parent,\n aggregates: this._emptyAggregates(group.aggregates)\n };\n }\n\n return parent;\n },\n\n totalPages: function() {\n var that = this,\n pageSize = that.pageSize() || that.total(),\n total = that._isGroupPaged() ? that.groupsTotal(true) : that.total();\n\n return math.ceil((total || 0) / pageSize);\n },\n\n inRange: function(skip, take) {\n var that = this,\n end = math.min(skip + take, that.total());\n\n if (!that.options.serverPaging && that._data.length > 0) {\n return true;\n }\n\n return that._findRange(skip, end).length > 0;\n },\n\n lastRange: function() {\n var ranges = this._ranges;\n return ranges[ranges.length - 1] || { start: 0, end: 0, data: [] };\n },\n\n firstItemUid: function() {\n var ranges = this._ranges;\n return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n },\n\n enableRequestsInProgress: function() {\n this._skipRequestsInProgress = false;\n },\n\n _timeStamp: function() {\n return new Date().getTime();\n },\n\n range: function(skip, take, callback, action) {\n this._currentRequestTimeStamp = this._timeStamp();\n this._skipRequestsInProgress = true;\n var total = this._isGroupPaged() ? this.groupsTotal(true) : this.total();\n\n if (action === \"expandGroup\" || action === \"collapseGroup\") {\n this._updateOuterRangesLength();\n }\n\n skip = math.min(skip || 0, total);\n callback = isFunction(callback) ? callback : noop;\n\n var that = this,\n pageSkip = math.max(math.floor(skip / take), 0) * take,\n size = math.min(pageSkip + take, total),\n data;\n\n data = that._findRange(skip, math.min(skip + take, total), callback);\n\n if ((data.length || total === 0) && !that._fetchingGroupItems) {\n that._processRangeData(data, skip, take, that._originalPageSkip || pageSkip, that._originalSize || size, {\n action: action\n });\n that._originalPageSkip = null;\n that._originalSize = null;\n callback();\n return;\n }\n\n if (that._isGroupPaged()) {\n that._originalPageSkip = pageSkip;\n that._originalSize = size;\n\n pageSkip = math.max(math.floor(that._adjustPageSkip(skip, take) / take), 0) * take;\n size = math.min(pageSkip + take, total);\n }\n\n if (take !== undefined$1 && !that._fetchingGroupItems) {\n if ((that._isGroupPaged() && !that._groupRangeExists(pageSkip, take)) || !that._rangeExists(pageSkip, size)) {\n that.prefetch(pageSkip, take, function() {\n if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n } else {\n that.range(skip, take, callback);\n }\n });\n } else if (pageSkip < skip) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n }\n }\n },\n\n _findRange: function(start, end, callback) {\n var that = this,\n ranges = that._ranges,\n range,\n data = [],\n skipIdx,\n takeIdx,\n startIndex,\n endIndex,\n rangeData,\n rangeEnd,\n processed,\n options = that.options,\n remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates,\n flatData,\n count,\n length,\n groupMapOptions = {\n take: end - start,\n skip: start,\n skipped: 0,\n taken: 0,\n includeParents: true\n },\n prevRangeEnd,\n isGroupPaged = that._isGroupPaged(),\n startField = isGroupPaged ? \"outerStart\" : \"start\",\n endField = isGroupPaged ? \"outerEnd\" : \"end\",\n currentDataLength;\n\n for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n range = ranges[skipIdx];\n\n if (isGroupPaged) {\n if (range.outerStart >= end) {\n return [];\n }\n\n if (start > range.outerEnd) {\n groupMapOptions.skipped += range.outerEnd - (prevRangeEnd || 0);\n prevRangeEnd = range.outerEnd;\n continue;\n }\n\n if (typeof prevRangeEnd !== \"undefined\" && prevRangeEnd != range.outerStart) {\n groupMapOptions.skipped += range.outerStart - prevRangeEnd;\n }\n\n if (groupMapOptions.skipped > groupMapOptions.skip) {\n return [];\n }\n\n if (typeof prevRangeEnd === \"undefined\" && start > 0 && range.start > 0) {\n groupMapOptions.skipped = range.outerStart;\n }\n\n takeIdx = skipIdx;\n while (true) {\n this._findGroupedRange(range.data, data, groupMapOptions, null, callback);\n currentDataLength = that._calculateGroupsTotal(data, true, \"currentItems\");\n\n if (currentDataLength >= groupMapOptions.take) {\n return data;\n }\n\n if (that._fetchingGroupItems) {\n return [];\n }\n takeIdx++;\n\n if (ranges[takeIdx] && ranges[takeIdx].outerStart === range.outerEnd) {\n range = ranges[takeIdx];\n } else {\n break;\n }\n }\n } else if (start >= range[startField] && start <= range[endField]) {\n count = 0;\n\n for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n range = ranges[takeIdx];\n flatData = that._flatData(range.data, true);\n\n if (flatData.length && start + count >= range.start) {\n rangeData = range.data;\n rangeEnd = range.end;\n\n if (!remote) {\n if (options.inPlaceSort) {\n processed = that._queryProcess(range.data, { filter: that.filter() });\n } else {\n var sort = normalizeGroupWithoutCompare(that.group() || []).concat(normalizeSort(that.sort() || []));\n processed = that._queryProcess(range.data, { sort: sort, filter: that.filter() });\n }\n flatData = rangeData = processed.data;\n\n if (processed.total !== undefined$1) {\n rangeEnd = processed.total;\n }\n }\n\n startIndex = 0;\n if (start + count > range.start) {\n startIndex = (start + count) - range.start;\n }\n endIndex = flatData.length;\n if (rangeEnd > end) {\n endIndex = endIndex - (rangeEnd - end);\n }\n count += endIndex - startIndex;\n data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n\n if (end <= range.end && count == end - start) {\n return data;\n }\n }\n }\n break;\n }\n prevRangeEnd = range.outerEnd;\n }\n return [];\n },\n\n _getRangesMismatch: function(pageSkip) {\n var that = this;\n var ranges = that._ranges;\n var mismatch = 0;\n var i = 0;\n\n while (true) {\n var range = ranges[i];\n if (!range || range.outerStart > pageSkip) {\n break;\n }\n\n if (range.outerEnd != range.end) {\n mismatch = range.outerEnd - range.end;\n }\n i++;\n }\n\n return mismatch;\n },\n\n _mergeGroups: function(data, range, skip, take) {\n if (this._isServerGrouped()) {\n var temp = range.toJSON(),\n prevGroup;\n\n if (data.length) {\n prevGroup = data[data.length - 1];\n }\n\n mergeGroups(prevGroup, temp, skip, take);\n\n return data.concat(temp);\n }\n return data.concat(range.slice(skip, take));\n },\n\n _processRangeData: function(data, skip, take, pageSkip, size, eventData) {\n var that = this;\n\n that._pending = undefined$1;\n\n that._skip = skip > that.skip() && !that._omitPrefetch ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n\n that._currentRangeStart = skip;\n\n that._take = take;\n\n var paging = that.options.serverPaging;\n var sorting = that.options.serverSorting;\n var filtering = that.options.serverFiltering;\n var aggregates = that.options.serverAggregates;\n try {\n that.options.serverPaging = true;\n if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n that.options.serverSorting = true;\n }\n that.options.serverFiltering = true;\n that.options.serverPaging = true;\n that.options.serverAggregates = true;\n\n if (paging) {\n that._detachObservableParents();\n that._data = data = that._observe(data);\n }\n that._process(data, eventData);\n } finally {\n that.options.serverPaging = paging;\n that.options.serverSorting = sorting;\n that.options.serverFiltering = filtering;\n that.options.serverAggregates = aggregates;\n }\n },\n\n skip: function() {\n var that = this;\n\n if (that._skip === undefined$1) {\n return (that._page !== undefined$1 ? (that._page - 1) * (that.take() || 1) : undefined$1);\n }\n return that._skip;\n },\n\n currentRangeStart: function() {\n return this._currentRangeStart || 0;\n },\n\n take: function() {\n return this._take || this._pageSize;\n },\n\n _prefetchSuccessHandler: function(skip, size, callback, force) {\n var that = this;\n var timestamp = that._timeStamp();\n\n return function(data) {\n var found = false,\n range = { start: skip, end: size, data: [], timestamp: that._timeStamp() },\n idx,\n length,\n temp;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n data = that.reader.parse(data);\n\n temp = that._readData(data);\n\n if (temp.length) {\n for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n if (that._ranges[idx].start === skip) {\n found = true;\n range = that._ranges[idx];\n\n if (!that._isGroupPaged()) {\n range.pristineData = temp;\n range.data = that._observe(temp);\n range.end = range.start + that._flatData(range.data, true).length;\n that._sortRanges();\n }\n\n break;\n }\n }\n\n if (!found) {\n that._addRange(that._observe(temp), skip);\n }\n }\n\n that._total = that.reader.total(data);\n\n if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n if (callback && temp.length) {\n callback();\n } else {\n that.trigger(CHANGE, {});\n }\n }\n };\n },\n\n prefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n\n if ((that._isGroupPaged() && !that._isServerGrouped() && that._groupRangeExists(skip, size))) {\n if (callback) {\n callback();\n }\n return;\n }\n\n if ((that._isServerGroupPaged() && !that._groupRangeExists(skip, size)) || !that._rangeExists(skip, size)) {\n clearTimeout(that._timeout);\n\n that._timeout = setTimeout(function() {\n that._queueRequest(options, function() {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n if (that._omitPrefetch) {\n that.trigger(PROGRESS);\n }\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n } else if (callback) {\n callback();\n }\n },\n\n _multiplePrefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n if (!that._rangeExists(skip, size)) {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback, true)\n });\n }\n } else if (callback) {\n callback();\n }\n },\n\n _adjustPageSkip: function(start, take) {\n var that = this;\n var prevRange = that._getPrevRange(start);\n var result;\n var total = that.total();\n var mismatch;\n\n if (prevRange) {\n mismatch = that._getRangesMismatch(start);\n\n if (!mismatch) {\n return start;\n }\n start -= mismatch;\n }\n result = math.max(math.floor(start / take), 0) * take;\n\n if (result > total) {\n while (true) {\n result -= take;\n if (result < total) {\n break;\n }\n }\n }\n return result;\n },\n\n _getNextRange: function(end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= end && ranges[idx].end >= end) {\n return ranges[idx];\n }\n }\n },\n\n _getPrevRange: function(start) {\n var that = this,\n ranges = that._ranges,\n idx,\n range,\n length = ranges.length;\n\n for (idx = length - 1; idx >= 0; idx--) {\n if (ranges[idx].outerStart <= start) {\n range = ranges[idx];\n break;\n }\n\n }\n\n return range;\n },\n\n _rangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= start && ranges[idx].end >= end) {\n return true;\n }\n }\n\n return false;\n },\n\n _groupRangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length,\n availableItemsCount = 0,\n total = that.groupsTotal(true);\n\n if (end > total && !that._isServerGrouped()) {\n end = total;\n }\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n var range = ranges[idx];\n if (range.outerStart <= start && range.outerEnd >= start) {\n availableItemsCount += range.outerEnd - start;\n } else if (range.outerStart <= end && range.outerEnd >= end) {\n availableItemsCount += end - range.outerStart;\n }\n }\n\n return availableItemsCount >= end - start;\n },\n\n _getCurrentRangeSpan: function() {\n var that = this;\n var ranges = that._ranges;\n var start = that.currentRangeStart();\n var end = start + (that.take() || 0);\n var rangeSpan = [];\n var range;\n var idx;\n var length = ranges.length;\n\n for (idx = 0; idx < length; idx++) {\n range = ranges[idx];\n\n if ((range.start <= start && range.end >= start) || (range.start >= start && range.start <= end)) {\n rangeSpan.push(range);\n }\n }\n\n return rangeSpan;\n },\n\n _removeModelFromRanges: function(model) {\n var that = this;\n var range;\n\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n\n that._removeModelFromRange(range, model);\n }\n\n that._updateRangesLength();\n },\n\n _removeModelFromRange: function(range, model) {\n this._eachItem(range.data, function(data) {\n if (!data) {\n return;\n }\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n [].splice.call(data, idx, 1);\n break;\n }\n }\n });\n },\n\n _insertModelInRange: function(index, model) {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n\n if (range.start <= index && range.end >= index) {\n if (!that._getByUid(model.uid, range.data)) {\n if (that._isServerGrouped()) {\n range.data.splice(index, 0, that._wrapInEmptyGroup(model));\n } else {\n range.data.splice(index, 0, model);\n }\n }\n\n break;\n }\n }\n\n that._updateRangesLength();\n },\n\n _updateRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchFound = false;\n var mismatchLength = 0;\n var lengthDifference = 0;\n var rangeLength;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? range.data.length : that._flatData(range.data, true).length;\n lengthDifference = rangeLength - math.abs(range.end - range.start);\n\n if (!mismatchFound && lengthDifference !== 0) {\n mismatchFound = true;\n mismatchLength = lengthDifference;\n range.end += mismatchLength;\n continue;\n }\n\n if (mismatchFound) {\n range.start += mismatchLength;\n range.end += mismatchLength;\n }\n }\n },\n\n _updateOuterRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchLength = 0;\n var range;\n var i;\n var prevRange;\n var rangeLength;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? that._calculateGroupsTotal(range.data, true, \"items\", true) : that._flatData(range.data, true).length;\n\n if (prevRange) {\n if (prevRange.end != range.start) {\n mismatchLength = range.start - prevRange.end;\n }\n range.outerStart = prevRange.outerEnd + mismatchLength;\n mismatchLength = 0;\n } else {\n range.outerStart = range.start;\n }\n\n range.outerEnd = range.outerStart + rangeLength;\n prevRange = range;\n }\n }\n });\n\n var Transport = {};\n\n Transport.create = function(options, data, dataSource) {\n var transport,\n transportOptions = options.transport ? $.extend({}, options.transport) : null;\n\n if (transportOptions) {\n transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n\n if (options.type === \"jsdo\") {\n transportOptions.dataSource = dataSource;\n }\n\n if (options.type) {\n kendo.data.transports = kendo.data.transports || {};\n kendo.data.schemas = kendo.data.schemas || {};\n\n if (!kendo.data.transports[options.type]) {\n kendo.logToConsole(\"Unknown DataSource transport type '\" + options.type + \"'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.\", \"warn\");\n } else if (!isPlainObject(kendo.data.transports[options.type])) {\n transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n } else {\n transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n }\n\n options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n }\n\n if (!transport) {\n transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n }\n } else {\n transport = new LocalTransport({ data: options.data || [] });\n }\n return transport;\n };\n\n DataSource.create = function(options) {\n if (isArray(options) || options instanceof ObservableArray) {\n options = { data: options };\n }\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n table = dataSource.table,\n select = dataSource.select,\n idx,\n length,\n model = {},\n field;\n\n if (!data && fields && !dataSource.transport) {\n if (table) {\n data = inferTable(table, fields);\n } else if (select) {\n data = inferSelect(select, fields);\n\n if (dataSource.group === undefined$1 && data[0] && data[0].optgroup !== undefined$1) {\n dataSource.group = \"optgroup\";\n }\n }\n }\n\n if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n if (field.type) {\n model[field.field] = field;\n }\n }\n\n if (!isEmptyObject(model)) {\n dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n }\n }\n\n dataSource.data = data;\n\n select = null;\n dataSource.select = null;\n table = null;\n dataSource.table = null;\n\n return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n };\n\n function inferSelect(select, fields) {\n select = $(select)[0];\n var options = select.options;\n var firstField = fields[0];\n var secondField = fields[1];\n\n var data = [];\n var idx, length;\n var optgroup;\n var option;\n var record;\n var value;\n\n for (idx = 0, length = options.length; idx < length; idx++) {\n record = {};\n option = options[idx];\n optgroup = option.parentNode;\n\n if (optgroup === select) {\n optgroup = null;\n }\n\n if (option.disabled || (optgroup && optgroup.disabled)) {\n continue;\n }\n\n if (optgroup) {\n record.optgroup = optgroup.label;\n }\n\n record[firstField.field] = option.text;\n\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n record[secondField.field] = value;\n\n data.push(record);\n }\n\n return data;\n }\n\n function inferTable(table, fields) {\n var tbody = $(table)[0].tBodies[0],\n rows = tbody ? tbody.rows : [],\n idx,\n length,\n fieldIndex,\n fieldCount = fields.length,\n data = [],\n cells,\n record,\n cell,\n empty;\n\n for (idx = 0, length = rows.length; idx < length; idx++) {\n record = {};\n empty = true;\n cells = rows[idx].cells;\n\n for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n cell = cells[fieldIndex];\n if (cell.nodeName.toLowerCase() !== \"th\") {\n empty = false;\n record[fields[fieldIndex].field] = cell.innerHTML;\n }\n }\n if (!empty) {\n data.push(record);\n }\n }\n\n return data;\n }\n\n var Node = Model.define({\n idField: \"id\",\n\n init: function(value) {\n var that = this,\n hasChildren = that.hasChildren || value && value.hasChildren,\n childrenField = \"items\",\n childrenOptions = {};\n\n kendo.data.Model.fn.init.call(that, value);\n\n if (typeof that.children === STRING) {\n childrenField = that.children;\n }\n\n childrenOptions = {\n schema: {\n data: childrenField,\n model: {\n hasChildren: hasChildren,\n id: that.idField,\n fields: that.fields\n }\n }\n };\n\n if (typeof that.children !== STRING) {\n extend(childrenOptions, that.children);\n }\n\n childrenOptions.data = value;\n\n if (!hasChildren) {\n hasChildren = childrenOptions.schema.data;\n }\n\n if (typeof hasChildren === STRING) {\n hasChildren = kendo.getter(hasChildren);\n }\n\n if (isFunction(hasChildren)) {\n var hasChildrenObject = hasChildren.call(that, that);\n\n if (hasChildrenObject && hasChildrenObject.length === 0) {\n that.hasChildren = false;\n } else {\n that.hasChildren = !!hasChildrenObject;\n }\n }\n\n that._childrenOptions = childrenOptions;\n\n if (that.hasChildren) {\n that._initChildren();\n }\n\n that._loaded = !!(value && value._loaded);\n },\n\n _initChildren: function() {\n var that = this;\n var children, transport, parameterMap;\n\n if (!(that.children instanceof HierarchicalDataSource)) {\n children = that.children = new HierarchicalDataSource(that._childrenOptions);\n\n transport = children.transport;\n parameterMap = transport.parameterMap;\n\n transport.parameterMap = function(data, type) {\n data[that.idField || \"id\"] = that.id;\n\n if (parameterMap) {\n data = parameterMap.call(that, data, type);\n }\n\n return data;\n };\n\n children.parent = function() {\n return that;\n };\n\n children.bind(CHANGE, function(e) {\n e.node = e.node || that;\n that.trigger(CHANGE, e);\n });\n\n children.bind(ERROR, function(e) {\n var collection = that.parent();\n\n if (collection) {\n e.node = e.node || that;\n collection.trigger(ERROR, e);\n }\n });\n\n children.bind(ITEMSLOADED, function(e) {\n var collection = that.parent();\n\n if (collection) {\n collection.trigger(ITEMSLOADED, e);\n }\n });\n\n that._updateChildrenField();\n }\n },\n\n append: function(model) {\n this._initChildren();\n this.loaded(true);\n this.children.add(model);\n },\n\n hasChildren: false,\n\n level: function() {\n var parentNode = this.parentNode(),\n level = 0;\n\n while (parentNode && parentNode.parentNode) {\n level++;\n parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n }\n\n return level;\n },\n\n _updateChildrenField: function() {\n var fieldName = this._childrenOptions.schema.data;\n\n this[fieldName || \"items\"] = this.children.data();\n },\n\n _childrenLoaded: function() {\n this._loaded = true;\n\n this._updateChildrenField();\n },\n\n load: function() {\n var options = {};\n var method = \"_query\";\n var children, promise;\n\n if (this.hasChildren) {\n this._initChildren();\n\n children = this.children;\n\n options[this.idField || \"id\"] = this.id;\n\n if (!this._loaded) {\n children._data = undefined$1;\n method = \"read\";\n }\n\n children.one(CHANGE, this._childrenLoaded.bind(this));\n\n if (this._matchFilter) {\n options.filter = { field: '_matchFilter', operator: 'eq', value: true };\n }\n\n promise = children[method](options);\n if (!this._loaded) {\n this.trigger(ITEMLOAD, { promise: promise, node: this });\n }\n } else {\n this.loaded(true);\n }\n\n return promise || $.Deferred().resolve().promise();\n },\n\n parentNode: function() {\n var array = this.parent();\n\n return array.parent();\n },\n\n loaded: function(value) {\n if (value !== undefined$1) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n\n shouldSerialize: function(field) {\n return Model.fn.shouldSerialize.call(this, field) &&\n field !== \"children\" &&\n field !== \"_loaded\" &&\n field !== \"hasChildren\" &&\n field !== \"_childrenOptions\";\n }\n });\n\n function dataMethod(name) {\n return function() {\n var data = this._data,\n result = DataSource.fn[name].apply(this, slice.call(arguments));\n\n if (this._data != data) {\n this._attachBubbleHandlers();\n }\n\n return result;\n };\n }\n\n var HierarchicalDataSource = DataSource.extend({\n init: function(options) {\n var node = Node.define({\n children: options\n });\n\n if (options.filter && !options.serverFiltering) {\n this._hierarchicalFilter = options.filter;\n options.filter = null;\n }\n\n DataSource.fn.init.call(this, extend(true, {}, { schema: { modelBase: node, model: node } }, options));\n\n this._attachBubbleHandlers();\n },\n\n _attachBubbleHandlers: function() {\n var that = this;\n\n that._data.bind(ERROR, function(e) {\n that.trigger(ERROR, e);\n });\n\n that._data.bind(ITEMSLOADED, function(e) {\n that.trigger(ITEMSLOADED, e);\n });\n },\n\n loading: function() {\n if (this._data) {\n return this._data.loading() || this._childrenLoading();\n }\n return false;\n },\n\n _childrenLoading: function() {\n var isLoading = false;\n this._data.forEach(function(node) {\n if (node.hasChildren && node.children.loading()) {\n isLoading = true;\n }\n });\n return isLoading;\n },\n\n read: function(data) {\n var result = DataSource.fn.read.call(this, data);\n\n if (this._hierarchicalFilter) {\n if (this._data && this._data.length > 0) {\n this.filter(this._hierarchicalFilter);\n } else {\n this.options.filter = this._hierarchicalFilter;\n this._filter = normalizeFilter(this.options.filter);\n this._hierarchicalFilter = null;\n }\n }\n\n return result;\n },\n\n remove: function(node) {\n var parentNode = node.parentNode(),\n dataSource = this,\n result;\n\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n\n result = DataSource.fn.remove.call(dataSource, node);\n\n if (parentNode && !dataSource.data().length) {\n parentNode.hasChildren = false;\n }\n\n return result;\n },\n\n success: dataMethod(\"success\"),\n\n data: dataMethod(\"data\"),\n\n insert: function(index, model) {\n var parentNode = this.parent();\n\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n\n return DataSource.fn.insert.call(this, index, model);\n },\n\n filter: function(val) {\n if (val === undefined$1) {\n return this._filter;\n }\n\n if (!this.options.serverFiltering && this._markHierarchicalQuery(val)) {\n val = { logic: \"or\", filters: [val, { field: '_matchFilter', operator: 'equals', value: true }] };\n }\n\n this.trigger(\"reset\");\n this._query({ filter: val, page: 1 });\n },\n\n _markHierarchicalQuery: function(expressions) {\n var compiled;\n var accentFoldingFiltering = this.options.accentFoldingFiltering;\n\n expressions = accentFoldingFiltering ? $.extend({}, normalizeFilter(expressions), { accentFoldingFiltering: accentFoldingFiltering }) : normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n this._updateHierarchicalFilter(function() {return true;});\n return false;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n this._updateHierarchicalFilter(compiled);\n return true;\n },\n\n _updateHierarchicalFilter: function(filter) {\n var current;\n var data = this._data;\n var result = false;\n\n for (var idx = 0; idx < data.length; idx++) {\n current = data[idx];\n\n if (current.hasChildren) {\n current._matchFilter = current.children._updateHierarchicalFilter(filter);\n if (!current._matchFilter) {\n current._matchFilter = filter(current);\n }\n } else {\n current._matchFilter = filter(current);\n }\n\n if (current._matchFilter) {\n result = true;\n }\n }\n return result;\n },\n\n _find: function(method, value) {\n var idx, length, node, children;\n var data = this._data;\n\n if (!data) {\n return;\n }\n\n node = DataSource.fn[method].call(this, value);\n\n if (node) {\n return node;\n }\n\n data = this._flatData(this._data);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n children = data[idx].children;\n\n if (!(children instanceof HierarchicalDataSource)) {\n continue;\n }\n\n node = children[method](value);\n\n if (node) {\n return node;\n }\n }\n },\n\n get: function(id) {\n return this._find(\"get\", id);\n },\n\n getByUid: function(uid) {\n return this._find(\"getByUid\", uid);\n }\n });\n\n function inferList(list, fields) {\n var items = $(list).children(),\n idx,\n length,\n data = [],\n record,\n textField = fields[0].field,\n urlField = fields[1] && fields[1].field,\n spriteCssClassField = fields[2] && fields[2].field,\n imageUrlField = fields[3] && fields[3].field,\n item,\n id,\n textChild,\n className,\n children;\n\n function elements(collection, tagName) {\n return collection.filter(tagName).add(collection.find(tagName));\n }\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n record = { _loaded: true };\n item = items.eq(idx);\n\n textChild = item[0].firstChild;\n children = item.children();\n list = children.filter(\"ul\");\n children = children.filter(\":not(ul)\");\n\n id = item.attr(\"data-id\");\n\n if (id) {\n record.id = id;\n }\n\n if (textChild) {\n record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n }\n\n if (urlField) {\n record[urlField] = elements(children, \"a\").attr(\"href\");\n }\n\n if (imageUrlField) {\n record[imageUrlField] = elements(children, \"img\").attr(\"src\");\n }\n\n if (spriteCssClassField) {\n className = elements(children, \".k-sprite\").prop(\"className\");\n record[spriteCssClassField] = className && kendo.trim(className.replace(\"k-sprite\", \"\"));\n }\n\n if (list.length) {\n record.items = inferList(list.eq(0), fields);\n }\n\n if (item.attr(\"data-hasChildren\") == \"true\") {\n record.hasChildren = true;\n }\n\n data.push(record);\n }\n\n return data;\n }\n\n HierarchicalDataSource.create = function(options) {\n options = options && options.push ? { data: options } : options;\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n list = dataSource.list;\n\n if (data && data._dataSource) {\n return data._dataSource;\n }\n\n if (!data && fields && !dataSource.transport) {\n if (list) {\n data = inferList(list, fields);\n }\n }\n\n dataSource.data = data;\n\n return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n };\n\n var Buffer = kendo.Observable.extend({\n init: function(dataSource, viewSize, disablePrefetch) {\n kendo.Observable.fn.init.call(this);\n\n this._prefetching = false;\n this.dataSource = dataSource;\n this.prefetch = !disablePrefetch;\n\n var buffer = this;\n\n dataSource.bind(\"change\", function() {\n buffer._change();\n });\n\n dataSource.bind(\"reset\", function() {\n buffer._reset();\n });\n\n this._syncWithDataSource();\n\n this.setViewSize(viewSize);\n },\n\n setViewSize: function(viewSize) {\n this.viewSize = viewSize;\n this._recalculate();\n },\n\n at: function(index) {\n var pageSize = this.pageSize,\n itemPresent = true;\n\n if (index >= this.total()) {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n\n if (!this.useRanges) {\n return this.dataSource.view()[index];\n }\n if (this.useRanges) {\n // out of range request\n if (index < this.dataOffset || index >= this.skip + pageSize) {\n itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n }\n\n // prefetch\n if (index === this.prefetchThreshold) {\n this._prefetch();\n }\n\n // mid-range jump - prefetchThreshold and nextPageThreshold may be equal, do not change to else if\n if (index === this.midPageThreshold) {\n this.range(this.nextMidRange, true);\n }\n // next range jump\n else if (index === this.nextPageThreshold) {\n this.range(this.nextFullRange);\n }\n // pull-back\n else if (index === this.pullBackThreshold) {\n if (this.offset === this.skip) { // from full range to mid range\n this.range(this.previousMidRange);\n } else { // from mid range to full range\n this.range(this.previousFullRange);\n }\n }\n\n if (itemPresent) {\n return this.dataSource.at(index - this.dataOffset);\n } else {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n }\n },\n\n indexOf: function(item) {\n return this.dataSource.data().indexOf(item) + this.dataOffset;\n },\n\n total: function() {\n return parseInt(this.dataSource.total(), 10);\n },\n\n next: function() {\n var buffer = this,\n pageSize = buffer.pageSize,\n offset = buffer.skip - buffer.viewSize + pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n\n this.offset = offset;\n this.dataSource.prefetch(pageSkip, pageSize, function() {\n buffer._goToRange(offset, true);\n });\n },\n\n range: function(offset, nextRange) {\n if (this.offset === offset) {\n return true;\n }\n\n var buffer = this,\n pageSize = this.pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize,\n dataSource = this.dataSource;\n\n if (nextRange) {\n pageSkip += pageSize;\n }\n\n if (dataSource.inRange(offset, pageSize)) {\n this.offset = offset;\n this._recalculate();\n this._goToRange(offset);\n return true;\n } else if (this.prefetch) {\n dataSource.prefetch(pageSkip, pageSize, function() {\n buffer.offset = offset;\n buffer._recalculate();\n buffer._goToRange(offset, true);\n });\n return false;\n }\n\n return true;\n },\n\n syncDataSource: function() {\n var offset = this.offset;\n this.offset = null;\n this.range(offset);\n },\n\n destroy: function() {\n this.unbind();\n },\n\n _prefetch: function() {\n var buffer = this,\n pageSize = this.pageSize,\n prefetchOffset = this.skip + pageSize,\n dataSource = this.dataSource;\n\n if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n this._prefetching = true;\n this.trigger(\"prefetching\", { skip: prefetchOffset, take: pageSize });\n\n dataSource.prefetch(prefetchOffset, pageSize, function() {\n buffer._prefetching = false;\n buffer.trigger(\"prefetched\", { skip: prefetchOffset, take: pageSize });\n });\n }\n },\n\n _goToRange: function(offset, expanding) {\n if (this.offset !== offset) {\n return;\n }\n\n this.dataOffset = offset;\n this._expanding = expanding;\n this.dataSource.range(offset, this.pageSize);\n this.dataSource.enableRequestsInProgress();\n },\n\n _reset: function() {\n this._syncPending = true;\n },\n\n _change: function() {\n var dataSource = this.dataSource;\n\n this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n\n if (this._syncPending) {\n this._syncWithDataSource();\n this._recalculate();\n this._syncPending = false;\n this.trigger(\"reset\", { offset: this.offset });\n }\n\n this.trigger(\"resize\");\n\n if (this._expanding) {\n this.trigger(\"expand\");\n }\n\n delete this._expanding;\n },\n\n _syncWithDataSource: function() {\n var dataSource = this.dataSource;\n\n this._firstItemUid = dataSource.firstItemUid();\n this.dataOffset = this.offset = dataSource.skip() || 0;\n this.pageSize = dataSource.pageSize();\n this.useRanges = dataSource.options.serverPaging;\n },\n\n _recalculate: function() {\n var pageSize = this.pageSize,\n offset = this.offset,\n viewSize = this.viewSize,\n skip = Math.ceil(offset / pageSize) * pageSize;\n\n this.skip = skip;\n this.midPageThreshold = skip + pageSize - 1;\n this.nextPageThreshold = skip + viewSize - 1;\n this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n this.pullBackThreshold = this.offset - 1;\n\n this.nextMidRange = skip + pageSize - viewSize;\n this.nextFullRange = skip;\n this.previousMidRange = offset - viewSize;\n this.previousFullRange = skip - pageSize;\n }\n });\n\n var BatchBuffer = kendo.Observable.extend({\n init: function(dataSource, batchSize) {\n var batchBuffer = this;\n\n kendo.Observable.fn.init.call(batchBuffer);\n\n this.dataSource = dataSource;\n this.batchSize = batchSize;\n this._total = 0;\n\n this.buffer = new Buffer(dataSource, batchSize * 3);\n\n this.buffer.bind({\n \"endreached\": function(e) {\n batchBuffer.trigger(\"endreached\", { index: e.index });\n },\n \"prefetching\": function(e) {\n batchBuffer.trigger(\"prefetching\", { skip: e.skip, take: e.take });\n },\n \"prefetched\": function(e) {\n batchBuffer.trigger(\"prefetched\", { skip: e.skip, take: e.take });\n },\n \"reset\": function() {\n batchBuffer._total = 0;\n batchBuffer.trigger(\"reset\");\n },\n \"resize\": function() {\n batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n batchBuffer.trigger(\"resize\", { total: batchBuffer.total(), offset: this.offset });\n }\n });\n },\n\n syncDataSource: function() {\n this.buffer.syncDataSource();\n },\n\n at: function(index) {\n var buffer = this.buffer,\n skip = index * this.batchSize,\n take = this.batchSize,\n view = [],\n item;\n\n if (buffer.offset > skip) {\n buffer.at(buffer.offset - 1);\n }\n\n for (var i = 0; i < take; i++) {\n item = buffer.at(skip + i);\n\n if (item === null) {\n break;\n }\n\n view.push(item);\n }\n\n return view;\n },\n\n total: function() {\n return this._total;\n },\n\n destroy: function() {\n this.buffer.destroy();\n this.unbind();\n }\n });\n\n extend(true, kendo.data, {\n readers: {\n json: DataReader\n },\n Query: Query,\n DataSource: DataSource,\n HierarchicalDataSource: HierarchicalDataSource,\n Node: Node,\n Comparer: Comparer,\n ObservableObject: ObservableObject,\n ObservableArray: ObservableArray,\n LazyObservableArray: LazyObservableArray,\n LocalTransport: LocalTransport,\n RemoteTransport: RemoteTransport,\n Cache: Cache,\n DataReader: DataReader,\n Model: Model,\n Buffer: Buffer,\n BatchBuffer: BatchBuffer\n });\n })(window.kendo.jQuery);\n var kendo$U = kendo;\n\n var __meta__$S = {\n id: \"binder\",\n name: \"MVVM\",\n category: \"framework\",\n description: \"Model View ViewModel (MVVM) is a design pattern which helps developers separate the Model (the data) from the View (the UI).\",\n depends: [ \"core\", \"data\" ]\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n encode = kendo.htmlEncode,\n Observable = kendo.Observable,\n ObservableObject = kendo.data.ObservableObject,\n ObservableArray = kendo.data.ObservableArray,\n toString = {}.toString,\n binders = {},\n Class = kendo.Class,\n VALUE = \"value\",\n SOURCE = \"source\",\n EVENTS = \"events\",\n CHECKED = \"checked\",\n CSS = \"css\",\n deleteExpando = true,\n FUNCTION = \"function\",\n CHANGE = \"change\";\n\n (function() {\n var a = document.createElement(\"a\");\n\n try {\n delete a.test;\n } catch (e) {\n deleteExpando = false;\n }\n })();\n\n var Binding = Observable.extend( {\n init: function(parents, path) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.source = parents[0];\n that.parents = parents;\n that.path = path;\n that.dependencies = {};\n that.dependencies[path] = true;\n that.observable = that.source instanceof Observable;\n\n that._access = function(e) {\n that.dependencies[e.field] = true;\n };\n\n if (that.observable) {\n that._change = function(e) {\n that.change(e);\n };\n\n that.source.bind(CHANGE, that._change);\n }\n },\n\n _parents: function() {\n var parents = this.parents;\n var value = this.get();\n\n if (value && typeof value.parent == \"function\") {\n var parent = value.parent();\n\n if ($.inArray(parent, parents) < 0) {\n parents = [parent].concat(parents);\n }\n }\n\n return parents;\n },\n\n change: function(e) {\n var dependency,\n ch,\n field = e.field,\n that = this;\n\n if (that.path === \"this\") {\n that.trigger(CHANGE, e);\n } else {\n for (dependency in that.dependencies) {\n if (dependency.indexOf(field) === 0) {\n ch = dependency.charAt(field.length);\n\n if (!ch || ch === \".\" || ch === \"[\") {\n that.trigger(CHANGE, e);\n break;\n }\n }\n }\n }\n },\n\n start: function(source) {\n source.bind(\"get\", this._access);\n },\n\n stop: function(source) {\n source.unbind(\"get\", this._access);\n },\n\n get: function() {\n\n var that = this,\n source = that.source,\n index = 0,\n path = that.path,\n result = source;\n\n if (!that.observable) {\n return result;\n }\n\n that.start(that.source);\n\n result = source.get(path);\n\n // Traverse the observable hierarchy if the binding is not resolved at the current level.\n while (result === undefined$1 && source) {\n\n source = that.parents[++index];\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n\n // second pass try to get the parent from the object hierarchy\n if (result === undefined$1) {\n source = that.source; //get the initial source\n\n while (result === undefined$1 && source) {\n source = source.parent();\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n }\n\n // If the result is a function - invoke it\n if (typeof result === \"function\") {\n index = path.lastIndexOf(\".\");\n\n // If the function is a member of a nested observable object make that nested observable the context (this) of the function\n if (index > 0) {\n source = source.get(path.substring(0, index));\n }\n\n // Invoke the function\n that.start(source);\n\n if (source !== that.source) {\n result = result.call(source, that.source);\n } else {\n result = result.call(source);\n }\n\n that.stop(source);\n }\n\n // If the binding is resolved by a parent object\n if (source && source !== that.source) {\n\n that.currentSource = source; // save parent object\n\n // Listen for changes in the parent object\n source.unbind(CHANGE, that._change)\n .bind(CHANGE, that._change);\n }\n\n that.stop(that.source);\n\n return result;\n },\n\n set: function(value) {\n var source = this.currentSource || this.source;\n\n var field = kendo.getter(this.path)(source);\n\n if (typeof field === \"function\") {\n if (source !== this.source) {\n field.call(source, this.source, value);\n } else {\n field.call(source, value);\n }\n } else {\n source.set(this.path, value);\n }\n },\n\n destroy: function() {\n if (this.observable) {\n this.source.unbind(CHANGE, this._change);\n if (this.currentSource) {\n this.currentSource.unbind(CHANGE, this._change);\n }\n }\n\n this.unbind();\n }\n });\n\n var EventBinding = Binding.extend( {\n get: function() {\n var source = this.source,\n path = this.path,\n index = 0,\n handler;\n\n handler = source.get(path);\n\n while (!handler && source) {\n source = this.parents[++index];\n\n if (source instanceof ObservableObject) {\n handler = source.get(path);\n }\n }\n\n if (!handler) {\n return;\n }\n\n return handler.bind(source);\n }\n });\n\n var TemplateBinding = Binding.extend( {\n init: function(source, path, template) {\n var that = this;\n\n Binding.fn.init.call(that, source, path);\n\n that.template = template;\n },\n\n render: function(value) {\n var html;\n\n this.start(this.source);\n\n html = kendo.render(this.template, value);\n\n this.stop(this.source);\n\n return html;\n }\n });\n\n var Binder = Class.extend({\n init: function(element, bindings, options) {\n this.element = element;\n this.bindings = bindings;\n this.options = options;\n },\n\n bind: function(binding, attribute) {\n var that = this;\n\n binding = attribute ? binding[attribute] : binding;\n\n binding.bind(CHANGE, function(e) {\n that.refresh(attribute || e);\n });\n\n that.refresh(attribute);\n },\n\n destroy: function() {\n }\n });\n\n var TypedBinder = Binder.extend({\n dataType: function() {\n var dataType = this.element.getAttribute(\"data-\" + kendo.ns + \"type\") || this.element.type || \"text\";\n return dataType.toLowerCase();\n },\n\n parsedValue: function() {\n return this._parseValue(this.element.value, this.dataType());\n },\n\n _parseValue: function(value, dataType) {\n if (dataType == \"date\") {\n value = kendo.parseDate(value, \"yyyy-MM-dd\");\n } else if (dataType == \"datetime-local\") {\n value = kendo.parseDate(value, [\"yyyy-MM-ddTHH:mm:ss\", \"yyyy-MM-ddTHH:mm\"] );\n } else if (dataType == \"number\") {\n value = kendo.parseFloat(value);\n } else if (dataType == \"boolean\") {\n value = value.toLowerCase();\n if (kendo.parseFloat(value) !== null) {\n value = Boolean(kendo.parseFloat(value));\n } else {\n value = (value.toLowerCase() === \"true\");\n }\n }\n return value;\n }\n });\n\n binders.attr = Binder.extend({\n refresh: function(key) {\n this.element.setAttribute(key, this.bindings.attr[key].get());\n }\n });\n\n binders.css = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.classes = {};\n },\n refresh: function(className) {\n var element = $(this.element),\n binding = this.bindings.css[className],\n hasClass = this.classes[className] = binding.get();\n if (hasClass) {\n element.addClass(className);\n } else {\n element.removeClass(className);\n }\n }\n });\n\n binders.style = Binder.extend({\n refresh: function(key) {\n this.element.style[key] = this.bindings.style[key].get() || \"\";\n }\n });\n\n binders.enabled = Binder.extend({\n refresh: function() {\n if (this.bindings.enabled.get()) {\n this.element.removeAttribute(\"disabled\");\n } else {\n this.element.setAttribute(\"disabled\", \"disabled\");\n }\n }\n });\n\n binders.readonly = Binder.extend({\n refresh: function() {\n if (this.bindings.readonly.get()) {\n this.element.setAttribute(\"readonly\", \"readonly\");\n } else {\n this.element.removeAttribute(\"readonly\");\n }\n }\n });\n\n binders.disabled = Binder.extend({\n refresh: function() {\n if (this.bindings.disabled.get()) {\n this.element.setAttribute(\"disabled\", \"disabled\");\n } else {\n this.element.removeAttribute(\"disabled\");\n }\n }\n });\n\n binders.events = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.handlers = {};\n },\n\n refresh: function(key) {\n var element = $(this.element),\n binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n element.off(key, handler);\n }\n\n handler = this.handlers[key] = binding.get();\n\n element.on(key, binding.source, handler);\n },\n\n destroy: function() {\n var element = $(this.element),\n handler;\n\n for (handler in this.handlers) {\n element.off(handler, this.handlers[handler]);\n }\n }\n });\n\n binders.text = Binder.extend({\n refresh: function() {\n var text = this.bindings.text.get();\n var dataFormat = this.element.getAttribute(\"data-\" + kendo.ns + \"format\") || \"\";\n if (text == null) {\n text = \"\";\n }\n\n $(this.element).text(kendo.toString(text, dataFormat));\n }\n });\n\n binders.visible = Binder.extend({\n refresh: function() {\n if (this.bindings.visible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.invisible = Binder.extend({\n refresh: function() {\n if (!this.bindings.invisible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.html = Binder.extend({\n refresh: function() {\n this.element.innerHTML = this.bindings.html.get();\n }\n });\n\n binders.value = TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n\n this._change = this.change.bind(this);\n this.eventName = options.valueUpdate || CHANGE;\n\n $(this.element).on(this.eventName, this._change);\n\n this._initChange = false;\n },\n\n change: function() {\n this._initChange = this.eventName != CHANGE;\n\n this.bindings[VALUE].set(this.parsedValue());\n\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var value = this.bindings[VALUE].get();\n\n if (value == null) {\n value = \"\";\n }\n\n var type = this.dataType();\n\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n this.element.value = value;\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n $(this.element).off(this.eventName, this._change);\n }\n });\n\n binders.source = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n\n var source = this.bindings.source.get();\n\n if (source instanceof kendo.data.DataSource && options.autoBind !== false) {\n source.fetch();\n }\n },\n\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action != \"itemchange\") {\n that.render();\n }\n } else {\n that.render();\n }\n },\n\n container: function() {\n var element = this.element;\n\n if (element.nodeName.toLowerCase() == \"table\") {\n if (!element.tBodies[0]) {\n element.appendChild(document.createElement(\"tbody\"));\n }\n element = element.tBodies[0];\n }\n\n return element;\n },\n\n template: function() {\n var options = this.options,\n template = options.template,\n nodeName = this.container().nodeName.toLowerCase();\n\n if (!template) {\n if (nodeName == \"select\") {\n if (options.valueField || options.textField) {\n template = function (data) {\n var valueAttr = kendo.getter(options.valueField || options.textField)(data);\n var innerText = kendo.getter(options.textField || options.valueField)(data);\n return (\"\");\n };\n } else {\n template = function (data) { return (\"\"); };\n }\n } else if (nodeName == \"tbody\") {\n template = function (data) { return (\"\" + (encode(data)) + \"\"); };\n } else if (nodeName == \"ul\" || nodeName == \"ol\") {\n template = function (data) { return (\"
  • \" + (encode(data)) + \"
  • \"); };\n } else {\n template = function (data) { return (\"\" + (encode(data))); };\n }\n template = kendo.template(template);\n }\n\n return template;\n },\n\n add: function(index, items) {\n var element = this.container(),\n parents,\n idx,\n length,\n child,\n clone = element.cloneNode(false),\n reference = element.children[index];\n\n $(clone).html(kendo.render(this.template(), items));\n\n if (clone.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n child = clone.children[0];\n element.insertBefore(child, reference || null);\n bindElement(child, items[idx], this.options.roles, [items[idx]].concat(parents));\n }\n }\n },\n\n remove: function(index, items) {\n var idx, element = this.container();\n\n for (idx = 0; idx < items.length; idx++) {\n var child = element.children[index];\n unbindElementTree(child, true);\n if (child.parentNode == element) {\n element.removeChild(child);\n }\n }\n },\n\n render: function() {\n var source = this.bindings.source.get(),\n parents,\n idx,\n length,\n element = this.container(),\n template = this.template();\n\n if (source == null) {\n return;\n }\n\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n if (!(source instanceof ObservableArray) && toString.call(source) !== \"[object Array]\") {\n source = [source];\n }\n\n if (this.bindings.template) {\n unbindElementChildren(element, true);\n\n $(element).html(this.bindings.template.render(source));\n\n if (element.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n bindElement(element.children[idx], source[idx], this.options.roles, [source[idx]].concat(parents));\n }\n }\n } else {\n $(element).html(kendo.render(template, source));\n }\n }\n });\n\n binders.input = {\n checked: TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = this.change.bind(this);\n\n $(this.element).change(this._change);\n },\n\n change: function() {\n var element = this.element;\n var value = this.value();\n\n if (element.type == \"radio\") {\n value = this.parsedValue();\n this.bindings[CHECKED].set(value);\n } else if (element.type == \"checkbox\") {\n var source = this.bindings[CHECKED].get();\n var index;\n\n if (source instanceof ObservableArray) {\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n if (index > -1) {\n source.splice(index, 1);\n } else {\n source.push(value);\n }\n } else {\n this.bindings[CHECKED].set(value);\n }\n }\n },\n\n refresh: function() {\n var value = this.bindings[CHECKED].get(),\n source = value,\n type = this.dataType(),\n element = this.element;\n\n if (element.type == \"checkbox\") {\n if (source instanceof ObservableArray) {\n var index = -1;\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n element.checked = (index >= 0);\n } else {\n element.checked = source;\n }\n } else if (element.type == \"radio\") {\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n if (value !== null && typeof(value) !== \"undefined\" && element.value === value.toString()) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n binders.select = {\n source: binders.source.extend({\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action == \"itemchange\" || e.action === undefined$1) {\n that.render();\n if (that.bindings.value) {\n if (that.bindings.value) {\n var val = retrievePrimitiveValues(that.bindings.value.get(), $(that.element).data(\"valueField\"));\n if (val === null) {\n that.element.selectedIndex = -1;\n } else {\n that.element.value = val;\n }\n }\n }\n }\n } else {\n that.render();\n }\n }\n }),\n value: TypedBinder.extend({\n init: function(target, bindings, options) {\n TypedBinder.fn.init.call(this, target, bindings, options);\n\n this._change = this.change.bind(this);\n $(this.element).change(this._change);\n },\n\n parsedValue: function() {\n var dataType = this.dataType();\n var values = [];\n var value, option, idx, length;\n for (idx = 0, length = this.element.options.length; idx < length; idx++) {\n option = this.element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n values.push(this._parseValue(value, dataType));\n }\n }\n return values;\n },\n\n change: function() {\n var values = [],\n element = this.element,\n source,\n field = this.options.valueField || this.options.textField,\n valuePrimitive = this.options.valuePrimitive,\n option,\n valueIndex,\n value,\n idx,\n length;\n\n for (idx = 0, length = element.options.length; idx < length; idx++) {\n option = element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n if (field) {\n values.push(value);\n } else {\n values.push(this._parseValue(value, this.dataType()));\n }\n\n }\n }\n\n if (field) {\n source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n for (valueIndex = 0; valueIndex < values.length; valueIndex++) {\n for (idx = 0, length = source.length; idx < length; idx++) {\n var sourceValue = source[idx].get(field);\n var match = (String(sourceValue) === values[valueIndex]);\n if (match) {\n values[valueIndex] = source[idx];\n break;\n }\n }\n }\n }\n\n value = this.bindings[VALUE].get();\n if (value instanceof ObservableArray) {\n value.splice.apply(value, [0, value.length].concat(values));\n } else if (!valuePrimitive && (value instanceof ObservableObject || value === null || value === undefined$1 || !field)) {\n this.bindings[VALUE].set(values[0]);\n } else {\n this.bindings[VALUE].set(values[0].get(field));\n }\n },\n refresh: function() {\n var optionIndex,\n element = this.element,\n options = element.options,\n value = this.bindings[VALUE].get(),\n values = value,\n field = this.options.valueField || this.options.textField,\n found = false,\n type = this.dataType(),\n optionValue;\n\n if (!(values instanceof ObservableArray)) {\n values = new ObservableArray([value]);\n }\n\n element.selectedIndex = -1;\n\n for (var valueIndex = 0; valueIndex < values.length; valueIndex++) {\n value = values[valueIndex];\n\n\n if (field && value instanceof ObservableObject) {\n value = value.get(field);\n }\n\n if (type == \"date\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n for (optionIndex = 0; optionIndex < options.length; optionIndex++) {\n optionValue = options[optionIndex].value;\n\n if (optionValue === \"\" && value !== \"\") {\n optionValue = options[optionIndex].text;\n }\n\n if (value != null && optionValue == value.toString()) {\n options[optionIndex].selected = true;\n found = true;\n }\n }\n }\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n function dataSourceBinding(bindingName, fieldName, setter) {\n return Binder.extend({\n init: function(widget, bindings, options) {\n var that = this;\n\n Binder.fn.init.call(that, widget.element[0], bindings, options);\n\n that.widget = widget;\n that._dataBinding = that.dataBinding.bind(that);\n that._dataBound = that.dataBound.bind(that);\n that._itemChange = that.itemChange.bind(that);\n },\n\n itemChange: function(e) {\n bindElement(e.item[0], e.data, this._ns(e.ns), [e.data].concat(this.bindings[bindingName]._parents()));\n },\n\n dataBinding: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.removedItems || widget.items();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n unbindElementTree(items[idx], false);\n }\n },\n\n _ns: function(ns) {\n ns = ns || kendo.ui;\n var all = [ kendo.ui, kendo.dataviz.ui, kendo.mobile.ui ];\n all.splice($.inArray(ns, all), 1);\n all.unshift(ns);\n\n return kendo.rolesFromNamespaces(all);\n },\n\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.addedItems || widget.items(),\n dataSource = widget[fieldName],\n view,\n parents,\n hds = kendo.data.HierarchicalDataSource;\n\n if (hds && dataSource instanceof hds) {\n // suppress binding of HDS items, because calling view() on root\n // will return only root items, and widget.items() returns all items\n return;\n }\n\n if (items.length) {\n view = e.addedDataItems || dataSource.flatView();\n parents = this.bindings[bindingName]._parents();\n\n for (idx = 0, length = view.length; idx < length; idx++) {\n if (items[idx]) {\n bindElement(items[idx], view[idx], this._ns(e.ns), [view[idx]].concat(parents));\n }\n }\n }\n },\n\n refresh: function(e) {\n var that = this,\n source,\n widget = that.widget,\n select, multiselect, dropdowntree;\n\n e = e || {};\n\n if (!e.action) {\n that.destroy();\n\n widget.bind(\"dataBinding\", that._dataBinding);\n widget.bind(\"dataBound\", that._dataBound);\n widget.bind(\"itemChange\", that._itemChange);\n\n source = that.bindings[bindingName].get();\n\n if (widget[fieldName] instanceof kendo.data.DataSource && widget[fieldName] != source) {\n if (source instanceof kendo.data.DataSource) {\n widget[setter](source);\n } else if (source && source._dataSource) {\n widget[setter](source._dataSource);\n } else {\n select = kendo.ui.Select && widget instanceof kendo.ui.Select;\n multiselect = kendo.ui.MultiSelect && widget instanceof kendo.ui.MultiSelect;\n dropdowntree = kendo.ui.DropDownTree && widget instanceof kendo.ui.DropDownTree;\n\n if (!dropdowntree) {\n widget[fieldName].data(source);\n } else {\n widget.treeview[fieldName].data(source);\n }\n\n if (that.bindings.value && (select || multiselect)) {\n widget.value(retrievePrimitiveValues(that.bindings.value.get(), widget.options.dataValueField));\n }\n }\n }\n }\n },\n\n destroy: function() {\n var widget = this.widget;\n\n widget.unbind(\"dataBinding\", this._dataBinding);\n widget.unbind(\"dataBound\", this._dataBound);\n widget.unbind(\"itemChange\", this._itemChange);\n }\n });\n }\n\n binders.widget = {\n events: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this.handlers = {};\n },\n\n refresh: function(key) {\n var binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n this.widget.unbind(key, handler);\n }\n\n handler = binding.get();\n\n this.handlers[key] = function(e) {\n e.data = binding.source;\n\n handler(e);\n\n if (e.data === binding.source) {\n delete e.data;\n }\n };\n\n this.widget.bind(key, this.handlers[key]);\n },\n\n destroy: function() {\n var handler;\n\n for (handler in this.handlers) {\n this.widget.unbind(handler, this.handlers[handler]);\n }\n }\n }),\n\n checked: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.bind(CHANGE, this._change);\n },\n change: function() {\n this.bindings[CHECKED].set(this.value());\n },\n\n refresh: function() {\n var val = this.bindings[CHECKED].get();\n\n if (this.element.type === \"radio\") {\n if (val !== undefined$1) {\n this.widget.check(val.toString() === this.value());\n } else {\n this.widget.check(false);\n }\n } else {\n this.widget.check(val === true);\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (value == \"on\" || value == \"off\" || this.element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n start: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.start.set(this.widget.range().start);\n },\n\n refresh: function() {\n var that = this;\n var start = this.bindings.start.get();\n var end = that.widget._range ? that.widget._range.end : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n end: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.end.set(this.widget.range().end);\n },\n\n refresh: function() {\n var that = this;\n var end = this.bindings.end.get();\n var start = that.widget._range ? that.widget._range.start : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n visible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var visible = this.bindings.visible.get();\n this.widget.wrapper[0].style.display = visible ? \"\" : \"none\";\n }\n }),\n\n invisible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var invisible = this.bindings.invisible.get();\n this.widget.wrapper[0].style.display = invisible ? \"none\" : \"\";\n }\n }),\n\n floatingLabel: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n if (!widget.floatingLabel) {\n return;\n }\n\n widget.floatingLabel.refresh();\n }\n }),\n\n enabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(this.bindings.enabled.get());\n }\n }\n }),\n\n disabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(!this.bindings.disabled.get());\n }\n }\n }),\n\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\"),\n\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n\n var value = this.bindings.value.get();\n\n this._valueIsObservableObject = !options.valuePrimitive && (value == null || value instanceof ObservableObject);\n this._valueIsObservableArray = value instanceof ObservableArray;\n this._initChange = false;\n },\n\n _source: function() {\n var source;\n\n if (this.widget.dataItem) {\n source = this.widget.dataItem();\n if (source && source instanceof ObservableObject) {\n return [source];\n }\n }\n\n if (this.bindings.source) {\n source = this.bindings.source.get();\n }\n\n if (!source || source instanceof kendo.data.DataSource) {\n source = this.widget.dataSource.flatView();\n }\n\n return source;\n },\n\n change: function() {\n var value = this.widget.value(),\n field = this.options.dataValueField || this.options.dataTextField,\n isArray = toString.call(value) === \"[object Array]\",\n isObservableObject = this._valueIsObservableObject,\n valueIndex, valueLength, values = [],\n sourceItem, sourceValue,\n idx, length, source;\n\n this._initChange = true;\n\n if (field) {\n\n if (value === \"\" && (isObservableObject || this.options.valuePrimitive)) {\n value = null;\n } else {\n source = this._source();\n\n if (isArray) {\n valueLength = value.length;\n values = value.slice(0);\n }\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n sourceItem = source[idx];\n sourceValue = sourceItem.get(field);\n\n if (isArray) {\n for (valueIndex = 0; valueIndex < valueLength; valueIndex++) {\n if (sourceValue == values[valueIndex]) {\n values[valueIndex] = sourceItem;\n break;\n }\n }\n } else if (sourceValue == value) {\n value = isObservableObject ? sourceItem : sourceValue;\n break;\n }\n }\n\n if (values[0]) {\n if (this._valueIsObservableArray) {\n value = values;\n } else if (isObservableObject || !field) {\n value = values[0];\n } else {\n value = values[0].get(field);\n }\n }\n }\n }\n\n this.bindings.value.set(value);\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var widget = this.widget;\n var options = widget.options;\n var textField = options.dataTextField;\n var valueField = options.dataValueField || textField;\n var value = this.bindings.value.get();\n var text = options.text || \"\";\n var idx = 0, length;\n var values = [];\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (valueField) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n values[idx] = value[idx].get(valueField);\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n text = value.get(textField);\n value = value.get(valueField);\n }\n }\n\n if (options.autoBind === false && !options.cascadeFrom && widget.listView && !widget.listView.bound()) {\n if (textField === valueField && !text) {\n text = value;\n }\n\n if (!text && (value || value === 0) && options.valuePrimitive) {\n widget.value(value);\n } else {\n widget._preselect(value, text);\n }\n } else {\n widget.value(value);\n }\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n dropdowntree: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n selectedNode = that.widget.treeview.select(),\n nonPrimitiveValues = that.widget._isMultipleSelection() ? that.widget._getAllChecked() : (that.widget.treeview.dataItem(selectedNode) || that.widget.value()),\n newValues = (valuePrimitive || that.widget.options.autoBind === false) ? that.widget.value() : nonPrimitiveValues;\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice ? newValues.slice(0) : newValues;\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n var newLength = newValues.length;\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n if (options.autoBind === false && options.valuePrimitive !== true) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n })\n },\n gantt: {\n dependencies: dataSourceBinding(\"dependencies\", \"dependencies\", \"setDependenciesDataSource\")\n },\n\n multiselect: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n newValues = valuePrimitive ? that.widget.value() : that.widget.dataItems();\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice(0);\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n\n var newLength = newValues.length;\n\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n\n if (options.autoBind === false && options.valuePrimitive !== true && !widget._isBound()) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n\n })\n },\n scheduler: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx;\n var length;\n var widget = this.widget;\n var elements = e.addedItems || widget.items();\n var data, parents;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n grid: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n elements = e.addedItems || widget.items(),\n parents,\n data;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n badge: {\n text: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n refresh: function() {\n var text = this.bindings.text.get();\n\n if (text == null) {\n text = \"\";\n }\n this.widget.text(text);\n }\n })\n }\n };\n\n var arraySplice = function(arr, idx, remove, add) {\n add = add || [];\n remove = remove || 0;\n\n var addLength = add.length;\n var oldLength = arr.length;\n\n var shifted = [].slice.call(arr, idx + remove);\n var shiftedLength = shifted.length;\n var index;\n\n if (addLength) {\n addLength = idx + addLength;\n index = 0;\n\n for (; idx < addLength; idx++) {\n arr[idx] = add[index];\n index++;\n }\n\n arr.length = addLength;\n } else if (remove) {\n arr.length = idx;\n\n remove += idx;\n while (idx < remove) {\n delete arr[--remove];\n }\n }\n\n if (shiftedLength) {\n shiftedLength = idx + shiftedLength;\n index = 0;\n\n for (; idx < shiftedLength; idx++) {\n arr[idx] = shifted[index];\n index++;\n }\n\n arr.length = shiftedLength;\n }\n\n idx = arr.length;\n\n while (idx < oldLength) {\n delete arr[idx];\n idx++;\n }\n };\n\n var BindingTarget = Class.extend( {\n init: function(target, options) {\n this.target = target;\n this.options = options;\n this.toDestroy = [];\n },\n\n bind: function(bindings) {\n var key,\n hasValue,\n hasSource,\n hasEvents,\n hasChecked,\n hasCss,\n widgetBinding = this instanceof WidgetBindingTarget,\n specificBinders = this.binders();\n\n for (key in bindings) {\n if (key == VALUE) {\n hasValue = true;\n } else if (key == SOURCE) {\n hasSource = true;\n } else if (key == EVENTS && !widgetBinding) {\n hasEvents = true;\n } else if (key == CHECKED) {\n hasChecked = true;\n } else if (key == CSS) {\n hasCss = true;\n } else {\n this.applyBinding(key, bindings, specificBinders);\n }\n }\n if (hasSource) {\n this.applyBinding(SOURCE, bindings, specificBinders);\n }\n\n if (hasValue) {\n this.applyBinding(VALUE, bindings, specificBinders);\n }\n\n if (hasChecked) {\n this.applyBinding(CHECKED, bindings, specificBinders);\n }\n\n if (hasEvents && !widgetBinding) {\n this.applyBinding(EVENTS, bindings, specificBinders);\n }\n\n if (hasCss && !widgetBinding) {\n this.applyBinding(CSS, bindings, specificBinders);\n }\n\n if (widgetBinding && this.target && this.target.floatingLabel) {\n this.applyBinding(\"floatingLabel\", bindings, specificBinders);\n }\n },\n\n binders: function() {\n return binders[this.target.nodeName.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.options);\n\n toDestroy.push(binder);\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else if (name !== \"template\") {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.nodeName.toLowerCase() + \" element\");\n }\n },\n\n destroy: function() {\n var idx,\n length,\n toDestroy = this.toDestroy;\n\n for (idx = 0, length = toDestroy.length; idx < length; idx++) {\n toDestroy[idx].destroy();\n }\n }\n });\n\n var WidgetBindingTarget = BindingTarget.extend( {\n binders: function() {\n return binders.widget[this.target.options.name.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders.widget[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.target.options);\n\n toDestroy.push(binder);\n\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.options.name + \" widget\");\n }\n }\n });\n\n function bindingTargetForRole(element, roles) {\n var widget = kendo.initWidget(element, {}, roles);\n\n if (widget) {\n return new WidgetBindingTarget(widget);\n }\n }\n\n var keyValueRegExp = /[A-Za-z0-9_\\-]+:(\\{([^}]*)\\}|[^,}]+)/g,\n whiteSpaceRegExp = /\\s/g;\n\n function parseBindings(bind) {\n var result = {},\n idx,\n length,\n token,\n colonIndex,\n key,\n value,\n tokens;\n\n tokens = bind.match(keyValueRegExp);\n\n for (idx = 0, length = tokens.length; idx < length; idx++) {\n token = tokens[idx];\n colonIndex = token.indexOf(\":\");\n\n key = token.substring(0, colonIndex);\n value = token.substring(colonIndex + 1);\n\n if (value.charAt(0) == \"{\") {\n value = parseBindings(value);\n }\n\n result[key] = value;\n }\n\n return result;\n }\n\n function createBindings(bindings, source, type) {\n var binding,\n result = {};\n\n for (binding in bindings) {\n result[binding] = new type(source, bindings[binding]);\n }\n\n return result;\n }\n\n function bindElement(element, source, roles, parents) {\n\n if (!element || element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n return;\n }\n\n var role = element.getAttribute(\"data-\" + kendo.ns + \"role\"),\n idx,\n bind = element.getAttribute(\"data-\" + kendo.ns + \"bind\"),\n childrenCopy = [],\n deep = true,\n bindings,\n options = {},\n target;\n\n parents = parents || [source];\n\n if (role || bind) {\n unbindElement(element, false);\n }\n\n if (role) {\n target = bindingTargetForRole(element, roles);\n }\n\n if (bind) {\n bind = parseBindings(bind.replace(whiteSpaceRegExp, \"\"));\n\n if (!target) {\n options = kendo.parseOptions(element, { textField: \"\", valueField: \"\", template: \"\", valueUpdate: CHANGE, valuePrimitive: false, autoBind: true }, source);\n options.roles = roles;\n target = new BindingTarget(element, options);\n }\n\n target.source = source;\n\n bindings = createBindings(bind, parents, Binding);\n\n if (options.template) {\n bindings.template = new TemplateBinding(parents, \"\", options.template);\n }\n\n if (bindings.click) {\n bind.events = bind.events || {};\n bind.events.click = bind.click;\n bindings.click.destroy();\n delete bindings.click;\n }\n\n if (bindings.source) {\n deep = false;\n }\n\n if (bind.attr) {\n bindings.attr = createBindings(bind.attr, parents, Binding);\n }\n\n if (bind.style) {\n bindings.style = createBindings(bind.style, parents, Binding);\n }\n\n if (bind.events) {\n bindings.events = createBindings(bind.events, parents, EventBinding);\n }\n\n if (bind.css) {\n bindings.css = createBindings(bind.css, parents, Binding);\n }\n\n target.bind(bindings);\n }\n\n if (target) {\n element.kendoBindingTarget = target;\n }\n\n var children = element.children;\n if (deep && children && !element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n // https://github.com/telerik/kendo/issues/1240 for the weirdness.\n for (idx = 0; idx < children.length; idx++) {\n childrenCopy[idx] = children[idx];\n }\n\n for (idx = 0; idx < childrenCopy.length; idx++) {\n bindElement(childrenCopy[idx], source, roles, parents);\n }\n }\n }\n\n function bind(dom, object) {\n var idx,\n length,\n node,\n roles = kendo.rolesFromNamespaces([].slice.call(arguments, 2));\n\n object = kendo.observable(object);\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++) {\n node = dom[idx];\n if (node.nodeType === 1) {\n bindElement(node, object, roles);\n }\n }\n }\n\n function unbindElement(element, destroyWidget) {\n var bindingTarget = element.kendoBindingTarget;\n\n if (bindingTarget) {\n bindingTarget.destroy();\n\n if (deleteExpando) {\n delete element.kendoBindingTarget;\n } else if (element.removeAttribute) {\n element.removeAttribute(\"kendoBindingTarget\");\n } else {\n element.kendoBindingTarget = null;\n }\n }\n\n if (destroyWidget) {\n var widget = kendo.widgetInstance($(element));\n if (widget && typeof widget.destroy === FUNCTION) {\n widget.destroy();\n }\n }\n }\n\n function unbindElementTree(element, destroyWidgets) {\n unbindElement(element, destroyWidgets);\n\n unbindElementChildren(element, destroyWidgets);\n }\n\n function unbindElementChildren(element, destroyWidgets) {\n var children = element.children;\n\n if (children) {\n for (var idx = 0, length = children.length; idx < length; idx++) {\n unbindElementTree(children[idx], destroyWidgets);\n }\n }\n }\n\n function unbind(dom) {\n var idx, length;\n\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++ ) {\n unbindElementTree(dom[idx], false);\n }\n }\n\n function notify(widget, namespace) {\n var element = widget.element,\n bindingTarget = element[0].kendoBindingTarget;\n\n if (bindingTarget) {\n bind(element, bindingTarget.source, namespace);\n }\n }\n\n function retrievePrimitiveValues(value, valueField) {\n var values = [];\n var idx = 0;\n var length;\n var item;\n\n if (!valueField) {\n return value;\n }\n\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n item = value[idx];\n values[idx] = item.get ? item.get(valueField) : item[valueField];\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(valueField);\n }\n\n return value;\n }\n\n kendo.unbind = unbind;\n kendo.bind = bind;\n kendo.data.binders = binders;\n kendo.data.Binder = Binder;\n kendo.notify = notify;\n\n kendo.observable = function(object) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n return object;\n };\n\n kendo.observableHierarchy = function(array) {\n var dataSource = kendo.data.HierarchicalDataSource.create(array);\n\n function recursiveRead(data) {\n var i, children;\n\n for (i = 0; i < data.length; i++) {\n data[i]._initChildren();\n\n children = data[i].children;\n\n children.fetch();\n\n data[i].items = children.data();\n\n recursiveRead(data[i].items);\n }\n }\n\n dataSource.fetch();\n\n recursiveRead(dataSource.data());\n\n dataSource._data._dataSource = dataSource;\n\n return dataSource._data;\n };\n\n })(window.kendo.jQuery);\n var kendo$T = kendo;\n\n var __meta__$R = {\n id: \"view\",\n name: \"View\",\n category: \"framework\",\n description: \"The View class instantiates and handles the events of a certain screen from the application.\",\n depends: [ \"core\", \"binder\", \"fx\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n attr = kendo.attr,\n ui = kendo.ui,\n attrValue = kendo.attrValue,\n directiveSelector = kendo.directiveSelector,\n Observable = kendo.Observable,\n Widget = kendo.ui.Widget,\n roleSelector = kendo.roleSelector,\n\n SCRIPT = \"SCRIPT\",\n INIT = \"init\",\n TRANSITION_START = \"transitionStart\",\n TRANSITION_END = \"transitionEnd\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ATTACH = \"attach\",\n DETACH = \"detach\",\n sizzleErrorRegExp = /unrecognized expression/;\n\n var bodyRegExp = /]*>(([\\u000a\\u000d\\u2028\\u2029]|.)*)<\\/body>/i;\n var LOAD_START = \"loadStart\";\n var LOAD_COMPLETE = \"loadComplete\";\n var SHOW_START = \"showStart\";\n var SAME_VIEW_REQUESTED = \"sameViewRequested\";\n var VIEW_SHOW = \"viewShow\";\n var VIEW_TYPE_DETERMINED = \"viewTypeDetermined\";\n var AFTER = \"after\";\n var classNames = {\n content: \"k-content\",\n view: \"k-view\",\n stretchedView: \"k-stretched-view\",\n widget: \"k-widget\",\n header: \"k-header\",\n footer: \"k-footer\"\n };\n\n var View = kendo.ui.Widget.extend({\n init: function(content, options) {\n var that = this;\n options = options || {};\n that.id = kendo.guid();\n\n Observable.fn.init.call(that);\n this.options = $.extend({}, this.options, options);\n\n that.content = content;\n\n if (that.options.renderOnInit) {\n Widget.fn.init.call(that, that._createElement(), options);\n }\n\n if (that.options.wrapInSections) {\n that._renderSections();\n }\n\n that.tagName = options.tagName || \"div\";\n that.model = options.model;\n that._wrap = options.wrap !== false;\n this._evalTemplate = options.evalTemplate || false;\n this._useWithBlock = options.useWithBlock;\n that._fragments = {};\n\n that.bind([ INIT, SHOW, HIDE, TRANSITION_START, TRANSITION_END ], options);\n },\n\n options: {\n name: \"View\",\n renderOnInit: false,\n wrapInSections: false,\n detachOnHide: true,\n detachOnDestroy: true\n },\n\n render: function(container) {\n var that = this,\n notInitialized = !that.element;\n\n // The order below matters - kendo.bind should happen when the element is in the DOM, and show should be triggered after init.\n\n if (notInitialized) {\n that.element = that._createElement();\n }\n\n if (container) {\n $(container).append(that.element);\n }\n\n if (notInitialized) {\n kendo.bind(that.element, that.model);\n that.trigger(INIT);\n }\n\n if (container) {\n that._eachFragment(ATTACH);\n that.trigger(SHOW);\n }\n\n return that.element;\n },\n\n clone: function() {\n return new ViewClone(this);\n },\n\n triggerBeforeShow: function() {\n return true;\n },\n\n triggerBeforeHide: function() {\n return true;\n },\n\n showStart: function() {\n var that = this;\n var element = that.render();\n\n if (element) {\n element.css(\"display\", \"\");\n }\n\n this.trigger(SHOW_START, { view: this });\n },\n\n showEnd: function() {\n },\n\n hideEnd: function() {\n this.hide();\n },\n\n beforeTransition: function(type) {\n this.trigger(TRANSITION_START, { type: type });\n },\n\n afterTransition: function(type) {\n this.trigger(TRANSITION_END, { type: type });\n },\n\n hide: function() {\n if (this.options.detachOnHide) {\n this._eachFragment(DETACH);\n $(this.element).detach();\n }\n\n this.trigger(HIDE);\n },\n\n destroy: function() {\n var that = this;\n var element = that.element;\n\n if (element) {\n Widget.fn.destroy.call(that);\n\n kendo.unbind(element);\n kendo.destroy(element);\n\n if (that.options.detachOnDestroy) {\n element.remove();\n }\n }\n },\n\n // ported from mobile view\n purge: function() {\n var that = this;\n\n that.destroy();\n $(that.element).add(that.content).add(that.wrapper).off().remove();\n },\n\n fragments: function(fragments) {\n $.extend(this._fragments, fragments);\n },\n\n _eachFragment: function(methodName) {\n for (var placeholder in this._fragments) {\n this._fragments[placeholder][methodName](this, placeholder);\n }\n },\n\n _createElement: function() {\n var that = this,\n wrapper = \"<\" + that.tagName + \">\",\n element,\n content;\n\n try {\n content = $(document.getElementById(that.content) || that.content); // support passing id without #\n\n if (content[0].tagName === SCRIPT) {\n content = content.html();\n }\n } catch (e) {\n if (sizzleErrorRegExp.test(e.message)) {\n content = that.content;\n }\n }\n\n if (typeof content === \"string\") {\n content = content.replace(/^\\s+|\\s+$/g, '');\n if (that._evalTemplate) {\n content = kendo.template(content, { useWithBlock: that._useWithBlock })(that.model || {});\n }\n\n element = $(wrapper).append(content);\n // drop the wrapper if asked - this seems like the easiest (although not very intuitive) way to avoid messing up templates with questionable content, like this one for instance:\n // \n if (!that._wrap) {\n element = element.contents();\n }\n } else {\n element = content;\n if (that._evalTemplate) {\n var result = $(kendo.template($(\"
    \").append(element.clone(true)).html(), { useWithBlock: that._useWithBlock })(that.model || {}));\n\n // template uses DOM\n if ($.contains(document, element[0])) {\n element.replaceWith(result);\n }\n\n element = result;\n }\n if (that._wrap) {\n element = element.wrapAll(wrapper).parent();\n }\n }\n\n return element;\n },\n\n _renderSections: function() {\n var that = this;\n\n if (that.options.wrapInSections) {\n that._wrapper();\n that._createContent();\n that._createHeader();\n that._createFooter();\n }\n },\n\n _wrapper: function() {\n var that = this;\n var content = that.content;\n\n if (content.is(roleSelector(\"view\"))) {\n that.wrapper = that.content;\n } else {\n that.wrapper = content\n .wrap('
    ')\n .parent();\n }\n\n var wrapper = that.wrapper;\n\n wrapper.attr(\"id\", that.id);\n\n wrapper.addClass(classNames.view);\n wrapper.addClass(classNames.widget);\n wrapper.attr(\"role\", \"view\");\n },\n\n _createContent: function() {\n var that = this;\n var wrapper = $(that.wrapper);\n var contentSelector = roleSelector(\"content\");\n\n if (!wrapper.children(contentSelector)[0]) {\n var ccontentElements = wrapper.children().filter(function() {\n var child = $(this);\n if (!child.is(roleSelector(\"header\")) && !child.is(roleSelector(\"footer\"))) {\n return child;\n }\n });\n\n ccontentElements.wrap(\"
    ');\n }\n\n // use contentElement instead of content as view.content can be a string\n this.contentElement = wrapper.children(roleSelector(\"content\"));\n\n this.contentElement\n .addClass(classNames.stretchedView)\n .addClass(classNames.content);\n },\n\n _createHeader: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.header = wrapper.children(roleSelector(\"header\")).addClass(classNames.header);\n },\n\n _createFooter: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.footer = wrapper.children(roleSelector(\"footer\")).addClass(classNames.footer);\n }\n });\n\n var ViewClone = kendo.Class.extend({\n init: function(view) {\n $.extend(this, {\n element: view.element.clone(true),\n transition: view.transition,\n id: view.id\n });\n\n view.element.parent().append(this.element);\n },\n\n hideEnd: function() {\n this.element.remove();\n },\n\n beforeTransition: $.noop,\n afterTransition: $.noop\n });\n\n var Layout = View.extend({\n init: function(content, options) {\n View.fn.init.call(this, content, options);\n this.containers = {};\n },\n\n container: function(selector) {\n var container = this.containers[selector];\n\n if (!container) {\n container = this._createContainer(selector);\n this.containers[selector] = container;\n }\n\n return container;\n },\n\n showIn: function(selector, view, transition) {\n this.container(selector).show(view, transition);\n },\n\n _createContainer: function(selector) {\n var root = this.render(),\n element = root.find(selector),\n container;\n\n if (!element.length && root.is(selector)) {\n if (root.is(selector)) {\n element = root;\n } else {\n\n throw new Error(\"can't find a container with the specified \" + selector + \" selector\");\n }\n }\n\n container = new ViewContainer(element);\n\n container.bind(\"accepted\", function(e) {\n e.view.render(element);\n });\n\n return container;\n }\n });\n\n var Fragment = View.extend({\n attach: function(view, placeholder) {\n view.element.find(placeholder).replaceWith(this.render());\n },\n\n detach: function() {\n }\n });\n\n var transitionRegExp = /^(\\w+)(:(\\w+))?( (\\w+))?$/;\n\n function parseTransition(transition) {\n if (!transition) {\n return {};\n }\n\n var matches = transition.match(transitionRegExp) || [];\n\n return {\n type: matches[1],\n direction: matches[3],\n reverse: matches[5] === \"reverse\"\n };\n }\n\n var ViewContainer = Observable.extend({\n init: function(container) {\n Observable.fn.init.call(this);\n this.container = container;\n this.history = [];\n this.view = null;\n this.running = false;\n },\n\n after: function() {\n this.running = false;\n this.trigger(\"complete\", { view: this.view });\n this.trigger(\"after\");\n },\n\n end: function() {\n this.view.showEnd();\n this.previous.hideEnd();\n this.after();\n },\n\n show: function(view, transition, locationID) {\n if (!view.triggerBeforeShow() || (this.view && !this.view.triggerBeforeHide())) {\n this.trigger(\"after\");\n return false;\n }\n\n locationID = locationID || view.id;\n\n var that = this,\n current = (view === that.view) ? view.clone() : that.view,\n history = that.history,\n previousEntry = history[history.length - 2] || {},\n back = previousEntry.id === locationID,\n // If explicit transition is set, it will be with highest priority\n // Next we will try using the history record transition or the view transition configuration\n theTransition = transition || ( back ? history[history.length - 1].transition : view.transition ),\n transitionData = parseTransition(theTransition);\n\n if (that.running) {\n that.effect.stop();\n }\n\n if (theTransition === \"none\") {\n theTransition = null;\n }\n\n that.trigger(\"accepted\", { view: view });\n that.view = view;\n that.previous = current;\n that.running = true;\n\n if (!back) {\n history.push({ id: locationID, transition: theTransition });\n } else {\n history.pop();\n }\n\n if (!current) {\n view.showStart();\n view.showEnd();\n that.after();\n return true;\n }\n\n if (!theTransition || !kendo.effects.enabled) {\n view.showStart();\n that.end();\n } else {\n // hide the view element before init/show - prevents blinks on iPad\n // the replace effect will remove this class\n view.element.addClass(\"k-fx-hidden\");\n view.showStart();\n // do not reverse the explicit transition\n if (back && !transition) {\n transitionData.reverse = !transitionData.reverse;\n }\n\n that.effect = kendo.fx(view.element).replace(current.element, transitionData.type)\n .beforeTransition(function() {\n view.beforeTransition(\"show\");\n current.beforeTransition(\"hide\");\n })\n .afterTransition(function() {\n view.afterTransition(\"show\");\n current.afterTransition(\"hide\");\n })\n .direction(transitionData.direction)\n .setReverse(transitionData.reverse);\n\n that.effect.run().then(function() { that.end(); });\n }\n\n return true;\n },\n\n destroy: function() {\n var that = this;\n var view = that.view;\n\n if (view && view.destroy) {\n view.destroy();\n }\n }\n });\n\n var ViewEngine = Observable.extend({\n init: function(options) {\n var that = this,\n views,\n container;\n\n Observable.fn.init.call(that);\n that.options = options;\n\n $.extend(that, options);\n that.sandbox = $(\"
    \");\n container = that.container;\n\n views = that._hideViews(container);\n that.rootView = views.first();\n that.layouts = {};\n\n that.viewContainer = new kendo.ViewContainer(that.container);\n\n that.viewContainer.bind(\"accepted\", function(e) {\n e.view.params = that.params;\n });\n\n that.viewContainer.bind(\"complete\", function(e) {\n that.trigger(VIEW_SHOW, { view: e.view });\n });\n\n that.viewContainer.bind(AFTER, function() {\n that.trigger(AFTER);\n });\n\n this.bind(this.events, options);\n },\n\n events: [\n SHOW_START,\n AFTER,\n VIEW_SHOW,\n LOAD_START,\n LOAD_COMPLETE,\n SAME_VIEW_REQUESTED,\n VIEW_TYPE_DETERMINED\n ],\n\n destroy: function() {\n var that = this;\n var viewContainer = that.viewContainer;\n\n kendo.destroy(that.container);\n\n for (var id in that.layouts) {\n this.layouts[id].destroy();\n }\n\n if (viewContainer) {\n viewContainer.destroy();\n }\n },\n\n view: function() {\n return this.viewContainer.view;\n },\n\n showView: function(url, transition, params) {\n url = url.replace(new RegExp(\"^\" + this.remoteViewURLPrefix), \"\");\n if (url === \"\" && this.remoteViewURLPrefix) {\n url = \"/\";\n }\n\n if (url.replace(/^#/, \"\") === this.url) {\n this.trigger(SAME_VIEW_REQUESTED);\n return false;\n }\n\n this.trigger(SHOW_START);\n\n var that = this,\n element = that._findViewElement(url),\n view = kendo.widgetInstance(element);\n\n that.url = url.replace(/^#/, \"\");\n\n that.params = params;\n\n if (view && view.reload) {\n view.purge();\n element = [];\n }\n\n this.trigger(VIEW_TYPE_DETERMINED, { remote: element.length === 0, url: url });\n\n if (element[0]) {\n if (!view) {\n view = that._createView(element);\n }\n\n return that.viewContainer.show(view, transition, url);\n } else {\n return true;\n }\n },\n\n append: function(html, url) {\n var sandbox = this.sandbox,\n urlPath = (url || \"\").split(\"?\")[0],\n container = this.container,\n views,\n view;\n\n if (bodyRegExp.test(html)) {\n html = RegExp.$1;\n }\n\n sandbox[0].innerHTML = html;\n\n container.append(sandbox.children(\"script, style\"));\n\n views = this._hideViews(sandbox);\n view = views.first();\n\n // Generic HTML content found as remote view - no remote view markers\n if (!view.length) {\n views = view = sandbox.wrapInner(\"
    \").children(); // one element\n }\n\n if (urlPath) {\n view.hide().attr(attr(\"url\"), urlPath);\n }\n\n container.append(views);\n\n return this._createView(view);\n },\n\n _locate: function(selectors) {\n return this.$angular ? directiveSelector(selectors) : roleSelector(selectors);\n },\n\n _findViewElement: function(url) {\n var element,\n urlPath = url.split(\"?\")[0];\n\n if (!urlPath) {\n return this.rootView;\n }\n\n element = this.container.children(\"[\" + attr(\"url\") + \"='\" + urlPath + \"']\");\n\n // do not try to search for \"#/foo/bar\" id, jQuery throws error\n if (!element[0] && urlPath.indexOf(\"/\") === -1) {\n element = this.container.children(urlPath.charAt(0) === \"#\" ? urlPath : \"#\" + urlPath);\n }\n\n if (!element[0]) {\n element = this._findViewElementById(url);\n }\n\n return element;\n },\n\n _findViewElementById: function(id) {\n var element = this.container.children(\"[id='\" + id + \"']\");\n return element;\n },\n\n _createView: function(element) {\n //return this._createMobileView(element);\n return this._createSpaView(element);\n },\n\n _createMobileView: function(element) {\n return kendo.initWidget(element, {\n defaultTransition: this.transition,\n loader: this.loader,\n container: this.container,\n getLayout: this.getLayoutProxy,\n modelScope: this.modelScope,\n reload: attrValue(element, \"reload\")\n }, ui.roles);\n },\n\n _createSpaView: function(element) {\n var viewOptions = (this.options || {}).viewOptions || {};\n return new kendo.View(element, {\n renderOnInit: viewOptions.renderOnInit,\n wrap: viewOptions.wrap || false,\n wrapInSections: viewOptions.wrapInSections,\n detachOnHide: viewOptions.detachOnHide,\n detachOnDestroy: viewOptions.detachOnDestroy\n });\n },\n\n _hideViews: function(container) {\n return container.children(this._locate(\"view\")).hide();\n }\n });\n\n kendo.ViewEngine = ViewEngine;\n\n kendo.ViewContainer = ViewContainer;\n kendo.Fragment = Fragment;\n kendo.Layout = Layout;\n kendo.View = View;\n kendo.ViewClone = ViewClone;\n\n })(window.kendo.jQuery);\n var kendo$S = kendo;\n\n var __meta__$Q = {\n id: \"data.signalr\",\n name: \"SignalR\",\n category: \"framework\",\n depends: [ \"data\" ],\n hidden: true\n };\n\n (function($) {\n var kendo = window.kendo;\n var isFunction = kendo.isFunction;\n\n function isJQueryPromise(promise) {\n return promise && isFunction(promise.done) && isFunction(promise.fail);\n }\n\n function isNativePromise(promise) {\n return promise && isFunction(promise.then) && isFunction(promise.catch);\n }\n\n var transport = kendo.data.RemoteTransport.extend({\n init: function(options) {\n var signalr = options && options.signalr ? options.signalr : {};\n\n var promise = signalr.promise;\n\n if (!promise) {\n throw new Error('The \"promise\" option must be set.');\n }\n\n if (!isJQueryPromise(promise) && !isNativePromise(promise)) {\n throw new Error('The \"promise\" option must be a Promise.');\n }\n\n this.promise = promise;\n\n var hub = signalr.hub;\n\n if (!hub) {\n throw new Error('The \"hub\" option must be set.');\n }\n\n if (typeof hub.on != \"function\" || typeof hub.invoke != \"function\") {\n throw new Error('The \"hub\" option is not a valid SignalR hub proxy.');\n }\n\n this.hub = hub;\n\n kendo.data.RemoteTransport.fn.init.call(this, options);\n },\n\n push: function(callbacks) {\n var client = this.options.signalr.client || {};\n\n if (client.create) {\n this.hub.on(client.create, callbacks.pushCreate);\n }\n\n if (client.update) {\n this.hub.on(client.update, callbacks.pushUpdate);\n }\n\n if (client.destroy) {\n this.hub.on(client.destroy, callbacks.pushDestroy);\n }\n },\n\n _crud: function(options, type) {\n var hub = this.hub;\n var promise = this.promise;\n var server = this.options.signalr.server;\n\n if (!server || !server[type]) {\n throw new Error(kendo.format('The \"server.{0}\" option must be set.', type));\n }\n\n var args = [server[type]];\n\n var data = this.parameterMap(options.data, type);\n\n if (!$.isEmptyObject(data)) {\n args.push(data);\n }\n\n if (isJQueryPromise(promise)) {\n promise.done(function() {\n hub.invoke.apply(hub, args)\n .done(options.success)\n .fail(options.error);\n });\n } else if (isNativePromise(promise)) {\n promise.then(function() {\n hub.invoke.apply(hub, args)\n .then(options.success)\n .catch(options.error);\n });\n }\n },\n\n read: function(options) {\n this._crud(options, \"read\");\n },\n\n create: function(options) {\n this._crud(options, \"create\");\n },\n\n update: function(options) {\n this._crud(options, \"update\");\n },\n\n destroy: function(options) {\n this._crud(options, \"destroy\");\n }\n });\n\n $.extend(true, kendo.data, {\n transports: {\n signalr: transport\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$R = kendo;\n\n var __meta__$P = {\n id: \"userevents\",\n name: \"User Events\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n Class = kendo.Class,\n Observable = kendo.Observable,\n now = Date.now,\n extend = $.extend,\n OS = support.mobileOS,\n invalidZeroEvents = OS && OS.android,\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, // WP8 and W8 are very sensitive and always report move.\n\n // UserEvents events\n PRESS = \"press\",\n HOLD = \"hold\",\n SELECT = \"select\",\n START = \"start\",\n MOVE = \"move\",\n END = \"end\",\n CANCEL = \"cancel\",\n TAP = \"tap\",\n DOUBLETAP = \"doubleTap\",\n RELEASE = \"release\",\n GESTURESTART = \"gesturestart\",\n GESTURECHANGE = \"gesturechange\",\n GESTUREEND = \"gestureend\",\n GESTURETAP = \"gesturetap\";\n\n var THRESHOLD = {\n \"api\": 0,\n \"touch\": 0,\n \"mouse\": 9,\n \"pointer\": 9\n };\n\n var ENABLE_GLOBAL_SURFACE = (!support.touch || support.mouseAndTouchPresent);\n\n function touchDelta(touch1, touch2) {\n var x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n }\n\n function getTouches(e) {\n var touches = [],\n originalEvent = e.originalEvent,\n currentTarget = e.currentTarget,\n idx = 0, length,\n changedTouches,\n touch;\n\n if (e.api) {\n touches.push({\n id: 2, // hardcoded ID for API call;\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: \"api\"\n });\n }\n else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n for (length = changedTouches.length; idx < length; idx ++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: \"touch\"\n });\n }\n }\n else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: \"pointer\"\n });\n } else {\n touches.push({\n id: 1, // hardcoded ID for mouse event;\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: \"mouse\"\n });\n }\n\n return touches;\n }\n\n var TouchAxis = Class.extend({\n init: function(axis, location) {\n var that = this;\n\n that.axis = axis;\n\n that._updateLocationData(location);\n\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n },\n\n move: function(location) {\n var that = this,\n offset = location[\"page\" + that.axis],\n timeStamp = now(),\n timeDelta = (timeStamp - that.timeStamp) || 1; // Firing manually events in tests can make this 0;\n\n if (!offset && invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n\n that._updateLocationData(location);\n\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n },\n\n _updateLocationData: function(location) {\n var that = this, axis = that.axis;\n\n that.location = location[\"page\" + axis];\n that.client = location[\"client\" + axis];\n that.screen = location[\"screen\" + axis];\n }\n });\n\n var Touch = Class.extend({\n init: function(userEvents, target, touchInfo) {\n extend(this, {\n x: new TouchAxis(\"X\", touchInfo.location),\n y: new TouchAxis(\"Y\", touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n },\n\n press: function() {\n this._holdTimeout = setTimeout(this._hold.bind(this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n },\n\n _tap: function(touchInfo) {\n var that = this;\n that.userEvents._clicks++;\n if (that.userEvents._clicks == 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks == 1) {\n that._trigger(TAP, touchInfo);\n }\n else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n },\n\n _hold: function() {\n this._trigger(HOLD, this.pressEvent);\n },\n\n move: function(touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== \"api\" && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) { return; }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n // Event handlers may cancel the drag in the START event handler, hence the double check for pressed.\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n },\n\n end: function(touchInfo) {\n this.endTime = now();\n\n if (this._finished) { return; }\n\n // Mark the object as finished if there are blocking operations in the event handlers (alert/confirm)\n this._finished = true;\n\n this._trigger(RELEASE, touchInfo); // Release should be fired before TAP (as click is after mouseup/touchend)\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n }\n else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n\n this.dispose();\n },\n\n dispose: function() {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches;\n\n this._finished = true;\n this.pressEvent = null;\n clearTimeout(this._holdTimeout);\n\n activeTouches.splice($.inArray(this, activeTouches), 1);\n },\n\n skip: function() {\n this.dispose();\n },\n\n cancel: function() {\n this.dispose();\n },\n\n isMoved: function() {\n return this._moved;\n },\n\n _start: function(touchInfo) {\n clearTimeout(this._holdTimeout);\n\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n },\n\n _trigger: function(name, touchInfo) {\n var that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n },\n\n _withinIgnoreThreshold: function() {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n });\n\n function withEachUpEvent(callback) {\n var downEvents = kendo.eventMap.up.split(\" \"),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx ++) {\n callback(downEvents[idx]);\n }\n }\n\n var UserEvents = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that.eventNS = ns;\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"up cancel\", ns), \"_end\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_start\");\n\n if (that.useClickAsTap) {\n element.on(kendo.applyEventMap(\"click\", ns), filter, \"_click\");\n }\n\n if (support.pointers || support.msPointers) {\n //touch-action:none will not work for IE10\n if (support.browser.version < 11) {\n var defaultAction = \"pinch-zoom double-tap-zoom\";\n element.css(\"-ms-touch-action\", options.touchAction && options.touchAction != \"none\" ? defaultAction + \" \" + options.touchAction : defaultAction);\n } else {\n element.css(\"touch-action\", options.touchAction || \"none\");\n }\n }\n\n if (options.preventDragEvent) {\n element.on(kendo.applyEventMap(\"dragstart\", ns), kendo.preventDefault);\n }\n\n element.on(kendo.applyEventMap(\"mousedown\", ns), filter, { root: element }, \"_select\");\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0],\n preventIfMovingProxy = that.preventIfMoving.bind(that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n },\n\n preventIfMoving: function(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0];\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n UserEvents.current = this;\n },\n\n cancel: function() {\n this._disposeAll();\n this.trigger(CANCEL);\n },\n\n notify: function(eventName, data) {\n var that = this,\n touches = that.touches;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n }\n\n extend(data, { touches: touches }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n // API\n press: function(x, y, target) {\n this._apiCall(\"_start\", x, y, target);\n },\n\n move: function(x, y) {\n this._apiCall(\"_move\", x, y);\n },\n\n end: function(x, y) {\n this._apiCall(\"_end\", x, y);\n },\n\n _isMultiTouch: function() {\n return this.touches.length > 1;\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _isMoved: function() {\n return $.grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n },\n\n _select: function(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n UserEvents.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget); // target.is(filter) ? target : target.closest(filter, that.element);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify(\"gesturestart\", {});\n }\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"end\", e);\n },\n\n _click: function(e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: $(e.currentTarget),\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: $(e.currentTarget),\n event: e,\n type: \"tap\"\n };\n\n if (this.trigger(\"tap\", data)) {\n e.preventDefault();\n }\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n },\n\n _apiCall: function(type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: $(target || this.element)[0],\n stopPropagation: $.noop,\n preventDefault: $.noop\n });\n }\n });\n\n var ClickMoveClick = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.touches = [];\n that._maxTouches = 1;\n that.eventNS = ns;\n that._downStarted = 0;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"cancel up\", ns), \"cancel\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_down\")\n .on(kendo.applyEventMap(\"up\", ns), filter, \"_up\");\n\n that.bind([\n START,\n MOVE,\n END,\n HOLD,\n CANCEL,\n SELECT\n ], options);\n },\n\n _down: function(e) {\n if (e.which && e.which > 1) {\n this.cancel();\n } else {\n this._downStarted = new Date().getTime();\n this._downTarget = e.target;\n }\n },\n\n _up: function(e) {\n var currentMilestone = new Date().getTime(),\n currentTarget = e.target;\n\n if ((!e.which || e.which === 1) &&\n currentMilestone < this._downStarted + CLICK_DELAY &&\n currentTarget === this._downTarget) {\n if (this.touches && this.touches.length > 0) {\n this._end(e);\n } else {\n this._start(e);\n }\n\n this._preventCancel = true;\n } else {\n this.cancel();\n }\n\n this._downStarted = 0;\n this._downTarget = null;\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n ClickMoveClick.current = this;\n },\n\n cancel: function() {\n if (this._preventCancel) {\n this._preventCancel = false;\n return;\n } else if (this.touches && this.touches.length > 0) {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n },\n\n notify: function(eventName, data) {\n data.clickMoveClick = true;\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n ClickMoveClick.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n touch._start(touch);\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"move\", e);\n this._eachTouch(\"end\", e);\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch.x.move(touchInfo.location);\n matchingTouch.y.move(touchInfo.location);\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n });\n\n UserEvents.defaultThreshold = function(value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function(value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n kendo.getTouches = getTouches;\n kendo.touchDelta = touchDelta;\n kendo.UserEvents = UserEvents;\n kendo.ClickMoveClick = ClickMoveClick;\n })(window.kendo.jQuery);\n var kendo$Q = kendo;\n\n var __meta__$O = {\n id: \"draganddrop\",\n name: \"Drag & drop\",\n category: \"framework\",\n description: \"Drag & drop functionality for any DOM element.\",\n depends: [ \"core\", \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n document = window.document,\n $window = $(window),\n Class = kendo.Class,\n Widget = kendo.ui.Widget,\n Observable = kendo.Observable,\n UserEvents = kendo.UserEvents,\n ClickMoveClick = kendo.ClickMoveClick,\n extend = $.extend,\n getOffset = kendo.getOffset,\n draggables = {},\n dropTargets = {},\n dropAreas = {},\n lastDropTarget,\n elementUnderCursor = kendo.elementUnderCursor,\n KEYUP = \"keyup\",\n CHANGE = \"change\",\n\n // Draggable events\n DRAGSTART = \"dragstart\",\n HOLD = \"hold\",\n DRAG = \"drag\",\n DRAGEND = \"dragend\",\n DRAGCANCEL = \"dragcancel\",\n HINTDESTROYED = \"hintDestroyed\",\n\n // DropTarget events\n DRAGENTER = \"dragenter\",\n DRAGLEAVE = \"dragleave\",\n DROP = \"drop\";\n\n function contains(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n\n function numericCssPropery(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n\n function within(value, range) {\n return Math.min(Math.max(value, range.min), range.max);\n }\n\n function containerBoundaries(container, element) {\n var offset = getOffset(container),\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n minX = offset.left + numericCssPropery(container, \"borderLeftWidth\") + numericCssPropery(container, \"paddingLeft\"),\n minY = offset.top + numericCssPropery(container, \"borderTopWidth\") + numericCssPropery(container, \"paddingTop\"),\n maxX = minX + container.width() - outerWidth(element, true),\n maxY = minY + container.height() - outerHeight(element, true);\n\n return {\n x: { min: minX, max: maxX },\n y: { min: minY, max: maxY }\n };\n }\n\n function checkTarget(target, targets, areas) {\n var theTarget, theFilter, i = 0,\n targetLen = targets && targets.length,\n areaLen = areas && areas.length;\n\n while (target && target.parentNode) {\n for (i = 0; i < targetLen; i ++) {\n theTarget = targets[i];\n if (theTarget.element[0] === target) {\n return { target: theTarget, targetElement: target };\n }\n }\n\n for (i = 0; i < areaLen; i ++) {\n theFilter = areas[i];\n if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\n return { target: theFilter, targetElement: target };\n }\n }\n\n target = target.parentNode;\n }\n\n return undefined$1;\n }\n\n var TapCapture = Observable.extend({\n init: function(element, options) {\n var that = this,\n domElement = element[0];\n\n that.capture = false;\n\n if (domElement.addEventListener) {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.addEventListener(this, that._press.bind(that), true);\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.addEventListener(this, that._release.bind(that), true);\n });\n } else {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.attachEvent(this, that._press.bind(that));\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.attachEvent(this, that._release.bind(that));\n });\n }\n\n Observable.fn.init.call(that);\n\n that.bind([\"press\", \"release\"], options || {});\n },\n\n captureNext: function() {\n this.capture = true;\n },\n\n cancelCapture: function() {\n this.capture = false;\n },\n\n _press: function(e) {\n var that = this;\n that.trigger(\"press\");\n if (that.capture) {\n e.preventDefault();\n }\n },\n\n _release: function(e) {\n var that = this;\n that.trigger(\"release\");\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n });\n\n var PaneDimension = Observable.extend({\n init: function(options) {\n var that = this;\n Observable.fn.init.call(that);\n\n that.forcedEnabled = false;\n\n $.extend(that, options);\n\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = \"offsetWidth\";\n that.scrollSize = \"scrollWidth\";\n that.axis = \"x\";\n } else {\n that.measure = \"offsetHeight\";\n that.scrollSize = \"scrollHeight\";\n that.axis = \"y\";\n }\n },\n\n makeVirtual: function() {\n $.extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n },\n\n virtualSize: function(min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n },\n\n outOfBounds: function(offset) {\n return offset > this.max || offset < this.min;\n },\n\n forceEnabled: function() {\n this.forcedEnabled = true;\n },\n\n getSize: function() {\n return this.container[0][this.measure];\n },\n\n getTotal: function() {\n return this.element[0][this.scrollSize];\n },\n\n rescale: function(scale) {\n this.scale = scale;\n },\n\n update: function(silent) {\n var that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return; // we are not visible.\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n\n that.enabled = that.forcedEnabled || (scaledTotal > size);\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n });\n\n var PaneDimensions = Observable.extend({\n init: function(options) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.x = new PaneDimension(extend({ horizontal: true }, options));\n that.y = new PaneDimension(extend({ horizontal: false }, options));\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n\n that.bind(CHANGE, options);\n },\n\n rescale: function(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n },\n\n centerCoordinates: function() {\n return { x: Math.min(0, -this.x.centerOffset), y: Math.min(0, -this.y.centerOffset) };\n },\n\n refresh: function() {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n });\n\n var PaneAxis = Observable.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Observable.fn.init.call(that);\n },\n\n outOfBounds: function() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n },\n\n dragMove: function(delta) {\n var that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n if ((position < dimension.min && delta < 0) || (position > dimension.max && delta > 0)) {\n delta *= that.resistance;\n }\n\n movable.translateAxis(axis, delta);\n that.trigger(CHANGE, that);\n }\n });\n\n var Pane = Class.extend({\n\n init: function(options) {\n var that = this,\n x,\n y,\n resistance,\n movable;\n\n extend(that, { elastic: true }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: \"x\",\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: \"y\",\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\"press\", \"move\", \"end\", \"gesturestart\", \"gesturechange\"], {\n gesturestart: function(e) {\n that.gesture = e;\n that.offset = that.dimensions.container.offset();\n },\n\n press: function(e) {\n if ($(e.event.target).closest(\"a\").is(\"[data-navigate-on-press=true]\")) {\n e.sender.cancel();\n }\n },\n\n gesturechange: function(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n\n center = e.center,\n\n scaleDelta = e.distance / previousGesture.distance,\n\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n\n if (movable.scale <= minScale && scaleDelta < 1) {\n // Resist shrinking. Instead of shrinking from 1 to 0.5, it will shrink to 0.5 + (1 /* minScale */ - 0.5) * 0.8 = 0.9;\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n e.preventDefault();\n },\n\n move: function(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n\n end: function(e) {\n e.preventDefault();\n }\n });\n }\n });\n\n var TRANSFORM_STYLE = support.transitions.prefix + \"Transform\",\n translate;\n\n\n if (support.hasHW3D) {\n translate = function(x, y, scale) {\n return \"translate3d(\" + x + \"px,\" + y + \"px,0) scale(\" + scale + \")\";\n };\n } else {\n translate = function(x, y, scale) {\n return \"translate(\" + x + \"px,\" + y + \"px) scale(\" + scale + \")\";\n };\n }\n\n var Movable = Observable.extend({\n init: function(element) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.element = $(element);\n that.element[0].style.webkitTransformOrigin = \"left top\";\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n that._saveCoordinates(translate(that.x, that.y, that.scale));\n },\n\n translateAxis: function(axis, by) {\n this[axis] += by;\n this.refresh();\n },\n\n scaleTo: function(scale) {\n this.scale = scale;\n this.refresh();\n },\n\n scaleWith: function(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n },\n\n translate: function(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n },\n\n moveAxis: function(axis, value) {\n this[axis] = value;\n this.refresh();\n },\n\n moveTo: function(coordinates) {\n extend(this, coordinates);\n this.refresh();\n },\n\n refresh: function() {\n var that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates != that.coordinates) {\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n that.element[0].style.position = \"absolute\";\n that.element[0].style.left = that.x + \"px\";\n that.element[0].style.top = that.y + \"px\";\n\n } else {\n that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\n }\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n },\n\n _saveCoordinates: function(coordinates) {\n this.coordinates = coordinates;\n }\n });\n\n function destroyDroppable(collection, widget) {\n var groupName = widget.options.group,\n droppables = collection[groupName],\n i;\n\n Widget.fn.destroy.call(widget);\n\n if (droppables.length > 1) {\n for (i = 0; i < droppables.length; i++) {\n if (droppables[i] == widget) {\n droppables.splice(i, 1);\n break;\n }\n }\n } else {\n droppables.length = 0; // WTF, porting this from the previous destroyGroup\n delete collection[groupName];\n }\n }\n\n var DropTarget = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropTargets)) {\n dropTargets[group] = [ that ];\n } else {\n dropTargets[group].push( that );\n }\n },\n\n events: [\n DRAGENTER,\n DRAGLEAVE,\n DROP\n ],\n\n options: {\n name: \"DropTarget\",\n group: \"default\"\n },\n\n destroy: function() {\n destroyDroppable(dropTargets, this);\n },\n\n _trigger: function(eventName, e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n return that.trigger(eventName, extend({}, e.event, {\n draggable: draggable,\n dropTarget: e.dropTarget\n }));\n }\n },\n\n _over: function(e) {\n this._trigger(DRAGENTER, e);\n },\n\n _out: function(e) {\n this._trigger(DRAGLEAVE, e);\n },\n\n _drop: function(e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n draggable.dropped = !that._trigger(DROP, e);\n }\n }\n });\n\n DropTarget.destroyGroup = function(groupName) {\n var group = dropTargets[groupName] || dropAreas[groupName],\n i;\n\n if (group) {\n for (i = 0; i < group.length; i++) {\n Widget.fn.destroy.call(group[i]);\n }\n\n group.length = 0;\n delete dropTargets[groupName];\n delete dropAreas[groupName];\n }\n };\n\n DropTarget._cache = dropTargets;\n\n var DropTargetArea = DropTarget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropAreas)) {\n dropAreas[group] = [ that ];\n } else {\n dropAreas[group].push( that );\n }\n },\n\n destroy: function() {\n destroyDroppable(dropAreas, this);\n },\n\n options: {\n name: \"DropTargetArea\",\n group: \"default\",\n filter: null\n }\n });\n\n var Draggable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that._activated = false;\n\n if (this.options.clickMoveClick) {\n that.clickMoveClick = new ClickMoveClick(that.element, {\n global: true,\n filter: that.options.filter,\n start: that._startClickMoveClick.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that)\n });\n }\n\n that.userEvents = new UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n threshold: that.options.distance,\n start: that._start.bind(that),\n hold: that._hold.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that),\n select: that._select.bind(that)\n });\n\n if (kendo.support.touch) {\n that.element.find(that.options.filter).css('touch-action', 'none');\n }\n\n that._afterEndHandler = that._afterEnd.bind(that);\n that._captureEscape = that._captureEscape.bind(that);\n },\n\n events: [\n HOLD,\n DRAGSTART,\n DRAG,\n DRAGEND,\n DRAGCANCEL,\n HINTDESTROYED\n ],\n\n options: {\n name: \"Draggable\",\n distance: ( kendo.support.touch ? 0 : 5),\n group: \"default\",\n cursorOffset: null,\n axis: null,\n container: null,\n filter: null,\n ignore: null,\n holdToDrag: false,\n autoScroll: false,\n dropped: false,\n clickMoveClick: false\n },\n\n cancelHold: function() {\n this._activated = false;\n },\n\n _captureEscape: function(e) {\n var that = this;\n\n if (e.keyCode === kendo.keys.ESC) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n this._trigger(DRAGCANCEL, { event: e });\n }\n },\n\n _updateHint: function(e) {\n var that = this,\n coordinates,\n options = that.options,\n boundaries = that.boundaries,\n axis = options.axis,\n cursorOffset = that.options.cursorOffset;\n\n if (cursorOffset) {\n coordinates = { left: e.x.location + cursorOffset.left, top: e.y.location + cursorOffset.top };\n } else {\n if (e.x.delta !== 0 || e.y.delta !== 0) {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n } else {\n that.hintOffset.left = e.x.startLocation + e.x.initialDelta;\n that.hintOffset.top = e.y.startLocation + e.y.initialDelta;\n coordinates = $.extend({}, that.hintOffset);\n }\n }\n\n if (boundaries) {\n coordinates.top = within(coordinates.top, boundaries.y);\n coordinates.left = within(coordinates.left, boundaries.x);\n }\n\n if (axis === \"x\") {\n delete coordinates.top;\n } else if (axis === \"y\") {\n delete coordinates.left;\n }\n\n that.hint.css(coordinates);\n },\n\n _shouldIgnoreTarget: function(target) {\n var ignoreSelector = this.options.ignore;\n return ignoreSelector && $(target).is(ignoreSelector);\n },\n\n _select: function(e) {\n if (!this._shouldIgnoreTarget(e.event.target)) {\n e.preventDefault();\n }\n },\n\n _startClickMoveClick: function(e) {\n this._activated = true;\n\n this._start(e);\n },\n\n _start: function(e) {\n var that = this,\n options = that.options,\n container = options.container ? $(options.container) : null,\n hint = options.hint;\n\n if (this._shouldIgnoreTarget(e.touch.initialTouch) || (options.holdToDrag && !that._activated)) {\n that.userEvents.cancel();\n return;\n }\n\n that.currentTarget = e.target;\n that.currentTargetOffset = getOffset(that.currentTarget);\n\n if (hint) {\n if (that.hint) {\n that.hint.stop(true, true).remove();\n }\n\n that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\n\n var offset = getOffset(that.currentTarget);\n that.hintOffset = offset;\n\n that.hint.css( {\n position: \"absolute\",\n zIndex: 20000, // the Window's z-index is 10000 and can be raised because of z-stacking\n left: offset.left,\n top: offset.top\n })\n .appendTo(document.body);\n\n that.angular(\"compile\", function() {\n that.hint.removeAttr(\"ng-repeat\");\n var scopeTarget = $(e.target);\n\n while (!scopeTarget.data(\"$$kendoScope\") && scopeTarget.length) {\n scopeTarget = scopeTarget.parent();\n }\n\n return {\n elements: that.hint.get(),\n scopeFrom: scopeTarget.data(\"$$kendoScope\")\n };\n });\n }\n\n draggables[options.group] = that;\n\n that.dropped = false;\n\n if (container) {\n that.boundaries = containerBoundaries(container, that.hint);\n }\n\n $(document).on(KEYUP, that._captureEscape);\n\n if (that._trigger(DRAGSTART, e)) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n that._afterEnd();\n }\n\n that.userEvents.capture();\n },\n\n _hold: function(e) {\n this.currentTarget = e.target;\n\n if (this._trigger(HOLD, e)) {\n this.userEvents.cancel();\n } else {\n this._activated = true;\n }\n },\n\n _drag: function(e) {\n e.preventDefault();\n\n var cursorElement = this._elementUnderCursor(e);\n\n if (this.options.autoScroll && this._cursorElement !== cursorElement) {\n this._scrollableParent = findScrollableParent(cursorElement);\n this._cursorElement = cursorElement;\n }\n\n this._lastEvent = e;\n this._processMovement(e, cursorElement);\n\n if (this.options.autoScroll) {\n // chrome seems to trigger mousemove when mouse is moved outside of the window (over the Chrome), too.\n if (this._scrollableParent[0]) {\n var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\n\n\n this._scrollCompenstation = $.extend({}, this.hintOffset);\n this._scrollVelocity = velocity;\n\n if (velocity.y === 0 && velocity.x === 0) {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n } else if (!this._scrollInterval) {\n this._scrollInterval = setInterval(this._autoScroll.bind(this), 50);\n }\n }\n }\n\n if (this.hint) {\n this._updateHint(e);\n }\n },\n\n _processMovement: function(e, cursorElement) {\n this._withDropTarget(cursorElement, function(target, targetElement) {\n if (!target) {\n if (lastDropTarget) {\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n lastDropTarget = null;\n }\n return;\n }\n\n if (lastDropTarget) {\n if (targetElement === lastDropTarget.targetElement) {\n return;\n }\n\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n }\n\n target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\n lastDropTarget = extend(target, { targetElement: targetElement });\n });\n\n this._trigger(DRAG, extend(e, { dropTarget: lastDropTarget, elementUnderCursor: cursorElement }));\n },\n\n _autoScroll: function() {\n var parent = this._scrollableParent[0],\n velocity = this._scrollVelocity,\n compensation = this._scrollCompenstation;\n\n if (!parent) {\n return;\n }\n\n var cursorElement = this._elementUnderCursor(this._lastEvent);\n this._processMovement(this._lastEvent, cursorElement);\n\n var yIsScrollable, xIsScrollable;\n\n var isRootNode = parent === scrollableRoot()[0];\n\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > $window.height();\n xIsScrollable = document.body.scrollWidth > $window.width();\n } else {\n yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n }\n\n var yDelta = parent.scrollTop + velocity.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\n\n var xDelta = parent.scrollLeft + velocity.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\n\n if (yInBounds) {\n parent.scrollTop += velocity.y;\n } else if (yIsScrollable && yDelta < 0) {\n parent.scrollTop = 0;\n }\n\n if (xInBounds) {\n parent.scrollLeft += velocity.x;\n } else if (xIsScrollable && xDelta < 0) {\n parent.scrollLeft = 0;\n }\n\n if (this.hint && isRootNode && (xInBounds || yInBounds)) {\n if (yInBounds) {\n compensation.top += velocity.y;\n }\n\n if (xInBounds) {\n compensation.left += velocity.x;\n }\n\n this.hint.css(compensation);\n }\n },\n\n _end: function(e) {\n this._withDropTarget(this._elementUnderCursor(e), function(target, targetElement) {\n if (target) {\n target._drop(extend({}, e, { dropTarget: $(targetElement) }));\n lastDropTarget = null;\n }\n });\n\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n this._cancel(this._trigger(DRAGEND, e));\n },\n\n _onCancel: function(e) {\n this._cancel();\n this._trigger(DRAGCANCEL, { event: e });\n },\n\n _cancel: function(isDefaultPrevented) {\n var that = this;\n\n that._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that._activated = false;\n\n if (that.hint && !that.dropped) {\n setTimeout(function() {\n that.hint.stop(true, true);\n\n if (isDefaultPrevented) {\n that._afterEndHandler();\n } else {\n that.hint.animate(that.currentTargetOffset, \"fast\", that._afterEndHandler);\n }\n }, 0);\n } else {\n that._afterEnd();\n }\n },\n\n _trigger: function(eventName, e) {\n var that = this;\n\n return that.trigger(\n eventName, extend(\n {},\n e.event,\n {\n x: e.x,\n y: e.y,\n currentTarget: that.currentTarget,\n initialTarget: e.touch ? e.touch.initialTouch : null,\n dropTarget: e.dropTarget,\n elementUnderCursor: e.elementUnderCursor,\n clickMoveClick: e.clickMoveClick\n }\n ));\n },\n\n _elementUnderCursor: function(e) {\n var target = elementUnderCursor(e),\n hint = this.hint;\n\n if (hint && contains(hint[0], target)) {\n hint.hide();\n target = elementUnderCursor(e);\n // IE8 does not return the element in iframe from first attempt\n if (!target) {\n target = elementUnderCursor(e);\n }\n hint.show();\n }\n\n return target;\n },\n\n _withDropTarget: function(element, callback) {\n var result,\n group = this.options.group,\n targets = dropTargets[group],\n areas = dropAreas[group];\n\n if (targets && targets.length || areas && areas.length) {\n result = checkTarget(element, targets, areas);\n\n if (result) {\n callback(result.target, result.targetElement);\n } else {\n callback();\n }\n }\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that._afterEnd();\n\n that.userEvents.destroy();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.destroy();\n }\n\n this._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n\n that.currentTarget = null;\n },\n\n _afterEnd: function() {\n var that = this;\n\n if (that.hint) {\n that.hint.remove();\n }\n\n delete draggables[that.options.group];\n\n that.trigger(\"destroy\");\n that.trigger(HINTDESTROYED);\n $(document).off(KEYUP, that._captureEscape);\n }\n });\n\n kendo.ui.plugin(DropTarget);\n kendo.ui.plugin(DropTargetArea);\n kendo.ui.plugin(Draggable);\n kendo.TapCapture = TapCapture;\n kendo.containerBoundaries = containerBoundaries;\n\n extend(kendo.ui, {\n Pane: Pane,\n PaneDimensions: PaneDimensions,\n Movable: Movable\n });\n\n function scrollableViewPort(element) {\n var root = scrollableRoot()[0],\n offset,\n top,\n left;\n\n if (element[0] === root) {\n top = root.scrollTop;\n left = root.scrollLeft;\n\n return {\n top: top,\n left: left,\n bottom: top + $window.height(),\n right: left + $window.width()\n };\n } else {\n offset = element.offset();\n offset.bottom = offset.top + element.height();\n offset.right = offset.left + element.width();\n return offset;\n }\n }\n\n function scrollableRoot() {\n return $(kendo.support.browser.edge || kendo.support.browser.safari ? document.body : document.documentElement);\n }\n\n function findScrollableParent(element) {\n var root = scrollableRoot();\n\n if (!element || element === document.body || element === document.documentElement) {\n return root;\n }\n\n var parent = $(element)[0];\n\n while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\n parent = parent.parentNode;\n }\n\n if (parent === document.body) {\n return root;\n }\n\n return $(parent);\n }\n\n function autoScrollVelocity(mouseX, mouseY, rect) {\n var velocity = { x: 0, y: 0 };\n\n var AUTO_SCROLL_AREA = 50;\n\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n\n return velocity;\n }\n\n // export for testing\n kendo.ui.Draggable.utils = {\n autoScrollVelocity: autoScrollVelocity,\n scrollableViewPort: scrollableViewPort,\n findScrollableParent: findScrollableParent\n };\n\n })(window.kendo.jQuery);\n var kendo$P = kendo;\n\n var __meta__$N = {\n id: \"mobile.scroller\",\n name: \"Scroller\",\n category: \"mobile\",\n description: \"The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.\",\n depends: [ \"fx\", \"draganddrop\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n mobile = kendo.mobile,\n fx = kendo.effects,\n ui = mobile.ui,\n extend = $.extend,\n Widget = ui.Widget,\n Class = kendo.Class,\n Movable = kendo.ui.Movable,\n Pane = kendo.ui.Pane,\n PaneDimensions = kendo.ui.PaneDimensions,\n Transition = fx.Transition,\n Animation = fx.Animation,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n RELEASECLASS = \"km-scroller-release\",\n REFRESHCLASS = \"km-scroller-refresh\",\n PULL = \"pull\",\n CHANGE = \"change\",\n RESIZE = \"resize\",\n SCROLL = \"scroll\",\n MOUSE_WHEEL_ID = 2;\n\n var ZoomSnapBack = Animation.extend({\n init: function(options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.tapCapture.bind(\"press\", that.cancel.bind(that));\n },\n\n enabled: function() {\n return this.movable.scale < this.dimensions.minScale;\n },\n\n done: function() {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n\n tick: function() {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n\n onEnd: function() {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n\n var DragInertia = Animation.extend({\n init: function(options) {\n var that = this;\n\n Animation.fn.init.call(that);\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function() { that._end(); }\n })\n });\n\n that.tapCapture.bind(\"press\", function() { that.cancel(); });\n that.userEvents.bind(\"end\", that.start.bind(that));\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.userEvents.bind(\"tap\", that.onEnd.bind(that));\n },\n\n onCancel: function() {\n this.transition.cancel();\n },\n\n freeze: function(location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n\n onEnd: function() {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n\n done: function() {\n return abs(this.velocity) < 1;\n },\n\n start: function(e) {\n var that = this,\n velocity;\n\n if (!that.dimension.enabled) { return; }\n\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n\n Animation.fn.start.call(that);\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n\n tick: function() {\n var that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = (that.velocity *= friction),\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n },\n\n _end: function() {\n this.tapCapture.cancelCapture();\n this.end();\n },\n\n _snapBack: function() {\n var that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n\n _moveTo: function(location) {\n this.transition.moveTo({ location: location, duration: SNAPBACK_DURATION, ease: Transition.easeOutExpo });\n }\n });\n\n var AnimatedScroller = Animation.extend({\n init: function(options) {\n var that = this;\n\n kendo.effects.Animation.fn.init.call(this);\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n\n tick: function() {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n\n done: function() {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n\n onEnd: function() {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n\n setCoordinates: function(from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n\n setCallback: function(callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined$1;\n }\n },\n\n _updateCoordinates: function() {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n\n var ScrollBar = Class.extend({\n init: function(options) {\n var that = this,\n horizontal = options.axis === \"x\",\n element = $('
    ');\n\n if (horizontal) {\n element.attr(\"aria-orientation\", \"horizontal\");\n }\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? \"width\" : \"height\"\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n\n refresh: function() {\n var that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n\n if (sizeRatio >= 1) {\n this.element.css(\"display\", \"none\");\n } else {\n this.element.css(\"display\", \"\");\n }\n\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n\n if (that.elementSize != size) {\n that.element.css(that.size, size + \"px\");\n that.elementSize = size;\n }\n\n that._ariaValue(position, dimension.size - that.elementSize);\n\n that.movable.moveAxis(axis, position);\n },\n\n show: function() {\n this.element.css({ opacity: SCROLLBAR_OPACITY, visibility: \"visible\" });\n },\n\n hide: function() {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n },\n\n _ariaValue: function(current, total) {\n var element = this.element;\n\n if (current > total) {\n current = total;\n }\n\n element.attr(\"aria-valuemax\", total);\n element.attr(\"aria-valuenow\", current);\n }\n });\n\n var Scroller = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass(\"km-native-scroller\")\n .prepend('
    ');\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n\n return;\n }\n\n element\n .css(\"overflow\", \"hidden\")\n .addClass(\"km-scroll-wrapper\")\n .wrapInner('
    ')\n .prepend('
    ');\n\n var inner = element.children().eq(1),\n\n tapCapture = new kendo.TapCapture(element),\n\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new kendo.UserEvents(element, {\n touchAction: \"pan-y\",\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function(e) {\n dimensions.refresh();\n\n var velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n\n\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo: function(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = - movable.y;\n that.scrollLeft = - movable.x;\n\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n element.on(\"DOMMouseScroll mousewheel\", this._wheelScroll.bind(this));\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children().first()\n });\n\n that._initAxis(\"x\");\n that._initAxis(\"y\");\n\n // build closure\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n\n _wheelScroll: function(e) {\n if (e.ctrlKey) {\n return;\n }\n\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n\n var delta = kendo.wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n },\n\n makeVirtual: function() {\n this.dimensions.y.makeVirtual();\n },\n\n virtualSize: function(min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n\n height: function() {\n return this.dimensions.y.size;\n },\n\n scrollHeight: function() {\n return this.scrollElement[0].scrollHeight;\n },\n\n scrollWidth: function() {\n return this.scrollElement[0].scrollWidth;\n },\n\n options: {\n name: \"Scroller\",\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function() { return false; },\n pullToRefresh: false,\n messages: {\n pullTemplate: \"Pull to refresh\",\n releaseTemplate: \"Release to refresh\",\n refreshTemplate: \"Refreshing\"\n }\n },\n\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n\n _resize: function() {\n if (!this._native) {\n this.contentResized();\n }\n },\n\n setOptions: function(options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n\n reset: function() {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({ x: 0, y: 0 });\n this._scale(1);\n }\n },\n\n contentResized: function() {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis(\"x\", this.dimensions.x.min);\n }\n\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis(\"y\", this.dimensions.y.min);\n }\n },\n\n zoomOut: function() {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n\n enable: function() {\n this.enabled = true;\n },\n\n disable: function() {\n this.enabled = false;\n },\n\n scrollTo: function(x, y) {\n if (this._native) {\n kendo.scrollLeft(this.scrollElement, abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({ x: x, y: y });\n }\n },\n\n animatedScrollTo: function(x, y, callback) {\n var from,\n to;\n\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = { x: this.movable.x, y: this.movable.y };\n to = { x: x, y: y };\n\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n\n pullHandled: function() {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n\n _scale: function(scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n\n _initPullToRefresh: function() {\n var that = this;\n\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n\n that.scrollElement.prepend('' + that.pullTemplate({}) + '');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children(\".km-template\");\n\n that.pane.y.bind(\"change\", that._paneChange.bind(that));\n that.userEvents.bind(\"end\", that._dragEnd.bind(that));\n },\n\n _dragEnd: function() {\n var that = this;\n\n if (!that.pulled) {\n return;\n }\n\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger(\"pull\");\n },\n\n _paneChange: function() {\n var that = this;\n\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n\n _initAxis: function(axis) {\n var that = this,\n elementId = that.element.attr(\"id\"),\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar;\n\n if (!elementId) {\n elementId = kendo.guid();\n that.element.attr(\"id\", elementId);\n }\n\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints,\n controlsId: elementId\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + \"inertia\"] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function() {\n scrollBar.hide();\n that.trigger(\"scrollEnd\", {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n\n ui.plugin(Scroller);\n })(window.kendo.jQuery);\n var kendo$O = kendo;\n\n var __meta__$M = {\n id: \"popup\",\n name: \"Pop-up\",\n category: \"framework\",\n depends: [ \"core\" ],\n advanced: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n Class = kendo.Class,\n support = kendo.support,\n getOffset = kendo.getOffset,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n OPEN = \"open\",\n CLOSE = \"close\",\n DEACTIVATE = \"deactivate\",\n ACTIVATE = \"activate\",\n CENTER = \"center\",\n LEFT = \"left\",\n RIGHT = \"right\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n ABSOLUTE = \"absolute\",\n HIDDEN = \"hidden\",\n BODY = \"body\",\n LOCATION = \"location\",\n POSITION = \"position\",\n VISIBLE = \"visible\",\n EFFECTS = \"effects\",\n ACTIVE = \"k-active\",\n ACTIVEBORDER = \"k-state-border\",\n ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/,\n ACTIVECHILDREN = \".k-picker-wrap, .k-dropdown-wrap, .k-link\",\n MOUSEDOWN = \"down\",\n DOCUMENT_ELEMENT = $(document.documentElement),\n WINDOW = $(window),\n SCROLL = \"scroll\",\n cssPrefix = support.transitions.css,\n TRANSFORM = cssPrefix + \"transform\",\n extend = $.extend,\n NS = \".kendoPopup\",\n styles = [\"font-size\",\n \"font-family\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"line-height\"];\n\n function contains(container, target) {\n if (!container || !target) {\n return false;\n }\n return container === target || $.contains(container, target);\n }\n\n var Popup = Widget.extend({\n init: function(element, options) {\n var that = this, parentPopup;\n\n options = options || {};\n\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + \" \" + RIGHT;\n options.position = options.position || TOP + \" \" + RIGHT;\n }\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n that.collisions = options.collision ? options.collision.split(\" \") : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n\n parentPopup = $(that.options.anchor).closest(\".k-popup,.k-group\").filter(\":not([class^=km-])\"); // When popup is in another popup, make it relative.\n\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n\n that.element.hide()\n .addClass(\"k-popup\")\n .toggleClass(\"k-rtl\", !!options.isRtl)\n .appendTo(options.appendTo)\n .attr(\"aria-hidden\", true)\n .on(\"mouseenter\" + NS, function() {\n that._hovered = true;\n })\n .on(\"wheel\" + NS, function(e) {\n var list = $(e.target).find(\".k-list\");\n var scrollArea = list.parent();\n if (list.length && list.is(\":visible\") && ((scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0) ||\n (scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0))) {\n e.preventDefault();\n }\n })\n .on(\"mouseleave\" + NS, function() {\n that._hovered = false;\n });\n\n that.wrapper = $();\n\n if (options.animation === false) {\n options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n }\n\n extend(options.animation.open, {\n complete: function() {\n that.wrapper.addClass(\"k-animation-container-shown\"); // Forcing refresh causes flickering in mobile.\n that.wrapper.css(\"overflow\",\"\");\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n\n extend(options.animation.close, {\n complete: function() {\n that._animationClose();\n }\n });\n\n that._mousedownProxy = function(e) {\n that._mousedown(e);\n };\n\n if (support.mobileOS.android) {\n that._resizeProxy = function(e) {\n setTimeout(function() {\n that._resize(e);\n }, 600); //Logic from kendo.onResize\n };\n } else {\n that._resizeProxy = function(e) {\n that._resize(e);\n };\n }\n\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, that.toggle.bind(that));\n }\n },\n\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n\n options: {\n name: \"Popup\",\n toggleEvent: \"click\",\n origin: BOTTOM + \" \" + LEFT,\n position: TOP + \" \" + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: \"flip fit\",\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: \"slideIn:down\",\n transition: true,\n duration: 200\n },\n close: { // if close animation effects are defined, they will be used instead of open.reverse\n duration: 100,\n hide: true\n }\n },\n omitOriginOffsets: false\n },\n\n _animationClose: function() {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n\n that.wrapper.hide();\n\n if (location) {\n that.wrapper.css(location);\n }\n\n if (that.options.anchor != BODY) {\n that._hideDirClass();\n }\n\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n\n destroy: function() {\n var that = this,\n options = that.options,\n element = that.element.off(NS),\n parent;\n\n Widget.fn.destroy.call(that);\n\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n\n kendo.destroy(that.element.children());\n element.removeData();\n\n if (options.appendTo[0] === document.body) {\n parent = element.closest(\".k-animation-container\");\n\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n\n open: function(x, y) {\n var that = this,\n fixed = { isFixed: !isNaN(parseInt(y,10)), x: x, y: y },\n element = that.element,\n options = that.options,\n animation, wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\"),\n listbox = element.find(\"[role='listbox']\"),\n parent;\n\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n if (that.element.parent().data(\"animating\") || that._trigger(OPEN)) {\n return;\n }\n\n that._activated = false;\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy)\n .on(that.downEvent, that._mousedownProxy);\n\n // this binding hangs iOS in editor\n // all elements in IE7/8 fire resize event, causing mayhem\n that._toggleResize(false);\n that._toggleResize(true);\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize, options._resizeOnWrap)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n })\n .attr(\"aria-hidden\", false);\n\n parent = element.parent();\n\n if (listbox.attr(\"aria-label\")) {\n wrapper.attr(\"aria-label\", listbox.attr(\"aria-label\"));\n } else if (listbox.attr(\"aria-labelledby\")) {\n wrapper.attr(\"aria-labelledby\", listbox.attr(\"aria-labelledby\"));\n }\n\n if (support.mobileOS.android) {\n parent.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n\n if (options.anchor != BODY && !that.element.hasClass(\"k-tooltip\")) {\n that._showDirClass(animation);\n }\n\n parent.hide();\n element.show();\n that.wrapper.show();\n\n parent.data(EFFECTS, animation.effects)\n .kendoStop(true)\n .kendoAnimate(animation);\n\n\n element.attr(\"aria-hidden\", false);\n }\n },\n\n _location: function(isFixed) {\n var that = this,\n element = that.element,\n options = that.options,\n wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\");\n\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n });\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that._position(isFixed || {});\n\n var offset = wrapper.offset();\n return {\n width: kendo._outerWidth(wrapper),\n height: kendo._outerHeight(wrapper),\n left: offset.left,\n top: offset.top\n };\n },\n\n _openAnimation: function() {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n\n return animation;\n },\n\n _hideDirClass: function() {\n var anchor = $(this.options.anchor);\n var direction = ((anchor.attr(\"class\") || \"\").match(ACTIVEBORDERREGEXP) || [\"\", \"down\"])[1];\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n anchor\n .removeClass(dirClass)\n .children(ACTIVECHILDREN)\n .removeClass(ACTIVE)\n .removeClass(dirClass);\n\n this.element.removeClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n },\n\n _showDirClass: function(animation) {\n var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : \"down\";\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n $(this.options.anchor)\n .addClass(dirClass)\n .children(ACTIVECHILDREN)\n .addClass(ACTIVE)\n .addClass(dirClass);\n },\n\n position: function() {\n if (this.visible()) {\n this.flipped = this._position();\n //this._hideDirClass();\n //this._showDirClass(this._openAnimation());\n }\n },\n\n toggle: function() {\n var that = this;\n\n that[that.visible() ? CLOSE : OPEN]();\n },\n\n visible: function() {\n return this.wrapper.is(\":\" + VISIBLE) && this.element.is(\":\" + VISIBLE);\n },\n\n close: function(skipEffects) {\n var that = this,\n parent = that.element.parent(),\n options = that.options, wrap,\n animation, openEffects, closeEffects;\n\n if (that.visible()) {\n wrap = (that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide());\n\n that.wrapper.removeClass(\"k-animation-container-shown\");\n that._toggleResize(false);\n\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n\n // Close all inclusive popups.\n that.element.find(\".k-popup\").each(function() {\n var that = $(this),\n popup = that.data(\"kendoPopup\");\n\n if (popup) {\n popup.close(skipEffects);\n }\n });\n\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\n if (skipEffects) {\n animation = { hide: true, effects: {} };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = parent.data(EFFECTS);\n closeEffects = animation.effects;\n\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n\n that._closing = true;\n }\n\n parent.kendoStop(true);\n that.element.attr(\"aria-hidden\", true);\n wrap\n .css({ overflow: HIDDEN }) // stop callback will remove hidden overflow\n .attr(\"aria-hidden\", true);\n parent.kendoAnimate(animation);\n\n if (skipEffects) {\n that._animationClose();\n }\n }\n },\n\n _trigger: function(ev) {\n return this.trigger(ev, { type: ev });\n },\n\n _resize: function(e) {\n var that = this;\n\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function() {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || (that._activated && that.element.find(\".k-list\").length > 0)) {\n that.close();\n }\n }\n },\n\n _toggleResize: function(toggle) {\n var method = toggle ? \"on\" : \"off\";\n var eventNames = support.resize;\n\n if (!(support.mobileOS.ios || support.mobileOS.android || support.browser.safari)) {\n eventNames += \" \" + SCROLL;\n }\n\n if (toggle && !this.scrollableParents) {\n this.scrollableParents = this._scrollableParents();\n }\n\n if (this.scrollableParents && this.scrollableParents.length) {\n this.scrollableParents[method](SCROLL, this._resizeProxy);\n }\n\n WINDOW[method](eventNames, this._resizeProxy);\n },\n\n _mousedown: function(e) {\n var that = this,\n container = that.element[0],\n options = that.options,\n anchor = $(options.anchor)[0],\n toggleTarget = options.toggleTarget,\n target = kendo.eventTarget(e),\n popup = $(target).closest(\".k-popup\"),\n mobile = popup.parent().parent(\".km-shim\").length;\n\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n\n // This MAY result in popup not closing in certain cases.\n if ($(e.target).closest(\"a\").data(\"rel\") === \"popover\") {\n return;\n }\n\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n\n _fit: function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n },\n\n _flip: function(offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n\n _scrollableParents: function() {\n return $(this.options.anchor)\n .parentsUntil(\"body\")\n .filter(function(index, element) {\n return kendo.isScrollable(element);\n });\n },\n\n _position: function(fixed) {\n var that = this,\n //element = that.element.css(POSITION, \"\"), /* fixes telerik/kendo-ui-core#790, comes from telerik/kendo#615 */\n element = that.element,\n wrapper = that.wrapper,\n options = that.options,\n viewport = $(options.viewport),\n zoomLevel = support.zoomLevel(),\n isWindow = !!((viewport[0] == window) && window.innerWidth && (zoomLevel <= 1.02)),\n anchor = $(options.anchor),\n origins = options.origin.toLowerCase().split(\" \"),\n positions = options.position.toLowerCase().split(\" \"),\n collisions = that.collisions,\n siblingContainer, parents,\n parentZIndex, zIndex = 10002,\n idx = 0,\n docEl = document.documentElement,\n length, viewportOffset, viewportWidth, viewportHeight;\n\n if (options.viewport === window) {\n viewportOffset = {\n top: (window.pageYOffset || document.documentElement.scrollTop || 0),\n left: (window.pageXOffset || document.documentElement.scrollLeft || 0)\n };\n } else {\n viewportOffset = viewport.offset();\n }\n\n if (isWindow) {\n viewportWidth = window.innerWidth;\n viewportHeight = window.innerHeight;\n } else {\n viewportWidth = viewport.width();\n viewportHeight = viewport.height();\n }\n\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n var sign = options.isRtl ? -1 : 1;\n\n viewportWidth -= sign * kendo.support.scrollbar();\n }\n\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css(\"zIndex\")), 0);\n\n // set z-index to be more than that of the container/sibling\n // compensate with more units for window z-stack\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css(\"zIndex\"));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n\n wrapper.css(\"zIndex\", zIndex);\n\n if (fixed && fixed.isFixed) {\n wrapper.css({ left: fixed.x, top: fixed.y });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]),\n offset = getOffset(wrapper),\n anchorParent = anchor.offsetParent().parent(\".k-animation-container,.k-popup,.k-group\"); // If the parent is positioned, get the current positions\n\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n\n if (!that.wrapper.data(LOCATION)) { // Needed to reset the popup location after every closure - fixes the resize bugs.\n wrapper.data(LOCATION, extend({}, pos));\n }\n\n var offsets = extend({}, offset),\n location = extend({}, pos),\n adjustSize = options.adjustSize;\n\n if (collisions[0] === \"fit\") {\n location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n }\n\n if (collisions[1] === \"fit\") {\n location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n }\n\n var flipPos = extend({}, location);\n var elementHeight = outerHeight(element);\n var wrapperHeight = outerHeight(wrapper);\n\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n\n if (collisions[0] === \"flip\") {\n location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n\n if (collisions[1] === \"flip\") {\n location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n }\n\n wrapper.css(location);\n\n return (location.left != flipPos.left || location.top != flipPos.top);\n },\n\n _align: function(origin, position) {\n var that = this,\n element = that.wrapper,\n anchor = $(that.options.anchor),\n verticalOrigin = origin[0],\n horizontalOrigin = origin[1],\n verticalPosition = position[0],\n horizontalPosition = position[1],\n anchorOffset = getOffset(anchor),\n appendTo = $(that.options.appendTo),\n appendToOffset,\n width = outerWidth(element),\n height = outerHeight(element) || outerHeight(element.find(\".k-child-animation-container\").children().first()),\n anchorWidth = outerWidth(anchor),\n anchorHeight = outerHeight(anchor),\n top = that.options.omitOriginOffsets ? 0 : anchorOffset.top,\n left = that.options.omitOriginOffsets ? 0 : anchorOffset.left,\n round = Math.round;\n\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n\n\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n\n return {\n top: top,\n left: left\n };\n }\n });\n\n ui.plugin(Popup);\n\n var stableSort = kendo.support.stableSort;\n var tabKeyTrapNS = \"kendoTabKeyTrap\";\n var focusableNodesSelector = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]\";\n var TabKeyTrap = Class.extend({\n init: function(element, options) {\n this.element = $(element);\n this.element.autoApplyNS(tabKeyTrapNS);\n },\n\n trap: function() {\n this.element.on(\"keydown\", this._keepInTrap.bind(this));\n },\n\n removeTrap: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n },\n\n destroy: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n this.element = undefined$1;\n },\n\n shouldTrap: function() {\n return true;\n },\n\n _keepInTrap: function(e) {\n if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n return;\n }\n\n var elements = this._focusableElements();\n var sortedElements = this._sortFocusableElements(elements);\n var next = this._nextFocusable(e, sortedElements);\n\n if (next) {\n this._focus(next);\n }\n\n e.preventDefault();\n },\n _focusableElements: function() {\n var elements = this.element.find(focusableNodesSelector).filter(function(i, item) {\n return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n });\n\n if (this.element.is(\"[tabindex]\")) {\n elements.push(this.element[0]);\n }\n\n return elements;\n },\n _sortFocusableElements: function(elements) {\n var sortedElements;\n\n if (stableSort) {\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex - next.tabIndex;\n });\n } else {\n var attrName = \"__k_index\";\n elements.each(function(i, item) {\n item.setAttribute(attrName, i);\n });\n\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex === next.tabIndex ?\n parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) :\n prev.tabIndex - next.tabIndex;\n });\n\n elements.removeAttr(attrName);\n }\n\n return sortedElements;\n },\n _nextFocusable: function(e, elements) {\n var count = elements.length;\n var current = elements.index(e.target);\n\n return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n },\n _focus: function(element) {\n if (element.nodeName == \"IFRAME\") {\n element.contentWindow.document.body.focus();\n return;\n }\n\n element.focus();\n\n if (element.nodeName == \"INPUT\" && element.setSelectionRange && this._haveSelectionRange(element)) {\n element.setSelectionRange(0, element.value.length);\n }\n },\n _haveSelectionRange: function(element) {\n var elementType = element.type.toLowerCase();\n\n return elementType === \"text\" || elementType === \"search\" ||\n elementType === \"url\" || elementType === \"tel\" ||\n elementType === \"password\";\n }\n });\n ui.Popup.TabKeyTrap = TabKeyTrap;\n })(window.kendo.jQuery);\n var kendo$N = kendo;\n\n var __meta__$L = {\n id: \"html.base\",\n name: \"Html.Base\",\n category: \"web\",\n description: \"\",\n depends: [\"core\"],\n features: []\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Class = kendo.Class;\n\n kendo.html = kendo.html || {};\n\n var HTMLBase = Class.extend({\n init: function(element, options) {\n var that = this;\n that.element = $(element);\n options = options || {};\n delete options.name;\n that._initOptions(options);\n },\n options: {\n stylingOptions: []\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n var validFill;\n\n if (option === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (!validFill || validFill.length === 0) {\n return \"\";\n }\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions);\n that.wrapper.addClass(stylingOptions.join(\" \"));\n },\n html: function() {\n var that = this;\n\n return that.wrapper[0].outerHTML;\n }\n });\n\n $.extend(kendo.html, {\n HTMLBase: HTMLBase\n });\n\n })(window.kendo.jQuery);\n var kendo$M = kendo;\n\n var __meta__$K = {\n id: \"html.icon\",\n name: \"Html.Icon\",\n category: \"web\",\n description: \"HTML font icon rendering utility for Kendo UI for jQuery.\",\n depends: [\"html.base\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n HTMLBase = kendo.html.HTMLBase;\n\n var KICON = 'k-icon';\n var KI_PREFFIX = 'k-i-';\n var KSVGICON = 'k-svg-icon';\n var KSVG_PREFFIX = 'k-svg-i-';\n\n var FLIP_PREFIX = 'k-flip-';\n var FLIP_HORIZONTAL = FLIP_PREFIX + \"h\";\n var FLIP_VERTICAL = FLIP_PREFIX + \"v\";\n\n var THEME_COLOR_PREFIX = 'k-color-';\n\n var ICON_TYPES = {\n 'svg': function (element, options) { return new HTMLSvgIcon(element, options); },\n 'font': function (element, options) { return new HTMLFontIcon(element, options); }\n };\n\n var FLIP_CLASSES = {\n default: '',\n horizontal: FLIP_HORIZONTAL,\n vertical: FLIP_VERTICAL,\n both: (FLIP_HORIZONTAL + \" \" + FLIP_VERTICAL)\n };\n\n var renderIcon = function(element, options) {\n if (!element || $.isPlainObject(element) || kendo.isString(element)) {\n options = element;\n element = $(\"\");\n }\n\n if (kendo.isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!kendo.isPresent(options.type)) {\n options.type = kendo.defaults.iconType ? kendo.defaults.iconType : 'svg';\n }\n\n if (kendo.isFunction(options.type)) {\n return options.type(element, options);\n }\n\n if (!kendo.isFunction(ICON_TYPES[options.type])) {\n return null;\n }\n\n return (ICON_TYPES[options.type](element, options)).html();\n };\n\n var HTMLBaseIcon = HTMLBase.extend({\n init: function(element, options) {\n var that = this;\n HTMLBase.fn.init.call(that, element, options);\n that._wrapper();\n },\n options: {\n name: 'HTMLIcon',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n },\n _wrapper: function() {\n var that = this;\n\n that._addClasses();\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n if (option === 'themeColor') {\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n prefix: THEME_COLOR_PREFIX\n });\n }\n\n if (option === 'fill') {\n return FLIP_CLASSES[options.flip];\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.filter(function (x) { return x !== that._className; }).join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions.concat([that._className]));\n that.wrapper.addClass(stylingOptions.join(\" \"));\n }\n });\n\n var HTMLFontIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLFontIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n // Find if there is an existing k-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(function (x) { return x.includes(KI_PREFFIX); }),\n className = that.options.icon ? (\"\" + (that.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX) + (that.options.icon)) : \"\";\n\n that._className = className;\n that.wrapper = that.element\n .addClass(KICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(that.options.iconClass || '');\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n var HTMLSvgIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.empty();\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLSVGIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n icon = that.options.icon,\n iconClass = that.options.iconClass,\n // Find if there is an existing k-svg-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(function (x) { return x.includes(KSVG_PREFFIX); }),\n svgElm = $(''),\n className;\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n var regex = /k-i-(\\w+(?:-\\w+)*)/;\n var iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (kendo.isString(icon)) {\n // remove k-i- and convert kebab-case-icon to camelCaseIcon\n icon = icon.replace('k-i-', '').replace(/-./g, function (x){ return x[1].toUpperCase(); });\n icon = kendo.ui.svgIcons[icon] || kendo.ui.svgIcons[(icon + \"Icon\")];\n }\n\n className = icon && icon.name ? (\"\" + KSVG_PREFFIX + (icon.name)) : '';\n that._className = className;\n\n that.wrapper = that.element\n .addClass(KSVGICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(iconClass || '')\n .attr(\"aria-hidden\", true);\n\n if ($.isPlainObject(icon)) {\n svgElm.attr('viewBox', icon.viewBox || '')\n .attr({\n 'viewBox': icon.viewBox || '',\n 'focusable': 'false',\n 'xmlns': 'http://www.w3.org/2000/svg'\n })\n .html(icon.content || '');\n\n that.wrapper.append(svgElm[0].outerHTML);\n }\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n $.extend(kendo.html, {\n renderIcon: renderIcon,\n HTMLFontIcon: HTMLFontIcon,\n HTMLSvgIcon: HTMLSvgIcon,\n getIconRenderer: function (type) { return ICON_TYPES[type]; }\n });\n\n kendo.cssProperties.registerPrefix(\"HTMLFontIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLFontIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n\n kendo.cssProperties.registerPrefix(\"HTMLSVGIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLSVGIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n })(window.kendo.jQuery);\n var kendo$L = kendo;\n\n var caretTrIcon = {\n name: 'caret-tr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretBrIcon = {\n name: 'caret-br',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretBlIcon = {\n name: 'caret-bl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretTlIcon = {\n name: 'caret-tl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltUpIcon = {\n name: 'caret-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltRightIcon = {\n name: 'caret-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltDownIcon = {\n name: 'caret-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltLeftIcon = {\n name: 'caret-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToTopIcon = {\n name: 'caret-alt-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToRightIcon = {\n name: 'caret-alt-to-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToBottomIcon = {\n name: 'caret-alt-to-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToLeftIcon = {\n name: 'caret-alt-to-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltUpIcon = {\n name: 'caret-double-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltRightIcon = {\n name: 'caret-double-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltDownIcon = {\n name: 'caret-double-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltLeftIcon = {\n name: 'caret-double-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltExpandIcon = {\n name: 'caret-alt-expand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsNoChangeIcon = {\n name: 'arrows-no-change',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowOverflowDownIcon = {\n name: 'arrow-overflow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronUpIcon = {\n name: 'chevron-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronRightIcon = {\n name: 'chevron-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDownIcon = {\n name: 'chevron-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronLeftIcon = {\n name: 'chevron-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowUpIcon = {\n name: 'arrow-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRightIcon = {\n name: 'arrow-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowDownIcon = {\n name: 'arrow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowLeftIcon = {\n name: 'arrow-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelDownIcon = {\n name: 'level-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelUpIcon = {\n name: 'level-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelToTopIcon = {\n name: 'level-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var colResizeIcon = {\n name: 'col-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsAxesIcon = {\n name: 'arrows-axes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsSwapIcon = {\n name: 'arrows-swap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dragAndDropIcon = {\n name: 'drag-and-drop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var categorizeIcon = {\n name: 'categorize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gridIcon = {\n name: 'grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gridLayoutIcon = {\n name: 'grid-layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupIcon = {\n name: 'group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var ungroupIcon = {\n name: 'ungroup',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleDragIcon = {\n name: 'handle-drag',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutIcon = {\n name: 'layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layout1By4Icon = {\n name: 'layout-1-by-4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layout2By2Icon = {\n name: 'layout-2-by-2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutSideBySideIcon = {\n name: 'layout-side-by-side',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutStackedIcon = {\n name: 'layout-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var columnsIcon = {\n name: 'columns',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rowsIcon = {\n name: 'rows',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var reorderIcon = {\n name: 'reorder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var menuIcon = {\n name: 'menu',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var moreVerticalIcon = {\n name: 'more-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var moreHorizontalIcon = {\n name: 'more-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var overlapIcon = {\n name: 'overlap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var homeIcon = {\n name: 'home',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsLeftRightIcon = {\n name: 'arrows-left-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsTopBottomIcon = {\n name: 'arrows-top-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusBottomLeftIcon = {\n name: 'border-radius-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusBottomRightIcon = {\n name: 'border-radius-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusTopLeftIcon = {\n name: 'border-radius-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusTopRightIcon = {\n name: 'border-radius-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusIcon = {\n name: 'border-radius',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleBottomIcon = {\n name: 'border-style-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleLeftIcon = {\n name: 'border-style-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleRightIcon = {\n name: 'border-style-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleTopIcon = {\n name: 'border-style-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleIcon = {\n name: 'border-style',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var boxSizingIcon = {\n name: 'box-sizing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleDownIcon = {\n name: 'chevron-double-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleLeftIcon = {\n name: 'chevron-double-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleRightIcon = {\n name: 'chevron-double-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleUpIcon = {\n name: 'chevron-double-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataOdsIcon = {\n name: 'data-ods',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var nonRecurrenceIcon = {\n name: 'non-recurrence',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayBlockIcon = {\n name: 'display-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayFlexIcon = {\n name: 'display-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayInlineFlexIcon = {\n name: 'display-inline-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletSliderIcon = {\n name: 'droplet-slider',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileReportIcon = {\n name: 'file-report',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gapColumnIcon = {\n name: 'gap-column',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gapRowIcon = {\n name: 'gap-row',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleResizeAltIcon = {\n name: 'handle-resize-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleResizeIcon = {\n name: 'handle-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imagesIcon = {\n name: 'images',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var letterSpaceIcon = {\n name: 'letter-space',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lineHeightIcon = {\n name: 'line-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listLatinBigIcon = {\n name: 'list-latin-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listLatinSmallIcon = {\n name: 'list-latin-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanBigIcon = {\n name: 'list-roman-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanSmallIcon = {\n name: 'list-roman-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedOutlineIcon = {\n name: 'list-unordered-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedSquareIcon = {\n name: 'list-unordered-square',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var maxHeightIcon = {\n name: 'max-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var maxWidthIcon = {\n name: 'max-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minHeightIcon = {\n name: 'min-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minWidthIcon = {\n name: 'min-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outlineOffsetIcon = {\n name: 'outline-offset',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outlineWidthIcon = {\n name: 'outline-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingBottomIcon = {\n name: 'padding-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingLeftIcon = {\n name: 'padding-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingRightIcon = {\n name: 'padding-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingTopIcon = {\n name: 'padding-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingIcon = {\n name: 'padding',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionBottomIcon = {\n name: 'position-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionLeftIcon = {\n name: 'position-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionRightIcon = {\n name: 'position-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionTopIcon = {\n name: 'position-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var regularExpressionIcon = {\n name: 'regular-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var replaceAllIcon = {\n name: 'replace-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var replaceSingleIcon = {\n name: 'replace-single',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var reportElementIcon = {\n name: 'report-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rightDoubleQuotesIcon = {\n name: 'right-double-quotes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var wholeWordIcon = {\n name: 'whole-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataSdsIcon = {\n name: 'data-sds',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var downloadLightIcon = {\n name: 'download-light',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyeSlashIcon = {\n name: 'eye-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayInlineBlockIcon = {\n name: 'display-inline-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperPlaneIcon = {\n name: 'paper-plane',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gaugeLinearIcon = {\n name: 'gauge-linear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gaugeRadialIcon = {\n name: 'gauge-radial',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeBoxIcon = {\n name: 'envelope-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeLinkIcon = {\n name: 'envelope-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeIcon = {\n name: 'envelope',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var warningCircleIcon = {\n name: 'warning-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var warningTriangleIcon = {\n name: 'warning-triangle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontGrowIcon = {\n name: 'font-grow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontShrinkIcon = {\n name: 'font-shrink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textOverflowIcon = {\n name: 'text-overflow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textWrapArrowIcon = {\n name: 'text-wrap-arrow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textTruncateIcon = {\n name: 'text-truncate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textClipIcon = {\n name: 'text-clip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderColorIcon = {\n name: 'border-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderTypeIcon = {\n name: 'border-type',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var undoIcon = {\n name: 'undo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redoIcon = {\n name: 'redo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCcwIcon = {\n name: 'arrow-rotate-ccw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCwIcon = {\n name: 'arrow-rotate-cw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsNoRepeatIcon = {\n name: 'arrows-no-repeat',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCcwSmallIcon = {\n name: 'arrow-rotate-ccw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCwSmallIcon = {\n name: 'arrow-rotate-cw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clockIcon = {\n name: 'clock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calendarIcon = {\n name: 'calendar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var saveIcon = {\n name: 'save',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var printIcon = {\n name: 'print',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pencilIcon = {\n name: 'pencil',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trashIcon = {\n name: 'trash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperclipIcon = {\n name: 'paperclip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperclipAltIcon = {\n name: 'paperclip-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkIcon = {\n name: 'link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlinkIcon = {\n name: 'unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkVerticalIcon = {\n name: 'link-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlinkVerticalIcon = {\n name: 'unlink-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lockIcon = {\n name: 'lock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlockIcon = {\n name: 'unlock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelIcon = {\n name: 'cancel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelOutlineIcon = {\n name: 'cancel-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelCircleIcon = {\n name: 'cancel-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkIcon = {\n name: 'check',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkOutlineIcon = {\n name: 'check-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkCircleIcon = {\n name: 'check-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xIcon = {\n name: 'x',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xOutlineIcon = {\n name: 'x-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xCircleIcon = {\n name: 'x-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusIcon = {\n name: 'plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusOutlineIcon = {\n name: 'plus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusCircleIcon = {\n name: 'plus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusIcon = {\n name: 'minus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusOutlineIcon = {\n name: 'minus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusCircleIcon = {\n name: 'minus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortAscIcon = {\n name: 'sort-asc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortDescIcon = {\n name: 'sort-desc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortClearIcon = {\n name: 'sort-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortAscSmallIcon = {\n name: 'sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortDescSmallIcon = {\n name: 'sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterIcon = {\n name: 'filter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterClearIcon = {\n name: 'filter-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSmallIcon = {\n name: 'filter-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSortAscSmallIcon = {\n name: 'filter-sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSortDescSmallIcon = {\n name: 'filter-sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterAddExpressionIcon = {\n name: 'filter-add-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterAddGroupIcon = {\n name: 'filter-add-group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var loginIcon = {\n name: 'login',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var logoutIcon = {\n name: 'logout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var downloadIcon = {\n name: 'download',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var uploadIcon = {\n name: 'upload',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hyperlinkOpenIcon = {\n name: 'hyperlink-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hyperlinkOpenSmIcon = {\n name: 'hyperlink-open-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var launchIcon = {\n name: 'launch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowIcon = {\n name: 'window',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowRestoreIcon = {\n name: 'window-restore',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowMinimizeIcon = {\n name: 'window-minimize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gearIcon = {\n name: 'gear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gearsIcon = {\n name: 'gears',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var wrenchIcon = {\n name: 'wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyeIcon = {\n name: 'eye',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var searchIcon = {\n name: 'search',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomInIcon = {\n name: 'zoom-in',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomOutIcon = {\n name: 'zoom-out',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsMoveIcon = {\n name: 'arrows-move',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calculatorIcon = {\n name: 'calculator',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cartIcon = {\n name: 'cart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var connectorIcon = {\n name: 'connector',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusSmIcon = {\n name: 'plus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusSmIcon = {\n name: 'minus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusDenyIcon = {\n name: 'kpi-status-deny',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusHoldIcon = {\n name: 'kpi-status-hold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusOpenIcon = {\n name: 'kpi-status-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var equalIcon = {\n name: 'equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var notEqualIcon = {\n name: 'not-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lessOrEqualIcon = {\n name: 'less-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var greaterOrEqualIcon = {\n name: 'greater-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var divideIcon = {\n name: 'divide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var accessibilityIcon = {\n name: 'accessibility',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeOutlineIcon = {\n name: 'barcode-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeIcon = {\n name: 'barcode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeScannerIcon = {\n name: 'barcode-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeOutlineIcon = {\n name: 'qr-code-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeIcon = {\n name: 'qr-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeScannerIcon = {\n name: 'qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeQrCodeScannerIcon = {\n name: 'barcode-qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var signatureIcon = {\n name: 'signature',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handIcon = {\n name: 'hand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pointerIcon = {\n name: 'pointer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stickIcon = {\n name: 'stick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unstickIcon = {\n name: 'unstick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var setColumnPositionIcon = {\n name: 'set-column-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clockArrowRotateIcon = {\n name: 'clock-arrow-rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playIcon = {\n name: 'play',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pauseIcon = {\n name: 'pause',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stopIcon = {\n name: 'stop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rewindIcon = {\n name: 'rewind',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var forwardIcon = {\n name: 'forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeDownIcon = {\n name: 'volume-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeUpIcon = {\n name: 'volume-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeMuteIcon = {\n name: 'volume-mute',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hdIcon = {\n name: 'hd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var closedCaptionsIcon = {\n name: 'closed-captions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playlistIcon = {\n name: 'playlist',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var musicNotesIcon = {\n name: 'music-notes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playSmIcon = {\n name: 'play-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pauseSmIcon = {\n name: 'pause-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stopSmIcon = {\n name: 'stop-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var heartOutlineIcon = {\n name: 'heart-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var heartIcon = {\n name: 'heart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var starOutlineIcon = {\n name: 'star-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var starIcon = {\n name: 'star',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxIcon = {\n name: 'checkbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxCheckedIcon = {\n name: 'checkbox-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxIndeterminateIcon = {\n name: 'checkbox-indeterminate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxNullIcon = {\n name: 'checkbox-null',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var circleIcon = {\n name: 'circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var radiobuttonIcon = {\n name: 'radiobutton',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var radiobuttonCheckedIcon = {\n name: 'radiobutton-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bellIcon = {\n name: 'bell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var infoCircleIcon = {\n name: 'info-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var questionCircleIcon = {\n name: 'question-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exclamationCircleIcon = {\n name: 'exclamation-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cameraIcon = {\n name: 'camera',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageIcon = {\n name: 'image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageExportIcon = {\n name: 'image-export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomActualSizeIcon = {\n name: 'zoom-actual-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomBestFitIcon = {\n name: 'zoom-best-fit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageResizeIcon = {\n name: 'image-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cropIcon = {\n name: 'crop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mirrorIcon = {\n name: 'mirror',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flipHorizontalIcon = {\n name: 'flip-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flipVerticalIcon = {\n name: 'flip-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateIcon = {\n name: 'rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateRightIcon = {\n name: 'rotate-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateLeftIcon = {\n name: 'rotate-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var brushIcon = {\n name: 'brush',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paletteIcon = {\n name: 'palette',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletIcon = {\n name: 'droplet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shapeLineIcon = {\n name: 'shape-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var brightnessContrastIcon = {\n name: 'brightness-contrast',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var slidersIcon = {\n name: 'sliders',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var invertColorsIcon = {\n name: 'invert-colors',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var transparencyIcon = {\n name: 'transparency',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var grayscaleIcon = {\n name: 'grayscale',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var blurIcon = {\n name: 'blur',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sharpenIcon = {\n name: 'sharpen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shapesIcon = {\n name: 'shapes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var roundCornersIcon = {\n name: 'round-corners',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringToFrontIcon = {\n name: 'bring-to-front',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringToBackIcon = {\n name: 'bring-to-back',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringForwardIcon = {\n name: 'bring-forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringBackwardIcon = {\n name: 'bring-backward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStartIcon = {\n name: 'align-self-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfCenterIcon = {\n name: 'align-self-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfEndIcon = {\n name: 'align-self-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStartAltIcon = {\n name: 'align-self-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfCenterAltIcon = {\n name: 'align-self-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfEndAltIcon = {\n name: 'align-self-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsUpIcon = {\n name: 'thumbnails-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsRightIcon = {\n name: 'thumbnails-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsDownIcon = {\n name: 'thumbnails-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsLeftIcon = {\n name: 'thumbnails-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fullscreenIcon = {\n name: 'fullscreen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fullscreenExitIcon = {\n name: 'fullscreen-exit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletSlashIcon = {\n name: 'droplet-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var photosIcon = {\n name: 'photos',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignToGridIcon = {\n name: 'align-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sizeToGridIcon = {\n name: 'size-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameSizeIcon = {\n name: 'make-same-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameWidthIcon = {\n name: 'make-same-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameHeightIcon = {\n name: 'make-same-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeHorizontalSpacingEqualIcon = {\n name: 'make-horizontal-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var increaseHorizontalSpacingIcon = {\n name: 'increase-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decreaseHorizontalSpacingIcon = {\n name: 'decrease-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var removeHorizontalSpacingIcon = {\n name: 'remove-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeVerticalSpacingEqualIcon = {\n name: 'make-vertical-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var increaseVerticalSpacingIcon = {\n name: 'increase-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decreaseVerticalSpacingIcon = {\n name: 'decrease-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var removeVerticalSpacingIcon = {\n name: 'remove-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyedropperIcon = {\n name: 'eyedropper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapGridIcon = {\n name: 'snap-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapToGridlinesIcon = {\n name: 'snap-to-gridlines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapToSnaplinesIcon = {\n name: 'snap-to-snaplines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dimensionsIcon = {\n name: 'dimensions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStretchIcon = {\n name: 'align-self-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStretchAltIcon = {\n name: 'align-self-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStartIcon = {\n name: 'align-items-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsCenterIcon = {\n name: 'align-items-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsEndIcon = {\n name: 'align-items-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStretchIcon = {\n name: 'align-items-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsBaselineIcon = {\n name: 'align-items-baseline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStartAltIcon = {\n name: 'align-items-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsCenterAltIcon = {\n name: 'align-items-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsEndAltIcon = {\n name: 'align-items-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStretchAltIcon = {\n name: 'align-items-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsBaselineAltIcon = {\n name: 'align-items-baseline-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentStartIcon = {\n name: 'justify-content-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentCenterIcon = {\n name: 'justify-content-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentEndIcon = {\n name: 'justify-content-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentBetweenIcon = {\n name: 'justify-content-between',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentAroundIcon = {\n name: 'justify-content-around',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentStartAltIcon = {\n name: 'justify-content-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentCenterAltIcon = {\n name: 'justify-content-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentEndAltIcon = {\n name: 'justify-content-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentBetweenAltIcon = {\n name: 'justify-content-between-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentAroundAltIcon = {\n name: 'justify-content-around-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileWrenchIcon = {\n name: 'file-wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var boldIcon = {\n name: 'bold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var italicIcon = {\n name: 'italic',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var underlineIcon = {\n name: 'underline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontFamilyIcon = {\n name: 'font-family',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var foregroundColorIcon = {\n name: 'foreground-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var convertLowercaseIcon = {\n name: 'convert-lowercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var convertUppercaseIcon = {\n name: 'convert-uppercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var strikethroughIcon = {\n name: 'strikethrough',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var subscriptIcon = {\n name: 'subscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var supscriptIcon = {\n name: 'supscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var divIcon = {\n name: 'div',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var allIcon = {\n name: 'all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h1Icon = {\n name: 'h1',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h2Icon = {\n name: 'h2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h3Icon = {\n name: 'h3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h4Icon = {\n name: 'h4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h5Icon = {\n name: 'h5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h6Icon = {\n name: 'h6',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listOrderedIcon = {\n name: 'list-ordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedIcon = {\n name: 'list-unordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var indentIcon = {\n name: 'indent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outdentIcon = {\n name: 'outdent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertTopIcon = {\n name: 'insert-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertMiddleIcon = {\n name: 'insert-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertBottomIcon = {\n name: 'insert-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignTopIcon = {\n name: 'align-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignMiddleIcon = {\n name: 'align-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignBottomIcon = {\n name: 'align-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignLeftIcon = {\n name: 'align-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignCenterIcon = {\n name: 'align-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignRightIcon = {\n name: 'align-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignJustifyIcon = {\n name: 'align-justify',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignRemoveIcon = {\n name: 'align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textWrapIcon = {\n name: 'text-wrap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var horizontalRuleIcon = {\n name: 'horizontal-rule',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopLeftIcon = {\n name: 'table-align-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopCenterIcon = {\n name: 'table-align-top-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopRightIcon = {\n name: 'table-align-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleLeftIcon = {\n name: 'table-align-middle-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleCenterIcon = {\n name: 'table-align-middle-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleRightIcon = {\n name: 'table-align-middle-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomLeftIcon = {\n name: 'table-align-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomCenterIcon = {\n name: 'table-align-bottom-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomRightIcon = {\n name: 'table-align-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignRemoveIcon = {\n name: 'table-align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersAllIcon = {\n name: 'borders-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersOutsideIcon = {\n name: 'borders-outside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideIcon = {\n name: 'borders-inside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideHorizontalIcon = {\n name: 'borders-inside-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideVerticalIcon = {\n name: 'borders-inside-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderTopIcon = {\n name: 'border-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderBottomIcon = {\n name: 'border-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderLeftIcon = {\n name: 'border-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRightIcon = {\n name: 'border-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersNoneIcon = {\n name: 'borders-none',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersShowHideIcon = {\n name: 'borders-show-hide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formIcon = {\n name: 'form',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formElementIcon = {\n name: 'form-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var codeSnippetIcon = {\n name: 'code-snippet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var selectAllIcon = {\n name: 'select-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var buttonIcon = {\n name: 'button',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var selectBoxIcon = {\n name: 'select-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calendarDateIcon = {\n name: 'calendar-date',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupBoxIcon = {\n name: 'group-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textareaIcon = {\n name: 'textarea',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textboxIcon = {\n name: 'textbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textboxHiddenIcon = {\n name: 'textbox-hidden',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var passwordIcon = {\n name: 'password',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paragraphAddIcon = {\n name: 'paragraph-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var editToolsIcon = {\n name: 'edit-tools',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var templateManagerIcon = {\n name: 'template-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var changeManuallyIcon = {\n name: 'change-manually',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesIcon = {\n name: 'track-changes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesEnableIcon = {\n name: 'track-changes-enable',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesAcceptIcon = {\n name: 'track-changes-accept',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesAcceptAllIcon = {\n name: 'track-changes-accept-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesRejectIcon = {\n name: 'track-changes-reject',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesRejectAllIcon = {\n name: 'track-changes-reject-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var documentManagerIcon = {\n name: 'document-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var customIconIcon = {\n name: 'custom-icon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bookIcon = {\n name: 'book',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageAddIcon = {\n name: 'image-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageEditIcon = {\n name: 'image-edit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageMapEditorIcon = {\n name: 'image-map-editor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentIcon = {\n name: 'comment',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentRemoveIcon = {\n name: 'comment-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentsRemoveIcon = {\n name: 'comments-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var silverlightIcon = {\n name: 'silverlight',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mediaManagerIcon = {\n name: 'media-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var videoExternalIcon = {\n name: 'video-external',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flashManagerIcon = {\n name: 'flash-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var binocularsIcon = {\n name: 'binoculars',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var copyIcon = {\n name: 'copy',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cutIcon = {\n name: 'cut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardIcon = {\n name: 'clipboard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardCodeIcon = {\n name: 'clipboard-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardWordIcon = {\n name: 'clipboard-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardWordAltIcon = {\n name: 'clipboard-word-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardHtmlIcon = {\n name: 'clipboard-html',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardMarkdownIcon = {\n name: 'clipboard-markdown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardTextIcon = {\n name: 'clipboard-text',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var applyFormatIcon = {\n name: 'apply-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clearCssIcon = {\n name: 'clear-css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var copyFormatIcon = {\n name: 'copy-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripAllFormattingIcon = {\n name: 'strip-all-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripCssFormatIcon = {\n name: 'strip-css-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripFontElementsIcon = {\n name: 'strip-font-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripSpanElementsIcon = {\n name: 'strip-span-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripWordFormattingIcon = {\n name: 'strip-word-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formatCodeBlockIcon = {\n name: 'format-code-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var buildingBlocksIcon = {\n name: 'building-blocks',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var puzzlePieceIcon = {\n name: 'puzzle-piece',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkAddIcon = {\n name: 'link-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeLinkIcon = {\n name: 'globe-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeUnlinkIcon = {\n name: 'globe-unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopLinkIcon = {\n name: 'envelop-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var anchorIcon = {\n name: 'anchor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAddIcon = {\n name: 'table-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableIcon = {\n name: 'table',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePropertiesIcon = {\n name: 'table-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellIcon = {\n name: 'table-cell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellPropertiesIcon = {\n name: 'table-cell-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnInsertLeftIcon = {\n name: 'table-column-insert-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnInsertRightIcon = {\n name: 'table-column-insert-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowInsertAboveIcon = {\n name: 'table-row-insert-above',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowInsertBelowIcon = {\n name: 'table-row-insert-below',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnDeleteIcon = {\n name: 'table-column-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowDeleteIcon = {\n name: 'table-row-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellDeleteIcon = {\n name: 'table-cell-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableDeleteIcon = {\n name: 'table-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeIcon = {\n name: 'cells-merge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeHorizontallyIcon = {\n name: 'cells-merge-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeVerticallyIcon = {\n name: 'cells-merge-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellSplitHorizontallyIcon = {\n name: 'cell-split-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellSplitVerticallyIcon = {\n name: 'cell-split-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableUnmergeIcon = {\n name: 'table-unmerge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paneFreezeIcon = {\n name: 'pane-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rowFreezeIcon = {\n name: 'row-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var columnFreezeIcon = {\n name: 'column-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var toolbarFloatIcon = {\n name: 'toolbar-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var spellCheckerIcon = {\n name: 'spell-checker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var validationXhtmlIcon = {\n name: 'validation-xhtml',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var validationDataIcon = {\n name: 'validation-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var toggleFullScreenModeIcon = {\n name: 'toggle-full-screen-mode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formulaFxIcon = {\n name: 'formula-fx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sumIcon = {\n name: 'sum',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var symbolIcon = {\n name: 'symbol',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dollarIcon = {\n name: 'dollar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var percentIcon = {\n name: 'percent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var customFormatIcon = {\n name: 'custom-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decimalIncreaseIcon = {\n name: 'decimal-increase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decimalDecreaseIcon = {\n name: 'decimal-decrease',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontSizeIcon = {\n name: 'font-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageAbsolutePositionIcon = {\n name: 'image-absolute-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableWizardIcon = {\n name: 'table-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var crosstabIcon = {\n name: 'crosstab',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var crosstabWizardIcon = {\n name: 'crosstab-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableBodyIcon = {\n name: 'table-body',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnGroupsIcon = {\n name: 'table-column-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCornerIcon = {\n name: 'table-corner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowGroupsIcon = {\n name: 'table-row-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeOutlineIcon = {\n name: 'globe-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeIcon = {\n name: 'globe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mapMarkerIcon = {\n name: 'map-marker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mapMarkerTargetIcon = {\n name: 'map-marker-target',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinIcon = {\n name: 'pin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unpinIcon = {\n name: 'unpin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shareIcon = {\n name: 'share',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var userIcon = {\n name: 'user',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var inboxIcon = {\n name: 'inbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bloggerIcon = {\n name: 'blogger',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bloggerBoxIcon = {\n name: 'blogger-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var deliciousIcon = {\n name: 'delicious',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var deliciousBoxIcon = {\n name: 'delicious-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var diggIcon = {\n name: 'digg',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var diggBoxIcon = {\n name: 'digg-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopIcon = {\n name: 'envelop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopBoxIcon = {\n name: 'envelop-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var facebookIcon = {\n name: 'facebook',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var facebookBoxIcon = {\n name: 'facebook-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googleIcon = {\n name: 'google',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googleBoxIcon = {\n name: 'google-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googlePlusIcon = {\n name: 'google-plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googlePlusBoxIcon = {\n name: 'google-plus-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkedinIcon = {\n name: 'linkedin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkedinBoxIcon = {\n name: 'linkedin-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var myspaceIcon = {\n name: 'myspace',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var myspaceBoxIcon = {\n name: 'myspace-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinterestIcon = {\n name: 'pinterest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinterestBoxIcon = {\n name: 'pinterest-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redditIcon = {\n name: 'reddit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redditBoxIcon = {\n name: 'reddit-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stumbleUponIcon = {\n name: 'stumble-upon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stumbleUponBoxIcon = {\n name: 'stumble-upon-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tellAFriendIcon = {\n name: 'tell-a-friend',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tellAFriendBoxIcon = {\n name: 'tell-a-friend-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tumblrIcon = {\n name: 'tumblr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tumblrBoxIcon = {\n name: 'tumblr-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var twitterIcon = {\n name: 'twitter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var twitterBoxIcon = {\n name: 'twitter-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var yammerIcon = {\n name: 'yammer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var yammerBoxIcon = {\n name: 'yammer-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var behanceIcon = {\n name: 'behance',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var behanceBoxIcon = {\n name: 'behance-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dribbbleIcon = {\n name: 'dribbble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dribbbleBoxIcon = {\n name: 'dribbble-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rssIcon = {\n name: 'rss',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rssBoxIcon = {\n name: 'rss-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vimeoIcon = {\n name: 'vimeo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vimeoBoxIcon = {\n name: 'vimeo-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var youtubeIcon = {\n name: 'youtube',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var youtubeBoxIcon = {\n name: 'youtube-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderIcon = {\n name: 'folder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderOpenIcon = {\n name: 'folder-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderAddIcon = {\n name: 'folder-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderUpIcon = {\n name: 'folder-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderMoreIcon = {\n name: 'folder-more',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var aggregateFieldsIcon = {\n name: 'aggregate-fields',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileIcon = {\n name: 'file',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAddIcon = {\n name: 'file-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileTxtIcon = {\n name: 'file-txt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileCsvIcon = {\n name: 'file-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileExcelIcon = {\n name: 'file-excel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileWordIcon = {\n name: 'file-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileMdbIcon = {\n name: 'file-mdb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePptIcon = {\n name: 'file-ppt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePdfIcon = {\n name: 'file-pdf',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePsdIcon = {\n name: 'file-psd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileFlashIcon = {\n name: 'file-flash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileConfigIcon = {\n name: 'file-config',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAscxIcon = {\n name: 'file-ascx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileBacIcon = {\n name: 'file-bac',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileZipIcon = {\n name: 'file-zip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filmIcon = {\n name: 'film',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var css3Icon = {\n name: 'css3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var html5Icon = {\n name: 'html5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var codeIcon = {\n name: 'code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cssIcon = {\n name: 'css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var jsIcon = {\n name: 'js',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exeIcon = {\n name: 'exe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var csprojIcon = {\n name: 'csproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vbprojIcon = {\n name: 'vbproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var csIcon = {\n name: 'cs',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vbIcon = {\n name: 'vb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var slnIcon = {\n name: 'sln',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cloudIcon = {\n name: 'cloud',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileHorizontalIcon = {\n name: 'file-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var subreportIcon = {\n name: 'subreport',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataIcon = {\n name: 'data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileHeaderIcon = {\n name: 'file-header',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileFooterIcon = {\n name: 'file-footer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupHeaderSectionIcon = {\n name: 'group-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupFooterSectionIcon = {\n name: 'group-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pageHeaderSectionIcon = {\n name: 'page-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pageFooterSectionIcon = {\n name: 'page-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var detailSectionIcon = {\n name: 'detail-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tocSectionIcon = {\n name: 'toc-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupSectionIcon = {\n name: 'group-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersIcon = {\n name: 'parameters',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataCsvIcon = {\n name: 'data-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataJsonIcon = {\n name: 'data-json',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataSqlIcon = {\n name: 'data-sql',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataWebIcon = {\n name: 'data-web',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupCollectionIcon = {\n name: 'group-collection',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterBooleanIcon = {\n name: 'parameter-boolean',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterDateTimeIcon = {\n name: 'parameter-date-time',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterFloatIcon = {\n name: 'parameter-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterIntegerIcon = {\n name: 'parameter-integer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterStringIcon = {\n name: 'parameter-string',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tocSectionLevelIcon = {\n name: 'toc-section-level',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var inheritedIcon = {\n name: 'inherited',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileVideoIcon = {\n name: 'file-video',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAudioIcon = {\n name: 'file-audio',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileImageIcon = {\n name: 'file-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePresentationIcon = {\n name: 'file-presentation',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileDataIcon = {\n name: 'file-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileDiscImageIcon = {\n name: 'file-disc-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileProgrammingIcon = {\n name: 'file-programming',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersByteArrayIcon = {\n name: 'parameters-byte-array',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersUnknownIcon = {\n name: 'parameters-unknown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileErrorIcon = {\n name: 'file-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filesErrorIcon = {\n name: 'files-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataRestIcon = {\n name: 'data-rest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileTypescriptIcon = {\n name: 'file-typescript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionStartIcon = {\n name: 'table-position-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionCenterIcon = {\n name: 'table-position-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionEndIcon = {\n name: 'table-position-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanUpperIcon = {\n name: 'list-roman-upper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanLowerIcon = {\n name: 'list-roman-lower',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var importIcon = {\n name: 'import',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exportIcon = {\n name: 'export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var graphIcon = {\n name: 'graph',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnClusteredIcon = {\n name: 'chart-column-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnStackedIcon = {\n name: 'chart-column-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnStacked100Icon = {\n name: 'chart-column-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnRangeIcon = {\n name: 'chart-column-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarClusteredIcon = {\n name: 'chart-bar-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarStackedIcon = {\n name: 'chart-bar-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarStacked100Icon = {\n name: 'chart-bar-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarRangeIcon = {\n name: 'chart-bar-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaClusteredIcon = {\n name: 'chart-area-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaStackedIcon = {\n name: 'chart-area-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaStacked100Icon = {\n name: 'chart-area-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaRangeIcon = {\n name: 'chart-area-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineIcon = {\n name: 'chart-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStackedIcon = {\n name: 'chart-line-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStacked100Icon = {\n name: 'chart-line-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineMarkersIcon = {\n name: 'chart-line-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStackedMarkersIcon = {\n name: 'chart-line-stacked-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStacked100MarkersIcon = {\n name: 'chart-line-stacked100-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartPieIcon = {\n name: 'chart-pie',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartDoughnutIcon = {\n name: 'chart-doughnut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterIcon = {\n name: 'chart-scatter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterSmoothLinesMarkersIcon = {\n name: 'chart-scatter-smooth-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterSmoothLinesIcon = {\n name: 'chart-scatter-smooth-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterStraightLinesMarkersIcon = {\n name: 'chart-scatter-straight-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterStraightLinesIcon = {\n name: 'chart-scatter-straight-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBubbleIcon = {\n name: 'chart-bubble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartCandlestickIcon = {\n name: 'chart-candlestick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartOhlcIcon = {\n name: 'chart-ohlc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarIcon = {\n name: 'chart-radar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarMarkersIcon = {\n name: 'chart-radar-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarFilledIcon = {\n name: 'chart-radar-filled',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRoseIcon = {\n name: 'chart-rose',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartChoroplethIcon = {\n name: 'chart-choropleth',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var svgIcons = /*#__PURE__*/Object.freeze({\n __proto__: null,\n accessibilityIcon: accessibilityIcon,\n aggregateFieldsIcon: aggregateFieldsIcon,\n alignBottomIcon: alignBottomIcon,\n alignCenterIcon: alignCenterIcon,\n alignItemsBaselineAltIcon: alignItemsBaselineAltIcon,\n alignItemsBaselineIcon: alignItemsBaselineIcon,\n alignItemsCenterAltIcon: alignItemsCenterAltIcon,\n alignItemsCenterIcon: alignItemsCenterIcon,\n alignItemsEndAltIcon: alignItemsEndAltIcon,\n alignItemsEndIcon: alignItemsEndIcon,\n alignItemsStartAltIcon: alignItemsStartAltIcon,\n alignItemsStartIcon: alignItemsStartIcon,\n alignItemsStretchAltIcon: alignItemsStretchAltIcon,\n alignItemsStretchIcon: alignItemsStretchIcon,\n alignJustifyIcon: alignJustifyIcon,\n alignLeftIcon: alignLeftIcon,\n alignMiddleIcon: alignMiddleIcon,\n alignRemoveIcon: alignRemoveIcon,\n alignRightIcon: alignRightIcon,\n alignSelfCenterAltIcon: alignSelfCenterAltIcon,\n alignSelfCenterIcon: alignSelfCenterIcon,\n alignSelfEndAltIcon: alignSelfEndAltIcon,\n alignSelfEndIcon: alignSelfEndIcon,\n alignSelfStartAltIcon: alignSelfStartAltIcon,\n alignSelfStartIcon: alignSelfStartIcon,\n alignSelfStretchAltIcon: alignSelfStretchAltIcon,\n alignSelfStretchIcon: alignSelfStretchIcon,\n alignToGridIcon: alignToGridIcon,\n alignTopIcon: alignTopIcon,\n allIcon: allIcon,\n anchorIcon: anchorIcon,\n applyFormatIcon: applyFormatIcon,\n arrowDownIcon: arrowDownIcon,\n arrowLeftIcon: arrowLeftIcon,\n arrowOverflowDownIcon: arrowOverflowDownIcon,\n arrowRightIcon: arrowRightIcon,\n arrowRotateCcwIcon: arrowRotateCcwIcon,\n arrowRotateCcwSmallIcon: arrowRotateCcwSmallIcon,\n arrowRotateCwIcon: arrowRotateCwIcon,\n arrowRotateCwSmallIcon: arrowRotateCwSmallIcon,\n arrowUpIcon: arrowUpIcon,\n arrowsAxesIcon: arrowsAxesIcon,\n arrowsLeftRightIcon: arrowsLeftRightIcon,\n arrowsMoveIcon: arrowsMoveIcon,\n arrowsNoChangeIcon: arrowsNoChangeIcon,\n arrowsNoRepeatIcon: arrowsNoRepeatIcon,\n arrowsSwapIcon: arrowsSwapIcon,\n arrowsTopBottomIcon: arrowsTopBottomIcon,\n barcodeIcon: barcodeIcon,\n barcodeOutlineIcon: barcodeOutlineIcon,\n barcodeQrCodeScannerIcon: barcodeQrCodeScannerIcon,\n barcodeScannerIcon: barcodeScannerIcon,\n behanceBoxIcon: behanceBoxIcon,\n behanceIcon: behanceIcon,\n bellIcon: bellIcon,\n binocularsIcon: binocularsIcon,\n bloggerBoxIcon: bloggerBoxIcon,\n bloggerIcon: bloggerIcon,\n blurIcon: blurIcon,\n boldIcon: boldIcon,\n bookIcon: bookIcon,\n borderBottomIcon: borderBottomIcon,\n borderColorIcon: borderColorIcon,\n borderLeftIcon: borderLeftIcon,\n borderRadiusBottomLeftIcon: borderRadiusBottomLeftIcon,\n borderRadiusBottomRightIcon: borderRadiusBottomRightIcon,\n borderRadiusIcon: borderRadiusIcon,\n borderRadiusTopLeftIcon: borderRadiusTopLeftIcon,\n borderRadiusTopRightIcon: borderRadiusTopRightIcon,\n borderRightIcon: borderRightIcon,\n borderStyleBottomIcon: borderStyleBottomIcon,\n borderStyleIcon: borderStyleIcon,\n borderStyleLeftIcon: borderStyleLeftIcon,\n borderStyleRightIcon: borderStyleRightIcon,\n borderStyleTopIcon: borderStyleTopIcon,\n borderTopIcon: borderTopIcon,\n borderTypeIcon: borderTypeIcon,\n bordersAllIcon: bordersAllIcon,\n bordersInsideHorizontalIcon: bordersInsideHorizontalIcon,\n bordersInsideIcon: bordersInsideIcon,\n bordersInsideVerticalIcon: bordersInsideVerticalIcon,\n bordersNoneIcon: bordersNoneIcon,\n bordersOutsideIcon: bordersOutsideIcon,\n bordersShowHideIcon: bordersShowHideIcon,\n boxSizingIcon: boxSizingIcon,\n brightnessContrastIcon: brightnessContrastIcon,\n bringBackwardIcon: bringBackwardIcon,\n bringForwardIcon: bringForwardIcon,\n bringToBackIcon: bringToBackIcon,\n bringToFrontIcon: bringToFrontIcon,\n brushIcon: brushIcon,\n buildingBlocksIcon: buildingBlocksIcon,\n buttonIcon: buttonIcon,\n calculatorIcon: calculatorIcon,\n calendarDateIcon: calendarDateIcon,\n calendarIcon: calendarIcon,\n cameraIcon: cameraIcon,\n cancelCircleIcon: cancelCircleIcon,\n cancelIcon: cancelIcon,\n cancelOutlineIcon: cancelOutlineIcon,\n caretAltDownIcon: caretAltDownIcon,\n caretAltExpandIcon: caretAltExpandIcon,\n caretAltLeftIcon: caretAltLeftIcon,\n caretAltRightIcon: caretAltRightIcon,\n caretAltToBottomIcon: caretAltToBottomIcon,\n caretAltToLeftIcon: caretAltToLeftIcon,\n caretAltToRightIcon: caretAltToRightIcon,\n caretAltToTopIcon: caretAltToTopIcon,\n caretAltUpIcon: caretAltUpIcon,\n caretBlIcon: caretBlIcon,\n caretBrIcon: caretBrIcon,\n caretDoubleAltDownIcon: caretDoubleAltDownIcon,\n caretDoubleAltLeftIcon: caretDoubleAltLeftIcon,\n caretDoubleAltRightIcon: caretDoubleAltRightIcon,\n caretDoubleAltUpIcon: caretDoubleAltUpIcon,\n caretTlIcon: caretTlIcon,\n caretTrIcon: caretTrIcon,\n cartIcon: cartIcon,\n categorizeIcon: categorizeIcon,\n cellSplitHorizontallyIcon: cellSplitHorizontallyIcon,\n cellSplitVerticallyIcon: cellSplitVerticallyIcon,\n cellsMergeHorizontallyIcon: cellsMergeHorizontallyIcon,\n cellsMergeIcon: cellsMergeIcon,\n cellsMergeVerticallyIcon: cellsMergeVerticallyIcon,\n changeManuallyIcon: changeManuallyIcon,\n chartAreaClusteredIcon: chartAreaClusteredIcon,\n chartAreaRangeIcon: chartAreaRangeIcon,\n chartAreaStacked100Icon: chartAreaStacked100Icon,\n chartAreaStackedIcon: chartAreaStackedIcon,\n chartBarClusteredIcon: chartBarClusteredIcon,\n chartBarRangeIcon: chartBarRangeIcon,\n chartBarStacked100Icon: chartBarStacked100Icon,\n chartBarStackedIcon: chartBarStackedIcon,\n chartBubbleIcon: chartBubbleIcon,\n chartCandlestickIcon: chartCandlestickIcon,\n chartChoroplethIcon: chartChoroplethIcon,\n chartColumnClusteredIcon: chartColumnClusteredIcon,\n chartColumnRangeIcon: chartColumnRangeIcon,\n chartColumnStacked100Icon: chartColumnStacked100Icon,\n chartColumnStackedIcon: chartColumnStackedIcon,\n chartDoughnutIcon: chartDoughnutIcon,\n chartLineIcon: chartLineIcon,\n chartLineMarkersIcon: chartLineMarkersIcon,\n chartLineStacked100Icon: chartLineStacked100Icon,\n chartLineStacked100MarkersIcon: chartLineStacked100MarkersIcon,\n chartLineStackedIcon: chartLineStackedIcon,\n chartLineStackedMarkersIcon: chartLineStackedMarkersIcon,\n chartOhlcIcon: chartOhlcIcon,\n chartPieIcon: chartPieIcon,\n chartRadarFilledIcon: chartRadarFilledIcon,\n chartRadarIcon: chartRadarIcon,\n chartRadarMarkersIcon: chartRadarMarkersIcon,\n chartRoseIcon: chartRoseIcon,\n chartScatterIcon: chartScatterIcon,\n chartScatterSmoothLinesIcon: chartScatterSmoothLinesIcon,\n chartScatterSmoothLinesMarkersIcon: chartScatterSmoothLinesMarkersIcon,\n chartScatterStraightLinesIcon: chartScatterStraightLinesIcon,\n chartScatterStraightLinesMarkersIcon: chartScatterStraightLinesMarkersIcon,\n checkCircleIcon: checkCircleIcon,\n checkIcon: checkIcon,\n checkOutlineIcon: checkOutlineIcon,\n checkboxCheckedIcon: checkboxCheckedIcon,\n checkboxIcon: checkboxIcon,\n checkboxIndeterminateIcon: checkboxIndeterminateIcon,\n checkboxNullIcon: checkboxNullIcon,\n chevronDoubleDownIcon: chevronDoubleDownIcon,\n chevronDoubleLeftIcon: chevronDoubleLeftIcon,\n chevronDoubleRightIcon: chevronDoubleRightIcon,\n chevronDoubleUpIcon: chevronDoubleUpIcon,\n chevronDownIcon: chevronDownIcon,\n chevronLeftIcon: chevronLeftIcon,\n chevronRightIcon: chevronRightIcon,\n chevronUpIcon: chevronUpIcon,\n circleIcon: circleIcon,\n clearCssIcon: clearCssIcon,\n clipboardCodeIcon: clipboardCodeIcon,\n clipboardHtmlIcon: clipboardHtmlIcon,\n clipboardIcon: clipboardIcon,\n clipboardMarkdownIcon: clipboardMarkdownIcon,\n clipboardTextIcon: clipboardTextIcon,\n clipboardWordAltIcon: clipboardWordAltIcon,\n clipboardWordIcon: clipboardWordIcon,\n clockArrowRotateIcon: clockArrowRotateIcon,\n clockIcon: clockIcon,\n closedCaptionsIcon: closedCaptionsIcon,\n cloudIcon: cloudIcon,\n codeIcon: codeIcon,\n codeSnippetIcon: codeSnippetIcon,\n colResizeIcon: colResizeIcon,\n columnFreezeIcon: columnFreezeIcon,\n columnsIcon: columnsIcon,\n commentIcon: commentIcon,\n commentRemoveIcon: commentRemoveIcon,\n commentsRemoveIcon: commentsRemoveIcon,\n connectorIcon: connectorIcon,\n convertLowercaseIcon: convertLowercaseIcon,\n convertUppercaseIcon: convertUppercaseIcon,\n copyFormatIcon: copyFormatIcon,\n copyIcon: copyIcon,\n cropIcon: cropIcon,\n crosstabIcon: crosstabIcon,\n crosstabWizardIcon: crosstabWizardIcon,\n csIcon: csIcon,\n csprojIcon: csprojIcon,\n css3Icon: css3Icon,\n cssIcon: cssIcon,\n customFormatIcon: customFormatIcon,\n customIconIcon: customIconIcon,\n cutIcon: cutIcon,\n dataCsvIcon: dataCsvIcon,\n dataIcon: dataIcon,\n dataJsonIcon: dataJsonIcon,\n dataOdsIcon: dataOdsIcon,\n dataRestIcon: dataRestIcon,\n dataSdsIcon: dataSdsIcon,\n dataSqlIcon: dataSqlIcon,\n dataWebIcon: dataWebIcon,\n decimalDecreaseIcon: decimalDecreaseIcon,\n decimalIncreaseIcon: decimalIncreaseIcon,\n decreaseHorizontalSpacingIcon: decreaseHorizontalSpacingIcon,\n decreaseVerticalSpacingIcon: decreaseVerticalSpacingIcon,\n deliciousBoxIcon: deliciousBoxIcon,\n deliciousIcon: deliciousIcon,\n detailSectionIcon: detailSectionIcon,\n diggBoxIcon: diggBoxIcon,\n diggIcon: diggIcon,\n dimensionsIcon: dimensionsIcon,\n displayBlockIcon: displayBlockIcon,\n displayFlexIcon: displayFlexIcon,\n displayInlineBlockIcon: displayInlineBlockIcon,\n displayInlineFlexIcon: displayInlineFlexIcon,\n divIcon: divIcon,\n divideIcon: divideIcon,\n documentManagerIcon: documentManagerIcon,\n dollarIcon: dollarIcon,\n downloadIcon: downloadIcon,\n downloadLightIcon: downloadLightIcon,\n dragAndDropIcon: dragAndDropIcon,\n dribbbleBoxIcon: dribbbleBoxIcon,\n dribbbleIcon: dribbbleIcon,\n dropletIcon: dropletIcon,\n dropletSlashIcon: dropletSlashIcon,\n dropletSliderIcon: dropletSliderIcon,\n editToolsIcon: editToolsIcon,\n envelopBoxIcon: envelopBoxIcon,\n envelopIcon: envelopIcon,\n envelopLinkIcon: envelopLinkIcon,\n envelopeBoxIcon: envelopeBoxIcon,\n envelopeIcon: envelopeIcon,\n envelopeLinkIcon: envelopeLinkIcon,\n equalIcon: equalIcon,\n exclamationCircleIcon: exclamationCircleIcon,\n exeIcon: exeIcon,\n exportIcon: exportIcon,\n eyeIcon: eyeIcon,\n eyeSlashIcon: eyeSlashIcon,\n eyedropperIcon: eyedropperIcon,\n facebookBoxIcon: facebookBoxIcon,\n facebookIcon: facebookIcon,\n fileAddIcon: fileAddIcon,\n fileAscxIcon: fileAscxIcon,\n fileAudioIcon: fileAudioIcon,\n fileBacIcon: fileBacIcon,\n fileConfigIcon: fileConfigIcon,\n fileCsvIcon: fileCsvIcon,\n fileDataIcon: fileDataIcon,\n fileDiscImageIcon: fileDiscImageIcon,\n fileErrorIcon: fileErrorIcon,\n fileExcelIcon: fileExcelIcon,\n fileFlashIcon: fileFlashIcon,\n fileFooterIcon: fileFooterIcon,\n fileHeaderIcon: fileHeaderIcon,\n fileHorizontalIcon: fileHorizontalIcon,\n fileIcon: fileIcon,\n fileImageIcon: fileImageIcon,\n fileMdbIcon: fileMdbIcon,\n filePdfIcon: filePdfIcon,\n filePptIcon: filePptIcon,\n filePresentationIcon: filePresentationIcon,\n fileProgrammingIcon: fileProgrammingIcon,\n filePsdIcon: filePsdIcon,\n fileReportIcon: fileReportIcon,\n fileTxtIcon: fileTxtIcon,\n fileTypescriptIcon: fileTypescriptIcon,\n fileVideoIcon: fileVideoIcon,\n fileWordIcon: fileWordIcon,\n fileWrenchIcon: fileWrenchIcon,\n fileZipIcon: fileZipIcon,\n filesErrorIcon: filesErrorIcon,\n filmIcon: filmIcon,\n filterAddExpressionIcon: filterAddExpressionIcon,\n filterAddGroupIcon: filterAddGroupIcon,\n filterClearIcon: filterClearIcon,\n filterIcon: filterIcon,\n filterSmallIcon: filterSmallIcon,\n filterSortAscSmallIcon: filterSortAscSmallIcon,\n filterSortDescSmallIcon: filterSortDescSmallIcon,\n flashManagerIcon: flashManagerIcon,\n flipHorizontalIcon: flipHorizontalIcon,\n flipVerticalIcon: flipVerticalIcon,\n folderAddIcon: folderAddIcon,\n folderIcon: folderIcon,\n folderMoreIcon: folderMoreIcon,\n folderOpenIcon: folderOpenIcon,\n folderUpIcon: folderUpIcon,\n fontFamilyIcon: fontFamilyIcon,\n fontGrowIcon: fontGrowIcon,\n fontShrinkIcon: fontShrinkIcon,\n fontSizeIcon: fontSizeIcon,\n foregroundColorIcon: foregroundColorIcon,\n formElementIcon: formElementIcon,\n formIcon: formIcon,\n formatCodeBlockIcon: formatCodeBlockIcon,\n formulaFxIcon: formulaFxIcon,\n forwardIcon: forwardIcon,\n fullscreenExitIcon: fullscreenExitIcon,\n fullscreenIcon: fullscreenIcon,\n gapColumnIcon: gapColumnIcon,\n gapRowIcon: gapRowIcon,\n gaugeLinearIcon: gaugeLinearIcon,\n gaugeRadialIcon: gaugeRadialIcon,\n gearIcon: gearIcon,\n gearsIcon: gearsIcon,\n globeIcon: globeIcon,\n globeLinkIcon: globeLinkIcon,\n globeOutlineIcon: globeOutlineIcon,\n globeUnlinkIcon: globeUnlinkIcon,\n googleBoxIcon: googleBoxIcon,\n googleIcon: googleIcon,\n googlePlusBoxIcon: googlePlusBoxIcon,\n googlePlusIcon: googlePlusIcon,\n graphIcon: graphIcon,\n grayscaleIcon: grayscaleIcon,\n greaterOrEqualIcon: greaterOrEqualIcon,\n gridIcon: gridIcon,\n gridLayoutIcon: gridLayoutIcon,\n groupBoxIcon: groupBoxIcon,\n groupCollectionIcon: groupCollectionIcon,\n groupFooterSectionIcon: groupFooterSectionIcon,\n groupHeaderSectionIcon: groupHeaderSectionIcon,\n groupIcon: groupIcon,\n groupSectionIcon: groupSectionIcon,\n h1Icon: h1Icon,\n h2Icon: h2Icon,\n h3Icon: h3Icon,\n h4Icon: h4Icon,\n h5Icon: h5Icon,\n h6Icon: h6Icon,\n handIcon: handIcon,\n handleDragIcon: handleDragIcon,\n handleResizeAltIcon: handleResizeAltIcon,\n handleResizeIcon: handleResizeIcon,\n hdIcon: hdIcon,\n heartIcon: heartIcon,\n heartOutlineIcon: heartOutlineIcon,\n homeIcon: homeIcon,\n horizontalRuleIcon: horizontalRuleIcon,\n html5Icon: html5Icon,\n hyperlinkOpenIcon: hyperlinkOpenIcon,\n hyperlinkOpenSmIcon: hyperlinkOpenSmIcon,\n imageAbsolutePositionIcon: imageAbsolutePositionIcon,\n imageAddIcon: imageAddIcon,\n imageEditIcon: imageEditIcon,\n imageExportIcon: imageExportIcon,\n imageIcon: imageIcon,\n imageMapEditorIcon: imageMapEditorIcon,\n imageResizeIcon: imageResizeIcon,\n imagesIcon: imagesIcon,\n importIcon: importIcon,\n inboxIcon: inboxIcon,\n increaseHorizontalSpacingIcon: increaseHorizontalSpacingIcon,\n increaseVerticalSpacingIcon: increaseVerticalSpacingIcon,\n indentIcon: indentIcon,\n infoCircleIcon: infoCircleIcon,\n inheritedIcon: inheritedIcon,\n insertBottomIcon: insertBottomIcon,\n insertMiddleIcon: insertMiddleIcon,\n insertTopIcon: insertTopIcon,\n invertColorsIcon: invertColorsIcon,\n italicIcon: italicIcon,\n jsIcon: jsIcon,\n justifyContentAroundAltIcon: justifyContentAroundAltIcon,\n justifyContentAroundIcon: justifyContentAroundIcon,\n justifyContentBetweenAltIcon: justifyContentBetweenAltIcon,\n justifyContentBetweenIcon: justifyContentBetweenIcon,\n justifyContentCenterAltIcon: justifyContentCenterAltIcon,\n justifyContentCenterIcon: justifyContentCenterIcon,\n justifyContentEndAltIcon: justifyContentEndAltIcon,\n justifyContentEndIcon: justifyContentEndIcon,\n justifyContentStartAltIcon: justifyContentStartAltIcon,\n justifyContentStartIcon: justifyContentStartIcon,\n kpiStatusDenyIcon: kpiStatusDenyIcon,\n kpiStatusHoldIcon: kpiStatusHoldIcon,\n kpiStatusOpenIcon: kpiStatusOpenIcon,\n launchIcon: launchIcon,\n layout1By4Icon: layout1By4Icon,\n layout2By2Icon: layout2By2Icon,\n layoutIcon: layoutIcon,\n layoutSideBySideIcon: layoutSideBySideIcon,\n layoutStackedIcon: layoutStackedIcon,\n lessOrEqualIcon: lessOrEqualIcon,\n letterSpaceIcon: letterSpaceIcon,\n levelDownIcon: levelDownIcon,\n levelToTopIcon: levelToTopIcon,\n levelUpIcon: levelUpIcon,\n lineHeightIcon: lineHeightIcon,\n linkAddIcon: linkAddIcon,\n linkIcon: linkIcon,\n linkVerticalIcon: linkVerticalIcon,\n linkedinBoxIcon: linkedinBoxIcon,\n linkedinIcon: linkedinIcon,\n listLatinBigIcon: listLatinBigIcon,\n listLatinSmallIcon: listLatinSmallIcon,\n listOrderedIcon: listOrderedIcon,\n listRomanBigIcon: listRomanBigIcon,\n listRomanLowerIcon: listRomanLowerIcon,\n listRomanSmallIcon: listRomanSmallIcon,\n listRomanUpperIcon: listRomanUpperIcon,\n listUnorderedIcon: listUnorderedIcon,\n listUnorderedOutlineIcon: listUnorderedOutlineIcon,\n listUnorderedSquareIcon: listUnorderedSquareIcon,\n lockIcon: lockIcon,\n loginIcon: loginIcon,\n logoutIcon: logoutIcon,\n makeHorizontalSpacingEqualIcon: makeHorizontalSpacingEqualIcon,\n makeSameHeightIcon: makeSameHeightIcon,\n makeSameSizeIcon: makeSameSizeIcon,\n makeSameWidthIcon: makeSameWidthIcon,\n makeVerticalSpacingEqualIcon: makeVerticalSpacingEqualIcon,\n mapMarkerIcon: mapMarkerIcon,\n mapMarkerTargetIcon: mapMarkerTargetIcon,\n maxHeightIcon: maxHeightIcon,\n maxWidthIcon: maxWidthIcon,\n mediaManagerIcon: mediaManagerIcon,\n menuIcon: menuIcon,\n minHeightIcon: minHeightIcon,\n minWidthIcon: minWidthIcon,\n minusCircleIcon: minusCircleIcon,\n minusIcon: minusIcon,\n minusOutlineIcon: minusOutlineIcon,\n minusSmIcon: minusSmIcon,\n mirrorIcon: mirrorIcon,\n moreHorizontalIcon: moreHorizontalIcon,\n moreVerticalIcon: moreVerticalIcon,\n musicNotesIcon: musicNotesIcon,\n myspaceBoxIcon: myspaceBoxIcon,\n myspaceIcon: myspaceIcon,\n nonRecurrenceIcon: nonRecurrenceIcon,\n notEqualIcon: notEqualIcon,\n outdentIcon: outdentIcon,\n outlineOffsetIcon: outlineOffsetIcon,\n outlineWidthIcon: outlineWidthIcon,\n overlapIcon: overlapIcon,\n paddingBottomIcon: paddingBottomIcon,\n paddingIcon: paddingIcon,\n paddingLeftIcon: paddingLeftIcon,\n paddingRightIcon: paddingRightIcon,\n paddingTopIcon: paddingTopIcon,\n pageFooterSectionIcon: pageFooterSectionIcon,\n pageHeaderSectionIcon: pageHeaderSectionIcon,\n paletteIcon: paletteIcon,\n paneFreezeIcon: paneFreezeIcon,\n paperPlaneIcon: paperPlaneIcon,\n paperclipAltIcon: paperclipAltIcon,\n paperclipIcon: paperclipIcon,\n paragraphAddIcon: paragraphAddIcon,\n parameterBooleanIcon: parameterBooleanIcon,\n parameterDateTimeIcon: parameterDateTimeIcon,\n parameterFloatIcon: parameterFloatIcon,\n parameterIntegerIcon: parameterIntegerIcon,\n parameterStringIcon: parameterStringIcon,\n parametersByteArrayIcon: parametersByteArrayIcon,\n parametersIcon: parametersIcon,\n parametersUnknownIcon: parametersUnknownIcon,\n passwordIcon: passwordIcon,\n pauseIcon: pauseIcon,\n pauseSmIcon: pauseSmIcon,\n pencilIcon: pencilIcon,\n percentIcon: percentIcon,\n photosIcon: photosIcon,\n pinIcon: pinIcon,\n pinterestBoxIcon: pinterestBoxIcon,\n pinterestIcon: pinterestIcon,\n playIcon: playIcon,\n playSmIcon: playSmIcon,\n playlistIcon: playlistIcon,\n plusCircleIcon: plusCircleIcon,\n plusIcon: plusIcon,\n plusOutlineIcon: plusOutlineIcon,\n plusSmIcon: plusSmIcon,\n pointerIcon: pointerIcon,\n positionBottomIcon: positionBottomIcon,\n positionLeftIcon: positionLeftIcon,\n positionRightIcon: positionRightIcon,\n positionTopIcon: positionTopIcon,\n printIcon: printIcon,\n puzzlePieceIcon: puzzlePieceIcon,\n qrCodeIcon: qrCodeIcon,\n qrCodeOutlineIcon: qrCodeOutlineIcon,\n qrCodeScannerIcon: qrCodeScannerIcon,\n questionCircleIcon: questionCircleIcon,\n radiobuttonCheckedIcon: radiobuttonCheckedIcon,\n radiobuttonIcon: radiobuttonIcon,\n redditBoxIcon: redditBoxIcon,\n redditIcon: redditIcon,\n redoIcon: redoIcon,\n regularExpressionIcon: regularExpressionIcon,\n removeHorizontalSpacingIcon: removeHorizontalSpacingIcon,\n removeVerticalSpacingIcon: removeVerticalSpacingIcon,\n reorderIcon: reorderIcon,\n replaceAllIcon: replaceAllIcon,\n replaceSingleIcon: replaceSingleIcon,\n reportElementIcon: reportElementIcon,\n rewindIcon: rewindIcon,\n rightDoubleQuotesIcon: rightDoubleQuotesIcon,\n rotateIcon: rotateIcon,\n rotateLeftIcon: rotateLeftIcon,\n rotateRightIcon: rotateRightIcon,\n roundCornersIcon: roundCornersIcon,\n rowFreezeIcon: rowFreezeIcon,\n rowsIcon: rowsIcon,\n rssBoxIcon: rssBoxIcon,\n rssIcon: rssIcon,\n saveIcon: saveIcon,\n searchIcon: searchIcon,\n selectAllIcon: selectAllIcon,\n selectBoxIcon: selectBoxIcon,\n setColumnPositionIcon: setColumnPositionIcon,\n shapeLineIcon: shapeLineIcon,\n shapesIcon: shapesIcon,\n shareIcon: shareIcon,\n sharpenIcon: sharpenIcon,\n signatureIcon: signatureIcon,\n silverlightIcon: silverlightIcon,\n sizeToGridIcon: sizeToGridIcon,\n slidersIcon: slidersIcon,\n slnIcon: slnIcon,\n snapGridIcon: snapGridIcon,\n snapToGridlinesIcon: snapToGridlinesIcon,\n snapToSnaplinesIcon: snapToSnaplinesIcon,\n sortAscIcon: sortAscIcon,\n sortAscSmallIcon: sortAscSmallIcon,\n sortClearIcon: sortClearIcon,\n sortDescIcon: sortDescIcon,\n sortDescSmallIcon: sortDescSmallIcon,\n spellCheckerIcon: spellCheckerIcon,\n starIcon: starIcon,\n starOutlineIcon: starOutlineIcon,\n stickIcon: stickIcon,\n stopIcon: stopIcon,\n stopSmIcon: stopSmIcon,\n strikethroughIcon: strikethroughIcon,\n stripAllFormattingIcon: stripAllFormattingIcon,\n stripCssFormatIcon: stripCssFormatIcon,\n stripFontElementsIcon: stripFontElementsIcon,\n stripSpanElementsIcon: stripSpanElementsIcon,\n stripWordFormattingIcon: stripWordFormattingIcon,\n stumbleUponBoxIcon: stumbleUponBoxIcon,\n stumbleUponIcon: stumbleUponIcon,\n subreportIcon: subreportIcon,\n subscriptIcon: subscriptIcon,\n sumIcon: sumIcon,\n supscriptIcon: supscriptIcon,\n symbolIcon: symbolIcon,\n tableAddIcon: tableAddIcon,\n tableAlignBottomCenterIcon: tableAlignBottomCenterIcon,\n tableAlignBottomLeftIcon: tableAlignBottomLeftIcon,\n tableAlignBottomRightIcon: tableAlignBottomRightIcon,\n tableAlignMiddleCenterIcon: tableAlignMiddleCenterIcon,\n tableAlignMiddleLeftIcon: tableAlignMiddleLeftIcon,\n tableAlignMiddleRightIcon: tableAlignMiddleRightIcon,\n tableAlignRemoveIcon: tableAlignRemoveIcon,\n tableAlignTopCenterIcon: tableAlignTopCenterIcon,\n tableAlignTopLeftIcon: tableAlignTopLeftIcon,\n tableAlignTopRightIcon: tableAlignTopRightIcon,\n tableBodyIcon: tableBodyIcon,\n tableCellDeleteIcon: tableCellDeleteIcon,\n tableCellIcon: tableCellIcon,\n tableCellPropertiesIcon: tableCellPropertiesIcon,\n tableColumnDeleteIcon: tableColumnDeleteIcon,\n tableColumnGroupsIcon: tableColumnGroupsIcon,\n tableColumnInsertLeftIcon: tableColumnInsertLeftIcon,\n tableColumnInsertRightIcon: tableColumnInsertRightIcon,\n tableCornerIcon: tableCornerIcon,\n tableDeleteIcon: tableDeleteIcon,\n tableIcon: tableIcon,\n tablePositionCenterIcon: tablePositionCenterIcon,\n tablePositionEndIcon: tablePositionEndIcon,\n tablePositionStartIcon: tablePositionStartIcon,\n tablePropertiesIcon: tablePropertiesIcon,\n tableRowDeleteIcon: tableRowDeleteIcon,\n tableRowGroupsIcon: tableRowGroupsIcon,\n tableRowInsertAboveIcon: tableRowInsertAboveIcon,\n tableRowInsertBelowIcon: tableRowInsertBelowIcon,\n tableUnmergeIcon: tableUnmergeIcon,\n tableWizardIcon: tableWizardIcon,\n tellAFriendBoxIcon: tellAFriendBoxIcon,\n tellAFriendIcon: tellAFriendIcon,\n templateManagerIcon: templateManagerIcon,\n textClipIcon: textClipIcon,\n textOverflowIcon: textOverflowIcon,\n textTruncateIcon: textTruncateIcon,\n textWrapArrowIcon: textWrapArrowIcon,\n textWrapIcon: textWrapIcon,\n textareaIcon: textareaIcon,\n textboxHiddenIcon: textboxHiddenIcon,\n textboxIcon: textboxIcon,\n thumbnailsDownIcon: thumbnailsDownIcon,\n thumbnailsLeftIcon: thumbnailsLeftIcon,\n thumbnailsRightIcon: thumbnailsRightIcon,\n thumbnailsUpIcon: thumbnailsUpIcon,\n tocSectionIcon: tocSectionIcon,\n tocSectionLevelIcon: tocSectionLevelIcon,\n toggleFullScreenModeIcon: toggleFullScreenModeIcon,\n toolbarFloatIcon: toolbarFloatIcon,\n trackChangesAcceptAllIcon: trackChangesAcceptAllIcon,\n trackChangesAcceptIcon: trackChangesAcceptIcon,\n trackChangesEnableIcon: trackChangesEnableIcon,\n trackChangesIcon: trackChangesIcon,\n trackChangesRejectAllIcon: trackChangesRejectAllIcon,\n trackChangesRejectIcon: trackChangesRejectIcon,\n transparencyIcon: transparencyIcon,\n trashIcon: trashIcon,\n tumblrBoxIcon: tumblrBoxIcon,\n tumblrIcon: tumblrIcon,\n twitterBoxIcon: twitterBoxIcon,\n twitterIcon: twitterIcon,\n underlineIcon: underlineIcon,\n undoIcon: undoIcon,\n ungroupIcon: ungroupIcon,\n unlinkIcon: unlinkIcon,\n unlinkVerticalIcon: unlinkVerticalIcon,\n unlockIcon: unlockIcon,\n unpinIcon: unpinIcon,\n unstickIcon: unstickIcon,\n uploadIcon: uploadIcon,\n userIcon: userIcon,\n validationDataIcon: validationDataIcon,\n validationXhtmlIcon: validationXhtmlIcon,\n vbIcon: vbIcon,\n vbprojIcon: vbprojIcon,\n videoExternalIcon: videoExternalIcon,\n vimeoBoxIcon: vimeoBoxIcon,\n vimeoIcon: vimeoIcon,\n volumeDownIcon: volumeDownIcon,\n volumeMuteIcon: volumeMuteIcon,\n volumeUpIcon: volumeUpIcon,\n warningCircleIcon: warningCircleIcon,\n warningTriangleIcon: warningTriangleIcon,\n wholeWordIcon: wholeWordIcon,\n windowIcon: windowIcon,\n windowMinimizeIcon: windowMinimizeIcon,\n windowRestoreIcon: windowRestoreIcon,\n wrenchIcon: wrenchIcon,\n xCircleIcon: xCircleIcon,\n xIcon: xIcon,\n xOutlineIcon: xOutlineIcon,\n yammerBoxIcon: yammerBoxIcon,\n yammerIcon: yammerIcon,\n youtubeBoxIcon: youtubeBoxIcon,\n youtubeIcon: youtubeIcon,\n zoomActualSizeIcon: zoomActualSizeIcon,\n zoomBestFitIcon: zoomBestFitIcon,\n zoomInIcon: zoomInIcon,\n zoomOutIcon: zoomOutIcon\n });\n\n var __meta__$J = {\n id: \"icons\",\n name: \"Icons\",\n category: \"web\",\n description: \"The Icons set provides both FontIcon and SvgIcon components along with the SVG icons collection from @progress/kendo-svg-icons\",\n depends: [\"core\", \"html.icon\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n html = kendo.html,\n ui = kendo.ui,\n Widget = ui.Widget,\n extend = $.extend;\n\n var FontIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLFontIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLFontIcon.fn.options, {\n name: 'FontIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n that._icon = new html.HTMLFontIcon(that.element, $.extend({}, that.options));\n }\n });\n\n var SvgIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLSvgIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLSvgIcon.fn.options, {\n name: 'SvgIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n if (options.icon) {\n this.element.html('');\n }\n\n that._icon = new html.HTMLSvgIcon(that.element, $.extend({}, that.options));\n }\n });\n\n kendo.ui.plugin(FontIcon);\n kendo.ui.plugin(SvgIcon);\n\n kendo.setDefaults('iconType', 'svg');\n kendo.ui.svgIcons = svgIcons;\n kendo.ui.icon = html.renderIcon;\n })(window.kendo.jQuery);\n var kendo$K = kendo;\n\n var __meta__$I = {\n id: \"tooltip\",\n name: \"Tooltip\",\n category: \"web\",\n description: \"The Tooltip widget displays a popup hint for a given html element.\",\n depends: [ \"core\", \"popup\", \"icons\" ],\n features: [ {\n id: \"tooltip-fx\",\n name: \"Animation\",\n description: \"Support for animation\",\n depends: [ \"fx\" ]\n } ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n Popup = kendo.ui.Popup,\n isFunction = kendo.isFunction,\n isPlainObject = $.isPlainObject,\n extend = $.extend,\n DOCUMENT = $(document),\n isLocalUrl = kendo.isLocalUrl,\n ARIAIDSUFFIX = \"_tb_active\",\n DESCRIBEDBY = \"aria-describedby\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ERROR = \"error\",\n CONTENTLOAD = \"contentLoad\",\n REQUESTSTART = \"requestStart\",\n KCONTENTFRAME = \"k-content-frame\",\n TEMPLATE = function (ref) {\n var autoHide = ref.autoHide;\n var callout = ref.callout;\n var dir = ref.dir;\n\n return \"
    \" +\n '
    ' +\n (!autoHide ? (\"
    \" + (kendo.ui.icon($(''), { icon: \"x\" })) + \"
    \") : '') +\n (callout ? (\"
    \") : '') +\n '
    ';\n },\n IFRAMETEMPLATE = kendo.template(function (ref) {\n var content = ref.content;\n\n return \"\";\n }\n ),\n NS = \".kendoTooltip\",\n POSITIONS = {\n bottom: {\n origin: \"bottom center\",\n position: \"top center\"\n },\n top: {\n origin: \"top center\",\n position: \"bottom center\"\n },\n left: {\n origin: \"center left\",\n position: \"center right\",\n collision: \"fit flip\"\n },\n right: {\n origin: \"center right\",\n position: \"center left\",\n collision: \"fit flip\"\n },\n center: {\n position: \"center center\",\n origin: \"center center\"\n }\n },\n REVERSE = {\n \"top\": \"bottom\",\n \"bottom\": \"top\",\n \"left\": \"right\",\n \"right\": \"left\",\n \"center\": \"center\"\n },\n DIRCLASSES = {\n bottom: \"n\",\n top: \"s\",\n left: \"e\",\n right: \"w\",\n center: \"n\"\n },\n DIMENSIONS = {\n \"horizontal\": { offset: \"top\", size: \"outerHeight\" },\n \"vertical\": { offset: \"left\", size: \"outerWidth\" }\n },\n DEFAULTCONTENT = function(e) {\n return e.target.data(kendo.ns + \"title\");\n };\n\n function restoreTitle(element) {\n while (element.length) {\n if (restoreTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n function restoreTitleAttributeForElement(element) {\n var title = element.data(kendo.ns + \"title\");\n if (title) {\n element.attr(\"title\", title);\n element.removeData(kendo.ns + \"title\");\n return true;\n }\n }\n\n function saveTitleAttributeForElement(element) {\n var title = element.attr(\"title\");\n if (title) {\n element.data(kendo.ns + \"title\", title);\n element.attr(\"title\", \"\");\n return true;\n }\n }\n\n function saveTitleAttributes(element) {\n while (element.length && !element.is(\"body\")) {\n if (saveTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n var TooltipBase = Widget.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n Widget.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n if (kendo.support.touch && this._isShownOnMouseEnter()) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._showOn.bind(that));\n }\n\n that.element.on(that.options.showOn + NS, that.options.filter, that._showOn.bind(that));\n\n if (that.options.showOn === \"click\") {\n that.element.on(\"keydown\" + NS, that.options.filter, that._keydown.bind(that));\n }\n },\n\n options: {\n name: \"TooltipBase\",\n filter: \"\",\n offset: 0,\n showAfter: 100,\n hideAfter: 100,\n callout: true,\n position: \"bottom\",\n showOn: \"mouseenter\",\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n destroy: function() {\n var popup = this.popup;\n\n if (popup) {\n popup.element.off(NS);\n popup.destroy();\n }\n\n clearTimeout(this.timeout);\n\n Widget.fn.destroy.call(this);\n },\n\n hide: function() {\n if (this.popup) {\n this.popup.close();\n }\n },\n\n show: function(target) {\n target = target || this.element;\n\n this._saveTitle(target);\n this._show(target);\n },\n\n target: function() {\n if (this.popup) {\n return this.popup.options.anchor;\n }\n return null;\n },\n\n _keydown: function(e) {\n var currentTarget = $(e.currentTarget);\n\n if (e.keyCode == kendo.keys.ENTER) {\n this._show(currentTarget);\n }\n },\n\n _showOn: function(e) {\n var that = this;\n\n var currentTarget = $(e.currentTarget);\n if (that._isShownOnClick() && !that._isShownOnMouseEnter()) {\n that._show(currentTarget);\n } else if (that._isShownOnFocus()) {\n that._saveTitle(currentTarget);\n that._show(currentTarget);\n } else {\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._show(currentTarget);\n }, that.options.showAfter);\n }\n },\n\n _isShownOnFocus: function() {\n return this.options.showOn && this.options.showOn.match(/focus/);\n },\n\n _isShownOnMouseEnter: function() {\n return this.options.showOn && this.options.showOn.match(/mouseenter/);\n },\n\n _isShownOnClick: function() {\n return this.options.showOn && this.options.showOn.match(/click/);\n },\n\n _positionCallout: function() {\n var that = this,\n position = that.options.position,\n dimensions = that.dimensions,\n offset = dimensions.offset,\n popup = that.popup,\n anchor = popup.options.anchor,\n anchorOffset = $(anchor).offset(),\n elementOffset = $(popup.element).offset(),\n cssClass = DIRCLASSES[popup.flipped ? REVERSE[position] : position],\n offsetAmount = anchorOffset[offset] - elementOffset[offset] + ($(anchor)[dimensions.size]() / 2);\n\n that._offset(position, that.options.offset);\n\n that.arrow\n .removeClass(\"k-callout-n k-callout-s k-callout-w k-callout-e\")\n .addClass(\"k-callout-\" + cssClass)\n .css(offset, offsetAmount);\n },\n\n _offset: function(position, offsetAmount, arrowWidth) {\n var that = this,\n isTopLeft = position == \"top\" || position == \"left\",\n isFlipped = that.popup.flipped,\n direction = (isTopLeft && isFlipped) || (!isTopLeft && !isFlipped) ? 1 : -1,\n marginRule = isTopLeft ? \"margin-\" + position : \"margin-\" + REVERSE[position],\n offset = ((arrowWidth || kendo._outerWidth(that.arrow)) / 2) + offsetAmount;\n\n that.popup.wrapper.css(marginRule, offset * direction + \"px\");\n },\n\n _addDescribedBy: function() {\n var that = this,\n anchor = that.popup.options.anchor,\n ariaId = anchor[0].id || that.element[0].id || kendo.guid(),\n describedBy = [];\n\n if (anchor.attr(DESCRIBEDBY)) {\n describedBy.push(anchor.attr(DESCRIBEDBY));\n }\n\n if (ariaId) {\n describedBy.push(ariaId + ARIAIDSUFFIX);\n anchor.attr(DESCRIBEDBY, describedBy.join(\" \"));\n that.popup.element.attr(\"id\", ariaId + ARIAIDSUFFIX);\n }\n\n },\n\n _removeDescribedBy: function(target) {\n var tooltipId = this.popup.element.attr(\"id\"),\n currentDescribedBy = target.attr(DESCRIBEDBY),\n arrayAttr, finalArray, finalDescribedbyAttr;\n\n if (!currentDescribedBy) {\n return;\n }\n\n arrayAttr = currentDescribedBy.split(\" \");\n\n if (arrayAttr && arrayAttr.length > 0) {\n finalArray = arrayAttr.filter(function(val) {\n return val !== tooltipId;\n });\n }\n\n if (finalArray && finalArray.length > 0) {\n finalDescribedbyAttr = finalArray.join(\" \");\n target.attr(DESCRIBEDBY, finalDescribedbyAttr);\n } else {\n target.removeAttr(DESCRIBEDBY);\n }\n },\n\n _openPopup: function() {\n if (!this.popup) {\n return;\n }\n\n this.popup._hovered = true;\n this.popup.open();\n }\n });\n kendo.ui.plugin(TooltipBase);\n\n var Tooltip = TooltipBase.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n TooltipBase.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n that._documentKeyDownHandler = that._documentKeyDown.bind(that);\n\n if (this._isShownOnMouseEnter() || this._isShownOnClick()) {\n that.element.on(\"mouseenter\" + NS, that.options.filter, that._mouseenter.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnMouseEnter()) {\n that.element.on(\"mouseleave\" + NS, that.options.filter, that._mouseleave.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnFocus()) {\n that.element.on(\"blur\" + NS, that.options.filter, that._blur.bind(that));\n }\n\n if (kendo.support.touch) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._mouseenter.bind(that));\n }\n },\n\n options: {\n name: \"Tooltip\",\n filter: \"\",\n content: DEFAULTCONTENT,\n showAfter: 100,\n callout: true,\n offset: 0,\n position: \"bottom\",\n showOn: \"mouseenter\",\n autoHide: true,\n width: null,\n height: null,\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n events: [ SHOW, HIDE, CONTENTLOAD, ERROR, REQUESTSTART ],\n\n _mouseenter: function(e) {\n saveTitleAttributes($(e.currentTarget));\n },\n\n _saveTitle: function(target) {\n saveTitleAttributes(target);\n },\n\n _appendContent: function(target) {\n var that = this,\n contentOptions = that.options.content,\n element = that.content,\n showIframe = that.options.iframe,\n iframe;\n\n if (isPlainObject(contentOptions) && contentOptions.url) {\n if (!(\"iframe\" in that.options)) {\n showIframe = !isLocalUrl(contentOptions.url);\n }\n\n that.trigger(REQUESTSTART, { options: contentOptions, target: target });\n\n if (!showIframe) {\n element.empty();\n kendo.ui.progress(element, true);\n\n // perform AJAX request\n that._ajaxRequest(contentOptions);\n } else {\n element.hide();\n\n iframe = element.find(\".\" + KCONTENTFRAME)[0];\n\n if (iframe) {\n // refresh existing iframe\n iframe.src = contentOptions.url || iframe.src;\n } else {\n element.html(IFRAMETEMPLATE({ content: contentOptions }));\n }\n\n element.find(\".\" + KCONTENTFRAME)\n .off(\"load\" + NS)\n .on(\"load\" + NS, function() {\n that.trigger(CONTENTLOAD);\n element.show();\n });\n }\n } else if (contentOptions && isFunction(contentOptions)) {\n contentOptions = contentOptions({ sender: this, target: target });\n element.html(contentOptions || \"\");\n } else {\n element.html(contentOptions);\n }\n\n that.angular(\"compile\", function() {\n return { elements: element };\n });\n },\n\n _ajaxRequest: function(options) {\n var that = this,\n successFn = function(data) {\n kendo.ui.progress(that.content, false);\n\n that.content.html(data);\n\n if (kendo._outerHeight(that.popup.element) > kendo._outerHeight(that.popup.wrapper)) {\n that.popup.wrapper.css(\"height\", kendo._outerHeight(that.popup.element) + \"px\");\n that.popup.position();\n that._positionCallout();\n }\n\n that.trigger(CONTENTLOAD);\n };\n\n jQuery.ajax(extend({\n type: \"GET\",\n dataType: \"html\",\n cache: false,\n error: function(xhr, status) {\n kendo.ui.progress(that.content, false);\n\n that.trigger(ERROR, { status: status, xhr: xhr });\n },\n success: successFn.bind(that)\n }, options));\n },\n\n _documentKeyDown: function(e) {\n if (e.keyCode === kendo.keys.ESC) {\n this.hide();\n }\n },\n\n refresh: function() {\n var that = this,\n popup = that.popup;\n\n if (popup && popup.options.anchor) {\n that._appendContent(popup.options.anchor);\n }\n },\n\n _show: function(target) {\n var that = this,\n current = that.target();\n\n if (!that.popup) {\n that._initPopup();\n }\n\n if (current && current[0] != target[0]) {\n that.popup.close(true);\n that.popup.element.kendoStop(true, true);// animation can be too long to hide the element before it is shown again\n }\n\n if (!current || current[0] != target[0]) {\n that._appendContent(target);\n that.popup.options.anchor = target;\n }\n\n that.popup.one(\"deactivate\", function() {\n restoreTitle(target);\n\n that._removeDescribedBy(target);\n\n this.element\n .removeAttr(\"id\")\n .attr(\"aria-hidden\", true);\n\n DOCUMENT.off(\"keydown\" + NS, that._documentKeyDownHandler);\n });\n\n that._openPopup();\n },\n\n _initPopup: function() {\n var that = this,\n options = that.options,\n wrapper = $(kendo.template(TEMPLATE)({\n callout: options.callout && options.position !== \"center\",\n dir: DIRCLASSES[options.position],\n autoHide: options.autoHide\n }));\n\n that.popup = new Popup(wrapper, extend({\n autosize: true,\n activate: function() {\n that._addDescribedBy();\n\n if (options.callout) {\n that._positionCallout();\n } else {\n that._offset(that.options.position, that.options.offset);\n }\n\n this.element.removeAttr(\"aria-hidden\");\n\n DOCUMENT.on(\"keydown\" + NS, that._documentKeyDownHandler);\n\n that.trigger(SHOW);\n that.popup._hovered = undefined$1;\n },\n close: function() {\n that.trigger(HIDE);\n },\n copyAnchorStyles: false,\n animation: options.animation\n }, POSITIONS[options.position]));\n\n wrapper.css({\n width: options.width,\n height: options.height\n });\n\n that.content = wrapper.find(\".k-tooltip-content\");\n that.arrow = wrapper.find(\".k-callout\");\n\n if (options.autoHide && this._isShownOnMouseEnter()) {\n wrapper.on(\"mouseleave\" + NS, that._mouseleave.bind(that));\n } else {\n wrapper.on(\"click\" + NS, \".k-tooltip-button\", that._closeButtonClick.bind(that));\n }\n },\n\n _closeButtonClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _mouseleave: function(e) {\n var that = this;\n\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._closePopup(e.currentTarget);\n }, that.options.hideAfter);\n },\n\n _blur: function(e) {\n this._closePopup(e.currentTarget);\n },\n\n _closePopup: function(target) {\n if (this.popup && !this.popup._hovered) {\n this.popup.close();\n } else {\n restoreTitle($(target));\n }\n },\n\n destroy: function() {\n this.element.off(NS);\n\n DOCUMENT.off(\"keydown\" + NS, this._documentKeyDownHandler);\n\n TooltipBase.fn.destroy.call(this);\n }\n });\n\n kendo.ui.plugin(Tooltip);\n })(window.kendo.jQuery);\n var kendo$J = kendo;\n\n (function($) {\n\n function createPromise() {\n return $.Deferred();\n }\n\n function promiseAll(promises) {\n return $.when.apply($, promises);\n }\n\n function extendStatic(dest, src) {\n if (!src) {\n return;\n }\n\n if (typeof src.__proto__ === 'function') {\n dest.__proto__ = src;\n } else {\n for (var member in src) {\n if (src.hasOwnProperty(member)) {\n dest[member] = src[member];\n }\n }\n }\n }\n\n kendo.drawing.util = kendo.drawing.util || {};\n kendo.deepExtend(kendo.drawing.util, {\n createPromise: createPromise,\n promiseAll: promiseAll,\n extendStatic: extendStatic\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n /* eslint-disable space-before-blocks, space-before-function-paren, no-multi-spaces */\n\n var __meta__$H = {\n id: \"color\",\n name: \"Color utils\",\n category: \"framework\",\n advanced: true,\n description: \"Color utilities used across components\",\n depends: [ \"core\" ]\n };\n\n window.kendo = window.kendo || {};\n\n var Class = kendo.Class;\n var support = kendo.support;\n\n var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n };\n\n var browser = support.browser;\n\n var matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n };\n\n var BaseColor = Class.extend({\n init: function() { },\n\n toHSV: function() { return this; },\n\n toRGB: function() { return this; },\n\n toHex: function(options) { return this.toBytes().toHex(options); },\n\n toBytes: function() { return this; },\n\n toCss: function(options) { return \"#\" + this.toHex(options); },\n\n toCssRgba: function() {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n },\n\n toDisplay: function() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n },\n\n equals: function(c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n },\n\n diff: function(other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n },\n\n clone: function() {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n });\n\n var RGB = BaseColor.extend({\n init: function(r, g, b, a) {\n BaseColor.fn.init.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n },\n\n toHSV: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n },\n\n toHSL: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n },\n\n toBytes: function() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n });\n\n var Bytes = RGB.extend({\n init: function(r, g, b, a) {\n RGB.fn.init.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n },\n\n toRGB: function() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toHex: function(options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n },\n\n toBytes: function() {\n return this;\n }\n });\n\n function hex(n, width, pad) {\n if (pad === void 0) { pad = \"0\"; }\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n }\n\n var HSV = BaseColor.extend({\n init: function(h, s, v, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n },\n\n toRGB: function() {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n var HSL = BaseColor.extend({\n init: function(h, s, l, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n },\n\n toRGB: function() {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n function hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n }\n\n function alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n }\n\n function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n }\n\n var DARK_TRESHOLD = 180;\n\n var Color = Class.extend({\n init: function(value) {\n var this$1$1 = this;\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1$1.r = channels[0];\n this$1$1.g = channels[1];\n this$1$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n },\n\n toHex: function() {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n },\n\n resolveColor: function(value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n },\n\n normalizeByte: function(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n },\n\n padDigit: function(value) {\n return (value.length === 1) ? \"0\" + value : value;\n },\n\n brightness: function(value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n },\n\n percBrightness: function() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n },\n\n isDark: function() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n });\n\n Color.fromBytes = function(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n Color.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n }, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n }, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n } ];\n\n Color.namedColors = namedColors;\n\n kendo.deepExtend(kendo, {\n parseColor: parseColor,\n namedColors: namedColors,\n Color: Color\n });\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo.util = window.kendo.util || {};\n\n var LRUCache = kendo.Class.extend({\n init: function(size) {\n\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n\n put: function(key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n\n get: function(key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n });\n\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n }\n\n // Computes FNV-1 hash\n // See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\n function hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n }\n\n function zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n }\n\n var DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n };\n\n var defaultMeasureBox;\n\n if (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n }\n\n var TextMetrics = kendo.Class.extend({\n init: function(options) {\n\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n\n measure: function(text, style, options) {\n if (options === void 0) { options = {}; }\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n },\n\n _baselineMarker: function() {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n });\n\n TextMetrics.current = new TextMetrics();\n\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo = window.kendo || {};\n var kendoDrawing = kendo.drawing;\n var kendoDrawingUtil = kendoDrawing.util;\n var extendStatic = kendoDrawingUtil.extendStatic;\n var Class = kendo.Class;\n var kendoUtil = kendo.util;\n var support = kendo.support;\n var supportBrowser = support.browser;\n\n var createPromise = kendoDrawingUtil.createPromise;\n var promiseAll = kendoDrawingUtil.promiseAll;\n\n var HasObservers = (function (Class$$1) {\n function HasObservers () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(HasObservers, Class$$1);\n HasObservers.prototype = Object.create( Class$$1 && Class$$1.prototype );\n HasObservers.prototype.constructor = HasObservers;\n HasObservers.fn = HasObservers.prototype;\n HasObservers.fn.init = HasObservers.fn.constructor;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if (e === void 0) { e = {}; }\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n }(Class));\n\n function append$1$1(first, second) {\n first.push.apply(first, second);\n return first;\n }\n\n /* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\n var literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n };\n\n function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n\n var UNDEFINED = \"undefined\";\n\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n\n var defId = 1;\n\n function definitionId() {\n return \"kdef\" + defId++;\n }\n\n var DEG_TO_RAD = Math.PI / 180;\n var MAX_NUM = Number.MAX_VALUE;\n var MIN_NUM = -Number.MAX_VALUE;\n\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n\n var fromCharCode = String.fromCharCode;\n\n // Encodes a string as UTF-8\n function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n }\n\n // Encodes a string as UTF-16 big-endian\n\n var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n }\n\n function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n }\n\n function eventElement(e) {\n if (e === void 0) { e = {}; }\n\n return e.touch ? e.touch.initialTouch : e.target;\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n\n function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n // mergeSort is stable.\n function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n }\n\n var now = Date.now || function() {\n return new Date().getTime();\n };\n\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n\n function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n }\n\n function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n }\n\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n\n function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n }\n\n function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n }\n\n function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n }\n\n function getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n }\n\n function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n }\n\n function unbindEvents(element, events) {\n if (events === void 0) { events = {}; }\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n }\n\n function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n }\n\n var Matrix = (function (Class$$1) {\n function Matrix(a, b, c, d, e, f) {\n if (a === void 0) { a = 0; }\n if (b === void 0) { b = 0; }\n if (c === void 0) { c = 0; }\n if (d === void 0) { d = 0; }\n if (e === void 0) { e = 0; }\n if (f === void 0) { f = 0; }\n\n Class$$1.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n extendStatic(Matrix, Class$$1);\n Matrix.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Matrix.prototype.constructor = Matrix;\n Matrix.fn = Matrix.prototype;\n Matrix.fn.init = Matrix.fn.constructor;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if (separator === void 0) { separator = \",\"; }\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n }(Class));\n\n Matrix.IDENTITY = Matrix.unit();\n\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n }\n\n var util = {\n \tappend: append$1$1,\n \tarabicToRoman: arabicToRoman,\n \tcreatePromise: createPromise,\n \tdefined: defined,\n \tdefinitionId: definitionId,\n \tdeg: deg,\n \tencodeBase64: encodeBase64,\n \teventCoordinates: eventCoordinates,\n \teventElement: eventElement,\n \tisTransparent: isTransparent,\n \tlast: last,\n \tlimitValue: limitValue,\n \tmergeSort: mergeSort,\n \tnow: now,\n \tpromiseAll: promiseAll,\n \trad: rad,\n \tround: round,\n \tvalueOrDefault: valueOrDefault,\n \tbindEvents: bindEvents,\n \telementOffset: elementOffset,\n \telementSize: elementSize,\n \telementStyles: elementStyles,\n \tunbindEvents: unbindEvents,\n \telementPadding: elementPadding,\n \telementScale: elementScale,\n \tDEG_TO_RAD: DEG_TO_RAD,\n \tMAX_NUM: MAX_NUM,\n \tMIN_NUM: MIN_NUM\n };\n\n var toString$1 = {}.toString;\n\n var OptionsStore = (function (HasObservers$$1) {\n function OptionsStore(options, prefix) {\n var this$1$1 = this;\n if (prefix === void 0) { prefix = \"\"; }\n\n HasObservers$$1.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1$1._wrap(member, field);\n this$1$1[field] = member;\n }\n }\n\n extendStatic(OptionsStore, HasObservers$$1);\n OptionsStore.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n OptionsStore.fn = OptionsStore.prototype;\n OptionsStore.fn.init = OptionsStore.fn.constructor;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString$1.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n }(HasObservers));\n\n function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n }\n\n function getAccessor(field) {\n return function() {\n return this[field];\n };\n }\n\n function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n }\n\n var withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n };\n\n function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n }\n\n var Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n extendStatic(Point, superclass);\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n Point.fn = Point.prototype;\n Point.fn.init = Point.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if (scaleY === void 0) { scaleY = scaleX; }\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if (separator === void 0) { separator = \" \"; }\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n }(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\n var Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n extendStatic(Size, superclass);\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n Size.fn = Size.prototype;\n Size.fn.init = Size.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n }(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\n var Rect = (function (HasObservers$$1) {\n function Rect(origin, size, cornerRadius) {\n if (origin === void 0) { origin = new Point(); }\n if (size === void 0) { size = new Size(); }\n if (cornerRadius === void 0) { cornerRadius = 0; }\n\n HasObservers$$1.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n extendStatic(Rect, HasObservers$$1);\n Rect.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Rect.prototype.constructor = Rect;\n Rect.fn = Rect.prototype;\n Rect.fn.init = Rect.fn.constructor;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if (y === void 0) { y = x; }\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n }(HasObservers));\n\n var Transformation = (function (HasObservers$$1) {\n function Transformation(matrix) {\n if (matrix === void 0) { matrix = Matrix.unit(); }\n\n HasObservers$$1.call(this);\n\n this._matrix = matrix;\n }\n\n extendStatic(Transformation, HasObservers$$1);\n Transformation.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Transformation.prototype.constructor = Transformation;\n Transformation.fn = Transformation.prototype;\n Transformation.fn.init = Transformation.fn.constructor;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if (scaleY === void 0) { scaleY = scaleX; }\n if (origin === void 0) { origin = null; }\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n }(HasObservers));\n\n function transform$1(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n }\n\n var Element$1 = (function (HasObservers$$1) {\n function Element(options) {\n HasObservers$$1.call(this);\n\n this._initOptions(options);\n }\n\n extendStatic(Element, HasObservers$$1);\n Element.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Element.prototype.constructor = Element;\n Element.fn = Element.prototype;\n Element.fn.init = Element.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if (options === void 0) { options = {}; }\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = transform$1(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", transform$1(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return transform$1(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if (parentTransform === void 0) { parentTransform = this.parentTransform(); }\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return transform$1(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n }(HasObservers));\n\n function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n }\n\n var PI_DIV_2 = Math.PI / 2;\n\n var Circle$2 = (function (superclass) {\n function Circle(center, radius) {\n if (center === void 0) { center = new Point(); }\n if (radius === void 0) { radius = 0; }\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n }(withAccessors(HasObservers, [ \"radius\" ])));\n\n var GRADIENT = \"Gradient\";\n\n var paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n var IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\n var measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n function geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n }\n\n function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n }\n\n var withGeometry = function (TBase, names) {\n if (names === void 0) { names = [ \"geometry\" ]; }\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n };\n\n var DEFAULT_STROKE = \"#000\";\n\n var Circle = (function (superclass) {\n function Circle(geometry, options) {\n if (geometry === void 0) { geometry = new Circle$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var PRECISION = 10;\n\n function close$1(a, b, tolerance) {\n if (tolerance === void 0) { tolerance = PRECISION; }\n\n return round(Math.abs(a - b), tolerance) === 0;\n }\n\n function closeOrLess(a, b, tolerance) {\n return a < b || close$1(a, b, tolerance);\n }\n\n function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n }\n\n var MAX_INTERVAL = 45;\n var pow$1 = Math.pow;\n var accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\n var Arc$2 = (function (superclass) {\n function Arc(center, options) {\n if (center === void 0) { center = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform$1().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow$1(radiusX, 2) * pow$1(Math.sin(angleRad), 2) + pow$1(radiusY, 2) * pow$1(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n }(withAccessors(HasObservers, accessors)));\n\n function calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n }\n\n function normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if (rotation === void 0) { rotation = 0; }\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n }\n\n function bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n }\n\n var push = [].push;\n var pop = [].pop;\n var splice = [].splice;\n var shift = [].shift;\n var slice = [].slice;\n var unshift = [].unshift;\n\n var ElementsArray = (function (HasObservers$$1) {\n function ElementsArray(array) {\n if (array === void 0) { array = []; }\n\n HasObservers$$1.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n extendStatic(ElementsArray, HasObservers$$1);\n ElementsArray.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n ElementsArray.fn = ElementsArray.prototype;\n ElementsArray.fn.init = ElementsArray.fn.constructor;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice$1 (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n }(HasObservers));\n\n var GeometryElementsArray = (function (ElementsArray$$1) {\n function GeometryElementsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(GeometryElementsArray, ElementsArray$$1);\n GeometryElementsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n GeometryElementsArray.fn = GeometryElementsArray.prototype;\n GeometryElementsArray.fn.init = GeometryElementsArray.fn.constructor;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n }(ElementsArray));\n\n function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform$1().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n }\n\n function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n }\n\n function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n }\n\n var ComplexNumber = (function (Class$$1) {\n function ComplexNumber(real, img) {\n if (real === void 0) { real = 0; }\n if (img === void 0) { img = 0; }\n\n Class$$1.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n extendStatic(ComplexNumber, Class$$1);\n ComplexNumber.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n ComplexNumber.fn = ComplexNumber.prototype;\n ComplexNumber.fn.init = ComplexNumber.fn.constructor;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad$$1 = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad$$1 / n), nthR * Math.sin(rad$$1 / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n }(Class));\n\n function numberSign$1(x) {\n return x < 0 ? -1 : 1;\n }\n\n function solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n }\n\n //Cardano's formula\n function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign$1(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign$1(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n }\n\n function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n }\n\n function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close$1(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n }\n\n function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n }\n\n function pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n }\n\n function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n }\n\n var withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n };\n\n var points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\n var Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n extendStatic(Segment, superclass);\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n Segment.fn = Segment.prototype;\n Segment.fn.init = Segment.fn.constructor;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform$1().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform$1().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n }(withPoints(HasObservers, points)));\n\n function arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n var geometry = {\n \tCircle: Circle$2,\n \tArc: Arc$2,\n \tRect: Rect,\n \tPoint: Point,\n \tSegment: Segment,\n \tMatrix: Matrix,\n \tSize: Size,\n \ttoMatrix: toMatrix,\n \tTransformation: Transformation,\n \ttransform: transform$1\n };\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n var X = \"x\";\n var Y = \"y\";\n\n function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n }\n\n function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n }\n\n function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n }\n\n function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n }\n\n function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n }\n\n function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n }\n\n function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n var ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n };\n\n function toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n }\n\n function reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n }\n\n var third = 1 / 3;\n\n function quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n }\n\n var SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\n var SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\n var MOVE = \"m\";\n var CLOSE = \"z\";\n\n function parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n }\n\n function parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n }\n\n function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n }\n\n function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n }\n\n var SPACE = ' ';\n var printPoints = function (precision) { return function () {\n var arguments$1 = arguments;\n\n var points = [], len = arguments.length;\n while ( len-- ) { points[ len ] = arguments$1[ len ]; }\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n } };\n var segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\n var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n extendStatic(Path, superclass);\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n Path.fn = Path.prototype;\n Path.fn.init = Path.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point$$1 = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point$$1);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point$$1, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc$2(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc$2.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point$$1) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point$$1);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point$$1);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point$$1, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point$$1, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point$$1, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point$$1, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point$$1 = Point.create(points[i]);\n if (point$$1) {\n if (i === 0) {\n path.moveTo(point$$1);\n } else {\n path.lineTo(point$$1);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n }(paintable(measurable(Element$1))));\n\n var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n extendStatic(MultiPath, superclass);\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n MultiPath.fn = MultiPath.prototype;\n MultiPath.fn.init = MultiPath.fn.constructor;\n\n var prototypeAccessors$1 = { nodeType: {} };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point$$1);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point$$1) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point$$1)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point$$1) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point$$1, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n }(paintable(measurable(Element$1))));\n\n var DEFAULT_STROKE$1 = \"#000\";\n\n var Arc = (function (superclass) {\n function Arc(geometry, options) {\n if (geometry === void 0) { geometry = new Arc$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE$1);\n }\n }\n\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Arc\";\n };\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n };\n\n Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n return Arc;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_FILL = \"#000\";\n\n var Text = (function (superclass) {\n function Text(content, position, options) {\n if (position === void 0) { position = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n extendStatic(Text, superclass);\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n Text.fn = Text.prototype;\n Text.fn.init = Text.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = kendoUtil.measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n }(paintable(withPoints(Element$1, [ \"position\" ]))));\n\n var Image$1 = (function (superclass) {\n function Image(src, rect, options) {\n if (rect === void 0) { rect = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n extendStatic(Image, superclass);\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n Image.fn = Image.prototype;\n Image.fn.init = Image.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n }(withGeometry(Element$1, [ \"rect\" ])));\n\n var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n var Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n extendStatic(Group, superclass);\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n Group.fn = Group.prototype;\n Group.fn.init = Group.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append$1$1(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element$1.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n }(traversable(Element$1, \"children\")));\n\n function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || transform$1();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n }\n\n function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n }\n\n function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n }\n\n var DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n };\n\n var forEach = function (elements, callback) {\n elements.forEach(callback);\n };\n\n var forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n };\n\n var Layout = (function (Group$$1) {\n function Layout(rect, options) {\n Group$$1.call(this, $.extend({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n extendStatic(Layout, Group$$1);\n Layout.prototype = Object.create( Group$$1 && Group$$1.prototype );\n Layout.prototype.constructor = Layout;\n Layout.fn = Layout.prototype;\n Layout.fn.init = Layout.fn.constructor;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n\n Layout.prototype.reflow = function reflow () {\n var this$1$1 = this;\n\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = transform$1();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups () {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1$1._newGroup();\n } else {\n addGroup();\n group = this$1$1._newGroup();\n this$1$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1$1._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n\n Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n\n Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n }(Group));\n\n var Rect$2 = (function (superclass) {\n function Rect$$1(geometry, options) {\n if (geometry === void 0) { geometry = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n extendStatic(Rect$$1, superclass);\n Rect$$1.prototype = Object.create( superclass && superclass.prototype );\n Rect$$1.prototype.constructor = Rect$$1;\n Rect$$1.fn = Rect$$1.prototype;\n Rect$$1.fn.init = Rect$$1.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Rect$$1.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect$$1.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Rect$$1.prototype._containsPoint = function _containsPoint (point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect$$1.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Rect$$1.prototype, prototypeAccessors );\n\n return Rect$$1;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n function alignElements(elements, rect, alignment, axis, sizeField) {\n for (var idx = 0; idx < elements.length; idx++) {\n var bbox = elements[idx].clippedBBox();\n if (bbox) {\n var point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n }\n\n function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n }\n\n function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n }\n\n function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n var origin = new Point();\n var previousBBox = elements[0].bbox;\n\n for (var idx = 1; idx < elements.length; idx++) {\n var element = elements[idx].element;\n var bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n }\n\n function createStackElements(elements) {\n var stackElements = [];\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n }\n\n function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n }\n\n function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n }\n\n function getStacks(elements, rect, sizeField) {\n var maxSize = rect.size[sizeField];\n var stacks = [];\n var stack = [];\n var stackSize = 0;\n var element, bbox;\n\n var addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (var idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n var size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n }\n\n function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n var stacks = getStacks(elements, rect, sizeField);\n var origin = rect.origin.clone();\n var result = [];\n\n for (var idx = 0; idx < stacks.length; idx++) {\n var stack = stacks[idx];\n var startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n }\n\n function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n }\n\n function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n }\n\n function fit(element, rect) {\n var bbox = element.clippedBBox();\n if (bbox) {\n var elementSize = bbox.size;\n var rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n var transform = element.transform() || transform$1();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n }\n\n var StopsArray = (function (ElementsArray$$1) {\n function StopsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(StopsArray, ElementsArray$$1);\n StopsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n StopsArray.prototype.constructor = StopsArray;\n StopsArray.fn = StopsArray.prototype;\n StopsArray.fn.init = StopsArray.fn.constructor;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n }(ElementsArray));\n\n function optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n }\n\n function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n }\n\n var withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n };\n\n var options = [ \"offset\", \"color\", \"opacity\" ];\n\n var GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n extendStatic(GradientStop, superclass);\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n GradientStop.fn = GradientStop.prototype;\n GradientStop.fn.init = GradientStop.fn.constructor;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n }(withOptions(HasObservers, options)));\n\n var Gradient = (function (HasObservers$$1) {\n function Gradient(options) {\n if (options === void 0) { options = {}; }\n\n HasObservers$$1.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n extendStatic(Gradient, HasObservers$$1);\n Gradient.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Gradient.prototype.constructor = Gradient;\n Gradient.fn = Gradient.prototype;\n Gradient.fn.init = Gradient.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if (stops === void 0) { stops = []; }\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n }(HasObservers));\n\n var points$1 = [ \"start\", \"end\" ];\n\n var LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n extendStatic(LinearGradient, superclass);\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n LinearGradient.fn = LinearGradient.prototype;\n LinearGradient.fn.init = LinearGradient.fn.constructor;\n\n return LinearGradient;\n }(withPoints(Gradient, points$1)));\n\n var RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n extendStatic(RadialGradient, superclass);\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n RadialGradient.fn = RadialGradient.prototype;\n RadialGradient.fn.init = RadialGradient.fn.constructor;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n }(withPoints(Gradient, [ \"center\" ])));\n\n function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n }\n\n function linear(position) {\n return position;\n }\n\n function easeOutElastic(position, time, start, diff) {\n var s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n }\n\n var easingFunctions = {\n \tswing: swing,\n \tlinear: linear,\n \teaseOutElastic: easeOutElastic\n };\n\n var instance;\n\n var AnimationFactory = (function (Class$$1) {\n function AnimationFactory() {\n Class$$1.call(this);\n\n this._items = [];\n }\n\n extendStatic(AnimationFactory, Class$$1);\n AnimationFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n AnimationFactory.fn = AnimationFactory.prototype;\n AnimationFactory.fn.init = AnimationFactory.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n };\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n };\n\n Object.defineProperties( AnimationFactory, staticAccessors );\n\n return AnimationFactory;\n }(Class));\n\n var Animation = (function (Class$$1) {\n function Animation(element, options) {\n Class$$1.call(this);\n\n this.options = $.extend({}, this.options, options);\n this.element = element;\n }\n\n extendStatic(Animation, Class$$1);\n Animation.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Animation.prototype.constructor = Animation;\n Animation.fn = Animation.prototype;\n Animation.fn.init = Animation.fn.constructor;\n\n var prototypeAccessors = { options: {} };\n\n Animation.create = function create (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n };\n\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if (delay === void 0) { delay = 0; }\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1$1.step(easingPosition);\n\n if (wallTime < finish) {\n kendo.animationFrame(loop);\n } else {\n this$1$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n return Animation;\n }(Class));\n\n var instance$1;\n\n var PathParser = (function (Class$$1) {\n function PathParser () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(PathParser, Class$$1);\n PathParser.prototype = Object.create( Class$$1 && Class$$1.prototype );\n PathParser.prototype.constructor = PathParser;\n PathParser.fn = PathParser.prototype;\n PathParser.fn.init = PathParser.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance$1) {\n instance$1 = new PathParser();\n }\n\n return instance$1;\n };\n\n PathParser.prototype.parse = function parse (str, options) {\n var multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n };\n\n Object.defineProperties( PathParser, staticAccessors );\n\n return PathParser;\n }(Class));\n\n var BaseNode = (function (Class$$1) {\n function BaseNode(srcElement) {\n Class$$1.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n extendStatic(BaseNode, Class$$1);\n BaseNode.prototype = Object.create( Class$$1 && Class$$1.prototype );\n BaseNode.prototype.constructor = BaseNode;\n BaseNode.fn = BaseNode.prototype;\n BaseNode.fn.init = BaseNode.fn.constructor;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n }(Class));\n\n var events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n ];\n\n var Surface$2 = (function (Observable$$1) {\n function Surface(element, options) {\n Observable$$1.call(this);\n\n this.options = $.extend({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n extendStatic(Surface, Observable$$1);\n Surface.prototype = Object.create( Observable$$1 && Observable$$1.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1$1 = this;\n\n return function (e) {\n var node = this$1$1.eventTarget(e);\n if (node && !this$1$1._suspendedTracking) {\n this$1$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n }(kendo.Observable));\n\n function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n }\n\n function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n }\n\n function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n }\n\n var NODE_MAP = {};\n\n var SVG_NS = \"http://www.w3.org/2000/svg\";\n var NONE = \"none\";\n var POINT_DIGITS = 3;\n\n var applyStyle = function (styleString, element) { return styleString.split(';').filter(function (s) { return s !== ''; }).forEach(function (s) {\n var parts = s.split(':');\n element.style[parts[0].trim()] = parts[1].trim();\n }); };\n\n var styleAttr = 'data-style';\n var replaceStyleAttr = function (html) { return html.replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\n var restoreStyleAttr = function (container) {\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\n var styleString = element.getAttribute(styleAttr);\n element.removeAttribute(styleAttr);\n applyStyle(styleString, element);\n });\n };\n\n var renderSVG = function(container, svg) {\n container.innerHTML = replaceStyleAttr(svg);\n restoreStyleAttr(container);\n };\n\n if (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n }\n\n var renderSVG$1 = renderSVG;\n\n var TRANSFORM = \"transform\";\n var DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n };\n\n function isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n }\n\n function baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(supportBrowser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n }\n\n var Node = (function (BaseNode$$1) {\n function Node(srcElement, options) {\n BaseNode$$1.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode$$1.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1$1.options);\n\n if (defined(pos)) {\n this$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG$1(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode$$1.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n }(BaseNode));\n\n var GradientStopNode = (function (Node$$1) {\n function GradientStopNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GradientStopNode, Node$$1);\n GradientStopNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n GradientStopNode.fn = GradientStopNode.prototype;\n GradientStopNode.fn.init = GradientStopNode.fn.constructor;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n }(Node));\n\n var GradientNode = (function (Node$$1) {\n function GradientNode(srcElement) {\n Node$$1.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n extendStatic(GradientNode, Node$$1);\n GradientNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientNode.prototype.constructor = GradientNode;\n GradientNode.fn = GradientNode.prototype;\n GradientNode.fn.init = GradientNode.fn.constructor;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n }(Node));\n\n var LinearGradientNode = (function (GradientNode$$1) {\n function LinearGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(LinearGradientNode, GradientNode$$1);\n LinearGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n LinearGradientNode.fn = LinearGradientNode.prototype;\n LinearGradientNode.fn.init = LinearGradientNode.fn.constructor;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n }(GradientNode));\n\n var RadialGradientNode = (function (GradientNode$$1) {\n function RadialGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(RadialGradientNode, GradientNode$$1);\n RadialGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n RadialGradientNode.fn = RadialGradientNode.prototype;\n RadialGradientNode.fn.init = RadialGradientNode.fn.constructor;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n }(GradientNode));\n\n var ClipNode = (function (Node$$1) {\n function ClipNode(srcElement) {\n Node$$1.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n extendStatic(ClipNode, Node$$1);\n ClipNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n ClipNode.prototype.constructor = ClipNode;\n ClipNode.fn = ClipNode.prototype;\n ClipNode.fn.init = ClipNode.fn.constructor;\n\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n }(Node));\n\n var DefinitionNode = (function (Node$$1) {\n function DefinitionNode() {\n Node$$1.call(this);\n this.definitionMap = {};\n }\n\n extendStatic(DefinitionNode, Node$$1);\n DefinitionNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n DefinitionNode.fn = DefinitionNode.prototype;\n DefinitionNode.fn.init = DefinitionNode.fn.constructor;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n }(Node));\n\n var RootNode = (function (Node$$1) {\n function RootNode(options) {\n Node$$1.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n extendStatic(RootNode, Node$$1);\n RootNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n }(Node));\n\n var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n };\n\n var SOLID = \"solid\";\n var BUTT = \"butt\";\n\n var ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n };\n\n var PathNode = (function (Node$$1) {\n function PathNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node$$1);\n PathNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n Node$$1.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if (width === void 0) { width = 1; }\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n }(Node));\n\n var ArcNode = (function (PathNode$$1) {\n function ArcNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode$$1);\n ArcNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n }(PathNode));\n\n var CircleNode = (function (PathNode$$1) {\n function CircleNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode$$1);\n CircleNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n }(PathNode));\n\n var GroupNode = (function (Node$$1) {\n function GroupNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GroupNode, Node$$1);\n GroupNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n Node$$1.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n }(Node));\n\n var ImageNode = (function (PathNode$$1) {\n function ImageNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ImageNode, PathNode$$1);\n ImageNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = kendo.htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n }(PathNode));\n\n var MultiPathNode = (function (PathNode$$1) {\n function MultiPathNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode$$1);\n MultiPathNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n }(PathNode));\n\n var RectNode = (function (PathNode$$1) {\n function RectNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode$$1);\n RectNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n }(PathNode));\n\n var ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\n function decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n }\n\n if (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n }\n\n var TextNode = (function (PathNode$$1) {\n function TextNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode$$1);\n TextNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode$$1.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode$$1.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = kendo.htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = kendo.htmlEncode(content);\n\n return kendoUtil.normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(supportBrowser.msie || supportBrowser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n }(PathNode));\n\n NODE_MAP.Arc = ArcNode;\n NODE_MAP.Circle = CircleNode;\n NODE_MAP.Group = GroupNode;\n NODE_MAP.Image = ImageNode;\n NODE_MAP.MultiPath = MultiPathNode;\n NODE_MAP.Path = PathNode;\n NODE_MAP.Rect = RectNode;\n NODE_MAP.Text = TextNode;\n\n var RTL = 'rtl';\n\n function alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n }\n\n var Surface$3 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode($.extend({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG$1(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform$1().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"\" + (this._root.render()) + \"\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var NODE_MAP$2 = {};\n\n function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n }\n\n var Node$2 = (function (BaseNode$$1) {\n function Node(srcElement) {\n BaseNode$$1.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode$$1.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP$2[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n }(BaseNode));\n\n var GroupNode$2 = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n extendStatic(GroupNode, superclass);\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n }(traversable(Node$2, \"childNodes\")));\n\n var FRAME_DELAY = 1000 / 60;\n\n var RootNode$2 = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = kendo.throttle(function () {\n kendo.animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n extendStatic(RootNode, superclass);\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n }(traversable(GroupNode$2, \"childNodes\")));\n\n var QuadRoot = (function (Class$$1) {\n function QuadRoot() {\n Class$$1.call(this);\n\n this.shapes = [];\n }\n\n extendStatic(QuadRoot, Class$$1);\n QuadRoot.prototype = Object.create( Class$$1 && Class$$1.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n QuadRoot.fn = QuadRoot.prototype;\n QuadRoot.fn.init = QuadRoot.fn.constructor;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n }(Class));\n\n var QuadNode = (function (QuadRoot$$1) {\n function QuadNode(rect) {\n QuadRoot$$1.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n extendStatic(QuadNode, QuadRoot$$1);\n QuadNode.prototype = Object.create( QuadRoot$$1 && QuadRoot$$1.prototype );\n QuadNode.prototype.constructor = QuadNode;\n QuadNode.fn = QuadNode.prototype;\n QuadNode.fn.init = QuadNode.fn.constructor;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot$$1.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append$1$1(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n }(QuadRoot));\n\n var ROOT_SIZE = 3000;\n var LEVEL_STEP = 10000;\n var MAX_LEVEL = 75;\n\n var ShapesQuadTree = (function (Class$$1) {\n function ShapesQuadTree() {\n Class$$1.call(this);\n\n this.initRoots();\n }\n\n extendStatic(ShapesQuadTree, Class$$1);\n ShapesQuadTree.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n ShapesQuadTree.fn = ShapesQuadTree.prototype;\n ShapesQuadTree.fn.init = ShapesQuadTree.fn.constructor;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append$1$1(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1$1);\n if (element.nodeType === \"Group\") {\n append$1$1(elements, element.children);\n } else {\n this$1$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n }(Class));\n\n function zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n }\n\n var SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n };\n\n SurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n };\n\n SurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n };\n\n SurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n };\n\n SurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n };\n\n SurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n };\n\n SurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n };\n\n function addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = kendo.parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n }\n\n var PathNode$2 = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node);\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n }(Node$2));\n\n var ArcNode$2 = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode);\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n }(PathNode$2));\n\n var CircleNode$2 = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode);\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n }(PathNode$2));\n\n var ImageNode$2 = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n extendStatic(ImageNode, PathNode);\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n }(PathNode$2));\n\n var MultiPathNode$2 = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode);\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n }(PathNode$2));\n\n var RectNode$2 = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode);\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n }(PathNode$2));\n\n var TextNode$2 = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode);\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n };\n\n return TextNode;\n }(PathNode$2));\n\n NODE_MAP$2.Arc = ArcNode$2;\n NODE_MAP$2.Circle = CircleNode$2;\n NODE_MAP$2.Group = GroupNode$2;\n NODE_MAP$2.Image = ImageNode$2;\n NODE_MAP$2.MultiPath = MultiPathNode$2;\n NODE_MAP$2.Path = PathNode$2;\n NODE_MAP$2.Rect = RectNode$2;\n NODE_MAP$2.Text = TextNode$2;\n\n var Surface$4 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode$2(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var instance$2;\n var support$1;\n\n var hasDocument = function () { return typeof document !== \"undefined\"; };\n\n var supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\n var supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\n var SurfaceFactory = (function (Class$$1) {\n function SurfaceFactory() {\n Class$$1.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: Surface$3\n }, {\n name: \"canvas\",\n type: Surface$4\n } ];\n }\n\n extendStatic(SurfaceFactory, Class$$1);\n SurfaceFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n SurfaceFactory.fn = SurfaceFactory.prototype;\n SurfaceFactory.fn.init = SurfaceFactory.fn.constructor;\n\n var staticAccessors = { support: {},current: {} };\n\n staticAccessors.support.get = function () {\n if (!support$1) {\n support$1 = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support$1;\n };\n\n staticAccessors.current.get = function () {\n if (!instance$2) {\n instance$2 = new SurfaceFactory();\n }\n\n return instance$2;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n kendo.logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n }(Class));\n\n var Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var staticAccessors = { support: {} };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n }(Surface$2));\n\n function exportGroup(group) {\n var root = new RootNode({\n skipBaseHref: true\n });\n var bbox = group.clippedBBox();\n var rootGroup = group;\n\n if (bbox) {\n var origin = bbox.getOrigin();\n var exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n var svg = \"\" + (root.render()) + \"\";\n\n root.destroy();\n\n return svg;\n }\n\n var svg$1 = {\n \tSurface: Surface$3,\n \tRootNode: RootNode,\n \tNode: Node,\n \tGroupNode: GroupNode,\n \tArcNode: ArcNode,\n \tCircleNode: CircleNode,\n \tRectNode: RectNode,\n \tImageNode: ImageNode,\n \tTextNode: TextNode,\n \tPathNode: PathNode,\n \tMultiPathNode: MultiPathNode,\n \tDefinitionNode: DefinitionNode,\n \tClipNode: ClipNode,\n \tGradientStopNode: GradientStopNode,\n \tLinearGradientNode: LinearGradientNode,\n \tRadialGradientNode: RadialGradientNode,\n \texportGroup: exportGroup\n };\n\n var canvas = {\n \tSurface: Surface$4,\n \tRootNode: RootNode$2,\n \tNode: Node$2,\n \tGroupNode: GroupNode$2,\n \tArcNode: ArcNode$2,\n \tCircleNode: CircleNode$2,\n \tRectNode: RectNode$2,\n \tImageNode: ImageNode$2,\n \tTextNode: TextNode$2,\n \tPathNode: PathNode$2,\n \tMultiPathNode: MultiPathNode$2\n };\n\n function exportImage(group, options) {\n var defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n var exportRoot = group;\n var bbox = group.clippedBBox();\n\n if (bbox) {\n var origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n var size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n var surfaceOptions = $.extend(defaults, options);\n\n var container = document.createElement(\"div\");\n var style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n var surface = new Surface$4(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n var promise = surface.image();\n var destroy = function () {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n }\n\n function exportSVG(group, options) {\n var svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n var browser = supportBrowser || {};\n /*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n /* -----[ local vars ]----- */\n\n function slice$1$1(thing) {\n return Array.prototype.slice.call(thing);\n }\n\n var KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n\n var IMAGE_CACHE = {};\n\n var nodeInfo = {};\n nodeInfo._root = nodeInfo;\n\n /* -----[ Custom Text node to speed up rendering in kendo.pdf ]----- */\n\n var inBrowser = typeof window !== 'undefined';\n var microsoft = inBrowser ? browser.msie || browser.edge : false;\n\n var TextRect = (function (Text$$1) {\n function TextRect(str, rect, options) {\n Text$$1.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n extendStatic(TextRect, Text$$1);\n TextRect.prototype = Object.create( Text$$1 && Text$$1.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.fn = TextRect.prototype;\n TextRect.fn.init = TextRect.fn.constructor;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n }(Text));\n\n function addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n }\n\n function removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n }\n\n function setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n }\n\n var matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n \treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n })(Element.prototype);\n\n function closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n }\n\n // clone nodes ourselves, so that we redraw (DOM or\n // jQuery clone will not)\n var cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice$1$1(clone.querySelectorAll(\"canvas\")).forEach(function (canvas$$1, i) {\n canvas$$1.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice$1$1(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n })(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\n function getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n }\n\n function drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n kendo.pdf.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform$1(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = kendo.pdf.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = kendo.template(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice$1$1(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice$1$1(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice$1$1(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle$1(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle$1(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n }\n\n // This is needed for the Spreadsheet print functionality. Since\n // there we only need to draw text, this cuts through the ceremony\n // of drawDOM/renderElement and renders the text node directly.\n function drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle$1(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n }\n\n var parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = kendo.parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n })();\n\n var splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last$$1 = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last$$1) {\n ret.push(trim(input.substring(last$$1, pos)));\n last$$1 = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last$$1 < pos) {\n ret.push(trim(input.substring(last$$1, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n })();\n\n var getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n })(Object.create ? Object.create(null) : {});\n\n var getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = kendoUtil.measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n })(Object.create ? Object.create(null) : {});\n\n function getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n }\n\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n function getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n }\n\n function getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n }\n\n function incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n }\n\n function resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n }\n\n function doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n }\n\n function updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n }\n\n function parseColor$1(str, css) {\n var color = kendo.parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n }\n\n function whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n var done = false;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n next();\n\n function next() {\n if (!done && --pending <= 0) {\n callback();\n done = true;\n }\n }\n }\n\n function cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle$1(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice$1$1(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n }\n\n function alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n }\n\n function pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"text-decoration-color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n if (name == \"underline\") {\n var offset = getPropertyValue(style, \"text-underline-offset\");\n if (offset != \"auto\") {\n nodeInfo[\"underline-offset\"] = parseFloat(offset);\n }\n }\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n }\n\n function popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n }\n\n function updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n }\n\n function emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n }\n\n function createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n }\n\n function getComputedStyle$1(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n }\n\n function getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n }\n\n function pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n }\n\n function getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor$1(getPropertyValue(style, side + \"-color\"), true)\n };\n }\n\n function saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n }\n\n function getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n }\n\n function getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n }\n\n function innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle$1(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n }\n\n function getTransform(style) {\n var transform$$1 = getPropertyValue(style, \"transform\");\n if (transform$$1 == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform$$1);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n }\n\n function radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n }\n\n function parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n }\n\n function setTransform$1(shape, m) {\n m = new Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n }\n\n function setClipping(shape, clipPath) {\n shape.clip(clipPath);\n }\n\n function addArcToPath(path, x, y, options) {\n var points = new Arc$2([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n }\n\n function sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n }\n\n function adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n }\n\n function elementRoundBox(element, box, type) {\n var style = getComputedStyle$1(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n }\n\n // Create a drawing.Path for a rounded rectangle. Receives the\n // bounding box and the border-radiuses in CSS order (top-left,\n // top-right, bottom-right, bottom-left). The radiuses must be\n // objects containing x (horiz. radius) and y (vertical radius).\n function roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n }\n\n function formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n }\n\n function evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n }\n\n function getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n }\n\n function _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle$1(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n }\n\n function _renderElement(element, group) {\n var style = getComputedStyle$1(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor$1(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice$1$1(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice$1$1(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform$$1) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform$1(edge, transform$$1);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform$$1) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform$1(path, transform$$1);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image$1(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[listStyleType];\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n }\n\n function gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n }\n\n function maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap$$1 = new Group();\n wrap$$1.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap$$1.transform(transform$1().translate(bbox.left, bbox.top));\n\n group.append(wrap$$1);\n\n return true;\n }\n\n function renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image$1(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n }\n\n function zIndexSort(a, b) {\n var sa = getComputedStyle$1(a);\n var sb = getComputedStyle$1(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n }\n\n function isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n }\n\n function getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n }\n\n function renderCheckbox(element, group) {\n var style = getComputedStyle$1(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n }\n\n function renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle$1(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle$1(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n }\n\n function serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg$$1 = doc.documentElement;\n var box = getContentBox(element);\n svg$$1.setAttribute(\"width\", box.width);\n svg$$1.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg$$1);\n }\n\n return xml;\n }\n\n function renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle$1(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n }\n\n function renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle$1(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0 || isNaN(fontSize)) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align$$1 = getPropertyValue(style, \"text-align\");\n var isJustified = align$$1 == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var underlineOffset = nodeInfo[\"underline-offset\"];\n\n if (underline) {\n forEachRect(decorateUnder);\n }\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (lineThrough || overline) {\n forEachRect(decorateOver);\n }\n\n return; // only function declarations after this line\n\n function forEachRect(callback) {\n range.selectNode(node);\n var clientRects = slice$1$1(range.getClientRects());\n\n forEachRect = function (cb) { return clientRects.forEach(cb); };\n forEachRect(callback);\n }\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function drawTextLine(lineWidth, textBox, color, ypos) {\n if (color) {\n var path = new Path({ stroke: {\n width: lineWidth,\n color: color\n }});\n\n ypos -= lineWidth;\n path.moveTo(textBox.left, ypos)\n .lineTo(textBox.right, ypos);\n group.append(path);\n }\n }\n\n function decorateOver(box) {\n var width = fontSize / 12;\n drawTextLine(width, box, lineThrough, box.bottom - box.height / 2.7);\n drawTextLine(width, box, overline, box.top);\n }\n\n function decorateUnder(box) {\n var width = fontSize / 12;\n var underlinePos = box.bottom;\n if (underlineOffset != null) {\n underlinePos += underlineOffset;\n } else {\n underlinePos += width; // for \"auto\" it seems better to add line width\n }\n drawTextLine(width, box, underline, underlinePos);\n }\n }\n\n function groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n }\n\n function renderElement(element, container) {\n var style = getComputedStyle$1(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform$1(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n }\n\n // function drawDebugBox(box, group, color) {\n // var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n // if (color) {\n // path.stroke(color);\n // }\n // group.append(path);\n // }\n\n // function dumpTextNode(node) {\n // var txt = node.data.replace(/^\\s+/, \"\");\n // if (txt.length < 100) {\n // console.log(node.data.length + \": |\" + txt);\n // } else {\n // console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n // }\n // }\n\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n }\n\n var drawing = {\n \tsvg: svg$1,\n \tcanvas: canvas,\n \tutil: util,\n \tHasObservers: HasObservers,\n \tPathParser: PathParser,\n \tparsePath: parsePath,\n \tBaseNode: BaseNode,\n \tOptionsStore: OptionsStore,\n \tSurface: Surface,\n \tSurfaceFactory: SurfaceFactory,\n \texportImage: exportImage,\n \texportSVG: exportSVG,\n \tQuadNode: QuadNode,\n \tShapesQuadTree: ShapesQuadTree,\n \tElement: Element$1,\n \tCircle: Circle,\n \tArc: Arc,\n \tPath: Path,\n \tMultiPath: MultiPath,\n \tText: Text,\n \tImage: Image$1,\n \tGroup: Group,\n \tLayout: Layout,\n \tRect: Rect$2,\n \talign: align,\n \tvAlign: vAlign,\n \tstack: stack,\n \tvStack: vStack,\n \twrap: wrap,\n \tvWrap: vWrap,\n \tfit: fit,\n \tLinearGradient: LinearGradient,\n \tRadialGradient: RadialGradient,\n \tGradientStop: GradientStop,\n \tGradient: Gradient,\n \tAnimation: Animation,\n \tAnimationFactory: AnimationFactory,\n \tdrawDOM: drawDOM,\n \tdrawText: drawText,\n \tgetFontFaces: getFontFaces\n };\n\n kendo.deepExtend(kendo, {\n drawing: drawing,\n geometry: geometry\n });\n\n // Use unique SVG Definition IDs for Kendo UI\n defId = 1000;\n\n kendo.drawing.Segment = kendo.geometry.Segment;\n kendo.dataviz.drawing = kendo.drawing;\n kendo.dataviz.geometry = kendo.geometry;\n kendo.drawing.util.measureText = kendo.util.measureText;\n kendo.drawing.util.objectKey = kendo.util.objectKey;\n kendo.drawing.Color = kendo.Color;\n kendo.util.encodeBase64 = kendo.drawing.util.encodeBase64;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var NS = \".kendo\";\n var kendo = window.kendo;\n var deepExtend = kendo.deepExtend;\n var utils = kendo.drawing.util;\n var defined = utils.defined;\n var limitValue = utils.limitValue;\n var eventCoordinates = utils.eventCoordinates;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n\n var TOOLTIP_TEMPLATE = '
    ' +\n '
    ' +\n '
    ';\n var TOOLTIP_CLOSE_TEMPLATE = \"
    \" + (kendo.ui.icon($(''), { icon: \"x\" })) + \"
    \";\n\n var SurfaceTooltip = kendo.Class.extend({\n init: function(surface, options) {\n this.element = $(TOOLTIP_TEMPLATE);\n this.content = this.element.children(\".k-tooltip-content\");\n\n options = options || {};\n\n this.options = deepExtend({}, this.options, this._tooltipOptions(options));\n this.popupOptions = {\n appendTo: options.appendTo,\n animation: options.animation,\n copyAnchorStyles: false,\n collision: \"fit fit\"\n };\n\n this._openPopupHandler = this._openPopup.bind(this);\n\n this.surface = surface;\n this._bindEvents();\n },\n\n options: {\n position: \"top\",\n showOn: \"mouseenter\",\n offset: 7,\n autoHide: true,\n hideDelay: 0,\n showAfter: 100\n },\n\n _bindEvents: function() {\n this._showHandler = this._showEvent.bind(this);\n this._surfaceLeaveHandler = this._surfaceLeave.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._mousemoveHandler = this._mousemove.bind(this);\n\n this.surface.bind(\"click\", this._showHandler);\n this.surface.bind(\"mouseenter\", this._showHandler);\n this.surface.bind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.bind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.on(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n\n this.element.on(\"click\" + NS, \".k-tooltip-button\", this._hideClick.bind(this));\n this.element.on(\"mouseleave\" + NS, this._tooltipLeave.bind(this));\n },\n\n getPopup: function() {\n if (!this.popup) {\n this.popup = new kendo.ui.Popup(this.element, this.popupOptions);\n }\n\n return this.popup;\n },\n\n destroy: function() {\n var popup = this.popup;\n\n this.surface.unbind(\"click\", this._showHandler);\n this.surface.unbind(\"mouseenter\", this._showHandler);\n this.surface.unbind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.unbind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.off(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n this.element.off(\"click\" + NS);\n this.element.off(\"mouseleave\" + NS);\n\n if (popup) {\n popup.destroy();\n delete this.popup;\n }\n delete this.popupOptions;\n\n clearTimeout(this._timeout);\n\n delete this.element;\n delete this.content;\n delete this.surface;\n },\n\n _tooltipOptions: function(options) {\n options = options || {};\n return {\n position: options.position,\n showOn: options.showOn,\n offset: options.offset,\n autoHide: options.autoHide,\n width: options.width,\n height: options.height,\n content: options.content,\n shared: options.shared,\n hideDelay: options.hideDelay,\n showAfter: options.showAfter\n };\n },\n\n _tooltipShape: function(shape) {\n while (shape && !shape.options.tooltip) {\n shape = shape.parent;\n }\n return shape;\n },\n\n _updateContent: function(target, shape, options) {\n var content = options.content;\n if (kendo.isFunction(content)) {\n content = content({\n element: shape,\n target: target\n });\n }\n\n if (content) {\n this.content.html(content);\n return true;\n }\n },\n\n _position: function(shape, options, elementSize, event) {\n var position = options.position;\n var tooltipOffset = options.offset || 0;\n var surface = this.surface;\n var offset = surface._instance._elementOffset();\n var size = surface.getSize();\n var surfaceOffset = surface._instance._offset;\n var bbox = shape.bbox();\n var width = elementSize.width;\n var height = elementSize.height;\n var left = 0, top = 0;\n\n bbox.origin.translate(offset.left, offset.top);\n if (surfaceOffset) {\n bbox.origin.translate(-surfaceOffset.x, -surfaceOffset.y);\n }\n\n if (position == \"cursor\" && event) {\n var coord = eventCoordinates(event);\n left = coord.x - width / 2;\n top = coord.y - height - tooltipOffset;\n } else if (position == \"left\") {\n left = bbox.origin.x - width - tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"right\") {\n left = bbox.bottomRight().x + tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"bottom\") {\n left = bbox.center().x - width / 2;\n top = bbox.bottomRight().y + tooltipOffset;\n } else {\n left = bbox.center().x - width / 2;\n top = bbox.origin.y - height - tooltipOffset;\n }\n\n return {\n left: limitValue(left, offset.left, offset.left + size.width),\n top: limitValue(top, offset.top, offset.top + size.height)\n };\n },\n\n show: function(shape, options) {\n this._show(shape, shape, deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip), options));\n },\n\n hide: function() {\n var popup = this.popup;\n var current = this._current;\n\n delete this._current;\n clearTimeout(this._showTimeout);\n if (popup && popup.visible() && current &&\n !this.surface.trigger(\"tooltipClose\", { element: current.shape, target: current.target, popup: popup })) {\n popup.close();\n }\n },\n\n _hideClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _show: function(target, shape, options, event, delay) {\n var current = this._current;\n\n clearTimeout(this._timeout);\n\n if (current && ((current.shape === shape && options.shared) || current.target === target)) {\n return;\n }\n\n clearTimeout(this._showTimeout);\n\n var popup = this.getPopup();\n\n if (!this.surface.trigger(\"tooltipOpen\", { element: shape, target: target, popup: popup }) &&\n this._updateContent(target, shape, options)) {\n\n this._autoHide(options);\n var elementSize = this._measure(options);\n\n if (popup.visible()) {\n popup.close(true);\n }\n\n this._current = {\n options: options,\n elementSize: elementSize,\n shape: shape,\n target: target,\n position: this._position(options.shared ? shape : target, options, elementSize, event)\n };\n\n if (delay) {\n this._showTimeout = setTimeout(this._openPopupHandler, options.showAfter || 0);\n } else {\n this._openPopup();\n }\n }\n },\n\n _openPopup: function() {\n var current = this._current;\n var position = current.position;\n\n this.getPopup().open(position.left, position.top);\n },\n\n _autoHide: function(options) {\n if (options.autoHide && this._closeButton) {\n this.element.removeClass(\"k-tooltip-closable\");\n this._closeButton.remove();\n delete this._closeButton;\n }\n\n if (!options.autoHide && !this._closeButton) {\n this.element.addClass(\"k-tooltip-closable\");\n this._closeButton = $(TOOLTIP_CLOSE_TEMPLATE).appendTo(this.element);\n }\n },\n\n _showEvent: function(e) {\n var shape = this._tooltipShape(e.element);\n\n if (shape) {\n var options = deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip));\n\n if (options && options.showOn == e.type) {\n this._show(e.element, shape, options, e.originalEvent, true);\n }\n }\n },\n\n _measure: function(options) {\n this.element.css({\n width: defined(options.width) ? options.width : 'auto',\n height: defined(options.height) ? options.height : 'auto'\n });\n\n var clone = this.element.clone().appendTo(document.body).css({ visibility: 'hidden' });\n var width = outerWidth(clone);\n var height = outerHeight(clone);\n clone.remove();\n\n this.element.css({\n width: width,\n height: height\n });\n\n return {\n width: width,\n height: height\n };\n },\n\n _mouseleave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e.originalEvent)) {\n var tooltip = this;\n var current = tooltip._current;\n\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n clearTimeout(tooltip._showTimeout);\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n },\n\n _mousemove: function(e) {\n var current = this._current;\n if (current && e.element) {\n var options = current.options;\n if (options.position == \"cursor\") {\n var position = this._position(e.element, options, current.elementSize, e.originalEvent);\n current.position = position;\n this.getPopup().wrapper.css({ left: position.left, top: position.top });\n }\n }\n },\n\n _surfaceLeave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e)) {\n clearTimeout(this._showTimeout);\n this.hide();\n }\n },\n\n _popupRelatedTarget: function(e) {\n return e.relatedTarget && $(e.relatedTarget).closest(this.popup.wrapper).length;\n },\n\n _tooltipLeave: function() {\n var tooltip = this;\n var current = tooltip._current;\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n });\n\n kendo.drawing.SurfaceTooltip = SurfaceTooltip;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var draw = kendo.drawing;\n var DrawingSurface = draw.Surface;\n var Widget = kendo.ui.Widget;\n var deepExtend = kendo.deepExtend;\n\n kendo.support.svg = DrawingSurface.support.svg;\n kendo.support.canvas = DrawingSurface.support.canvas;\n\n var Surface = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, {});\n\n this.options = deepExtend({}, this.options, options);\n\n this._instance = DrawingSurface.create(this.element[0], options);\n if (this._instance.translate) {\n this.translate = translate;\n }\n\n this._triggerInstanceHandler = this._triggerInstanceEvent.bind(this);\n this._bindHandler(\"click\");\n this._bindHandler(\"mouseenter\");\n this._bindHandler(\"mouseleave\");\n this._bindHandler(\"mousemove\");\n\n this._enableTracking();\n },\n\n options: {\n name: \"Surface\",\n tooltip: {}\n },\n\n events: [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\",\n \"tooltipOpen\",\n \"tooltipClose\"\n ],\n\n _triggerInstanceEvent: function(e) {\n this.trigger(e.type, e);\n },\n\n _bindHandler: function(event) {\n this._instance.bind(event, this._triggerInstanceHandler);\n },\n\n draw: function(element) {\n this._instance.draw(element);\n },\n\n clear: function() {\n if (this._instance) {\n this._instance.clear();\n }\n this.hideTooltip();\n },\n\n destroy: function() {\n if (this._instance) {\n this._instance.destroy();\n delete this._instance;\n }\n\n if (this._tooltip) {\n this._tooltip.destroy();\n delete this._tooltip;\n }\n\n Widget.fn.destroy.call(this);\n },\n\n exportVisual: function() {\n return this._instance.exportVisual();\n },\n\n eventTarget: function(e) {\n return this._instance.eventTarget(e);\n },\n\n showTooltip: function(shape, options) {\n if (this._tooltip) {\n this._tooltip.show(shape, options);\n }\n },\n\n hideTooltip: function() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n\n suspendTracking: function() {\n this._instance.suspendTracking();\n this.hideTooltip();\n },\n\n resumeTracking: function() {\n this._instance.resumeTracking();\n },\n\n getSize: function() {\n return {\n width: this.element.width(),\n height: this.element.height()\n };\n },\n\n setSize: function(size) {\n this.element.css({\n width: size.width,\n height: size.height\n });\n\n this._size = size;\n this._instance.currentSize(size);\n this._resize();\n },\n\n _resize: function() {\n this._instance.currentSize(this._size);\n this._instance._resize();\n },\n\n _enableTracking: function() {\n if (kendo.ui.Popup) {\n this._tooltip = new draw.SurfaceTooltip(this, this.options.tooltip || {});\n }\n }\n });\n\n kendo.ui.plugin(Surface);\n\n Surface.create = function(element, options) {\n return new Surface(element, options);\n };\n\n kendo.drawing.Surface = Surface;\n\n function translate(offset) {\n this._instance.translate(offset);\n }\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var drawing = kendo.drawing;\n var drawDOM = drawing.drawDOM;\n\n drawing.drawDOM = function(element, options) {\n return drawDOM($(element)[0], options);\n };\n\n // Aliases used by spreadsheet/print.js\n drawing.drawDOM.drawText = drawing.drawText;\n drawing.drawDOM.getFontFaces = drawing.getFontFaces;\n\n })(window.kendo.jQuery);\n\n var __meta__$G = {\n id: \"drawing\",\n name: \"Drawing API\",\n category: \"framework\",\n description: \"The Kendo UI low-level drawing API\",\n depends: [ \"core\", \"color\", \"popup\", \"icons\" ]\n };\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, curly */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var drawing = kendo.drawing;\n var util = drawing.util;\n var Path = drawing.Path;\n var Group = drawing.Group;\n var Class = kendo.Class;\n var support = kendo.support;\n var geometry = kendo.geometry;\n var Rect = geometry.Rect;\n var Circle = geometry.Circle;\n var geometryTransform = geometry.transform;\n var Segment = geometry.Segment;\n var dataviz = kendo.dataviz;\n\n var deepExtend = kendo.deepExtend;\n var isFunction = kendo.isFunction;\n var __common_getter_js = kendo.getter;\n\n var ARC = \"arc\";\n var AXIS_LABEL_CLICK = \"axisLabelClick\";\n var BLACK = \"#000\";\n var BOTTOM = \"bottom\";\n var CENTER = \"center\";\n var CIRCLE = \"circle\";\n var COORD_PRECISION = 3;\n var CROSS = \"cross\";\n var DATE = \"date\";\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_HEIGHT = 400;\n var DEFAULT_PRECISION = 10;\n var DEFAULT_WIDTH = 600;\n var END = \"end\";\n var FORMAT_REGEX = /\\{\\d+:?/;\n var HEIGHT = \"height\";\n var HIGHLIGHT_ZINDEX = 100;\n var INSIDE = \"inside\";\n var LEFT = \"left\";\n var MAX_VALUE = Number.MAX_VALUE;\n var MIN_VALUE = -Number.MAX_VALUE;\n var NONE = \"none\";\n var NOTE_CLICK = \"noteClick\";\n var NOTE_HOVER = \"noteHover\";\n var NOTE_LEAVE = \"noteLeave\";\n var OBJECT = \"object\";\n var OUTSIDE = \"outside\";\n var RIGHT = \"right\";\n var ROUNDED_RECT = \"roundedRect\";\n var START = \"start\";\n var STRING = \"string\";\n var TOP = \"top\";\n var TRIANGLE = \"triangle\";\n var VALUE = \"value\";\n var WHITE = \"#fff\";\n var WIDTH = \"width\";\n var X = \"x\";\n var Y = \"y\";\n var DEFAULT_SERIES_OPACITY = 1;\n\n var constants = {\n \tARC: ARC,\n \tAXIS_LABEL_CLICK: AXIS_LABEL_CLICK,\n \tBLACK: BLACK,\n \tBOTTOM: BOTTOM,\n \tCENTER: CENTER,\n \tCIRCLE: CIRCLE,\n \tCOORD_PRECISION: COORD_PRECISION,\n \tCROSS: CROSS,\n \tDATE: DATE,\n \tDEFAULT_FONT: DEFAULT_FONT,\n \tDEFAULT_HEIGHT: DEFAULT_HEIGHT,\n \tDEFAULT_PRECISION: DEFAULT_PRECISION,\n \tDEFAULT_WIDTH: DEFAULT_WIDTH,\n \tEND: END,\n \tFORMAT_REGEX: FORMAT_REGEX,\n \tHEIGHT: HEIGHT,\n \tHIGHLIGHT_ZINDEX: HIGHLIGHT_ZINDEX,\n \tINSIDE: INSIDE,\n \tLEFT: LEFT,\n \tMAX_VALUE: MAX_VALUE,\n \tMIN_VALUE: MIN_VALUE,\n \tNONE: NONE,\n \tNOTE_CLICK: NOTE_CLICK,\n \tNOTE_HOVER: NOTE_HOVER,\n \tNOTE_LEAVE: NOTE_LEAVE,\n \tOBJECT: OBJECT,\n \tOUTSIDE: OUTSIDE,\n \tRIGHT: RIGHT,\n \tROUNDED_RECT: ROUNDED_RECT,\n \tSTART: START,\n \tSTRING: STRING,\n \tTOP: TOP,\n \tTRIANGLE: TRIANGLE,\n \tVALUE: VALUE,\n \tWHITE: WHITE,\n \tWIDTH: WIDTH,\n \tX: X,\n \tY: Y,\n \tDEFAULT_SERIES_OPACITY: DEFAULT_SERIES_OPACITY\n };\n\n function isArray(value) {\n return Array.isArray(value);\n }\n\n function addClass(element, classes) {\n var classArray = isArray(classes) ? classes : [ classes ];\n\n for (var idx = 0; idx < classArray.length; idx++) {\n var className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n }\n\n var SPACE_REGEX = /\\s+/g;\n\n function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n }\n\n function alignPathToPixel(path) {\n var offset = 0.5;\n if (path.options.stroke && kendo.drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (var i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n }\n\n function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n }\n\n function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n }\n\n function isString(value) {\n return typeof value === STRING;\n }\n\n function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n }\n\n function isObject(value) {\n return typeof value === \"object\";\n }\n\n function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n }\n\n var SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\n function isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n }\n\n function elementStyles(element, styles) {\n var stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n var result = {};\n var style = window.getComputedStyle(element);\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (var field$1 in styles) {\n element.style[field$1] = styleValue(styles[field$1]);\n }\n }\n }\n\n function getSpacing(value, defaultSpacing) {\n if (defaultSpacing === void 0) { defaultSpacing = 0; }\n\n var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n }\n\n var current = {\n compile: function(template) {\n return template;\n }\n };\n\n var TemplateService = Class.extend({\n\n });\n\n TemplateService.register = function(userImplementation) {\n current = userImplementation;\n };\n\n TemplateService.compile = function(template, options) {\n return current.compile(template, options);\n };\n\n function getTemplate(options) {\n if (options === void 0) { options = {}; }\n\n var template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n }\n\n function grep(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n }\n\n function hasClasses(element, classNames) {\n if (element.className) {\n var names = classNames.split(\" \");\n for (var idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n }\n\n var HashMap = function HashMap() {\n this._map = {};\n };\n\n HashMap.prototype.get = function get (name) {\n return this._map[this._key(name)];\n };\n\n HashMap.prototype.set = function set (name, value) {\n this._map[this._key(name)] = value;\n };\n\n HashMap.prototype._key = function _key (name) {\n return name instanceof Date ? name.getTime() : name;\n };\n\n function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n }\n\n function interpolateValue(start, end, progress) {\n return kendo.drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n }\n\n var TRIGGER = 'trigger';\n\n var InstanceObserver = Class.extend({\n init: function(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n },\n\n trigger: function(name, args) {\n var ref = this;\n var observer = ref.observer;\n var handlerMap = ref.handlerMap;\n var isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n },\n\n callObserver: function(fnName) {\n var arguments$1 = arguments;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) { args[ len ] = arguments$1[ len + 1 ]; }\n\n return this.observer[fnName].apply(this.observer, args);\n },\n\n requiresHandlers: function(names) {\n var this$1$1 = this;\n\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (var idx = 0; idx < names.length; idx++) {\n if (this$1$1.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n });\n\n function map(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n var value = callback(array[idx]);\n if (kendo.drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n }\n\n var browser = support.browser || {};\n\n function mousewheelDelta(e) {\n var delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n }\n\n var ref = kendo.drawing.util;\n var append = ref.append;\n var bindEvents = ref.bindEvents;\n var defined = ref.defined;\n var deg = ref.deg;\n var elementOffset = ref.elementOffset;\n var elementSize = ref.elementSize;\n var eventCoordinates = ref.eventCoordinates;\n var eventElement = ref.eventElement;\n var hashKey = ref.hashKey;\n var last = ref.last;\n var limitValue = ref.limitValue;\n var objectKey = ref.objectKey;\n var rad = ref.rad;\n var round = ref.round;\n var unbindEvents = ref.unbindEvents;\n var valueOrDefault = ref.valueOrDefault;\n\n var FontLoader = Class.extend({\n\n });\n\n FontLoader.fetchFonts = function(options, fonts, state) {\n if (state === void 0) { state = { depth: 0 }; }\n\n var MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n var value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n };\n\n FontLoader.loadFonts = function(fonts, callback) {\n var promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n kendo.logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n };\n\n FontLoader.preloadFonts = function(options, callback) {\n var fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n };\n\n function setDefaultOptions(type, options) {\n var proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n }\n\n function sparseArrayLimits(arr) {\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var idx = 0, length = arr.length; idx < length; idx++) {\n var value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n }\n\n function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n }\n\n var Matrix = geometry.Matrix;\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n }\n\n function autoTextColor(color) {\n var isDark = new kendo.Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n }\n\n var DELETED = {};\n\n var LegacySet = Class.extend({\n init: function(values) {\n var this$1$1 = this;\n\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (var i = 0; i < this._values.length; i++) {\n this$1$1._index[this$1$1._values[i]] = i;\n }\n },\n\n values: function() {\n return this._values.filter(function (item) { return item !== DELETED; });\n },\n\n has: function(value) {\n return this._index[value] !== undefined;\n },\n\n add: function(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n },\n\n delete: function(value) {\n var index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n },\n\n clear: function() {\n this._index = {};\n this._values = [];\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(LegacySet.fn, {\n size: {\n get: function() {\n return this._values.length;\n }\n }\n });\n }\n\n var SetWrapper = Class.extend({\n init: function(values) {\n this._set = new Set(values);\n },\n\n values: function() {\n return Array.from(this._set);\n },\n\n has: function(value) {\n return this._set.has(value);\n },\n\n add: function(value) {\n this._set.add(value);\n },\n\n delete: function(value) {\n this._set.delete(value);\n },\n\n clear: function() {\n this._set.clear();\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(SetWrapper.fn, {\n size: {\n get: function() {\n return this._set.size;\n }\n }\n });\n }\n\n // TODO: Drop LegacySet when removing support for IE10\n var supportsSet = function () {\n var supported = false;\n\n if (typeof Set === 'function') {\n var set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n };\n\n function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n }\n\n function defaultErrorHandler(error) {\n throw error;\n }\n\n var keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n };\n\n function autoMajorUnit(min, max) {\n var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n }\n\n var Point = Class.extend({\n init: function(x, y) {\n\n this.x = x || 0;\n this.y = y || 0;\n },\n\n clone: function() {\n return new Point(this.x, this.y);\n },\n\n equals: function(point) {\n return point && this.x === point.x && this.y === point.y;\n },\n\n rotate: function(center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n },\n\n multiply: function(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n },\n\n distanceTo: function(point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n });\n\n Point.onCircle = function(center, angle, radius) {\n var radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n var Box = Class.extend({\n init: function(x1, y1, x2, y2) {\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n },\n\n equals: function(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n },\n\n width: function() {\n return this.x2 - this.x1;\n },\n\n height: function() {\n return this.y2 - this.y1;\n },\n\n translate: function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n },\n\n move: function(x, y) {\n var height = this.height();\n var width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n },\n\n wrap: function(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n },\n\n wrapPoint: function(point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n },\n\n snapTo: function(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n },\n\n alignTo: function(targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n shrink: function(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n },\n\n expand: function(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n },\n\n pad: function(padding) {\n var spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n },\n\n unpad: function(padding) {\n var spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n },\n\n clone: function() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n },\n\n center: function() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n },\n\n containsPoint: function(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n },\n\n points: function() {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n },\n\n getHash: function() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n },\n\n overlaps: function(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n },\n\n rotate: function(rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n toRect: function() {\n return new Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n },\n\n hasSize: function() {\n return this.width() !== 0 && this.height() !== 0;\n },\n\n align: function(targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? WIDTH : HEIGHT;\n var size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n });\n\n function rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n }\n\n var Ring = Class.extend({\n init: function(center, innerRadius, radius, startAngle, angle) {\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n },\n\n clone: function() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n },\n\n middle: function() {\n return this.startAngle + this.angle / 2;\n },\n\n setRadius: function(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n },\n\n point: function(angle, innerRadius) {\n var radianAngle = rad(angle);\n var ax = Math.cos(radianAngle);\n var ay = Math.sin(radianAngle);\n var radius = innerRadius ? this.innerRadius : this.radius;\n var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n },\n\n adjacentBox: function(distance, width, height) {\n var sector = this.clone().expand(distance);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n var hw = width / 2;\n var hh = height / 2;\n var sa = Math.sin(rad(midAndle));\n var ca = Math.cos(rad(midAndle));\n var x = midPoint.x - hw;\n var y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n },\n\n containsPoint: function(p) {\n var center = this.center;\n var innerRadius = this.innerRadius;\n var radius = this.radius;\n var startAngle = this.startAngle;\n var endAngle = this.startAngle + this.angle;\n var dx = p.x - center.x;\n var dy = p.y - center.y;\n var vector = new Point(dx, dy);\n var startPoint = this.point(startAngle);\n var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n var endPoint = this.point(endAngle);\n var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n },\n\n getBBox: function() {\n var this$1$1 = this;\n\n var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n var startAngle = round(this.startAngle % 360);\n var endAngle = round((startAngle + this.angle) % 360);\n var innerRadius = this.innerRadius;\n var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n var startAngleIndex = allAngles.indexOf(startAngle);\n var endAngleIndex = allAngles.indexOf(endAngle);\n var angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (var i = 0; i < angles.length; i++) {\n var point = this$1$1.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n },\n\n expand: function(value) {\n this.radius += value;\n return this;\n }\n });\n\n function numericComparer(a, b) {\n return a - b;\n }\n\n var Sector = Ring.extend({\n init: function(center, radius, startAngle, angle) {\n Ring.fn.init.call(this, center, 0, radius, startAngle, angle);\n },\n\n expand: function(value) {\n return Ring.fn.expand.call(this, value);\n },\n\n clone: function() {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n },\n\n setRadius: function(newRadius) {\n this.radius = newRadius;\n\n return this;\n }\n });\n\n var DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\n var ShapeBuilder = Class.extend({\n createRing: function(sector, options) {\n var startAngle = sector.startAngle + 180;\n var endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n var center = new geometry.Point(sector.center.x, sector.center.y);\n var radius = Math.max(sector.radius, 0);\n var innerRadius = Math.max(sector.innerRadius, 0);\n var arc = new geometry.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n var path = Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n var innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n }\n });\n\n ShapeBuilder.current = new ShapeBuilder();\n\n var ChartElement = Class.extend({\n init: function(options) {\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n reflow: function(targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n },\n\n destroy: function() {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n },\n\n getRoot: function() {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n },\n\n getSender: function() {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n },\n\n getService: function() {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n },\n\n translateChildren: function(dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n },\n\n append: function() {\n var arguments$1 = arguments;\n var this$1$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1$1.children.push(item);\n item.parent = this$1$1;\n }\n },\n\n renderVisual: function() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n },\n\n addVisual: function() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n },\n\n renderChildren: function() {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n },\n\n createAnimation: function() {\n if (this.visual && this.options.animation) {\n this.animation = drawing.Animation.create(\n this.visual, this.options.animation\n );\n }\n },\n\n appendVisual: function(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n },\n\n clipRoot: function() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n },\n\n stackRoot: function() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n },\n\n stackVisual: function(childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n },\n\n traverse: function(callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n },\n\n closest: function(match) {\n var element = this;\n var matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n },\n\n renderComplete: function() {},\n\n hasHighlight: function() {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false));\n },\n\n toggleHighlight: function(show, opacity) {\n var this$1$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n $.extend(this.highlightVisualArgs(), {\n createVisual: function () { return this$1$1.createHighlight(highlightOptions); },\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n }\n ));\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n },\n\n createGradientOverlay: function(element, options, gradientOptions) {\n var overlay = new Path($.extend({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n },\n\n createGradient: function(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n },\n\n supportsPointInactiveOpacity: function() {\n return true;\n }\n });\n\n ChartElement.prototype.options = { };\n\n var BoxElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1$1.align(targetBox, X, options.align);\n this$1$1.align(targetBox, Y, options.vAlign);\n this$1$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n ChartElement.fn.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n },\n\n align: function(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n },\n\n hasBox: function() {\n var options = this.options;\n return options.border.width || options.background;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n },\n\n visualStyle: function() {\n var options = this.options;\n var border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n });\n\n setDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n });\n\n var ShapeElement = BoxElement.extend({\n init: function(options, pointData) {\n BoxElement.fn.init.call(this, options);\n\n this.pointData = pointData;\n },\n\n getElement: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new drawing.Circle(\n new Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new drawing.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n var rect = box.toRect();\n if (type === ROUNDED_RECT) {\n var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geometryTransform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n },\n\n createElement: function() {\n var this$1$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: function () { return this$1$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n },\n\n visualOptions: function() {\n var options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n },\n\n createVisual: function() {\n this.visual = this.createElement();\n }\n });\n\n setDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n });\n\n var LINEAR = \"linear\";\n var RADIAL = \"radial\";\n\n var GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n };\n\n function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n var a = Math.min(r.x1, s.x1);\n var b = Math.max(r.x1, s.x1);\n var c = Math.min(r.x2, s.x2);\n var d = Math.max(r.x2, s.x2);\n var e = Math.min(r.y1, s.y1);\n var f = Math.max(r.y1, s.y1);\n var g = Math.min(r.y2, s.y2);\n var h = Math.max(r.y2, s.y2);\n var boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n }\n\n var RootElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n var rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n },\n\n reflow: function() {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (var i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n },\n\n createVisual: function() {\n this.visual = new Group();\n this.createBackground();\n },\n\n createBackground: function() {\n var options = this.options;\n var border = options.border || {};\n var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n var background = Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n },\n\n getRoot: function() {\n return this;\n },\n\n createGradient: function(options) {\n var gradients = this.gradients;\n var hashCode = objectKey(options);\n var gradient = GRADIENTS[options.gradient];\n var drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n var gradientOptions = $.extend({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new drawing.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new drawing.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n },\n\n cleanGradients: function() {\n var gradients = this.gradients;\n for (var hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n },\n\n size: function() {\n var options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n });\n\n setDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n });\n\n function innerRadialStops(options) {\n var stops = options.stops;\n var usedSpace = ((options.innerRadius / options.radius) * 100);\n var length = stops.length;\n var currentStops = [];\n\n for (var i = 0; i < length; i++) {\n var currentStop = $.extend({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n }\n\n var FloatElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n this._initDirection();\n },\n\n _initDirection: function() {\n var options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n },\n\n reflow: function(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n },\n\n reflowChildren: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var elementAxis = ref.elementAxis;\n var groupAxis = ref.groupAxis;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var ref$1 = this.groupOptions();\n var groups = ref$1.groups;\n var groupsSize = ref$1.groupsSize;\n var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n var groupsCount = groups.length;\n var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n var groupStart = groupsStart;\n\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var group = groups[groupIdx];\n var groupElements = group.groupElements;\n var elementStart = box[elementAxis + 1];\n var groupElementsCount = groupElements.length;\n\n for (var idx = 0; idx < groupElementsCount; idx++) {\n var element = groupElements[idx];\n var elementSize$$1 = this$1$1.elementSize(element);\n var groupElementStart = groupStart + this$1$1.alignStart(elementSize$$1[groupSizeField], group.groupSize);\n\n var elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize$$1[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize$$1[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize$$1[elementSizeField] + this$1$1.elementSpacing;\n }\n groupStart += group.groupSize + this$1$1.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n },\n\n alignStart: function(size, maxSize) {\n var start = 0;\n var align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n },\n\n groupOptions: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var children = ref.children;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var elementSpacing = ref.elementSpacing;\n var groupSpacing = ref.groupSpacing;\n var maxSize = round(box[elementSizeField]());\n var childrenCount = children.length;\n var groups = [];\n\n var groupSize = 0;\n var groupElementsSize = 0;\n var groupsSize = 0;\n var maxGroupElementsSize = 0;\n var groupElements = [];\n\n for (var idx = 0; idx < childrenCount; idx++) {\n var element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n var elementSize$$1 = this$1$1.elementSize(element);\n if (this$1$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize$$1[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize$$1[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize$$1[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n },\n\n elementSize: function(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n },\n\n createVisual: function() {}\n });\n\n setDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n });\n\n var DrawingText = drawing.Text;\n\n var Text = ChartElement.extend({\n init: function(content, options) {\n ChartElement.fn.init.call(this, options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var size = options.size = util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n },\n\n createVisual: function() {\n var ref = this.options;\n var font = ref.font;\n var color = ref.color;\n var opacity = ref.opacity;\n var cursor = ref.cursor;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n }\n });\n\n setDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n });\n\n function rectToBox(rect) {\n var origin = rect.origin;\n var bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n }\n\n var ROWS_SPLIT_REGEX = /\\n/m;\n\n var TextBox = BoxElement.extend({\n init: function(content, options, data) {\n BoxElement.fn.init.call(this, options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n },\n\n _initContainer: function() {\n var options = this.options;\n var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n var text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n var visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n BoxElement.fn.reflow.call(this, targetBox);\n\n if (options.rotation) {\n var margin = getSpacing(options.margin);\n var box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n },\n\n createVisual: function() {\n var options = this.options;\n\n this.visual = new Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n var box = Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n },\n\n renderVisual: function() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n var visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n visualContext: function(targetBox) {\n var this$1$1 = this;\n\n var context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: function () {\n this$1$1._boxReflow = true;\n this$1$1.reflow(targetBox);\n this$1$1._boxReflow = false;\n return this$1$1.getDefaultVisual();\n }\n };\n if (this.data) {\n $.extend(context, this.data);\n }\n\n return context;\n },\n\n getDefaultVisual: function() {\n this.createVisual();\n this.renderChildren();\n var visual = this.visual;\n delete this.visual;\n return visual;\n },\n\n rotate: function() {\n var options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n },\n\n rotationTransform: function() {\n var rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n var ref = this.normalBox.center();\n var cx = ref.x;\n var cy = ref.y;\n var boxCenter = this.rotatedBox.center();\n\n return geometryTransform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n });\n\n var Title = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this._textBox = new TextBox(this.options.text, $.extend({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n },\n\n reflow: function(targetBox) {\n ChartElement.fn.reflow.call(this, targetBox);\n this.box.snapTo(targetBox, X);\n }\n });\n\n Title.buildTitle = function(options, defaultOptions) {\n var titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = $.extend({ visible: true }, defaultOptions, titleOptions);\n\n var title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n };\n\n Title.orderTitles = function(titles) {\n var items = [].concat(titles);\n var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n };\n\n function collapseVerticalMargins(items) {\n for (var i = 1; i < items.length; i++) {\n var box = items[i]._textBox;\n var prevBox = items[i - 1]._textBox;\n prevBox.options.margin = $.extend(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = $.extend(getSpacing(box.options.margin), { top: 0 });\n }\n }\n\n setDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n });\n\n var AxisLabel = TextBox.extend({\n init: function(value, text, index, dataItem, options) {\n TextBox.fn.init.call(this, text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n },\n\n visualContext: function(targetBox) {\n var context = TextBox.fn.visualContext.call(this, targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n },\n\n click: function(widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n },\n\n rotate: function() {\n if (this.options.alignRotation !== CENTER) {\n var box = this.normalBox.toRect();\n var transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n TextBox.fn.rotate.call(this);\n }\n\n return this.box;\n },\n\n rotationTransform: function() {\n var options = this.options;\n var rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return TextBox.fn.rotationTransform.call(this);\n }\n\n var rotationMatrix = geometryTransform().rotate(rotation).matrix();\n var box = this.normalBox.toRect();\n var rect = this.targetBox.toRect();\n\n var rotationOrigin = options.rotationOrigin || TOP;\n var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n var topLeft = box.topLeft().transformCopy(rotationMatrix);\n var topRight = box.topRight().transformCopy(rotationMatrix);\n var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n var rotatedBox = Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n var translate = {};\n translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n var alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geometryTransform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n });\n\n setDefaultOptions(AxisLabel, {\n _autoReflow: false\n });\n\n var DEFAULT_ICON_SIZE = 7;\n var DEFAULT_LABEL_COLOR = \"#fff\";\n\n var Note = BoxElement.extend({\n init: function(fields, options, chartService) {\n BoxElement.fn.init.call(this, options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n },\n\n hide: function() {\n this.options.visible = false;\n },\n\n show: function() {\n this.options.visible = true;\n },\n\n render: function() {\n var this$1$1 = this;\n\n var options = this.options;\n\n if (options.visible) {\n var label = options.label;\n var icon = options.icon;\n var box = new Box();\n var childAlias = function () { return this$1$1; };\n var size = icon.size;\n var text = this.fields.text;\n var width, height;\n\n if (defined(label) && label.visible) {\n var noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n var marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n },\n\n reflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var marker = ref.marker;\n var wrapperBox = ref.wrapperBox;\n var center = targetBox.center();\n var length = options.line.length;\n var position = options.position;\n\n // TODO: Review\n if (options.visible) {\n var lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n },\n\n createVisual: function() {\n BoxElement.fn.createVisual.call(this);\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual($.extend(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n createLine: function() {\n var options = this.options.line;\n\n if (this.linePoints) {\n var path = Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n },\n\n click: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n },\n\n over: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n },\n\n out: function(widget, e) {\n var args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n },\n\n eventArgs: function(e) {\n var options = this.options;\n\n return $.extend(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n });\n\n setDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n });\n\n var defaultImplementation = {\n format: function (format, value) { return value; },\n\n toString: function (value) { return value; },\n\n parseDate: function (value) { return new Date(value); },\n\n firstDay: function () { return 0; }\n };\n\n var current$1 = defaultImplementation;\n\n var IntlService = Class.extend({\n\n });\n\n IntlService.register = function(userImplementation) {\n current$1 = userImplementation;\n };\n\n if (Object.defineProperties) {\n Object.defineProperties(IntlService, {\n implementation: {\n get: function() {\n return current$1;\n }\n }\n });\n }\n\n var FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\n var FormatService = Class.extend({\n init: function(intlService) {\n this._intlService = intlService;\n },\n\n auto: function(formatString) {\n var arguments$1 = arguments;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) { values[ len ] = arguments$1[ len + 1 ]; }\n\n var intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format.apply(intl, [ formatString ].concat( values ));\n }\n\n return intl.toString(values[0], formatString);\n },\n\n localeAuto: function(formatString, values, locale) {\n var intl = this.intl;\n var result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(FormatService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n }\n }\n });\n }\n\n var ChartService = Class.extend({\n init: function(chart, context) {\n if (context === void 0) { context = {}; }\n\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n },\n\n notify: function(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n },\n\n isPannable: function(axis) {\n var pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(ChartService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n }\n });\n }\n\n var current$2;\n\n var DomEventsBuilder = Class.extend({\n\n });\n\n DomEventsBuilder.register = function(userImplementation) {\n current$2 = userImplementation;\n };\n\n DomEventsBuilder.create = function(element, events) {\n if (current$2) {\n return current$2.create(element, events);\n }\n };\n\n var services = {\n \tChartService: ChartService,\n \tDomEventsBuilder: DomEventsBuilder,\n \tFormatService: FormatService,\n \tIntlService: IntlService,\n \tTemplateService: TemplateService\n };\n\n function createAxisTick(options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n\n var tick = new Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n }\n\n function createAxisGridLine(options, gridLine) {\n var lineStart = options.lineStart;\n var lineEnd = options.lineEnd;\n var position = options.position;\n\n var line = new Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n }\n\n var Axis = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = new ChartService(); }\n\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n },\n\n initFields: function() {\n },\n\n labelsRange: function() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n },\n\n normalizeLabelRotation: function(labelOptions) {\n var rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n },\n\n createLabels: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var align = options.vertical ? RIGHT : CENTER;\n var labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n var step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n var range = this.labelsRange();\n for (var idx = range.min; idx < range.max; idx += step) {\n var labelContext = { index: idx, count: range.max };\n var label = this$1$1.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this$1$1.append(label);\n this$1$1.labels.push(label);\n }\n }\n }\n },\n\n clearLabels: function() {\n this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n this.labels = [];\n },\n\n clearTitle: function() {\n var this$1$1 = this;\n\n if (this.title) {\n this.children = grep(this.children, function (child) { return child !== this$1$1.title; });\n this.title = undefined;\n }\n },\n\n clear: function() {\n this.clearLabels();\n this.clearTitle();\n },\n\n lineBox: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var axisX = mirror ? box.x1 : box.x2;\n var axisY = mirror ? box.y2 : box.y1;\n var lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n },\n\n createTitle: function() {\n var options = this.options;\n var titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n var title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n },\n\n createNotes: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var notes = options.notes;\n var items = notes.data || [];\n\n this.notes = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = deepExtend({}, notes, items[i]);\n item.value = this$1$1.parseNoteValue(item.value);\n\n var note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this$1$1.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this$1$1.append(note);\n this$1$1.notes.push(note);\n }\n }\n },\n\n parseNoteValue: function(value) {\n return value;\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n this.createPlotBands();\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.createBackground();\n this.createLine();\n },\n\n gridLinesVisual: function() {\n var gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var lineBox = this.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (var i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n },\n\n createLine: function() {\n var options = this.options;\n var line = options.line;\n var lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n var path = new Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n var group = this._lineGroup = new Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n },\n\n getActualTickSize: function() {\n var options = this.options;\n var tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n },\n\n createBackground: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var background = options.background;\n\n if (background) {\n this._backgroundPath = Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var plotBands = options.plotBands || [];\n var vertical = options.vertical;\n var plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1$1.options.vertical; })[0];\n\n for (var idx = 0; idx < plotBands.length; idx++) {\n var item = plotBands[idx];\n var slotX = (void 0), slotY = (void 0);\n var labelOptions = item.label;\n var label = (void 0);\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this$1$1.getSlot(item.from, item.to, true);\n } else {\n slotX = this$1$1.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this$1$1.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n var bandRect = new Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n var path = Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n },\n\n createPlotBandLabel: function(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n var text = label.text;\n var textbox;\n\n if (defined(label) && label.visible) {\n var labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var minorUnit = options.minorUnit;\n var vertical = options.vertical;\n var axisLineVisible = altAxis.options.line.visible;\n var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n var lineBox = altAxis.lineBox();\n var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (var i = gridLine.skip; i < count; i += step) {\n var pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var title = ref.title;\n var vertical = options.vertical;\n var count = labels.length;\n var sizeFn = vertical ? WIDTH : HEIGHT;\n var titleSize = title ? title.box[sizeFn]() : 0;\n var space = this.getActualTickSize() + options.margin + titleSize;\n var rootBox = (this.getRoot() || {}).box || box;\n var boxSize = rootBox[sizeFn]();\n var maxLabelSize = 0;\n\n for (var i = 0; i < count; i++) {\n var labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n },\n\n getLabelsTickPositions: function() {\n return this.getMajorTickPositions();\n },\n\n labelTickIndex: function(label) {\n return label.index;\n },\n\n arrangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var tickPositions = this.getLabelsTickPositions();\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var labelSize = vertical ? label.box.height() : label.box.width();\n var firstTickPosition = tickPositions[tickIx];\n var nextTickPosition = tickPositions[tickIx + 1];\n var positionStart = (void 0), positionEnd = (void 0);\n\n if (vertical) {\n if (labelsBetweenTicks) {\n var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this$1$1.positionLabel(label, mirror, positionStart, positionEnd);\n }\n },\n\n positionLabel: function(label, mirror, positionStart, positionEnd) {\n if (positionEnd === void 0) { positionEnd = positionStart; }\n\n var options = this.options;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var labelOffset = this.getActualTickSize() + options.margin;\n var labelBox;\n\n if (vertical) {\n var labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n var labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n },\n\n autoRotateLabelAngle: function(labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n },\n\n autoRotateLabels: function() {\n var this$1$1 = this;\n\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n var tickPositions = this.getMajorTickPositions();\n var labels = this.labels;\n var limit = Math.min(labels.length, tickPositions.length - 1);\n var angle = 0;\n\n for (var idx = 0; idx < limit; idx++) {\n var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n var labelBox = labels[idx].box;\n var labelAngle = this$1$1.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n labels[idx$1].options.rotation = angle;\n labels[idx$1].reflow(new Box());\n }\n\n return true;\n }\n },\n\n arrangeTitle: function() {\n var ref = this;\n var options = ref.options;\n var title = ref.title;\n var mirror = options.labels.mirror;\n var vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n },\n\n arrangeNotes: function() {\n var this$1$1 = this;\n\n for (var idx = 0; idx < this.notes.length; idx++) {\n var item = this$1$1.notes[idx];\n var value = item.options.value;\n var slot = (void 0);\n\n if (defined(value)) {\n if (this$1$1.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this$1$1.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this$1$1.lineBox());\n }\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n alignTo: function(secondAxis) {\n var lineBox = secondAxis.lineBox();\n var vertical = this.options.vertical;\n var pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n },\n\n axisLabelText: function(value, options, context) {\n var this$1$1 = this;\n\n var text;\n var tmpl = getTemplate(options);\n var defaultText = function () {\n if (!options.format) {\n return value;\n }\n\n return this$1$1.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n var templateContext = $.extend({}, context, {\n get text() { return defaultText(); },\n value: value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n },\n\n slot: function(from , to, limit) {\n var slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n contentBox: function() {\n var box = this.box.clone();\n var labels = this.labels;\n if (labels.length) {\n var axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n var offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n var lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n },\n\n maxLabelOffset: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var tickPositions = this.getLabelsTickPositions();\n var offsetField = vertical ? Y : X;\n var labels = this.labels;\n var startPosition = reverse ? 1 : 0;\n var endPosition = reverse ? 0 : 1;\n var maxStartOffset = 0;\n var maxEndOffset = 0;\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var startTick = (void 0), endTick = (void 0);\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n },\n\n limitRange: function(from, to, min, max, offset) {\n var options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n var rangeSize = to - from;\n var minValue = from;\n var maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n },\n\n valueRange: function() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n },\n\n lineDir: function() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n },\n\n lineInfo: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = this.lineDir();\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n pointOffset: function(point) {\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n var offset = relative / lineSize;\n\n return offset;\n },\n\n scaleToDelta: function(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n var MAX_SCALE = 0.999;\n var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n var delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n },\n\n labelsBetweenTicks: function() {\n return !this.options.justified;\n },\n\n prepareUserOptions: function() {\n }\n });\n\n setDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n });\n\n var MILLISECONDS = \"milliseconds\";\n var SECONDS = \"seconds\";\n var MINUTES = \"minutes\";\n var HOURS = \"hours\";\n var DAYS = \"days\";\n var WEEKS = \"weeks\";\n var MONTHS = \"months\";\n var YEARS = \"years\";\n\n var TIME_PER_MILLISECOND = 1;\n var TIME_PER_SECOND = 1000;\n var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\n var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\n var TIME_PER_DAY = 24 * TIME_PER_HOUR;\n var TIME_PER_WEEK = 7 * TIME_PER_DAY;\n var TIME_PER_MONTH = 31 * TIME_PER_DAY;\n var TIME_PER_YEAR = 365 * TIME_PER_DAY;\n var TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n };\n\n function absoluteDateDiff(a, b) {\n var diff = a.getTime() - b;\n var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n }\n\n function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n }\n\n function toDate(value) {\n var result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n }\n\n function startOfWeek(date, weekStartDay) {\n if (weekStartDay === void 0) { weekStartDay = 0; }\n\n var daysToSubtract = 0;\n var day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n }\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function addHours(date, hours) {\n var roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n }\n\n function addDuration(dateValue, value, unit, weekStartDay) {\n var result = dateValue;\n\n if (dateValue) {\n var date = toDate(dateValue);\n var hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n }\n\n function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n }\n\n function ceilDate(dateValue, unit, weekStartDay) {\n var date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n }\n\n function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n }\n\n function dateDiff(a, b) {\n return a.getTime() - b;\n }\n\n function toTime(value) {\n if (isArray(value)) {\n var result = [];\n for (var idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n }\n\n function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n }\n\n function timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n function dateIndex(value, start, baseUnit, baseUnitStep) {\n var date = toDate(value);\n var startDate = toDate(start);\n var index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n }\n\n function duration(a, b, unit) {\n var diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n }\n\n function lteDateIndex(date, sortedDates) {\n var low = 0;\n var high = sortedDates.length - 1;\n var index;\n\n while (low <= high) {\n index = Math.floor((low + high) / 2);\n var currentDate = sortedDates[index];\n\n if (currentDate < date) {\n low = index + 1;\n continue;\n }\n\n if (currentDate > date) {\n high = index - 1;\n continue;\n }\n\n while (dateEquals(sortedDates[index - 1], date)) {\n index--;\n }\n\n return index;\n }\n\n if (sortedDates[index] <= date) {\n return index;\n }\n\n return index - 1;\n }\n\n function parseDate(intlService, date) {\n var result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n }\n\n function parseDates(intlService, dates) {\n if (isArray(dates)) {\n var result = [];\n for (var idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n }\n\n function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n }\n\n var MIN_CATEGORY_POINTS_RANGE = 0.01;\n var MIN_CATEGORY_RANGE = 0.1;\n\n function indexOf(value, arr) {\n if (value instanceof Date) {\n var length = arr.length;\n for (var idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n }\n\n var CategoryAxis = Axis.extend({\n initFields: function() {\n this._ticks = {};\n },\n\n categoriesHash: function() {\n return \"\";\n },\n\n clone: function() {\n var copy = new CategoryAxis($.extend({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n initUserOptions: function(options) {\n var categories = options.categories || [];\n var definedMin = defined(options.min);\n var definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n var min = definedMin ? Math.floor(options.min) : 0;\n var max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n },\n\n rangeIndices: function() {\n var options = this.options;\n var length = options.categories.length || 1;\n var min = isNumber(options.min) ? options.min % 1 : 0;\n var max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n totalRangeIndices: function(limit) {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (limit) {\n var totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n range: function() {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n },\n\n roundedRange: function() {\n return this.range();\n },\n\n totalRange: function() {\n var options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n },\n\n scaleOptions: function() {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var lineBox = this.lineBox();\n var size = this.options.vertical ? lineBox.height() : lineBox.width();\n var scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n },\n\n arrangeLabels: function() {\n Axis.fn.arrangeLabels.call(this);\n this.hideOutOfRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n var ref = this;\n var box = ref.box;\n var labels = ref.labels;\n\n if (labels.length > 0) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n var firstLabel = labels[0];\n var lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n },\n\n getMajorTickPositions: function() {\n return this.getTicks().majorTicks;\n },\n\n getMinorTickPositions: function() {\n return this.getTicks().minorTicks;\n },\n\n getLabelsTickPositions: function() {\n return this.getTicks().labelTicks;\n },\n\n tickIndices: function(stepSize) {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var limit = Math.ceil(max);\n var current = Math.floor(min);\n var indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n },\n\n getTickPositions: function(stepSize) {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n var indices = this.tickIndices(stepSize);\n var positions = [];\n\n for (var idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n },\n\n getTicks: function() {\n var options = this.options;\n var cache = this._ticks;\n var range = this.rangeIndices();\n var lineBox = this.lineBox();\n var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n },\n\n filterOutOfRangePositions: function(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n var axis = this.options.vertical ? Y : X;\n var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n var end = positions.length - 1;\n var startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n var endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n },\n\n lineInfo: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = reverse ? -1 : 1;\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n lineDir: function() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var reverse = ref.reverse;\n return reverse ? -1 : 1;\n },\n\n getSlot: function(from, to, limit) {\n var options = this.options;\n var reverse = options.reverse;\n var justified = options.justified;\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var box = ref.box;\n var min = ref.min;\n var ref$1 = this.lineInfo();\n var valueAxis = ref$1.axis;\n var lineStart = ref$1.lineStart;\n\n var slotBox = box.clone();\n var singleSlot = !defined(to);\n\n var start = valueOrDefault(from, 0);\n var end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n var p1 = lineStart + (start - min) * scale;\n var p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n },\n\n limitSlot: function(slot) {\n var vertical = this.options.vertical;\n var valueAxis = vertical ? Y : X;\n var lineBox = this.lineBox();\n var limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n },\n\n slot: function(from, to, limit) {\n var min = Math.floor(this.options.min || 0);\n var start = from;\n var end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return Axis.fn.slot.call(this, start, end, limit);\n },\n\n pointCategoryIndex: function(point) {\n var ref = this.options;\n var reverse = ref.reverse;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var max = ref$1.max;\n var startValue = reverse ? max : min;\n var lineStart = box[valueAxis + 1];\n var lineEnd = box[valueAxis + 2];\n var pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n var value = startValue + (pos - lineStart) / scale;\n var diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n },\n\n getCategory: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n },\n\n categoryIndex: function(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n },\n\n categoryAt: function(index, total) {\n var options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n },\n\n categoriesCount: function() {\n return (this.options.categories || []).length;\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var range = options.categories.length;\n var scale = size / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var rangeIndices = this.totalRangeIndices();\n var range = rangeIndices.max - rangeIndices.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = rangeIndices.min + minDelta;\n var max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var ref = this.totalRange();\n var totalMin = ref.min;\n var totalMax = ref.max;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n },\n\n labelsCount: function() {\n var labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n },\n\n labelsRange: function() {\n var options = this.options;\n var justified = options.justified;\n var labelOptions = options.labels;\n var ref = this.totalRangeIndices(true);\n var min = ref.min;\n var max = ref.max;\n var start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n var skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var dataItem = options.dataItems ? options.dataItems[index] : null;\n var category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n var text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.totalRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n },\n\n noteSlot: function(value) {\n var options = this.options;\n var index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n },\n\n arrangeNotes: function() {\n Axis.fn.arrangeNotes.call(this);\n this.hideOutOfRangeNotes();\n },\n\n hideOutOfRangeNotes: function() {\n var ref = this;\n var notes = ref.notes;\n var box = ref.box;\n if (notes && notes.length) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n\n for (var idx = 0; idx < notes.length; idx++) {\n var note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n },\n\n pan: function(delta) {\n var range = this.totalRangeIndices(true);\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n var totalRange = this.totalRange();\n var min = range.min + offset;\n var max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n },\n\n pointsRange: function(start, end) {\n var ref = this.options;\n var reverse = ref.reverse;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var range = this.totalRangeIndices(true);\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n var diffStart = start[valueAxis] - lineStart;\n var diffEnd = end[valueAxis] - lineStart;\n\n var min = range.min + diffStart / scale;\n var max = range.min + diffEnd / scale;\n var rangeMin = Math.min(min, max);\n var rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n },\n\n valueRange: function() {\n return this.range();\n },\n\n totalIndex: function(value) {\n var options = this.options;\n var index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n },\n\n currentRangeIndices: function() {\n var options = this.options;\n var min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n var max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n mapCategories: function() {\n if (!this._categoriesMap) {\n var map$$1 = this._categoriesMap = new HashMap();\n var srcCategories = this.options.srcCategories;\n for (var idx = 0; idx < srcCategories.length; idx++) {\n map$$1.set(srcCategories[idx], idx);\n }\n }\n },\n\n totalCount: function() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n });\n\n setDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n });\n\n var COORDINATE_LIMIT = 300000;\n\n var DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n };\n\n var ZERO_THRESHOLD = 0.2;\n\n var AUTO = \"auto\";\n var BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n ];\n var FIT = \"fit\";\n\n function categoryRange(categories) {\n var range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n }\n\n var EmptyDateRange = Class.extend({\n init: function(options) {\n this.options = options;\n },\n\n displayIndices: function() {\n return {\n min: 0,\n max: 1\n };\n },\n\n displayRange: function() {\n return {};\n },\n\n total: function() {\n return {};\n },\n\n valueRange: function() {\n return {};\n },\n\n valueIndex: function() {\n return -1;\n },\n\n values: function() {\n return [];\n },\n\n totalIndex: function() {\n return -1;\n },\n\n valuesCount: function() {\n return 0;\n },\n\n totalCount: function() {\n return 0;\n },\n\n dateAt: function() {\n return null;\n }\n });\n\n var DateRange = Class.extend({\n init: function(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n var roundToBaseUnit = options.roundToBaseUnit;\n var justified = options.justified;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n var lowerEnd = this.roundToTotalStep(end);\n var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n var min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n var max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n var next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n },\n\n displayRange: function() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n },\n\n displayIndices: function() {\n if (!this._indices) {\n var options = this.options;\n\n var baseUnit = options.baseUnit;\n var baseUnitStep = options.baseUnitStep;\n\n var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n },\n\n total: function() {\n return {\n min: this.start,\n max: this.end\n };\n },\n\n totalCount: function() {\n var last$$1 = this.totalIndex(this.end);\n\n return last$$1 + (this.options.justified ? 1 : 0);\n },\n\n valueRange: function() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n },\n\n valueIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n },\n\n totalIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n },\n\n dateIndex: function(value) {\n var options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n },\n\n valuesCount: function() {\n var maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n },\n\n values: function() {\n var values = this._values;\n if (!values) {\n var options = this.options;\n var range = this.valueRange();\n this._values = values = [];\n\n for (var date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n },\n\n dateAt: function(index, total) {\n var options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n },\n\n roundToTotalStep: function(value, upper, next) {\n var ref = this.options;\n var baseUnit = ref.baseUnit;\n var baseUnitStep = ref.baseUnitStep;\n var weekStartDay = ref.weekStartDay;\n var start = this.start;\n\n var step = dateIndex(value, start, baseUnit, baseUnitStep);\n var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n }\n });\n\n function autoBaseUnit(options, startUnit, startStep) {\n var categoryLimits = categoryRange(options.categories);\n var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n var autoUnit = options.baseUnit === FIT;\n var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n var units = span / TIME_PER_UNIT[baseUnit];\n var totalUnits = units;\n var unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n }\n\n function defaultBaseUnit(options) {\n var categories = options.categories;\n var count = defined(categories) ? categories.length : 0;\n var minDiff = MAX_VALUE;\n var lastCategory, unit;\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n var category = categories[categoryIx];\n\n if (category && lastCategory) {\n var diff = absoluteDateDiff(category, lastCategory);\n if (diff > 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n }\n\n function initUnit(options) {\n var baseUnit = (options.baseUnit || \"\").toLowerCase();\n var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n }\n\n var DateCategoryAxis = CategoryAxis.extend({\n clone: function() {\n var copy = new DateCategoryAxis($.extend({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n categoriesHash: function() {\n var start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n initFields: function() {\n CategoryAxis.fn.initFields.call(this);\n\n var chartService = this.chartService;\n var intlService = chartService.intl;\n var options = this.options;\n\n var categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n var range = categoryRange(categories);\n var maxDivisions = options.maxDivisions;\n\n this.dataRange = new DateRange(range.min, range.max, initUnit(options));\n\n if (maxDivisions) {\n var dataRange = this.dataRange.displayRange();\n\n var divisionOptions = $.extend({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n var dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n },\n\n tickIndices: function(stepSize) {\n var ref = this;\n var dataRange = ref.dataRange;\n var divisionRange = ref.divisionRange;\n var valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return CategoryAxis.fn.tickIndices.call(this, stepSize);\n }\n\n var indices = [];\n var values = divisionRange.values();\n var offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (var idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n var last$$1 = indices.length - 1;\n indices.splice(idx, 0, indices[last$$1 - 1] + (indices[last$$1] - indices[last$$1 - 1]) * stepSize);\n }\n }\n\n return indices;\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n var categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n },\n\n parseNoteValue: function(value) {\n return parseDate(this.chartService.intl, value);\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var baseUnit = options.baseUnit;\n var weekStartDay = options.weekStartDay;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / (range.max - range.min);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n var from = addTicks(options.min || range.min, offset);\n var to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n },\n\n labelsRange: function() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n },\n\n pan: function(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var ref = this.dataRange.displayRange();\n var min = ref.min;\n var max = ref.max;\n var totalLimits = this.dataRange.total();\n var scale = size / (max - min);\n var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n var from = addTicks(min, offset);\n var to = addTicks(max, offset);\n\n var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n },\n\n pointsRange: function(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n var pointsRange = CategoryAxis.fn.pointsRange.call(this, start, end);\n var datesRange = this.dataRange.displayRange();\n var indicesRange = this.dataRange.displayIndices();\n var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n var options = this.options;\n\n var min = addTicks(datesRange.min, pointsRange.min * scale);\n var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n },\n\n scaleRange: function(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n var options = this.options;\n var fit = options.userSetBaseUnit === FIT;\n var totalLimits = this.dataRange.total();\n var ref = this.dataRange.displayRange();\n var rangeMin = ref.min;\n var rangeMax = ref.max;\n\n var position = Math.abs(this.pointOffset(cursor));\n var range = rangeMax - rangeMin;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = Math.round(position * delta);\n var maxDelta = Math.round((1 - position) * delta);\n\n var ref$1 = this.dataRange.options;\n var baseUnit = ref$1.baseUnit;\n var min = new Date(rangeMin.getTime() + minDelta);\n var max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n\n var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n var rangeDiff = dateDiff(rangeMax, rangeMin);\n var diff = dateDiff(max, min);\n var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n var autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n var stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n },\n\n zoomRange: function(scale, cursor) {\n var totalLimits = this.dataRange.total();\n var range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n },\n\n range: function() {\n return this.dataRange.displayRange();\n },\n\n createLabels: function() {\n CategoryAxis.fn.createLabels.call(this);\n this.createRangeLabels();\n },\n\n clearLabels: function() {\n CategoryAxis.fn.clearLabels.call(this);\n this.rangeLabels = [];\n },\n\n arrangeLabels: function() {\n this.arrangeRangeLabels();\n CategoryAxis.fn.arrangeLabels.call(this);\n },\n\n arrangeRangeLabels: function() {\n var ref = this;\n var options = ref.options;\n var rangeLabels = ref.rangeLabels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n var firstLabel = rangeLabels[0];\n if (firstLabel) {\n var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n var lastLabel = rangeLabels[1];\n if (lastLabel) {\n var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position$1);\n }\n },\n\n autoRotateLabels: function() {\n CategoryAxis.fn.autoRotateLabels.call(this);\n this.autoRotateRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n CategoryAxis.fn.hideOutOfRangeLabels.call(this);\n this.hideOverlappingLabels();\n },\n\n hideOverlappingLabels: function() {\n var ref = this;\n var rangeLabels = ref.rangeLabels;\n var labels = ref.labels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n var firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (var i = 0; i < labels.length; i++) {\n var overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n var lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n if (!overlaps$1) {\n break;\n }\n }\n }\n },\n\n contentBox: function() {\n var box = CategoryAxis.fn.contentBox.call(this);\n var rangeLabels = this.rangeLabels;\n\n for (var i = 0; i < rangeLabels.length; i++) {\n var label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n if (labelContext === void 0) { labelContext = {}; }\n\n var options = this.options;\n var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n var date = this.divisionRange.dateAt(index);\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n },\n\n createRangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this.divisionRange;\n var displayStart = ref.displayStart;\n var displayEnd = ref.displayEnd;\n var options = this.options;\n var labelOptions = $.extend({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var createLabel = function (index, date, text) {\n if (text) {\n var label = new AxisLabel(date, text, index, null, labelOptions);\n this$1$1.append(label);\n this$1$1.rangeLabels.push(label);\n }\n };\n\n var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n },\n\n autoRotateRangeLabels: function() {\n var this$1$1 = this;\n\n var labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n var rotateLabel = function (label, tickPositions, index) {\n var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n var angle = this$1$1.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n var tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n },\n\n categoryIndex: function(value) {\n return this.dataRange.valueIndex(value);\n },\n\n slot: function(from, to, limit) {\n var dateRange = this.dataRange;\n var start = from;\n var end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n var slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n getSlot: function(a, b, limit) {\n var start = a;\n var end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return CategoryAxis.fn.getSlot.call(this, start, end, limit);\n },\n\n valueRange: function() {\n var options = this.options;\n var range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n },\n\n categoryAt: function(index, total) {\n return this.dataRange.dateAt(index, total);\n },\n\n categoriesCount: function() {\n return this.dataRange.valuesCount();\n },\n\n rangeIndices: function() {\n return this.dataRange.displayIndices();\n },\n\n labelsBetweenTicks: function() {\n return !this.divisionRange.options.justified;\n },\n\n prepareUserOptions: function() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n },\n\n getCategory: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n },\n\n totalIndex: function(value) {\n return this.dataRange.totalIndex(value);\n },\n\n currentRangeIndices: function() {\n var range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n },\n\n totalRange: function() {\n return this.dataRange.total();\n },\n\n totalCount: function() {\n return this.dataRange.totalCount();\n },\n\n isEmpty: function() {\n return !this.options.srcCategories.length;\n },\n\n roundedRange: function() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n var options = this.options;\n var datesRange = categoryRange(options.srcCategories);\n\n var dateRange = new DateRange(datesRange.min, datesRange.max, $.extend({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: false\n }));\n\n return dateRange.displayRange();\n }\n });\n\n setDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n });\n\n function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n var axisMin;\n\n if (min >= 0 && max >= 0) {\n var minValue = min === max ? 0 : min;\n\n var diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n }\n\n function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n var axisMax;\n\n if (min <= 0 && max <= 0) {\n var maxValue = min === max ? 0 : max;\n\n var diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n }\n\n function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n }\n\n function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n }\n\n function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n }\n\n var MIN_VALUE_RANGE$1 = Math.pow(10, -DEFAULT_PRECISION + 1);\n\n var NumericAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n Axis.fn.init.call(this, $.extend({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n },\n\n initUserOptions: function(options) {\n var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n },\n\n initFields: function() {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n },\n\n clone: function() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return 0;\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n var options = this.options;\n var range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n },\n\n getTickPositions: function(unit, skipUnit) {\n var options = this.options;\n var ref = this.lineInfo();\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var range = options.max - options.min;\n var scale = lineSize / range;\n var step = unit * scale;\n var divisions = this.getDivisions(unit);\n var positions = [];\n var pos = lineBox[axisOrigin];\n var skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (var idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n },\n\n getMajorTickPositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(a, b, limit) {\n if (limit === void 0) { limit = false; }\n\n var options = this.options;\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var lineStart = ref.lineStart;\n var step = axisDir * (lineSize / (options.max - options.min));\n\n var start = valueOrDefault(a, b || 0);\n var end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n var p1 = Math.min(start, end) - options.min;\n var p2 = Math.max(start, end) - options.min;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n },\n\n getValue: function(point) {\n var options = this.options;\n var max = Number(options.max);\n var min = Number(options.min);\n var offset = this.pointOffset(point);\n var valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n var value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var vertical = options.vertical;\n var reverse = options.reverse;\n var max = options.max;\n var min = options.min;\n var ref = this.lineInfo();\n var lineSize = ref.lineSize;\n var range = max - min;\n var scale = lineSize / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n },\n\n labelsCount: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE$1) {\n max = min + MIN_VALUE_RANGE$1;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n },\n\n isValidRange: function(min, max) {\n return max - min > MIN_VALUE_RANGE$1;\n }\n });\n\n function autoAxisOptions(seriesMin, seriesMax, options) {\n var narrowRange = options.narrowRange;\n\n var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n var majorUnit = autoMajorUnit(autoMin, autoMax);\n var autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n }\n\n function totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n }\n\n function clearNullValues(options, fields) {\n for (var idx = 0; idx < fields.length; idx++) {\n var field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n }\n\n function axisOptions(autoOptions, userOptions) {\n var options = userOptions;\n var userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n var userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n var result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n }\n\n function remainderClose(value, divisor, ratio) {\n var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n var threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n }\n\n setDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n });\n\n var MIN_VALUE_RANGE = 1000;\n\n var DateValueAxis = Axis.extend({\n init: function(seriesMin, seriesMax, axisOptions, chartService) {\n var min = toDate(seriesMin);\n var max = toDate(seriesMax);\n\n var intlService = chartService.intl;\n var options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n Axis.fn.init.call(this, options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n var weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n },\n\n clone: function() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, $.extend({}, this.options), this.chartService);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n var options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n },\n\n getTickPositions: function(step) {\n var options = this.options;\n var ref = this.lineInfo();\n var dir = ref.axisDir;\n var lineSize = ref.lineSize;\n var start = ref.lineStart;\n var divisions = this.getDivisions(step);\n var timeRange = dateDiff(options.max, options.min);\n var scale = lineSize / timeRange;\n var weekStartDay = options.weekStartDay || 0;\n\n var positions = [ start ];\n for (var i = 1; i < divisions; i++) {\n var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n var pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n },\n\n getMajorTickPositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n },\n\n getValue: function(point) {\n var value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n },\n\n labelsCount: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var offset = index * options.majorUnit;\n var weekStartDay = options.weekStartDay || 0;\n var date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n var unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var reverse = options.reverse;\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / dateDiff(range.max, range.min);\n\n var offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n var from = addTicks(options.min, offset);\n var to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta, true);\n var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = toDate(toTime(this.options.min) + minDelta);\n var max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min: min,\n max: max\n };\n }\n });\n\n function timeUnits(delta) {\n var unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n }\n\n function applyDefaults(seriesMin, seriesMax, options) {\n var min = options.min || seriesMin;\n var max = options.max || seriesMax;\n var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n var baseUnitTime = TIME_PER_UNIT[baseUnit];\n var weekStartDay = options.weekStartDay || 0;\n var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n var majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n var actualUnits = duration(autoMin, autoMax, baseUnit);\n var totalUnits = ceil(actualUnits, majorUnit);\n var unitsToAdd = totalUnits - actualUnits;\n var head = Math.floor(unitsToAdd / 2);\n var tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n }\n\n setDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n });\n\n var DEFAULT_MAJOR_UNIT = 10;\n var MIN_VALUE_RANGE$2 = 1e-6;\n\n var LogarithmicAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n\n var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n var base = axisOptions.majorUnit;\n var autoMax = autoAxisMax$1(seriesMax, base);\n var autoMin = autoAxisMin$1(seriesMin, seriesMax, axisOptions);\n var range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n Axis.fn.init.call(this, axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n },\n\n clone: function() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return this.options.min;\n },\n\n getSlot: function(a, b, limit) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var min = options.min;\n var max = options.max;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineBox = ref$1.lineBox;\n var lineSize = ref$1.lineSize;\n var lineStart = ref$1.lineStart;\n var step = axisDir * (lineSize / (logMax - logMin));\n var start = valueOrDefault(a, b || 1);\n var end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n var p1 = Math.min(start, end) - logMin;\n var p2 = Math.max(start, end) - logMin;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n },\n\n getValue: function(point) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineStart = ref$1.lineStart;\n var lineSize = ref$1.lineSize;\n var step = ((logMax - logMin) / lineSize);\n var offset = axisDir * (point[axis] - lineStart);\n var valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n var value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n translateRange: function(delta) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var reverse = options.reverse;\n var vertical = options.vertical;\n var base = options.majorUnit;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var scale = size / (logMax - logMin);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n },\n\n labelsCount: function() {\n var floorMax = Math.floor(this.logMax);\n var count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n },\n\n getMajorTickPositions: function() {\n var ticks = [];\n\n this.traverseMajorTicksPositions(function (position) {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var majorTicks = options.majorTicks;\n var minorTicks = options.minorTicks;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var lineBox = this.lineBox();\n var ticks = [];\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var vertical = options.vertical;\n var lineBox = altAxis.lineBox();\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n },\n\n traverseMajorTicksPositions: function(callback, tickOptions) {\n var ref = this.lineInfo();\n var lineStart = ref.lineStart;\n var step = ref.step;\n var ref$1 = this;\n var logMin = ref$1.logMin;\n var logMax = ref$1.logMax;\n\n for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n },\n\n traverseMinorTicksPositions: function(callback, tickOptions) {\n var this$1$1 = this;\n\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var ref$1 = this.lineInfo();\n var lineStart = ref$1.lineStart;\n var step = ref$1.step;\n var ref$2 = this;\n var logMin = ref$2.logMin;\n var logMax = ref$2.logMax;\n var start = Math.floor(logMin);\n\n for (var power = start; power < logMax; power++) {\n var minorOptions = this$1$1._minorIntervalOptions(power);\n for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n var value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var power = Math.ceil(this.logMin + index);\n var value = Math.pow(this.options.majorUnit, power);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n },\n\n scaleRange: function(scale, cursor) {\n var ref = this.options;\n var base = ref.majorUnit;\n var logMin = log(this.options.min, base);\n var logMax = log(this.options.max, base);\n var position = Math.abs(this.pointOffset(cursor));\n var range = logMax - logMin;\n var delta = this.scaleToDelta(scale, range);\n var min = Math.pow(base, logMin + position * delta);\n var max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE$2) {\n max = min + MIN_VALUE_RANGE$2;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n },\n\n _minorIntervalOptions: function(power) {\n var ref = this.options;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var value = Math.pow(base, power);\n var nextValue = Math.pow(base, power + 1);\n var difference = nextValue - value;\n var minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n },\n\n lineInfo: function() {\n var info = Axis.fn.lineInfo.call(this);\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n });\n\n function initRange(autoMin, autoMax, axisOptions, options) {\n var min = axisOptions.min;\n var max = axisOptions.max;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n function autoAxisMin$1(min, max, options) {\n var base = options.majorUnit;\n var autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n }\n\n function autoAxisMax$1(max, base) {\n var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n var autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n }\n\n function throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n }\n\n function log(x, base) {\n return Math.log(x) / Math.log(base);\n }\n\n setDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n });\n\n var GridLinesMixin = {\n createGridLines: function(altAxis) {\n var options = this.options;\n var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n var gridLines = [];\n var skipMajor = false;\n var majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n var center = this.box.center();\n var circle = new Circle([ center.x, center.y ], radius);\n var container = this.gridLinesVisual();\n\n for (var i = 0; i < angles.length; i++) {\n var line = new Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n var this$1$1 = this;\n\n var divs = this.intervals(size, skip, step, skipAngles);\n var options = altAxis.options;\n var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, function (d) {\n var alpha = this$1$1.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n };\n\n var RadarCategoryAxis = CategoryAxis.extend({\n range: function() {\n return { min: 0, max: this.options.categories.length };\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n lineBox: function() {\n return this.box;\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n var measureBox = new Box();\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var options = this.options;\n var categories = options.categories.length;\n var divCount = categories / size || 1;\n var divAngle = 360 / divCount;\n var skip = skipOption || 0;\n var step = stepOption || 1;\n var divs = [];\n var angle = 0;\n\n for (var i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n },\n\n majorIntervals: function() {\n return this.intervals(1);\n },\n\n minorIntervals: function() {\n return this.intervals(0.5);\n },\n\n intervalAngle: function(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n },\n\n majorAngles: function() {\n var this$1$1 = this;\n\n return map(this.majorIntervals(), function (interval) { return this$1$1.intervalAngle(interval); });\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var ref = this.options;\n var minorGridLines = ref.minorGridLines;\n var majorGridLines = ref.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n\n radiusCallback: function(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = rad(360 / (this.options.categories.length * 2));\n var minorRadius = Math.cos(minorAngle) * radius;\n var majorAngles = this.majorAngles();\n\n var radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var plotBands = this.options.plotBands || [];\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var slot = this$1$1.plotBandSlot(band);\n var singleSlot = this$1$1.getSlot(band.from);\n\n var head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n var tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n },\n\n plotBandSlot: function(band) {\n return this.getSlot(band.from, band.to - 1);\n },\n\n getSlot: function(from, to) {\n var options = this.options;\n var justified = options.justified;\n var box = this.box;\n var divs = this.majorAngles();\n var totalDivs = divs.length;\n var slotAngle = 360 / totalDivs;\n var fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n var slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n var slots = toValue - fromValue + 1;\n var angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n },\n\n slot: function(from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n\n return new geometry.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n },\n\n pointCategoryIndex: function(point) {\n var this$1$1 = this;\n\n var length = this.options.categories.length;\n var index = null;\n\n for (var i = 0; i < length; i++) {\n var slot = this$1$1.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n });\n\n setDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n });\n deepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\n var PolarAxis = Axis.extend({\n init: function(options, chartService) {\n Axis.fn.init.call(this, options, chartService);\n\n var instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n },\n\n getDivisions: function(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n\n var measureBox = new Box();\n var divs = this.intervals(options.majorUnit, skip, step);\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n\n lineBox: function() {\n return this.box;\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var min = this.options.min;\n var divisions = this.getDivisions(size);\n var divs = [];\n var skip = skipOption || 0;\n var step = stepOption || 1;\n\n for (var i = skip; i < divisions; i += step) {\n var current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n },\n\n majorIntervals: function() {\n return this.intervals(this.options.majorUnit);\n },\n\n minorIntervals: function() {\n return this.intervals(this.options.minorUnit);\n },\n\n intervalAngle: function(i) {\n return (540 - i - this.options.startAngle) % 360;\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n\n plotBandSlot: function(band) {\n return this.getSlot(band.from, band.to);\n },\n\n getSlot: function(a, b) {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var startAngle = options.startAngle;\n var start = limitValue(a, options.min, options.max);\n var end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n var tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n },\n\n slot: function(from, to) {\n if (to === void 0) { to = from; }\n\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var min = Math.min(from, to);\n var max = Math.max(from, to);\n var startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geometry.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n },\n\n getValue: function(point) {\n var options = this.options;\n var center = this.box.center();\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = Math.round(deg(Math.atan2(dy, dx)));\n var start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n },\n\n valueRange: function() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n });\n\n setDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n });\n\n deepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n });\n\n var RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var type = ref.majorGridLines.type;\n var plotBands = ref.plotBands; if (plotBands === void 0) { plotBands = []; }\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n var slot = this$1$1.getSlot(band.from, band.to, true);\n var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n var shape = (void 0);\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = Path.fromPoints(this$1$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n var innerPoints = [];\n var outerPoints = [];\n var center = [ ring.center.x, ring.center.y ];\n var innerCircle = new Circle(center, ring.innerRadius);\n var outerCircle = new Circle(center, ring.radius);\n\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var majorTicks = this.radarMajorGridLinePositions();\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n var minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip; if (skip === void 0) { skip = 0; }\n var step = options.step; if (step === void 0) { step = 0; }\n var container = this.gridLinesVisual();\n\n for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n var tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new drawing.Circle(circle, style));\n } else {\n var line = new Path(style);\n for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n var lineBox = this.lineBox();\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var radius = point.distanceTo(center);\n var distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n var alpha = angularDistance(theta, majorAngles[0]);\n var gamma = 90 - midAngle;\n var beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n };\n\n function angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n }\n\n var RadarNumericAxis = NumericAxis.extend({\n radarMajorGridLinePositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n radarMinorGridLinePositions: function() {\n var options = this.options;\n var minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n },\n\n axisType: function() {\n return NumericAxis;\n }\n });\n\n deepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\n var RadarLogarithmicAxis = LogarithmicAxis.extend({\n radarMajorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n },\n\n radarMinorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n },\n\n axisType: function() {\n return LogarithmicAxis;\n }\n });\n\n deepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\n var CurveProcessor = Class.extend({\n init: function(closed) {\n\n this.closed = closed;\n },\n\n process: function(dataPoints) {\n var this$1$1 = this;\n\n var points = dataPoints.slice(0);\n var segments = [];\n var closed = this.closed;\n var length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n this$1$1.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = this$1$1.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n this.secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n },\n\n removeDuplicates: function(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n },\n\n invertAxis: function(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = this.lineFunction(p0,p1);\n var y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n },\n\n isLine: function(p0, p1, p2) {\n var fn = this.lineFunction(p0, p1);\n var y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n },\n\n lineFunction: function(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n },\n\n controlPoints: function(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n },\n\n restrictControlPoint: function(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n },\n\n tangent: function(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n },\n\n isMonotonicByField: function(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n },\n\n firstControlPoint: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n },\n\n secondControlPoint: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n },\n\n point: function(xValue, yValue, xField, yField) {\n var controlPoint = new geometry.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n },\n\n calculateFunction: function(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n });\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n dataviz.Gradients = GRADIENTS;\n\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n services: services,\n autoMajorUnit: autoMajorUnit,\n Point: Point,\n Box: Box,\n Ring: Ring,\n Sector: Sector,\n ShapeBuilder: ShapeBuilder,\n ShapeElement: ShapeElement,\n ChartElement: ChartElement,\n BoxElement: BoxElement,\n RootElement: RootElement,\n FloatElement: FloatElement,\n Text: Text,\n TextBox: TextBox,\n Title: Title,\n AxisLabel: AxisLabel,\n Axis: Axis,\n Note: Note,\n CategoryAxis: CategoryAxis,\n DateCategoryAxis: DateCategoryAxis,\n DateValueAxis: DateValueAxis,\n NumericAxis: NumericAxis,\n LogarithmicAxis: LogarithmicAxis,\n PolarAxis: PolarAxis,\n RadarCategoryAxis: RadarCategoryAxis,\n RadarNumericAxis: RadarNumericAxis,\n RadarLogarithmicAxis: RadarLogarithmicAxis,\n CurveProcessor: CurveProcessor,\n rectToBox: rectToBox,\n addClass: addClass,\n removeClass: removeClass,\n alignPathToPixel: alignPathToPixel,\n clockwise: clockwise,\n convertableToNumber: convertableToNumber,\n deepExtend: deepExtend,\n elementStyles: elementStyles,\n getSpacing: getSpacing,\n getTemplate: getTemplate,\n getter: __common_getter_js,\n grep: grep,\n hasClasses: hasClasses,\n HashMap: HashMap,\n inArray: inArray,\n interpolateValue: interpolateValue,\n InstanceObserver: InstanceObserver,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isString: isString,\n map: map,\n mousewheelDelta: mousewheelDelta,\n FontLoader: FontLoader,\n setDefaultOptions: setDefaultOptions,\n sparseArrayLimits: sparseArrayLimits,\n styleValue: styleValue,\n find: find,\n elementScale: elementScale,\n autoTextColor: autoTextColor,\n createHashSet: createHashSet,\n defaultErrorHandler: defaultErrorHandler,\n keys: keys,\n append: append,\n bindEvents: bindEvents,\n Class: Class,\n defined: defined,\n deg: deg,\n elementOffset: elementOffset,\n elementSize: elementSize,\n eventCoordinates: eventCoordinates,\n eventElement: eventElement,\n hashKey: hashKey,\n last: last,\n limitValue: limitValue,\n logToConsole: kendo.logToConsole,\n objectKey: objectKey,\n rad: rad,\n round: round,\n unbindEvents: unbindEvents,\n valueOrDefault: valueOrDefault,\n absoluteDateDiff: absoluteDateDiff,\n addDuration: addDuration,\n addTicks: addTicks,\n ceilDate: ceilDate,\n dateComparer: dateComparer,\n dateDiff: dateDiff,\n dateEquals: dateEquals,\n dateIndex: dateIndex,\n duration: duration,\n floorDate: floorDate,\n lteDateIndex: lteDateIndex,\n startOfWeek: startOfWeek,\n toDate: toDate,\n parseDate: parseDate,\n parseDates: parseDates,\n toTime: toTime,\n firstDay: firstDay\n });\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var dataviz = kendo.dataviz;\n var services = dataviz.services;\n var draw = kendo.drawing;\n\n dataviz.SASS_THEMES = [\"sass\", \"default-v2\", \"bootstrap-v4\", \"material-v2\"];\n\n dataviz.ExportMixin = {\n extend: function(proto, skipLegacy) {\n if (!proto.exportVisual) {\n throw new Error(\"Mixin target has no exportVisual method defined.\");\n }\n\n proto.exportSVG = this.exportSVG;\n proto.exportImage = this.exportImage;\n proto.exportPDF = this.exportPDF;\n\n if (!skipLegacy) {\n proto.svg = this.svg;\n proto.imageDataURL = this.imageDataURL;\n }\n },\n\n exportSVG: function(options) {\n return draw.exportSVG(this.exportVisual(), options);\n },\n\n exportImage: function(options) {\n return draw.exportImage(this.exportVisual(options), options);\n },\n\n exportPDF: function(options) {\n return draw.exportPDF(this.exportVisual(), options);\n },\n\n svg: function() {\n if (draw.svg.Surface) {\n return draw.svg.exportGroup(this.exportVisual());\n } else {\n throw new Error(\"SVG Export failed. Unable to export instantiate kendo.drawing.svg.Surface\");\n }\n },\n\n imageDataURL: function() {\n if (!kendo.support.canvas) {\n return null;\n }\n\n if (draw.canvas.Surface) {\n var container = $(\"
    \").css({\n display: \"none\",\n width: this.element.width(),\n height: this.element.height()\n }).appendTo(document.body);\n\n var surface = new draw.canvas.Surface(container[0]);\n surface.draw(this.exportVisual());\n var image = surface._rootElement.toDataURL();\n\n surface.destroy();\n container.remove();\n\n return image;\n } else {\n throw new Error(\"Image Export failed. Unable to export instantiate kendo.drawing.canvas.Surface\");\n }\n }\n };\n\n services.IntlService.register({\n format: function(format) {\n return kendo.format.apply(null, [format].concat(Array.prototype.slice.call(arguments, 1)));\n },\n toString: kendo.toString,\n parseDate: kendo.parseDate,\n firstDay: function() {\n return kendo.culture().calendars.standard.firstDay;\n }\n });\n\n services.TemplateService.register({\n compile: kendo.template\n });\n\n dataviz.Point2D = dataviz.Point;\n dataviz.Box2D = dataviz.Box;\n dataviz.mwDelta = function(e) {\n return dataviz.mousewheelDelta(e.originalEvent);\n };\n\n })(window.kendo.jQuery);\n\n var __meta__$F = {\n id: \"dataviz.core\",\n name: \"Core\",\n description: \"The DataViz core functions\",\n category: \"dataviz\",\n depends: [ \"core\", \"drawing\" ],\n hidden: true\n };\n\n var kendo$I = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function() {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n\n var BAR_GAP = 1.5;\n var BAR_SPACING = 0.4;\n var BLACK = '#000';\n var SANS = 'Arial, Helvetica, sans-serif';\n var SANS11 = \"11px \" + SANS;\n var SANS12 = '12px ' + SANS;\n var SANS16 = '16px ' + SANS;\n var TRANSPARENT = 'transparent';\n var WHITE = '#fff';\n\n var notes = function () { return ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n visible: true\n }); };\n\n var axisDefaults = function () { return ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n }); };\n\n var areaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n }); };\n\n var rangeAreaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n }); };\n\n var barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var boxPlotSeries = function () { return ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n }\n }); };\n\n var bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n opacity: 0.6\n }); };\n\n var bulletSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n }\n }); };\n\n var candlestickSeries = function () { return ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n spacing: 0.3\n }); };\n\n var columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var donutSeries = function () { return ({\n margin: 1\n }); };\n\n var lineSeries = function () { return ({\n width: 2\n }); };\n\n var ohlcSeries = function () { return ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n spacing: 0.3\n }); };\n\n var radarAreaSeries = function () { return ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.5\n }); };\n\n var radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n width: 2\n }); };\n\n var rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var scatterLineSeries = function () { return ({\n width: 1\n }); };\n\n var waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n spacing: BAR_SPACING\n }); };\n\n var pieSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n }); };\n\n var funnelSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n }); };\n\n var heatmapSeries = function () { return ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n }\n }); };\n\n var seriesDefaults = function (options) { return ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n }); };\n\n var title = function () { return ({\n font: SANS16\n }); };\n\n var subtitle = function () { return ({\n font: SANS12\n }); };\n\n var legend = function () { return ({\n labels: {\n font: SANS12\n }\n }); };\n\n var baseTheme = function (options) {\n if (options === void 0) { options = {}; }\n\n return ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n subtitle: subtitle(),\n legend: legend()\n });\n };\n\n kendo.deepExtend(kendo.dataviz, {\n chartBaseTheme: baseTheme\n });\n\n })();\n\n (function($) {\n var cache;\n var SERIES_COLORS = 30;\n\n function seriesTemplate() {\n var template =\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n for (var i = 0; i < SERIES_COLORS; i++) {\n template += '
    ';\n }\n\n return template;\n }\n\n function autoTheme(force) {\n if (!force && cache) {\n return cache;\n }\n\n var theme = { chart: kendo.dataviz.chartBaseTheme() };\n var hook = $(\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n seriesTemplate() +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ').hide().appendTo(document.body);\n\n function mapColor(key, varName) {\n set(key, queryStyle(varName, \"backgroundColor\"));\n }\n\n function queryStyle(varName, prop) {\n return hook.find(\".k-var--\" + varName).css(prop);\n }\n\n function set(path, value) {\n var store = theme;\n var parts = path.split('.');\n var key = parts.shift();\n\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n\n store[key] = value;\n }\n\n function setInactiveOpacity(seriesTypes, selector) {\n var inactiveOpacity = parseFloat(queryStyle(selector, \"opacity\"));\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(function(type) {\n set(\"chart.seriesDefaults.\" + type + \".highlight.inactiveOpacity\", inactiveOpacity);\n });\n }\n }\n\n (function setColors() {\n mapColor(\"chart.axisDefaults.crosshair.color\", \"chart-crosshair-background\");\n mapColor(\"chart.axisDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.axisDefaults.line.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.majorGridLines.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.minorGridLines.color\", \"chart-minor-lines\");\n mapColor(\"chart.axisDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.axisDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.axisDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.axisDefaults.title.color\", \"normal-text-color\");\n mapColor('chart.chartArea.background', 'background');\n mapColor(\"chart.legend.inactiveItems.labels.color\", \"chart-inactive\");\n mapColor(\"chart.legend.inactiveItems.markers.color\", \"chart-inactive\");\n mapColor(\"chart.legend.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.boxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.boxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.bullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.candlestick.downColor\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.candlestick.line.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.errorBars.color\", \"chart-error-bars-background\");\n mapColor(\"chart.seriesDefaults.horizontalWaterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.icon.border.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.labels.background\", \"background\");\n mapColor(\"chart.seriesDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.seriesDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.seriesDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.verticalBullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.waterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.title.color\", \"normal-text-color\");\n mapColor(\"chart.subtitle.color\", \"normal-text-color\");\n\n mapColor(\"diagram.shapeDefaults.fill.color\", \"primary\");\n mapColor(\"diagram.shapeDefaults.content.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.stroke.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.fill.color\", \"normal-background\");\n mapColor(\"diagram.editable.resize.handles.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.hover.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.selectable.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.content.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.handles.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.connectionDefaults.selection.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.stroke.color\", \"normal-text-color\");\n\n mapColor(\"gauge.pointer.color\", \"gauge-pointer\");\n mapColor(\"gauge.scale.labels.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.minorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.majorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.line.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.rangePlaceholderColor\", \"gauge-track\");\n\n var opacity = parseFloat(queryStyle(\"chart-area-opacity\", \"opacity\"));\n if (!isNaN(opacity)) {\n set(\"chart.seriesDefaults.area.opacity\", opacity);\n set(\"chart.seriesDefaults.radarArea.opacity\", opacity);\n set(\"chart.seriesDefaults.verticalArea.opacity\", opacity);\n set(\"chart.seriesDefaults.labels.opacity\", opacity);\n }\n\n setInactiveOpacity([\"area\", \"verticalArea\"], \"chart-area-inactive-opacity\");\n setInactiveOpacity([\"line\", \"verticalLine\"], \"chart-line-inactive-opacity\");\n })();\n\n (function setSizes() {\n set(\"diagram.connectionDefaults.selection.handles.width\", 8);\n set(\"diagram.connectionDefaults.selection.handles.height\", 8);\n })();\n\n (function setFonts() {\n function font(varName) {\n return queryStyle(varName, \"fontWeight\") + \" \" +\n queryStyle(varName, \"fontSize\") + \" \" +\n queryStyle(varName, \"fontFamily\");\n }\n\n var defaultFont = font(\"chart-font\");\n var titleFont = font(\"chart-title-font\");\n var paneTitleFont = font(\"chart-pane-title-font\");\n var labelFont = font(\"chart-label-font\");\n\n set(\"chart.axisDefaults.labels.font\", labelFont);\n set(\"chart.axisDefaults.notes.label.font\", defaultFont);\n set(\"chart.axisDefaults.title.font\", defaultFont);\n set(\"chart.legend.labels.font\", defaultFont);\n set(\"chart.seriesDefaults.labels.font\", labelFont);\n set(\"chart.seriesDefaults.notes.label.font\", defaultFont);\n set(\"chart.title.font\", titleFont);\n set(\"chart.subtitle.font\", paneTitleFont);\n set(\"chart.paneDefaults.title.font\", paneTitleFont);\n })();\n\n (function setSeriesColors() {\n function letterPos(letter) {\n return letter.toLowerCase().charCodeAt(0) - \"a\".charCodeAt(0);\n }\n\n function seriesPos(name) {\n var alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n\n var num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n }\n\n var series = $(\".k-var--series div\").toArray();\n var unsetColor = $('.k-var--series-unset').css(\"backgroundColor\");\n var seriesColors = series.reduce(\n function(arr, el) {\n var pos = seriesPos(el.className);\n var color = $(el).css(\"backgroundColor\");\n\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n\n return arr;\n },\n [] // Will populate the series colors in this array\n );\n\n set(\"chart.seriesColors\", seriesColors);\n })();\n\n hook.remove();\n\n cache = theme;\n\n return theme;\n }\n\n kendo.dataviz.autoTheme = autoTheme;\n })(window.kendo.jQuery);\n\n (function($) {\n\n // Imports ================================================================\n var kendo = window.kendo,\n ui = kendo.dataviz.ui,\n deepExtend = kendo.deepExtend;\n\n // Constants ==============================================================\n var BLACK = \"#000\",\n SANS = \"Arial,Helvetica,sans-serif\",\n SANS12 = \"12px \" + SANS,\n WHITE = \"#fff\";\n\n var chartBaseTheme = kendo.dataviz.chartBaseTheme({\n gradients: true\n });\n\n var gaugeBaseTheme = {\n scale: {\n labels: {\n font: SANS12\n }\n }\n };\n\n var diagramBaseTheme = {\n shapeDefaults: {\n hover: {\n opacity: 0.2\n },\n stroke: {\n width: 0\n }\n },\n editable: {\n resize: {\n handles: {\n width: 7,\n height: 7\n }\n }\n },\n selectable: {\n stroke: {\n width: 1,\n dashType: \"dot\"\n }\n },\n connectionDefaults: {\n stroke: {\n width: 2\n },\n selection: {\n handles: {\n width: 8,\n height: 8\n }\n },\n editable: {\n tools: [\"edit\", \"delete\"]\n }\n }\n };\n\n var themes = ui.themes,\n registerTheme = ui.registerTheme = function(themeName, options) {\n var result = {};\n // Apply base theme\n result.chart = deepExtend({}, chartBaseTheme, options.chart);\n result.gauge = deepExtend({}, gaugeBaseTheme, options.gauge);\n result.diagram = deepExtend({}, diagramBaseTheme, options.diagram);\n result.treeMap = deepExtend({}, options.treeMap);\n\n // Copy the line/area chart settings for their vertical counterparts\n var defaults = result.chart.seriesDefaults;\n defaults.verticalLine = deepExtend({}, defaults.line);\n defaults.verticalArea = deepExtend({}, defaults.area);\n defaults.rangeArea = deepExtend({}, defaults.area);\n defaults.verticalRangeArea = deepExtend({}, defaults.rangeArea);\n defaults.verticalBoxPlot = deepExtend({}, defaults.boxPlot);\n defaults.polarArea = deepExtend({}, defaults.radarArea);\n defaults.polarLine = deepExtend({}, defaults.radarLine);\n\n themes[themeName] = result;\n };\n\n registerTheme(\"black\", {\n chart: {\n title: {\n color: WHITE\n },\n subtitle: {\n color: WHITE\n },\n legend: {\n labels: {\n color: WHITE\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: WHITE\n },\n errorBars: {\n color: WHITE\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatter: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n candlestick: {\n downColor: \"#555\",\n line: {\n color: WHITE\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n ohlc: {\n line: {\n color: WHITE\n }\n }\n },\n chartArea: {\n background: \"#3d3d3d\"\n },\n seriesColors: [\"#0081da\", \"#3aafff\", \"#99c900\", \"#ffeb3d\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: WHITE\n },\n majorGridLines: {\n color: \"#545454\"\n },\n minorGridLines: {\n color: \"#454545\"\n },\n title: {\n color: WHITE\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0070e4\"\n },\n scale: {\n rangePlaceholderColor: \"#1d1d1d\",\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: WHITE\n },\n majorTicks: {\n color: WHITE\n },\n line: {\n color: WHITE\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#0066cc\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#384049\"\n },\n hover: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0081da\", \"#314b5c\"],\n [\"#3aafff\", \"#3c5464\"],\n [\"#99c900\", \"#4f5931\"],\n [\"#ffeb3d\", \"#64603d\"],\n [\"#b20753\", \"#543241\"],\n [\"#ff4195\", \"#643e4f\"]]\n }\n });\n\n registerTheme(\"blueopal\", {\n chart: {\n title: {\n color: \"#293135\"\n },\n subtitle: {\n color: \"#293135\"\n },\n legend: {\n labels: {\n color: \"#293135\"\n },\n inactiveItems: {\n labels: {\n color: \"#27A5BA\"\n },\n markers: {\n color: \"#27A5BA\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#293135\"\n },\n candlestick: {\n downColor: \"#c4d0d5\",\n line: {\n color: \"#9aabb2\"\n }\n },\n waterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n },\n seriesColors: [\"#0069a5\", \"#0098ee\", \"#7bd2f6\", \"#ffb800\", \"#ff8517\", \"#e34a00\"],\n axisDefaults: {\n line: {\n color: \"#9aabb2\"\n },\n labels: {\n color: \"#293135\"\n },\n majorGridLines: {\n color: \"#c4d0d5\"\n },\n minorGridLines: {\n color: \"#edf1f2\"\n },\n title: {\n color: \"#293135\"\n },\n crosshair: {\n color: \"#9aabb2\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#005c83\"\n },\n scale: {\n rangePlaceholderColor: \"#daecf4\",\n\n labels: {\n color: \"#293135\"\n },\n minorTicks: {\n color: \"#293135\"\n },\n majorTicks: {\n color: \"#293135\"\n },\n line: {\n color: \"#293135\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#7ec6e3\"\n },\n connectorDefaults: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n },\n content: {\n color: \"#293135\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n },\n hover: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#003f59\"\n },\n fill: {\n color: \"#003f59\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#003f59\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#003f59\"\n },\n content: {\n color: \"#293135\"\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0069a5\", \"#bad7e7\"],\n [\"#0098ee\", \"#b9e0f5\"],\n [\"#7bd2f6\", \"#ceeaf6\"],\n [\"#ffb800\", \"#e6e3c4\"],\n [\"#ff8517\", \"#e4d8c8\"],\n [\"#e34a00\", \"#ddccc2\"]\n ]\n }\n });\n\n registerTheme(\"highcontrast\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#66465B\"\n },\n markers: {\n color: \"#66465B\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatter: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#2c232b\"\n }\n },\n area: {\n opacity: 0.5\n },\n waterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n candlestick: {\n downColor: \"#664e62\",\n line: {\n color: \"#ffffff\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#ffffff\",\n opacity: 1\n }\n }\n },\n ohlc: {\n line: {\n color: \"#ffffff\"\n }\n }\n },\n chartArea: {\n background: \"#2c232b\"\n },\n seriesColors: [\"#a7008f\", \"#ffb800\", \"#3aafff\", \"#99c900\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#ffffff\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#664e62\"\n },\n minorGridLines: {\n color: \"#4f394b\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#a7008f\"\n },\n scale: {\n rangePlaceholderColor: \"#2c232b\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#2c232b\"\n },\n majorTicks: {\n color: \"#664e62\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#a7018f\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#2c232b\"\n },\n hover: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#a7008f\", \"#451c3f\"],\n [\"#ffb800\", \"#564122\"],\n [\"#3aafff\", \"#2f3f55\"],\n [\"#99c900\", \"#424422\"],\n [\"#b20753\", \"#471d33\"],\n [\"#ff4195\", \"#562940\"]\n ]\n }\n });\n\n registerTheme(\"default\", {\n chart: {\n title: {\n color: \"#8e8e8e\"\n },\n subtitle: {\n color: \"#8e8e8e\"\n },\n legend: {\n labels: {\n color: \"#232323\"\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#232323\"\n },\n candlestick: {\n downColor: \"#dedede\",\n line: {\n color: \"#8d8d8d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n },\n seriesColors: [\"#ff6800\", \"#a0a700\", \"#ff8d00\", \"#678900\", \"#ffb53c\", \"#396000\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: \"#232323\"\n },\n minorGridLines: {\n color: \"#f0f0f0\"\n },\n majorGridLines: {\n color: \"#dfdfdf\"\n },\n title: {\n color: \"#232323\"\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#ea7001\"\n },\n scale: {\n rangePlaceholderColor: \"#dedede\",\n\n labels: {\n color: \"#2e2e2e\"\n },\n minorTicks: {\n color: \"#2e2e2e\"\n },\n majorTicks: {\n color: \"#2e2e2e\"\n },\n line: {\n color: \"#2e2e2e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#e15613\"\n },\n connectorDefaults: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#2e2e2e\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n },\n hover: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#282828\"\n },\n fill: {\n color: \"#282828\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#a7018f\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#282828\"\n },\n content: {\n color: \"#2e2e2e\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ff6800\", \"#edcfba\"],\n [\"#a0a700\", \"#dadcba\"],\n [\"#ff8d00\", \"#edd7ba\"],\n [\"#678900\", \"#cfd6ba\"],\n [\"#ffb53c\", \"#eddfc6\"],\n [\"#396000\", \"#c6ceba\"]\n ]\n }\n });\n\n registerTheme(\"silver\", {\n chart: {\n title: {\n color: \"#4e5968\"\n },\n subtitle: {\n color: \"#4e5968\"\n },\n legend: {\n labels: {\n color: \"#4e5968\"\n },\n inactiveItems: {\n labels: {\n color: \"#B1BCC8\"\n },\n markers: {\n color: \"#B1BCC8\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#293135\",\n background: \"#eaeaec\",\n opacity: 0.5\n },\n errorBars: {\n color: \"#4e5968\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n },\n line: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatter: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n pie: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n donut: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n waterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n candlestick: {\n downColor: \"#a6afbe\"\n }\n },\n chartArea: {\n background: \"#eaeaec\"\n },\n seriesColors: [\"#007bc3\", \"#76b800\", \"#ffae00\", \"#ef4c00\", \"#a419b7\", \"#430B62\"],\n axisDefaults: {\n line: {\n color: \"#a6b1c0\"\n },\n labels: {\n color: \"#4e5968\"\n },\n majorGridLines: {\n color: \"#dcdcdf\"\n },\n minorGridLines: {\n color: \"#eeeeef\"\n },\n title: {\n color: \"#4e5968\"\n },\n crosshair: {\n color: \"#a6b1c0\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0879c0\"\n },\n scale: {\n rangePlaceholderColor: \"#f3f3f4\",\n\n labels: {\n color: \"#515967\"\n },\n minorTicks: {\n color: \"#515967\"\n },\n majorTicks: {\n color: \"#515967\"\n },\n line: {\n color: \"#515967\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#1c82c2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#515967\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n },\n hover: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#515967\"\n },\n fill: {\n color: \"#515967\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#515967\"\n },\n content: {\n color: \"#515967\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#007bc3\", \"#c2dbea\"],\n [\"#76b800\", \"#dae7c3\"],\n [\"#ffae00\", \"#f5e5c3\"],\n [\"#ef4c00\", \"#f2d2c3\"],\n [\"#a419b7\", \"#e3c7e8\"],\n [\"#430b62\", \"#d0c5d7\"]\n ]\n }\n });\n\n registerTheme(\"metro\", {\n chart: {\n title: {\n color: \"#777777\"\n },\n subtitle: {\n color: \"#777777\"\n },\n legend: {\n labels: {\n color: \"#777777\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK\n },\n errorBars: {\n color: \"#777777\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n waterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#8ebc00\", \"#309b46\", \"#25a0da\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#16aba9\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#c7c7c7\"\n },\n labels: {\n color: \"#777777\"\n },\n minorGridLines: {\n color: \"#c7c7c7\"\n },\n majorGridLines: {\n color: \"#c7c7c7\"\n },\n title: {\n color: \"#777777\"\n },\n crosshair: {\n color: \"#c7c7c7\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#8ebc00\"\n },\n scale: {\n rangePlaceholderColor: \"#e6e6e6\",\n\n labels: {\n color: \"#777\"\n },\n minorTicks: {\n color: \"#777\"\n },\n majorTicks: {\n color: \"#777\"\n },\n line: {\n color: \"#777\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#8ebc00\"\n },\n connectorDefaults: {\n fill: {\n color: BLACK\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: BLACK\n }\n }\n },\n content: {\n color: \"#777\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#787878\"\n },\n fill: {\n color: \"#787878\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#787878\"\n },\n content: {\n color: \"#777\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#8ebc00\", \"#e8f2cc\"],\n [\"#309b46\", \"#d6ebda\"],\n [\"#25a0da\", \"#d3ecf8\"],\n [\"#ff6900\", \"#ffe1cc\"],\n [\"#e61e26\", \"#fad2d4\"],\n [\"#d8e404\", \"#f7facd\"],\n [\"#16aba9\", \"#d0eeee\"],\n [\"#7e51a1\", \"#e5dcec\"],\n [\"#313131\", \"#d6d6d6\"],\n [\"#ed1691\", \"#fbd0e9\"]\n ]\n }\n });\n\n registerTheme(\"metroblack\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#797979\"\n },\n markers: {\n color: \"#797979\"\n }\n }\n },\n seriesDefaults: {\n border: {\n _brightness: 1\n },\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n },\n line: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n candlestick: {\n downColor: \"#828282\",\n line: {\n color: \"#ffffff\"\n }\n },\n waterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n overlay: {\n gradient: \"none\"\n }\n },\n chartArea: {\n background: \"#0e0e0e\"\n },\n seriesColors: [\"#00aba9\", \"#309b46\", \"#8ebc00\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#25a0da\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#cecece\"\n },\n labels: {\n color: \"#ffffff\"\n },\n minorGridLines: {\n color: \"#2d2d2d\"\n },\n majorGridLines: {\n color: \"#333333\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#cecece\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#00aba9\"\n },\n scale: {\n rangePlaceholderColor: \"#2d2d2d\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#333333\"\n },\n majorTicks: {\n color: \"#cecece\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#00aba9\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#0e0e0e\"\n },\n hover: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#787878\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#00aba9\", \"#0b2d2d\"],\n [\"#309b46\", \"#152a19\"],\n [\"#8ebc00\", \"#28310b\"],\n [\"#ff6900\", \"#3e200b\"],\n [\"#e61e26\", \"#391113\"],\n [\"#d8e404\", \"#36390c\"],\n [\"#25a0da\", \"#132b37\"],\n [\"#7e51a1\", \"#241b2b\"],\n [\"#313131\", \"#151515\"],\n [\"#ed1691\", \"#3b1028\"]\n ]\n }\n });\n\n registerTheme(\"moonlight\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#A1A7AB\"\n },\n markers: {\n color: \"#A1A7AB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#212a33\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#212a33\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#212a33\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#757d87\",\n line: {\n color: \"#ea9d06\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n ohlc: {\n line: {\n color: \"#ea9d06\"\n }\n }\n },\n chartArea: {\n background: \"#212a33\"\n },\n seriesColors: [\"#ffca08\", \"#ff710f\", \"#ed2e24\", \"#ff9f03\", \"#e13c02\", \"#a00201\"],\n axisDefaults: {\n line: {\n color: \"#8c909e\"\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#3e424d\"\n },\n minorGridLines: {\n color: \"#2f3640\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#8c909e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#f4af03\"\n },\n scale: {\n rangePlaceholderColor: \"#2f3640\",\n\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#f3ae03\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#414550\"\n },\n hover: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ffca08\", \"#4e4b2b\"],\n [\"#ff710f\", \"#4e392d\"],\n [\"#ed2e24\", \"#4b2c31\"],\n [\"#ff9f03\", \"#4e422a\"],\n [\"#e13c02\", \"#482e2a\"],\n [\"#a00201\", \"#3b232a\"]\n ]\n }\n });\n\n registerTheme(\"uniform\", {\n chart: {\n title: {\n color: \"#686868\"\n },\n subtitle: {\n color: \"#686868\"\n },\n legend: {\n labels: {\n color: \"#686868\"\n },\n inactiveItems: {\n labels: {\n color: \"#B6B6B6\"\n },\n markers: {\n color: \"#B6B6B6\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#686868\"\n },\n errorBars: {\n color: \"#686868\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#cccccc\",\n line: {\n color: \"#cccccc\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#cccccc\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n ohlc: {\n line: {\n color: \"#cccccc\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#527aa3\", \"#6f91b3\", \"#8ca7c2\", \"#a8bdd1\", \"#c5d3e0\", \"#e2e9f0\"],\n axisDefaults: {\n line: {\n color: \"#9e9e9e\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n labels: {\n color: \"#686868\"\n },\n majorGridLines: {\n color: \"#dadada\"\n },\n minorGridLines: {\n color: \"#e7e7e7\"\n },\n title: {\n color: \"#686868\"\n },\n crosshair: {\n color: \"#9e9e9e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#527aa3\"\n },\n scale: {\n rangePlaceholderColor: \"#e7e7e7\",\n\n labels: {\n color: \"#686868\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#d1d1d1\"\n },\n connectorDefaults: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n },\n content: {\n color: \"#686868\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n },\n hover: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#686868\"\n },\n fill: {\n color: \"#686868\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#686868\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#686868\"\n },\n content: {\n color: \"#686868\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#527aa3\", \"#d0d8e1\"],\n [\"#6f91b3\", \"#d6dde4\"],\n [\"#8ca7c2\", \"#dce1e7\"],\n [\"#a8bdd1\", \"#e2e6ea\"],\n [\"#c5d3e0\", \"#e7eaed\"],\n [\"#e2e9f0\", \"#edeff0\"]\n ]\n }\n });\n\n registerTheme(\"bootstrap\", {\n chart: {\n title: {\n color: \"#333333\"\n },\n subtitle: {\n color: \"#333333\"\n },\n legend: {\n labels: {\n color: \"#333333\"\n },\n inactiveItems: {\n labels: {\n color: \"#999999\"\n },\n markers: {\n color: \"#9A9A9A\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#333333\"\n },\n overlay: {\n gradient: \"none\"\n },\n errorBars: {\n color: \"#343434\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#333333\"\n },\n line: {\n color: \"#000000\"\n }\n },\n pie: {\n overlay: {\n gradient: \"none\"\n }\n },\n donut: {\n overlay: {\n gradient: \"none\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.8\n },\n candlestick: {\n downColor: \"#d0d0d0\",\n line: {\n color: \"#333333\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#b8b8b8\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n ohlc: {\n line: {\n color: \"#333333\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#428bca\", \"#5bc0de\", \"#5cb85c\", \"#f2b661\", \"#e67d4a\", \"#da3b36\"],\n axisDefaults: {\n line: {\n color: \"#cccccc\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n labels: {\n color: \"#333333\"\n },\n majorGridLines: {\n color: \"#cccccc\"\n },\n minorGridLines: {\n color: \"#ebebeb\"\n },\n title: {\n color: \"#333333\"\n },\n crosshair: {\n color: \"#000000\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#000000\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#428bca\"\n },\n scale: {\n rangePlaceholderColor: \"#cccccc\",\n labels: {\n color: \"#333333\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n line: {\n color: \"#cccccc\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#428bca\"\n },\n connectorDefaults: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n }\n },\n content: {\n color: \"#333333\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n },\n hover: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#333333\"\n },\n fill: {\n color: \"#333333\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#333333\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#c4c4c4\"\n },\n content: {\n color: \"#333333\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#428bca\", \"#d1e0ec\"],\n [\"#5bc0de\", \"#d6eaf0\"],\n [\"#5cb85c\", \"#d6e9d6\"],\n [\"#5cb85c\", \"#f4e8d7\"],\n [\"#e67d4a\", \"#f2ddd3\"],\n [\"#da3b36\", \"#f0d0cf\"]\n ]\n }\n });\n\n registerTheme(\"flat\", {\n chart: {\n title: {\n color: \"#4c5356\"\n },\n subtitle: {\n color: \"#4c5356\"\n },\n legend: {\n labels: {\n color: \"#4c5356\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#4c5356\"\n },\n errorBars: {\n color: \"#4c5356\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#10c4b2\", \"#ff7663\", \"#ffb74f\", \"#a2df53\", \"#1c9ec4\", \"#ff63a5\", \"#1cc47b\"],\n axisDefaults: {\n line: {\n color: \"#cdcdcd\"\n },\n labels: {\n color: \"#4c5356\"\n },\n minorGridLines: {\n color: \"#cdcdcd\"\n },\n majorGridLines: {\n color: \"#cdcdcd\"\n },\n title: {\n color: \"#4c5356\"\n },\n crosshair: {\n color: \"#cdcdcd\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#10c4b2\"\n },\n scale: {\n rangePlaceholderColor: \"#cdcdcd\",\n\n labels: {\n color: \"#4c5356\"\n },\n minorTicks: {\n color: \"#4c5356\"\n },\n majorTicks: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#4c5356\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#10c4b2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n }\n },\n content: {\n color: \"#4c5356\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n },\n hover: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#363940\"\n },\n fill: {\n color: \"#363940\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#363940\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#cdcdcd\"\n },\n content: {\n color: \"#4c5356\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#10c4b2\", \"#cff3f0\"],\n [\"#ff7663\", \"#ffe4e0\"],\n [\"#ffb74f\", \"#fff1dc\"],\n [\"#a2df53\", \"#ecf9dd\"],\n [\"#1c9ec4\", \"#d2ecf3\"],\n [\"#ff63a5\", \"#ffe0ed\"],\n [\"#1cc47b\", \"#d2f3e5\"]\n ]\n }\n });\n\n\n registerTheme(\"material\", {\n chart: {\n title: {\n color: \"#444444\"\n },\n subtitle: {\n color: \"#444444\"\n },\n legend: {\n labels: {\n color: \"#444444\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#444444\"\n },\n errorBars: {\n color: \"#444444\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#e5e5e5\"\n },\n labels: {\n color: \"#444444\"\n },\n minorGridLines: {\n color: \"#e5e5e5\"\n },\n majorGridLines: {\n color: \"#e5e5e5\"\n },\n title: {\n color: \"#444444\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#e5e5e5\",\n\n labels: {\n color: \"#444444\"\n },\n minorTicks: {\n color: \"#444444\"\n },\n majorTicks: {\n color: \"#444444\"\n },\n line: {\n color: \"#444444\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#444444\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n },\n hover: {\n fill: {\n color: \"#444444\"\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#444444\"\n },\n fill: {\n color: \"#444444\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#444444\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#444444\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n }\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n registerTheme(\"materialblack\", {\n chart: {\n title: {\n color: \"#fff\"\n },\n subtitle: {\n color: \"#fff\"\n },\n legend: {\n labels: {\n color: \"#fff\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#fff\"\n },\n errorBars: {\n color: \"#fff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n chartArea: {\n background: \"#1c1c1c\"\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#4d4d4d\"\n },\n labels: {\n color: \"#fff\"\n },\n minorGridLines: {\n color: \"#4d4d4d\"\n },\n majorGridLines: {\n color: \"#4d4d4d\"\n },\n title: {\n color: \"#fff\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4d4d4d\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#4d4d4d\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#4d4d4d\",\n\n labels: {\n color: \"#fff\"\n },\n minorTicks: {\n color: \"#fff\"\n },\n majorTicks: {\n color: \"#fff\"\n },\n line: {\n color: \"#fff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#fff\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n },\n hover: {\n fill: {\n color: \"#fff\"\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#fff\"\n },\n fill: {\n color: \"#fff\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#fff\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#fff\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n }\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n (function() {\n var TEXT = \"#333333\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#dddddd\";\n var SERIES = [\"#008fd3\", \"#99d101\", \"#f39b02\", \"#f05662\", \"#c03c53\", \"#acacac\"];\n var SERIES_LIGHT = [\"#cbe8f5\", \"#eaf5cb\", \"#fceacc\", \"#fbdcdf\", \"#f2d7dc\", \"#eeeeee\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"fiori\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#4e4e4e\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#e5e5e5\";\n var SERIES = [\"#0072c6\", \"#5db2ff\", \"#008a17\", \"#82ba00\", \"#ff8f32\", \"#ac193d\"];\n var SERIES_LIGHT = [\"#cbe2f3\", \"#deeffe\", \"#cbe7d0\", \"#e5f0cb\", \"#fee8d5\", \"#eed0d7\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#00b0ff\",\n border: {\n color: \"#00b0ff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"office365\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#32364c\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#dfe0e1\";\n var AXIS_MINOR = \"#dfe0e1\";\n var SERIES = [\"#ff4350\", \"#ff9ea5\", \"#00acc1\", \"#80deea\", \"#ffbf46\", \"#ffd78c\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"nova\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: TEXT\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var SERIES = [\"#ff6358\", \"#ffd246\", \"#78d237\", \"#28b4c8\", \"#2d73f5\", \"#aa46be\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n\n registerTheme(\"default-v2\", {\n chart: { /* read from DOM */ },\n gauge: { /* read from DOM */ },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n\n themes.sass = themes[\"default-v2\"];\n })();\n\n\n (function() {\n var TEXT = \"#292b2c\";\n var AXIS = \"rgba(0, 0, 0, .04)\";\n var SERIES = [\"#0275d8\", \"#5bc0de\", \"#5cb85c\", \"#f0ad4e\", \"#e67d4a\", \"#d9534f\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n\n registerTheme(\"bootstrap-v4\", {\n chart: { /* read from DOM */ },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n function fuse(arr1, arr2) {\n return $.map(arr1, function(item, index) {\n return [\n [item, arr2[index]]\n ];\n });\n }\n\n })(window.kendo.jQuery);\n\n var __meta__$E = {\n id: \"dataviz.themes\",\n name: \"Themes\",\n description: \"Built-in themes for the DataViz widgets\",\n category: \"dataviz\",\n depends: [ \"dataviz.core\" ],\n hidden: true\n };\n var kendo$H = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, curly */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var dataviz = kendo.dataviz;\n var Class = dataviz.Class;\n var isNumber = dataviz.isNumber;\n var datavizConstants = dataviz.constants;\n var MAX_VALUE = datavizConstants.MAX_VALUE;\n var MIN_VALUE = datavizConstants.MIN_VALUE;\n var VALUE = datavizConstants.VALUE;\n var CENTER = datavizConstants.CENTER;\n var TOP = datavizConstants.TOP;\n var BOTTOM = datavizConstants.BOTTOM;\n var LEFT = datavizConstants.LEFT;\n var WHITE = datavizConstants.WHITE;\n var CIRCLE = datavizConstants.CIRCLE;\n var X = datavizConstants.X;\n var Y = datavizConstants.Y;\n var RIGHT = datavizConstants.RIGHT;\n var BLACK = datavizConstants.BLACK;\n var DATE = datavizConstants.DATE;\n var DEFAULT_PRECISION = datavizConstants.DEFAULT_PRECISION;\n var ARC = datavizConstants.ARC;\n var defined = dataviz.defined;\n var getter = dataviz.getter;\n var isArray = dataviz.isArray;\n var ChartElement = dataviz.ChartElement;\n var Point = dataviz.Point;\n var Box = dataviz.Box;\n var alignPathToPixel = dataviz.alignPathToPixel;\n var setDefaultOptions = dataviz.setDefaultOptions;\n var inArray = dataviz.inArray;\n var isFunction = dataviz.isFunction;\n var valueOrDefault = dataviz.valueOrDefault;\n var isObject = dataviz.isObject;\n var deepExtend = dataviz.deepExtend;\n var last = dataviz.last;\n var eventElement = dataviz.eventElement;\n var getTemplate = dataviz.getTemplate;\n var TextBox = dataviz.TextBox;\n var ShapeElement = dataviz.ShapeElement;\n var getSpacing = dataviz.getSpacing;\n var CurveProcessor = dataviz.CurveProcessor;\n var append = dataviz.append;\n var isString = dataviz.isString;\n var parseDate = dataviz.parseDate;\n var styleValue = dataviz.styleValue;\n var CategoryAxis = dataviz.CategoryAxis;\n var BoxElement = dataviz.BoxElement;\n var Title = dataviz.Title;\n var round = dataviz.round;\n var limitValue = dataviz.limitValue;\n var grep = dataviz.grep;\n var elementStyles = dataviz.elementStyles;\n var bindEvents = dataviz.bindEvents;\n var services = dataviz.services;\n var unbindEvents = dataviz.unbindEvents;\n var support = kendo.support;\n var drawing = kendo.drawing;\n var Path = drawing.Path;\n var Animation = drawing.Animation;\n var AnimationFactory = drawing.AnimationFactory;\n var Group = drawing.Group;\n var Color = kendo.Color;\n var geometry = kendo.geometry;\n var GeometryPoint = geometry.Point;\n var transform = geometry.transform;\n\n var ChartAxis = Class.extend({\n init: function(axis) {\n\n this._axis = axis;\n this.options = axis.options;\n },\n\n value: function(point) {\n var axis = this._axis;\n var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n },\n\n slot: function(from, to, limit) {\n if (limit === void 0) { limit = true; }\n\n return this._axis.slot(from, to, limit);\n },\n\n range: function() {\n return this._axis.range();\n },\n\n valueRange: function() {\n return this._axis.valueRange();\n }\n });\n\n function findAxisByName(name, axes) {\n for (var idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n }\n\n var ChartPane = kendo.Class.extend({\n init: function(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n },\n\n findAxisByName: function(name) {\n return findAxisByName(name, this._pane.axes);\n }\n });\n\n var ChartPlotArea = Class.extend({\n init: function(plotArea) {\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n });\n\n function countNumbers(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n }\n\n var Aggregates = {\n min: function(values) {\n var length = values.length;\n var min = MAX_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n var length = values.length;\n var max = MIN_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n var length = values.length;\n var sum = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n var result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n var count = countNumbers(values);\n var result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n var length = values.length;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n };\n\n function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n var get = getter(field, true);\n return get(row);\n }\n\n var SeriesBinder = Class.extend({\n init: function() {\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n },\n\n register: function(seriesTypes, valueFields, otherFields) {\n var this$1$1 = this;\n if (valueFields === void 0) { valueFields = [ VALUE ]; }\n if (otherFields === void 0) { otherFields = {}; }\n\n for (var i = 0; i < seriesTypes.length; i++) {\n var type = seriesTypes[i];\n\n this$1$1._valueFields[type] = valueFields;\n this$1$1._otherFields[type] = otherFields;\n this$1$1._nullValue[type] = this$1$1._makeValue(valueFields, null);\n this$1$1._undefinedValue[type] = this$1$1._makeValue(valueFields, undefined);\n }\n },\n\n canonicalFields: function(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n },\n\n valueFields: function(series) {\n return this._valueFields[series.type] || [ VALUE ];\n },\n\n otherFields: function(series) {\n return this._otherFields[series.type] || [ VALUE ];\n },\n\n bindPoint: function(series, pointIx, item) {\n var data = series.data;\n var pointData = defined(item) ? item : data[pointIx];\n var result = { valueFields: { value: pointData } };\n var valueFields = this.valueFields(series);\n var otherFields = this._otherFields[series.type];\n var fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n var fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n var srcValueFields = this.sourceFields(series, valueFields);\n var srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n },\n\n _makeValue: function(fields, initialValue) {\n var value = {};\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n },\n\n _bindFromArray: function(array, fields) {\n var value = {};\n\n if (fields) {\n var length = Math.min(fields.length, array.length);\n\n for (var i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n },\n\n _bindFromObject: function(object, fields, srcFields) {\n if (srcFields === void 0) { srcFields = fields; }\n\n var value = {};\n\n if (fields) {\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n var srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n },\n\n sourceFields: function(series, canonicalFields) {\n var sourceFields = [];\n\n if (canonicalFields) {\n var length = canonicalFields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = canonicalFields[i];\n var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n }\n });\n\n SeriesBinder.current = new SeriesBinder();\n\n var STD_ERR = \"stderr\";\n var STD_DEV = \"stddev\";\n var percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\n var standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\n var ErrorRangeCalculator = Class.extend({\n init: function(errorValue, series, field) {\n\n this.initGlobalRanges(errorValue, series, field);\n },\n\n initGlobalRanges: function(errorValue, series, field) {\n var data = series.data;\n var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n var average = this.getAverage(data);\n var deviation = this.getStandardDeviation(data, average, false);\n var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n var standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n },\n\n createValueGetter: function(series, field) {\n var data = series.data;\n var binder = SeriesBinder.current;\n var valueFields = binder.valueFields(series);\n var item = defined(data[0]) ? data[0] : {};\n var valueGetter;\n\n if (isArray(item)) {\n var index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === datavizConstants.OBJECT) {\n var srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n },\n\n getErrorRange: function(pointValue, errorValue) {\n var low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n var percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n },\n\n getStandardError: function(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n },\n\n getStandardDeviation: function(data, average, isSample) {\n var this$1$1 = this;\n\n var length = data.length;\n var total = isSample ? average.count - 1 : average.count;\n var squareDifferenceSum = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n },\n\n getAverage: function(data) {\n var this$1$1 = this;\n\n var length = data.length;\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n }\n });\n\n var browser = support.browser || {};\n\n var INITIAL_ANIMATION_DURATION = 600;\n var FADEIN = \"fadeIn\";\n\n var GLASS = \"glass\";\n var BORDER_BRIGHTNESS = 0.8;\n var TOOLTIP_OFFSET = 5;\n var START_SCALE = browser.msie ? 0.001 : 0;\n var ERROR_LOW_FIELD = \"errorLow\";\n var ERROR_HIGH_FIELD = \"errorHigh\";\n var X_ERROR_LOW_FIELD = \"xErrorLow\";\n var X_ERROR_HIGH_FIELD = \"xErrorHigh\";\n var Y_ERROR_LOW_FIELD = \"yErrorLow\";\n var Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\n var LINE_MARKER_SIZE = 8;\n var ZERO = \"zero\";\n var INTERPOLATE = \"interpolate\";\n var GAP = \"gap\";\n var ABOVE = \"above\";\n var BELOW = \"below\";\n\n var SMOOTH = \"smooth\";\n var STEP = \"step\";\n\n var AREA = \"area\";\n var BAR = \"bar\";\n var BOX_PLOT = \"boxPlot\";\n var BUBBLE = \"bubble\";\n var BULLET = \"bullet\";\n var CANDLESTICK = \"candlestick\";\n var COLUMN = \"column\";\n var DONUT = \"donut\";\n var FUNNEL = \"funnel\";\n var PYRAMID = \"pyramid\";\n var HEATMAP = \"heatmap\";\n var HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\n var LINE = \"line\";\n var OHLC = \"ohlc\";\n var PIE = \"pie\";\n var POLAR_AREA = \"polarArea\";\n var POLAR_LINE = \"polarLine\";\n var POLAR_SCATTER = \"polarScatter\";\n var RADAR_AREA = \"radarArea\";\n var RADAR_COLUMN = \"radarColumn\";\n var RADAR_LINE = \"radarLine\";\n var RANGE_AREA = \"rangeArea\";\n var RANGE_BAR = \"rangeBar\";\n var RANGE_COLUMN = \"rangeColumn\";\n var SCATTER = \"scatter\";\n var SCATTER_LINE = \"scatterLine\";\n var VERTICAL_AREA = \"verticalArea\";\n var VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\n var VERTICAL_BULLET = \"verticalBullet\";\n var VERTICAL_LINE = \"verticalLine\";\n var VERTICAL_RANGE_AREA = \"verticalRangeArea\";\n var WATERFALL = \"waterfall\";\n var EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n ];\n\n var LEGEND_ITEM_CLICK = \"legendItemClick\";\n var LEGEND_ITEM_HOVER = \"legendItemHover\";\n var LEGEND_ITEM_LEAVE = \"legendItemLeave\";\n var SERIES_CLICK = \"seriesClick\";\n var SERIES_HOVER = \"seriesHover\";\n var SERIES_OVER = \"seriesOver\";\n var SERIES_LEAVE = \"seriesLeave\";\n var PLOT_AREA_CLICK = \"plotAreaClick\";\n var PLOT_AREA_HOVER = \"plotAreaHover\";\n var PLOT_AREA_LEAVE = \"plotAreaLeave\";\n var DRAG = \"drag\";\n var DRAG_END = \"dragEnd\";\n var DRAG_START = \"dragStart\";\n var ZOOM_START = \"zoomStart\";\n var ZOOM = \"zoom\";\n var ZOOM_END = \"zoomEnd\";\n var SELECT_START = \"selectStart\";\n var SELECT = \"select\";\n var SELECT_END = \"selectEnd\";\n var RENDER = \"render\";\n var SHOW_TOOLTIP = \"showTooltip\";\n var HIDE_TOOLTIP = \"hideTooltip\";\n var PANE_RENDER = \"paneRender\";\n\n var LOGARITHMIC = \"log\";\n var CATEGORY = \"category\";\n\n var INSIDE_END = \"insideEnd\";\n var INSIDE_BASE = \"insideBase\";\n var OUTSIDE_END = \"outsideEnd\";\n\n var MOUSEWHEEL = \"wheel\";\n var MOUSEWHEEL_DELAY = 150;\n var MOUSEWHEEL_ZOOM_RATE = 0.3;\n\n var DRILLDOWN = \"drilldown\";\n var DRILLDOWN_FIELD = \"drilldown\";\n\n var constants = {\n \tINITIAL_ANIMATION_DURATION: INITIAL_ANIMATION_DURATION,\n \tFADEIN: FADEIN,\n \tLEGEND_ITEM_CLICK: LEGEND_ITEM_CLICK,\n \tLEGEND_ITEM_HOVER: LEGEND_ITEM_HOVER,\n \tLEGEND_ITEM_LEAVE: LEGEND_ITEM_LEAVE,\n \tSERIES_CLICK: SERIES_CLICK,\n \tSERIES_HOVER: SERIES_HOVER,\n \tSERIES_OVER: SERIES_OVER,\n \tSERIES_LEAVE: SERIES_LEAVE,\n \tGLASS: GLASS,\n \tBORDER_BRIGHTNESS: BORDER_BRIGHTNESS,\n \tTOOLTIP_OFFSET: TOOLTIP_OFFSET,\n \tSTART_SCALE: START_SCALE,\n \tERROR_LOW_FIELD: ERROR_LOW_FIELD,\n \tERROR_HIGH_FIELD: ERROR_HIGH_FIELD,\n \tX_ERROR_LOW_FIELD: X_ERROR_LOW_FIELD,\n \tX_ERROR_HIGH_FIELD: X_ERROR_HIGH_FIELD,\n \tY_ERROR_LOW_FIELD: Y_ERROR_LOW_FIELD,\n \tY_ERROR_HIGH_FIELD: Y_ERROR_HIGH_FIELD,\n \tLINE_MARKER_SIZE: LINE_MARKER_SIZE,\n \tINTERPOLATE: INTERPOLATE,\n \tZERO: ZERO,\n \tSMOOTH: SMOOTH,\n \tSTEP: STEP,\n \tCATEGORY: CATEGORY,\n \tFUNNEL: FUNNEL,\n \tPYRAMID: PYRAMID,\n \tBAR: BAR,\n \tCANDLESTICK: CANDLESTICK,\n \tPIE: PIE,\n \tCOLUMN: COLUMN,\n \tAREA: AREA,\n \tVERTICAL_BULLET: VERTICAL_BULLET,\n \tBOX_PLOT: BOX_PLOT,\n \tOHLC: OHLC,\n \tWATERFALL: WATERFALL,\n \tLINE: LINE,\n \tBULLET: BULLET,\n \tVERTICAL_LINE: VERTICAL_LINE,\n \tVERTICAL_AREA: VERTICAL_AREA,\n \tRANGE_AREA: RANGE_AREA,\n \tVERTICAL_RANGE_AREA: VERTICAL_RANGE_AREA,\n \tRANGE_COLUMN: RANGE_COLUMN,\n \tVERTICAL_BOX_PLOT: VERTICAL_BOX_PLOT,\n \tRANGE_BAR: RANGE_BAR,\n \tHORIZONTAL_WATERFALL: HORIZONTAL_WATERFALL,\n \tSCATTER: SCATTER,\n \tSCATTER_LINE: SCATTER_LINE,\n \tBUBBLE: BUBBLE,\n \tRADAR_AREA: RADAR_AREA,\n \tRADAR_LINE: RADAR_LINE,\n \tRADAR_COLUMN: RADAR_COLUMN,\n \tPOLAR_LINE: POLAR_LINE,\n \tPOLAR_AREA: POLAR_AREA,\n \tPOLAR_SCATTER: POLAR_SCATTER,\n \tRENDER: RENDER,\n \tPLOT_AREA_CLICK: PLOT_AREA_CLICK,\n \tPLOT_AREA_HOVER: PLOT_AREA_HOVER,\n \tPLOT_AREA_LEAVE: PLOT_AREA_LEAVE,\n \tLOGARITHMIC: LOGARITHMIC,\n \tDRAG: DRAG,\n \tDRAG_START: DRAG_START,\n \tDRAG_END: DRAG_END,\n \tZOOM_START: ZOOM_START,\n \tZOOM: ZOOM,\n \tZOOM_END: ZOOM_END,\n \tSELECT_START: SELECT_START,\n \tSELECT: SELECT,\n \tSELECT_END: SELECT_END,\n \tPANE_RENDER: PANE_RENDER,\n \tGAP: GAP,\n \tDONUT: DONUT,\n \tINSIDE_END: INSIDE_END,\n \tINSIDE_BASE: INSIDE_BASE,\n \tOUTSIDE_END: OUTSIDE_END,\n \tMOUSEWHEEL: MOUSEWHEEL,\n \tMOUSEWHEEL_DELAY: MOUSEWHEEL_DELAY,\n \tMOUSEWHEEL_ZOOM_RATE: MOUSEWHEEL_ZOOM_RATE,\n \tSHOW_TOOLTIP: SHOW_TOOLTIP,\n \tHIDE_TOOLTIP: HIDE_TOOLTIP,\n \tEQUALLY_SPACED_SERIES: EQUALLY_SPACED_SERIES,\n \tABOVE: ABOVE,\n \tBELOW: BELOW,\n \tHEATMAP: HEATMAP,\n \tDRILLDOWN: DRILLDOWN,\n \tDRILLDOWN_FIELD: DRILLDOWN_FIELD\n };\n\n var DEFAULT_ERROR_BAR_WIDTH = 4;\n\n var ErrorBarBase = ChartElement.extend({\n init: function(low, high, isVertical, chart, series, options) {\n ChartElement.fn.init.call(this, options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n },\n\n reflow: function(targetBox) {\n var endCaps = this.options.endCaps;\n var isVertical = this.isVertical;\n var axis = this.getAxis();\n var valueBox = axis.getSlot(this.low, this.high);\n var centerBox = targetBox.center();\n var capsWidth = this.getCapsWidth(targetBox, isVertical);\n var capValue = isVertical ? centerBox.x : centerBox.y;\n var capStart = capValue - capsWidth;\n var capEnd = capValue + capsWidth;\n var linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n },\n\n getCapsWidth: function(box, isVertical) {\n var boxSize = isVertical ? box.width() : box.height();\n var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: function () {\n this$1$1.createDefaultVisual();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n },\n\n createDefaultVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var linePoints = ref.linePoints;\n var lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n ChartElement.fn.createVisual.call(this);\n\n for (var idx = 0; idx < linePoints.length; idx += 2) {\n var line = new Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this$1$1.visual.append(line);\n }\n }\n });\n\n setDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n });\n\n var CategoricalErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n });\n\n var MAX_EXPAND_DEPTH = 5;\n\n function evalOptions(options, context, state, dryRun) {\n if (state === void 0) { state = {}; }\n if (dryRun === void 0) { dryRun = false; }\n\n var defaults = state.defaults = state.defaults || {};\n var depth = state.depth = state.depth || 0;\n var needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (var property in options) {\n if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n var propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n }\n\n function categoriesCount(series) {\n var seriesCount = series.length;\n var categories = 0;\n\n for (var i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n }\n\n var CategoricalChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n },\n\n plotValue: function(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n var otherValues = [];\n var categorySum = 0;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n if (other) {\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n },\n\n plotRange: function(point, startValue) {\n var this$1$1 = this;\n if (startValue === void 0) { startValue = 0; }\n\n var categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n var plotValue = this.plotValue(point);\n var positive = plotValue >= 0;\n var prevValue = startValue;\n var isStackedBar = false;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === datavizConstants.STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n var otherValue = this$1$1.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this$1$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, dataviz.convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n },\n\n stackLimits: function(axisName, stackName) {\n var this$1$1 = this;\n\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var i = 0; i < this.categoryPoints.length; i++) {\n var categoryPoints = this$1$1.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n var point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n var to = this$1$1.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n },\n\n updateStackRange: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var isStacked = ref.isStacked;\n var chartSeries = ref.series;\n var limitsCache = {};\n\n if (isStacked) {\n for (var i = 0; i < chartSeries.length; i++) {\n var series = chartSeries[i];\n var axisName = series.axis;\n var key = axisName + series.stack;\n\n var limits = limitsCache[key];\n if (!limits) {\n limits = this$1$1.stackLimits(axisName, series.stack);\n\n var errorTotals = this$1$1.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, dataviz.sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, dataviz.sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this$1$1.valueAxisRanges[axisName] = limits;\n }\n }\n }\n },\n\n addErrorBar: function(point, data, categoryIx) {\n var value = point.value;\n var series = point.series;\n var seriesIx = point.seriesIx;\n var errorBars = point.options.errorBars;\n var lowValue = data.fields[ERROR_LOW_FIELD];\n var highValue = data.fields[ERROR_HIGH_FIELD];\n var errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n },\n\n addPointErrorBar: function(point, categoryIx) {\n var isVertical = !this.options.invertAxes;\n var options = point.options.errorBars;\n var series = point.series;\n var low = point.low;\n var high = point.high;\n\n if (this.options.isStacked) {\n var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n var fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n },\n\n stackedErrorRange: function(point, categoryIx) {\n var plotValue = this.plotRange(point, 0)[1] - point.value;\n var low = point.low + plotValue;\n var high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n },\n\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n\n var categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n var seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n var point = this.createPoint(data, fields);\n if (point) {\n $.extend(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n },\n\n evalPointOptions: function(options, value, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n },\n\n updateRange: function(data, fields) {\n var axisName = fields.series.axis;\n var value = data.value;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n },\n\n seriesValueAxis: function(series) {\n var plotArea = this.plotArea;\n var axisName = series.axis;\n var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var categorySlots = this.categorySlots = [];\n var chartPoints = this.points;\n var categoryAxis = this.categoryAxis;\n var pointIx = 0;\n\n this.traverseDataPoints(function (data, fields) {\n var categoryIx = fields.categoryIx;\n var currentSeries = fields.series;\n\n var valueAxis = this$1$1.seriesValueAxis(currentSeries);\n var point = chartPoints[pointIx++];\n\n var categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this$1$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n var plotRange = this$1$1.plotRange(point, valueAxis.startValue());\n var valueSlot = this$1$1.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n var pointSlot = this$1$1.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this$1$1.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this$1$1.options.isStacked100) {\n point.percentage = this$1$1.plotValue(point);\n }\n\n this$1$1.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n },\n\n valueSlot: function(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n },\n\n limitPoints: function() {\n var this$1$1 = this;\n\n var categoryPoints = this.categoryPoints;\n var points = categoryPoints[0].concat(last(categoryPoints));\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this$1$1.limitPoint(points[idx]);\n }\n }\n },\n\n limitPoint: function(point) {\n var limittedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limittedSlot.equals(point.box)) {\n point.reflow(limittedSlot);\n }\n },\n\n aboveAxis: function(point, valueAxis) {\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n var value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n },\n\n categoryAxisCrossingValue: function(valueAxis) {\n var categoryAxis = this.categoryAxis;\n var options = valueAxis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n },\n\n reflowPoint: function(point, pointSlot) {\n point.reflow(pointSlot);\n },\n\n reflowCategories: function() { },\n\n pointSlot: function(categorySlot, valueSlot) {\n var options = this.options;\n var invertAxes = options.invertAxes;\n var slotX = invertAxes ? valueSlot : categorySlot;\n var slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var count = categoriesCount(series);\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this$1$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n var currentSeries = series[seriesIx$1];\n var currentCategory = this$1$1.categoryAxis.categoryAt(categoryIx);\n var pointData = this$1$1._bindPoint(currentSeries, seriesIx$1, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx$1\n });\n }\n }\n\n for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n this$1$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n }\n },\n\n _outOfRangeCallback: function(series, field, seriesIx, callback) {\n var outOfRangePoint = series[field];\n if (outOfRangePoint) {\n var categoryIx = outOfRangePoint.categoryIx;\n var pointData = this._bindPoint(series, seriesIx, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n },\n\n _bindPoint: function(series, seriesIx, categoryIx, item) {\n if (!this._bindCache) {\n this._bindCache = [];\n }\n\n var bindCache = this._bindCache[seriesIx];\n if (!bindCache) {\n bindCache = this._bindCache[seriesIx] = [];\n }\n\n var data = bindCache[categoryIx];\n if (!data) {\n data = bindCache[categoryIx] = SeriesBinder.current.bindPoint(series, categoryIx, item);\n }\n\n return data;\n },\n\n formatPointValue: function(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n },\n\n pointValue: function(data) {\n return data.valueFields.value;\n }\n });\n\n setDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n });\n\n var PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n };\n\n var NoteMixin = {\n createNote: function() {\n var options = this.options.notes;\n var text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new dataviz.Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n };\n\n var LinePoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n },\n\n render: function() {\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n var labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n },\n\n markerBorder: function() {\n var options = this.options.markers;\n var background = options.background;\n var border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n },\n\n createVisual: function() {},\n\n createMarker: function() {\n var options = this.options.markers;\n var marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n },\n\n markerBox: function() {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var aboveAxis = ref.aboveAxis;\n var vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n var childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n var noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n var center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n },\n\n reflowLabel: function(box) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n },\n\n createHighlight: function() {\n var markers = this.options.highlight.markers;\n var defaultColor = this.markerBorder().color;\n var options = this.options.markers;\n var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n var shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n },\n\n highlightVisual: function() {\n return (this.marker || {}).visual;\n },\n\n highlightVisualArgs: function() {\n var marker = this.marker;\n var visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n var size = this.options.markers.size;\n var halfSize = size / 2;\n var center = this.box.center();\n rect = new geometry.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n },\n\n tooltipAnchor: function() {\n var markerBox = this.markerBox();\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n var x = markerBox.x2 + TOOLTIP_OFFSET;\n var horizontalAlign = LEFT;\n var y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n var markerBox = this.markerBox();\n return markerBox.overlaps(box);\n },\n\n unclipElements: function() {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n }\n });\n\n LinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: datavizConstants.HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n }\n };\n\n deepExtend(LinePoint.prototype, PointEventsMixin);\n deepExtend(LinePoint.prototype, NoteMixin);\n\n var LineSegment = ChartElement.extend({\n init: function(linePoints, series, seriesIx) {\n ChartElement.fn.init.call(this);\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n },\n\n points: function() {\n return this.toGeometryPoints(this.linePoints);\n },\n\n toGeometryPoints: function(points) {\n var result = [];\n for (var i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: function () {\n this$1$1.segmentVisual();\n\n return this$1$1.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n },\n\n segmentVisual: function() {\n var ref = this;\n var options = ref.options;\n var series = ref.series;\n var color = series.color;\n var defaults = series._defaults;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var line = Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n },\n\n aliasFor: function(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n });\n\n setDefaultOptions(LineSegment, {\n closed: false\n });\n\n var StepLineMixin = {\n calculateStepPoints: function(points) {\n var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n var ref = categoryAxis.options;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n\n var stepAxis = vertical ? X : Y;\n var axis = vertical ? Y : X;\n var stepDir = reverse ? 2 : 1;\n var dir = stepDir;\n\n var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n var result = [ previousPoint ];\n\n for (var idx = 1; idx < points.length; idx++) {\n var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n var stepPoint = new GeometryPoint();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n };\n\n function toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n var box = lintPoint.box;\n var result = new GeometryPoint();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n }\n\n var StepLineSegment = LineSegment.extend({\n points: function() {\n return this.calculateStepPoints(this.linePoints);\n }\n });\n\n deepExtend(StepLineSegment.prototype, StepLineMixin);\n\n var SplineSegment = LineSegment.extend({\n segmentVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var curveProcessor = new CurveProcessor(this.options.closed);\n var segments = curveProcessor.process(this.points());\n var curve = new Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n }\n });\n\n var LineChartMixin = {\n renderSegments: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesPoints = ref.seriesPoints;\n var series = options.series;\n var seriesCount = seriesPoints.length;\n var lastSegment;\n\n this._segments = [];\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var sortedPoints = this$1$1.sortPoints(seriesPoints[seriesIx]);\n var pointCount = sortedPoints.length;\n var linePoints = [];\n\n for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n var point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this$1$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n var missingValues = series.missingValues;\n var assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n var target = new Point(x, y);\n var allPoints = this.seriesPoints[seriesIx];\n var nearestPointDistance = MAX_VALUE;\n var nearestPoint;\n\n for (var i = 0; i < allPoints.length; i++) {\n var point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n var pointBox = point.box;\n var pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n };\n\n var ClipAnimation = Animation.extend({\n setup: function() {\n this._setEnd(this.options.box.x1);\n },\n\n step: function(pos) {\n var box = this.options.box;\n this._setEnd(dataviz.interpolateValue(box.x1, box.x2, pos));\n },\n\n _setEnd: function(x) {\n var element = this.element;\n var segments = element.segments;\n var topRight = segments[1].anchor();\n var bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n });\n\n setDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(\"clip\", ClipAnimation);\n\n function anyHasZIndex(elements) {\n for (var idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n }\n\n var ClipAnimationMixin = {\n createAnimation: function() {\n var root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n var box = root.size();\n var clipPath = Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n var points = this.animationPoints();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n };\n\n var LineChart = CategoricalChart.extend({\n render: function() {\n\n CategoricalChart.fn.render.call(this);\n\n this.updateStackRange();\n this.renderSegments();\n },\n\n pointType: function() {\n return LinePoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var missingValues = this.seriesMissingValues(series);\n var value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n plotRange: function(point) {\n var this$1$1 = this;\n\n var plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this$1$1.plotValue(other);\n\n if (this$1$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n deepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var AreaSegment = LineSegment.extend({\n init: function(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n LineSegment.fn.init.call(this, linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n },\n\n createVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var lineOptions = series.line || {};\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n },\n\n strokeSegments: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n },\n\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.points());\n },\n\n stackSegments: function() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n },\n\n segmentsFromPoints: function(points) {\n return points.map(function (point) { return new geometry.Segment(point); });\n },\n\n createStroke: function(style) {\n var stroke = new Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n },\n\n hasStackSegment: function() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n },\n\n createFill: function(style) {\n var strokeSegments = this.strokeSegments();\n var fillSegments = strokeSegments.slice(0);\n var hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n var stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n var fill = new Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n },\n\n fillToAxes: function(fillPath) {\n var chart = this.parent;\n var invertAxes = chart.options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.series);\n var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n var segments = this.strokeSegments();\n var firstPoint = segments[0].anchor();\n var lastPoint = last(segments).anchor();\n var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n }\n });\n\n var StepAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n });\n\n deepExtend(StepAreaSegment.prototype, StepLineMixin);\n\n var SplineAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n var curveProcessor = new CurveProcessor(this.options.closed);\n var linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n },\n\n createStackSegments: function() {\n var strokeSegments = this.strokeSegments();\n var stackSegments = [];\n for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n var segment = strokeSegments[idx];\n stackSegments.push(new geometry.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n });\n\n var AreaChart = LineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n\n var stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n var missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n var pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n LineChart.fn.reflow.call(this, targetBox);\n\n var stackPoints = this._stackPoints;\n if (stackPoints) {\n for (var idx = 0; idx < stackPoints.length; idx++) {\n var stackPoint = stackPoints[idx];\n var pointSlot = this$1$1.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n },\n\n _gapStackPoints: function(linePoints, seriesIx, style) {\n var this$1$1 = this;\n\n var seriesPoints = this.seriesPoints;\n var startIdx = linePoints[0].categoryIx;\n var length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n var endIdx = startIdx + length;\n var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n var stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n var pointIx = categoryIx + pointOffset;\n var currentSeriesIx = seriesIx;\n var point = (void 0);\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this$1$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this$1$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n var gapStackPoint = this$1$1._createGapStackPoint(categoryIx);\n this$1$1._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n },\n\n _previousSegmentPoint: function(categoryIx, pointIx, segmentIx, seriesIdx) {\n var seriesPoints = this.seriesPoints;\n var index = seriesIdx;\n var point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n },\n\n _createGapStackPoint: function(categoryIx) {\n var options = this.pointOptions({}, 0);\n var point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var AxisGroupRangeTracker = Class.extend({\n init: function() {\n\n this.axisRanges = {};\n },\n\n update: function(chartAxisRanges) {\n var axisRanges = this.axisRanges;\n\n for (var axisName in chartAxisRanges) {\n var chartRange = chartAxisRanges[axisName];\n var range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n },\n\n reset: function(axisName) {\n this.axisRanges[axisName] = undefined;\n },\n\n query: function(axisName) {\n return this.axisRanges[axisName];\n }\n });\n\n var BarLabel = ChartElement.extend({\n init: function(content, options, pointData) {\n ChartElement.fn.init.call(this, options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n },\n\n createVisual: function() {\n this.textBox.options.noclip = this.options.noclip;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var vertical = options.vertical;\n var aboveAxis = options.aboveAxis;\n var text = this.children[0];\n var textOptions = text.options;\n var box = text.box;\n var padding = text.options.padding;\n var labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n },\n\n alignToClipBox: function(clipBox) {\n var vertical = this.options.vertical;\n var field = vertical ? Y : X;\n var start = field + \"1\";\n var end = field + \"2\";\n var text = this.children[0];\n var parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n var targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n }\n });\n\n setDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n });\n\n function hasGradientOverlay(options) {\n var overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n }\n\n var BAR_ALIGN_MIN_WIDTH = 6;\n\n var Bar = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(targetBox);\n }\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var options = ref.options;\n var customVisual = options.visual;\n\n if (this.visible !== false) {\n ChartElement.fn.createVisual.call(this);\n\n if (customVisual) {\n var visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: function () {\n var group = new Group();\n this$1$1.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n },\n\n createRect: function(visual) {\n var options = this.options;\n var border = options.border;\n var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n var rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n var path = this.rectVisual = Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n var width = this.box.width();\n var height = this.box.height();\n\n var size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n },\n\n createHighlight: function(style) {\n var highlight = Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n getBorderColor: function() {\n var color = this.color;\n var border = this.options.border;\n var brightness = border._brightness || BORDER_BRIGHTNESS;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n },\n\n tooltipAnchor: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var aboveAxis = ref.aboveAxis;\n var clipBox = this.owner.pane.clipBox() || box;\n var horizontalAlign = LEFT;\n var verticalAlign = TOP;\n var x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n var x1 = Math.max(box.x1, clipBox.x1);\n var x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n }\n });\n\n deepExtend(Bar.prototype, PointEventsMixin);\n deepExtend(Bar.prototype, NoteMixin);\n\n Bar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n }\n };\n\n function forEach(elements, callback) {\n elements.forEach(callback);\n }\n\n function forEachReverse(elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n }\n\n var ClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(box) {\n var ref = this.options;\n var vertical = ref.vertical;\n var gap = ref.gap;\n var spacing = ref.spacing;\n var children = this.children;\n var count = children.length;\n var axis = vertical ? Y : X;\n var slots = count + gap + (spacing * (count - 1));\n var slotSize = (vertical ? box.height() : box.width()) / slots;\n var position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, function (child, idx) {\n var childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n }\n });\n\n setDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n });\n\n var StackWrap = ChartElement.extend({\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var positionAxis = this.options.vertical ? X : Y;\n var children = this.children;\n var childrenCount = children.length;\n var box = this.box = new Box();\n\n for (var i = 0; i < childrenCount; i++) {\n var currentChild = children[i];\n\n if (currentChild.visible !== false) {\n var childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this$1$1.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n });\n\n setDefaultOptions(StackWrap, {\n vertical: true\n });\n\n var BarChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n this.updateStackRange();\n },\n\n pointType: function() {\n return Bar;\n },\n\n clusterType: function() {\n return ClusterLayout;\n },\n\n stackType: function() {\n return StackWrap;\n },\n\n stackLimits: function(axisName, stackName) {\n var limits = CategoricalChart.fn.stackLimits.call(this, axisName, stackName);\n\n return limits;\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var isStacked = options.isStacked;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\n\n var color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var pointType = this.pointType();\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n var clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (isStacked) {\n var stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n },\n\n getStackWrap: function(series, cluster) {\n var stack = series.stack;\n var stackGroup = stack ? stack.group || stack : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === datavizConstants.STRING) {\n for (var i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\n }\n\n if (!stackWrap) {\n var stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n },\n\n categorySlot: function(categoryAxis, categoryIx, valueAxis) {\n var options = this.options;\n var categorySlot = categoryAxis.getSlot(categoryIx);\n var startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n var stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n createAnimation: function() {\n this._setAnimationOptions();\n CategoricalChart.fn.createAnimation.call(this);\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n },\n\n _setChildrenAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n var pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n },\n\n _setAnimationOptions: function() {\n var options = this.options;\n var animation = options.animation || {};\n var origin;\n\n if (options.isStacked) {\n var valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new GeometryPoint(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n });\n\n setDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n });\n\n var Candlestick = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n this.value = value;\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var ocSlot = valueAxis.getSlot(value.open, value.close);\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n var mid = lhSlot.center().x;\n var points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n },\n\n reflowNote: function() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n },\n\n mainVisual: function(options) {\n var group = new Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n },\n\n createBody: function(container, options) {\n var body = Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n },\n\n createLines: function(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n },\n\n drawLines: function(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n var lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (var i = 0; i < lines.length; i++) {\n var line = Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n },\n\n getBorderColor: function() {\n var border = this.options.border;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n },\n\n createOverlay: function() {\n var overlay = Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n },\n\n createHighlight: function() {\n var highlight = this.options.highlight;\n var normalColor = this.color;\n\n this.color = highlight.color || this.color;\n var overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n },\n\n highlightVisual: function() {\n return this._mainVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n },\n\n tooltipAnchor: function() {\n var box = this.box;\n var clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n }\n });\n\n setDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"
  • \" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {4:d}
    Open:{0:C}
    High:{1:C}
    Low:{2:C}
    Close:{3:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n }\n });\n\n deepExtend(Candlestick.prototype, PointEventsMixin);\n deepExtend(Candlestick.prototype, NoteMixin);\n\n function areNumbers(values) {\n return countNumbers(values) === values.length;\n }\n\n var CandlestickChart = CategoricalChart.extend({\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n },\n\n pointType: function() {\n return Candlestick;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var pointType = this.pointType();\n var value = data.valueFields;\n var pointOptions = deepExtend({}, series);\n var color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (series.type === CANDLESTICK) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n },\n\n splitValue: function(value) {\n return [ value.low, value.open, value.close, value.high ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value);\n var axisRange = this.valueAxisRanges[axisName];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n },\n\n animationPoints: function() {\n return this.points;\n }\n });\n\n deepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\n var BoxPlot = Candlestick.extend({\n init: function(value, options) {\n Candlestick.fn.init.call(this, value, options);\n\n this.createNote();\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n var medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n var meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n },\n\n reflowBoxSlot: function(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n },\n\n calcMedianPoints: function(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n },\n\n renderOutliers: function(options) {\n var this$1$1 = this;\n\n var value = this.value;\n var outliers = value.outliers || [];\n var outerFence = Math.abs(value.q3 - value.q1) * 3;\n var elements = [];\n var markers = options.markers || {};\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n var markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this$1$1.color)) {\n markersBorder.color = this$1$1.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n var shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n },\n\n reflowOutliers: function(outliers) {\n var this$1$1 = this;\n\n var valueAxis = this.owner.seriesValueAxis(this.options);\n var center = this.box.center();\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i].value;\n var markerBox = valueAxis.getSlot(outlierValue);\n\n if (this$1$1.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this$1$1.box = this$1$1.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n },\n\n mainVisual: function(options) {\n var group = Candlestick.fn.mainVisual.call(this, options);\n var outliers = this.renderOutliers(options);\n\n for (var i = 0; i < outliers.length; i++) {\n var element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n },\n\n createLines: function(container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n },\n\n getBorderColor: function() {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return Candlestick.fn.getBorderColor.call(this);\n }\n });\n\n setDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {6:d}
    Lower:{0:C}
    Q1:{1:C}
    Median:{2:C}
    Mean:{5:C}
    Q3:{3:C}
    Upper:{4:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: datavizConstants.CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n });\n\n deepExtend(BoxPlot.prototype, PointEventsMixin);\n\n var VerticalBoxPlot = BoxPlot.extend({\n reflowBoxSlot: function(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n },\n\n calcMedianPoints: function(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n });\n\n var BoxPlotChart = CandlestickChart.extend({\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n },\n\n pointType: function() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n },\n\n splitValue: function(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n },\n\n filterOutliers: function(items) {\n var length = (items || []).length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n var item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var ScatterErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axes = this.chart.seriesAxes(this.series);\n var axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n });\n\n function hasValue(value) {\n return defined(value) && value !== null;\n }\n\n var ScatterChart = ChartElement.extend({\n init: function(plotArea, options) {\n\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n addErrorBar: function(point, field, fields) {\n var value = point.value[field];\n var valueErrorField = field + \"Value\";\n var lowField = field + \"ErrorLow\";\n var highField = field + \"ErrorHigh\";\n var seriesIx = fields.seriesIx;\n var series = fields.series;\n var errorBars = point.options.errorBars;\n var lowValue = fields[lowField];\n var highValue = fields[highField];\n\n if (isNumber(value)) {\n var errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n },\n\n addPointErrorBar: function(errorRange, point, field) {\n var low = errorRange.low;\n var high = errorRange.high;\n var series = point.series;\n var options = point.options.errorBars;\n var isVertical = field === Y;\n var item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n },\n\n addValue: function(value, fields) {\n var x = value.x;\n var y = value.y;\n var seriesIx = fields.seriesIx;\n var series = this.options.series[seriesIx];\n var missingValues = this.seriesMissingValues(series);\n var seriesPoints = this.seriesPoints[seriesIx];\n\n var pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n var point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n $.extend(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues;\n },\n\n createMissingValue: function() {},\n\n updateRange: function(value, series) {\n var intlService = this.chartService.intl;\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var x = value.x;\n var y = value.y;\n var xAxisRange = this.xAxisRanges[xAxisName];\n var yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n },\n\n evalPointOptions: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\",\n \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n },\n\n pointType: function() {\n return LinePoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var seriesAxes = this$1$1.seriesAxes(fields.series);\n var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n },\n\n pointSlot: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var seriesPoints = ref.seriesPoints;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1._bindPoint(currentSeries, seriesIx, pointIx);\n var value = ref$1.valueFields;\n var fields = ref$1.fields;\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1$1\n }, fields));\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n });\n deepExtend(ScatterChart.prototype, ClipAnimationMixin, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n });\n\n var Bubble = LinePoint.extend({\n init: function(value, options) {\n LinePoint.fn.init.call(this, value, options);\n\n this.category = value.category;\n },\n\n createHighlight: function() {\n var highlight = this.options.highlight;\n var border = highlight.border;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width + border.width) / 2;\n var highlightGroup = new Group();\n var shadow = new drawing.Circle(new geometry.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n var overlay = new drawing.Circle(new geometry.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n }\n });\n\n Bubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n });\n\n Bubble.prototype.defaults.highlight.zIndex = undefined;\n\n var BubbleChart = ScatterChart.extend({\n _initFields: function() {\n this._maxSize = MIN_VALUE;\n ScatterChart.fn._initFields.call(this);\n },\n\n addValue: function(value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n ScatterChart.fn.addValue.call(this, value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n },\n\n reflow: function(box) {\n this.updateBubblesSize(box);\n ScatterChart.fn.reflow.call(this, box);\n },\n\n pointType: function() {\n return Bubble;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointsCount = series.data.length;\n var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n var animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n var color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n var pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n var point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n updateBubblesSize: function(box) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var boxSize = Math.min(box.width(), box.height());\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesPoints = this$1$1.seriesPoints[seriesIx];\n var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n var maxSize = currentSeries.maxSize || boxSize * 0.2;\n var minR = minSize / 2;\n var maxR = maxSize / 2;\n var minArea = Math.PI * minR * minR;\n var maxArea = Math.PI * maxR * maxR;\n var areaRange = maxArea - minArea;\n var areaRatio = areaRange / this$1$1._maxSize;\n\n for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n var point = seriesPoints[pointIx];\n if (point) {\n var area = Math.abs(point.value.size) * areaRatio;\n var radius = Math.sqrt((minArea + area) / Math.PI);\n var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n var zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n },\n\n createAnimation: function() {},\n\n createVisual: function() {}\n });\n\n setDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n });\n\n var Target = ShapeElement.extend({\n\n });\n\n deepExtend(Target.prototype, PointEventsMixin);\n\n var Bullet = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\n var options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createLabel();\n this.createNote();\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText, labels, pointData);\n this.append(this.label);\n }\n },\n\n reflow: function(box) {\n this.render();\n\n var ref = this;\n var options = ref.options;\n var target = ref.target;\n var chart = ref.owner;\n var invertAxes = options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.options);\n var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n var targetValueSlot = valueAxis.getSlot(this.value.target);\n var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n var targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n var label = this.label;\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(box);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n var body = Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n },\n\n createAnimation: function() {\n if (this.bodyVisual) {\n this.animation = Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n },\n\n createHighlight: function(style) {\n return Path.fromRect(this.box.toRect(), style);\n },\n\n highlightVisual: function() {\n return this.bodyVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n }\n });\n\n Bullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\n setDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n labels: {\n visible: false\n },\n tooltip: {\n format: \"Current: {0}
    Target: {1}\"\n },\n notes: {\n label: {}\n }\n });\n\n deepExtend(Bullet.prototype, PointEventsMixin);\n deepExtend(Bullet.prototype, NoteMixin);\n\n var BulletChart = CategoricalChart.extend({\n init: function(plotArea, options) {\n\n wrapData(options);\n\n CategoricalChart.fn.init.call(this, plotArea, options);\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n plotRange: function(point) {\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var value = data.valueFields;\n\n var bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n var color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(bulletOptions, value, fields);\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n var bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n },\n\n updateRange: function(value, fields) {\n var current = value.current;\n var target = value.target;\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n },\n\n pointValue: function(data) {\n return data.valueFields.current;\n },\n\n aboveAxis: function(point) {\n var value = point.value.current;\n\n return value > 0;\n },\n\n createAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n this._setAnimationOptions();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n });\n\n BulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\n setDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n });\n\n function wrapData(options) {\n var series = options.series;\n\n for (var i = 0; i < series.length; i++) {\n var seriesItem = series[i];\n var data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n }\n\n var BaseTooltip = Class.extend({\n init: function(chartService, options) {\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n },\n\n getStyle: function(options, point) {\n var background = options.background;\n var border = options.border.color;\n\n if (point) {\n var pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n var padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n },\n\n show: function(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n var style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n var background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n },\n\n hide: function() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n },\n\n destroy: function() {\n delete this.chartService;\n }\n });\n\n setDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n });\n\n var CrosshairTooltip = BaseTooltip.extend({\n init: function(chartService, crosshair, options) {\n BaseTooltip.fn.init.call(this, chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n },\n\n initAxisName: function() {\n var axis = this.crosshair.axis;\n var plotArea = axis.plotArea;\n var name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n },\n\n showAt: function(point) {\n var ref = this;\n var axis = ref.crosshair.axis;\n var options = ref.options;\n var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n var formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n },\n\n hide: function() {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n },\n\n getAnchor: function() {\n var ref = this;\n var crosshair = ref.crosshair;\n var ref_options = ref.options;\n var position = ref_options.position;\n var padding = ref_options.padding;\n var vertical = !crosshair.axis.options.vertical;\n var lineBox = crosshair.line.bbox();\n var horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n });\n\n setDefaultOptions(CrosshairTooltip, {\n padding: 10\n });\n\n var Crosshair = ChartElement.extend({\n init: function(chartService, axis, options) {\n ChartElement.fn.init.call(this, options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n var tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n },\n\n showAt: function(point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n },\n\n hide: function() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n },\n\n moveLine: function() {\n var ref = this;\n var axis = ref.axis;\n var point = ref.point;\n var vertical = axis.options.vertical;\n var box = this.getBox();\n var dim = vertical ? Y : X;\n var lineStart = new GeometryPoint(box.x1, box.y1);\n var lineEnd;\n\n if (vertical) {\n lineEnd = new GeometryPoint(box.x2, box.y1);\n } else {\n lineEnd = new GeometryPoint(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n var slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n },\n\n getBox: function() {\n var axis = this.axis;\n var axes = axis.pane.axes;\n var length = axes.length;\n var vertical = axis.options.vertical;\n var box = axis.lineBox().clone();\n var dim = vertical ? X : Y;\n var axisLineBox;\n\n for (var i = 0; i < length; i++) {\n var currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n this.line = new Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n },\n\n destroy: function() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n ChartElement.fn.destroy.call(this);\n }\n });\n\n setDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n });\n\n var ChartContainer = ChartElement.extend({\n init: function(options, pane) {\n ChartElement.fn.init.call(this, options);\n this.pane = pane;\n },\n\n shouldClip: function() {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n },\n\n _clipBox: function() {\n return this.pane.chartsBox();\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n var clipBox = this.clipBox = this._clipBox();\n var clipRect = clipBox.toRect();\n var clipPath = Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n unclipLabels: function() {\n var ref = this;\n var charts = ref.children;\n var clipBox = ref.clipBox;\n\n for (var i = 0; i < charts.length; i++) {\n var points = charts[i].points || {};\n var length = points.length;\n\n for (var j = 0; j < length; j++) {\n var point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n var label = point.label;\n var note = point.note;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n },\n\n destroy: function() {\n ChartElement.fn.destroy.call(this);\n\n delete this.parent;\n }\n });\n\n ChartContainer.prototype.isStackRoot = true;\n\n var Pane = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n },\n\n createTitle: function() {\n var titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n if (this.title) {\n this.append(this.title);\n }\n },\n\n appendAxis: function(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n },\n\n appendAxisAt: function(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n },\n\n appendChart: function(chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n },\n\n empty: function() {\n var this$1$1 = this;\n\n var plotArea = this.parent;\n\n if (plotArea) {\n for (var i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this$1$1.axes[i]);\n }\n\n for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n plotArea.removeChart(this$1$1.charts[i$1]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n },\n\n reflow: function(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n var content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n BoxElement.fn.reflow.call(this, targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n },\n\n visualStyle: function() {\n var style = BoxElement.fn.visualStyle.call(this);\n style.zIndex = -10;\n\n return style;\n },\n\n renderComplete: function() {\n if (this.options.visible) {\n this.createGridLines();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n clipRoot: function() {\n return this;\n },\n\n createGridLines: function() {\n var axes = this.axes;\n var allAxes = axes.concat(this.parent.axes);\n var vGridLines = [];\n var hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var vertical = axis.options.vertical;\n var gridLines = vertical ? vGridLines : hGridLines;\n for (var j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n var altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n },\n\n refresh: function() {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n },\n\n chartsBox: function() {\n var axes = this.axes;\n var length = axes.length;\n var chartsBox = new Box();\n\n for (var idx = 0; idx < length; idx++) {\n var axis = axes[idx];\n var axisValueField = axis.options.vertical ? Y : X;\n var lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n var allAxes = this.parent.axes;\n var length$1 = allAxes.length;\n\n for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n var axis$1 = allAxes[idx$1];\n if (!axis$1.options.vertical) {\n var lineBox$1 = axis$1.lineBox();\n chartsBox.x1 = lineBox$1.x1;\n chartsBox.x2 = lineBox$1.x2;\n }\n }\n }\n return chartsBox;\n },\n\n clipBox: function() {\n return this.chartContainer.clipBox;\n },\n\n notifyRender: function() {\n var service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n }\n });\n\n var ID = 1;\n\n function paneID() {\n return \"pane\" + ID++;\n }\n\n Pane.prototype.isStackRoot = true;\n\n setDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n });\n\n function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n }\n\n function segmentVisible(series, fields, index) {\n var visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n var pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n }\n\n function bindSegments(series) {\n var data = series.data;\n var points = [];\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < data.length; idx++) {\n var pointData = SeriesBinder.current.bindPoint(series, idx);\n var value = pointData.valueFields.value;\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n }\n\n function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n }\n\n function filterSeriesByType(series, types) {\n var result = [];\n\n var seriesTypes = [].concat(types);\n for (var idx = 0; idx < series.length; idx++) {\n var currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n var key = \"_date_\" + field;\n var value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\n }\n\n function isDateAxis(axisOptions, sampleCategory) {\n var type = axisOptions.type;\n var dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n }\n\n function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n }\n\n var AREA_REGEX = /area/i;\n\n function seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n }\n\n function hasValue$1(series, item) {\n var fields = SeriesBinder.current.bindPoint(series, null, item);\n var valueFields = fields.valueFields;\n\n for (var field in valueFields) {\n if (dataviz.convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n }\n\n function findNext(ref) {\n var start = ref.start;\n var dir = ref.dir;\n var min = ref.min;\n var max = ref.max;\n var getter$$1 = ref.getter;\n var hasItem = ref.hasItem;\n var series = ref.series;\n\n var pointHasValue, outPoint;\n var idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter$$1(idx);\n pointHasValue = hasValue$1(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n }\n\n function createOutOfRangePoints(series, range, count, getter$$1, hasItem) {\n var min = range.min;\n var max = range.max;\n var hasMinPoint = min > 0 && min < count;\n var hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n var missingValues = seriesMissingValues(series);\n var minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter$$1(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter$$1(max + 1);\n }\n } else {\n var outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter$$1(min - 1);\n pointHasValue = hasValue$1(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter$$1,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter$$1(max + 1);\n pointHasValue = hasValue$1(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter$$1,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n }\n\n var PlotAreaBase = ChartElement.extend({\n init: function(series, options, chartService) {\n ChartElement.fn.init.call(this, options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.items = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n },\n\n initFields: function() { },\n\n initSeries: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n },\n\n createPanes: function() {\n var this$1$1 = this;\n\n var titleOptions = this.options.title || {};\n var paneDefaults = this.options.paneDefaults;\n var paneOptions = this.options.panes || [];\n var panesLength = Math.max(paneOptions.length, 1);\n var panes = [];\n\n var defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (var i = 0; i < panesLength; i++) {\n var options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n var currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this$1$1.append(currentPane);\n }\n\n this.panes = panes;\n },\n\n crosshairOptions: function(axis) {\n return axis.options.crosshair;\n },\n\n createCrosshairs: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n for (var j = 0; j < pane.axes.length; j++) {\n var axis = pane.axes[j];\n var options = this$1$1.crosshairOptions(axis);\n if (options && options.visible) {\n var currentCrosshair = new Crosshair(this$1$1.chartService, axis, options);\n\n this$1$1.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n },\n\n removeCrosshairs: function(pane) {\n var crosshairs = this.crosshairs;\n var axes = pane.axes;\n\n for (var i = crosshairs.length - 1; i >= 0; i--) {\n for (var j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n },\n\n hideCrosshairs: function() {\n var crosshairs = this.crosshairs;\n for (var idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n },\n\n findPane: function(name) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n },\n\n findPointPane: function(point) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n },\n\n appendAxis: function(axis) {\n var pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n },\n\n removeAxis: function(axisToRemove) {\n var this$1$1 = this;\n\n var filteredAxes = [];\n\n for (var i = 0; i < this.axes.length; i++) {\n var axis = this$1$1.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n },\n\n appendChart: function(chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n },\n\n removeChart: function(chartToRemove) {\n var this$1$1 = this;\n\n var filteredCharts = [];\n\n for (var i = 0; i < this.charts.length; i++) {\n var chart = this$1$1.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n },\n\n addToLegend: function(series) {\n var count = series.length;\n var legend = this.options.legend;\n var labels = legend.labels || {};\n var inactiveItems = legend.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n var data = [];\n\n for (var i = 0; i < count; i++) {\n var currentSeries = series[i];\n var seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n var text = currentSeries.name;\n var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n var defaults = currentSeries._defaults;\n var color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var itemLabelOptions = (void 0), markerColor = (void 0);\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.items, data);\n },\n\n groupAxes: function(panes) {\n var xAxes = [];\n var yAxes = [];\n\n for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n var paneAxes = panes[paneIx].axes;\n for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n var axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n },\n\n groupSeriesByPane: function() {\n var this$1$1 = this;\n\n var series = this.series;\n var seriesByPane = {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var pane = this$1$1.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n },\n\n filterVisibleSeries: function(series) {\n var result = [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n },\n\n reflow: function(targetBox) {\n var options = this.options.plotArea;\n var panes = this.panes;\n var margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n },\n\n redraw: function(panes) {\n var this$1$1 = this;\n\n var panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n var root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (var i = 0; i < panesArray.length; i++) {\n this$1$1.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n panesArray[i$1].refresh();\n }\n },\n\n axisCrossingValues: function(axis, crossingAxes) {\n var options = axis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n var valuesToAdd = crossingAxes.length - crossingValues.length;\n var defaultValue = crossingValues[0] || 0;\n\n for (var i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n },\n\n alignAxisTo: function(axis, targetAxis, crossingValue, targetCrossingValue) {\n var slot = axis.getSlot(crossingValue, crossingValue, true);\n var slotEdge = axis.options.reverse ? 2 : 1;\n var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n var targetEdge = targetAxis.options.reverse ? 2 : 1;\n var axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n },\n\n alignAxes: function(xAxes, yAxes) {\n var this$1$1 = this;\n\n var xAnchor = xAxes[0];\n var yAnchor = yAxes[0];\n var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n var leftAnchors = {};\n var rightAnchors = {};\n var topAnchors = {};\n var bottomAnchors = {};\n\n for (var i = 0; i < yAxes.length; i++) {\n var axis = yAxes[i];\n var pane = axis.pane;\n var paneId = pane.id;\n var visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n var anchor = paneAnchor(xAxes, pane) || xAnchor;\n var anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this$1$1.axisCrossingValues(anchor, yAxes);\n }\n\n this$1$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this$1$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n var axis$1 = xAxes[i$1];\n var pane$1 = axis$1.pane;\n var paneId$1 = pane$1.id;\n var visible$1 = axis$1.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n var anchorCrossings$1 = yAnchorCrossings;\n if (anchor$1 !== yAnchor) {\n anchorCrossings$1 = this$1$1.axisCrossingValues(anchor$1, xAxes);\n }\n\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n if (axis$1.options._overlap) {\n continue;\n }\n\n if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis$1._mirrored) {\n axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n axis$1._mirrored = true;\n }\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(topAnchors[paneId$1].box, TOP)\n .translate(0, -axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n topAnchors[paneId$1] = axis$1;\n }\n }\n\n if (round(axis$1.lineBox().y2, datavizConstants.COORD_PRECISION) === round(anchor$1.lineBox().y2, datavizConstants.COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n .translate(0, axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n bottomAnchors[paneId$1] = axis$1;\n }\n }\n\n if (i$1 !== 0) {\n axis$1.alignTo(xAnchor);\n axis$1.reflow(axis$1.box);\n }\n }\n },\n\n shrinkAxisWidth: function(panes) {\n var axes = this.groupAxes(panes).any;\n var axisBox = axisGroupBox(axes);\n var overflowX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis = axes[i$1];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n },\n\n shrinkAxisHeight: function(panes) {\n var shrinked;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var axes = currentPane.axes;\n var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (var j = 0; j < axes.length; j++) {\n var currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n },\n\n fitAxes: function(panes) {\n var axes = this.groupAxes(panes).any;\n var offsetX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var paneAxes = currentPane.axes;\n var paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n var axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n for (var j = 0; j < paneAxes.length; j++) {\n var currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis$1 = axes[i$1];\n\n currentAxis$1.reflow(\n currentAxis$1.box.translate(offsetX, 0)\n );\n }\n },\n\n reflowAxes: function(panes) {\n var this$1$1 = this;\n\n var axes = this.groupAxes(panes);\n\n for (var i = 0; i < panes.length; i++) {\n this$1$1.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n },\n\n autoRotateAxisLabels: function(groupedAxes) {\n var this$1$1 = this;\n\n var ref = this;\n var panes = ref.panes;\n var axes = allPaneAxes(panes);\n var rotated;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n this$1$1.reflowPaneAxes(panes[idx$1]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n },\n\n reflowPaneAxes: function(pane) {\n var axes = pane.axes;\n var length = axes.length;\n\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n },\n\n reflowCharts: function(panes) {\n var charts = this.charts;\n var count = charts.length;\n var box = this.box;\n\n for (var i = 0; i < count; i++) {\n var chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n },\n\n reflowPanes: function() {\n var ref = this;\n var box = ref.box;\n var panes = ref.panes;\n var panesLength = panes.length;\n var remainingHeight = box.height();\n var remainingPanes = panesLength;\n var autoHeightPanes = 0;\n var top = box.y1;\n\n for (var i = 0; i < panesLength; i++) {\n var currentPane = panes[i];\n var height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n var percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (var i$1 = 0; i$1 < panesLength; i$1++) {\n var currentPane$1 = panes[i$1];\n\n if (!currentPane$1.options.height) {\n currentPane$1.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (var i$2 = 0; i$2 < panesLength; i$2++) {\n var currentPane$2 = panes[i$2];\n var paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane$2.reflow(paneBox);\n\n remainingPanes--;\n top += currentPane$2.options.height;\n }\n },\n\n backgroundBox: function() {\n var axes = this.axes;\n var axesCount = axes.length;\n var box;\n\n for (var i = 0; i < axesCount; i++) {\n var axisA = axes[i];\n\n for (var j = 0; j < axesCount; j++) {\n var axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n },\n\n chartsBoxes: function() {\n var panes = this.panes;\n var boxes = [];\n\n for (var idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n },\n\n addBackgroundPaths: function(multipath) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(Path.fromRect(boxes[idx].toRect()));\n }\n },\n\n backgroundContainsPoint: function(point) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options.plotArea;\n var opacity = options.opacity;\n var background = options.background;\n var border = options.border; if (border === void 0) { border = {}; }\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n var bg = this._bgVisual = new drawing.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n },\n\n pointsByCategoryIndex: function(categoryIndex) {\n var charts = this.charts;\n var result = [];\n\n if (categoryIndex !== null) {\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n },\n\n pointsBySeriesIndex: function(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n },\n\n pointsBySeriesName: function(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n },\n\n filterPoints: function(callback) {\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n },\n\n findPoint: function(callback) {\n var charts = this.charts;\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n },\n\n paneByPoint: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n },\n\n detachLabels: function() {\n var axes = this.groupAxes(this.panes);\n var xAxes = axes.x;\n var yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n },\n\n detachAxisGroupLabels: function(axes, crossingAxes) {\n var this$1$1 = this;\n\n var labelAxisCount = 0;\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var pane = axis.pane;\n var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n var axisIndex = i + labelAxisCount;\n var labelAxis = this$1$1.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n var pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n },\n\n createLabelAxis: function(axis, axisIndex, anchor) {\n var labelOptions = axis.options.labels;\n var position = labelOptions.position;\n var onAxis = position !== datavizConstants.END && position !== datavizConstants.START;\n var visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n var allAxes = this.groupAxes(this.panes);\n var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n var end = position === datavizConstants.END;\n var range = anchor.range();\n var edge = end ? range.max : range.min;\n var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n var labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n }\n });\n\n function isSingleAxis(axis) {\n return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n );\n }\n\n function axisGroupBox(axes) {\n var length = axes.length;\n var box;\n\n for (var i = 0; i < length; i++) {\n var axis = axes[i];\n var visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n }\n\n function paneAnchor(axes, pane) {\n for (var i = 0; i < axes.length; i++) {\n var anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n var allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\n setDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n });\n\n var PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n };\n\n var SeriesAggregator = Class.extend({\n init: function(series, binder, defaultAggregates) {\n\n var canonicalFields = binder.canonicalFields(series);\n var valueFields = binder.valueFields(series);\n var sourceFields = binder.sourceFields(series, canonicalFields);\n var seriesFields = this._seriesFields = [];\n var defaults = defaultAggregates.query(series.type);\n var rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (var i = 0; i < canonicalFields.length; i++) {\n var field = canonicalFields[i];\n var fieldAggregate = (void 0);\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n },\n\n aggregatePoints: function(srcPoints, group) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref._series;\n var seriesFields = ref._seriesFields;\n var data = this._bindPoints(srcPoints || []);\n var firstDataItem = data.dataItems[0];\n var result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n var fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (var i = 0; i < seriesFields.length; i++) {\n var field = seriesFields[i];\n var srcValues = this$1$1._bindField(data.values, field.canonicalName);\n var value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n },\n\n _bindPoints: function(points) {\n var ref = this;\n var binder = ref._binder;\n var series = ref._series;\n var values = [];\n var dataItems = [];\n\n for (var i = 0; i < points.length; i++) {\n var pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n },\n\n _bindField: function(data, field) {\n var values = [];\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var item = data[i];\n var valueFields = item.valueFields;\n var value = (void 0);\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n }\n });\n\n function setValue(fieldName, target, value) {\n var parentObj = target;\n var field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n var parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n }\n\n var DefaultAggregates = Class.extend({\n init: function() {\n\n this._defaults = {};\n },\n\n register: function(seriesTypes, aggregates) {\n var this$1$1 = this;\n\n for (var i = 0; i < seriesTypes.length; i++) {\n this$1$1._defaults[seriesTypes[i]] = aggregates;\n }\n },\n\n query: function(seriesType) {\n return this._defaults[seriesType];\n }\n });\n\n DefaultAggregates.current = new DefaultAggregates();\n\n var RangeBar = Bar.extend({\n createLabel: function() {\n var labels = this.options.labels;\n var fromOptions = deepExtend({}, labels, labels.from);\n var toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n },\n\n _createLabel: function(options) {\n var labelTemplate = getTemplate(options);\n var pointData = this.pointData();\n\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var ref = this;\n var labelFrom = ref.labelFrom;\n var labelTo = ref.labelTo;\n var value = ref.value;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n }\n });\n\n RangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n });\n\n var RangeBarChart = BarChart.extend({\n pointType: function() {\n return RangeBar;\n },\n\n pointValue: function(data) {\n return data.valueFields;\n },\n\n formatPointValue: function(point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n },\n\n plotRange: function(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var from = value.from;\n var to = value.to;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n },\n\n aboveAxis: function(point) {\n var value = point.value;\n return value.from < value.to;\n }\n });\n\n RangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\n var RangeLinePoint = LinePoint.extend({\n aliasFor: function() {\n return this.parent;\n }\n });\n\n var AUTO = 'auto';\n var DEFAULT_FROM_FORMAT = '{0}';\n var DEFAULT_TO_FORMAT = '{1}';\n\n var RangeAreaPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this.initLabelsFormat();\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n var value = this.value;\n\n var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var fromBox = targetBox.from;\n var toBox = targetBox.to;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n },\n\n createHighlight: function() {\n var group = new Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n },\n\n highlightVisual: function() {\n return this.visual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n },\n\n tooltipAnchor: function() {\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n var box = this.box;\n var center = box.center();\n var horizontalAlign = LEFT;\n var x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n },\n\n initLabelsFormat: function() {\n var labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = $.extend({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = $.extend({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n },\n\n positionLabels: function(fromBox, toBox) {\n var ref = this.options;\n var labels = ref.labels;\n var vertical = ref.vertical;\n\n if (labels.position === AUTO) {\n var fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n },\n\n copyFields: function(point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n }\n });\n\n deepExtend(RangeAreaPoint.prototype, PointEventsMixin);\n deepExtend(RangeAreaPoint.prototype, NoteMixin);\n\n RangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: datavizConstants.HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n }\n };\n\n var RangeAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n },\n\n createStroke: function(style) {\n var toPath = new Path(style);\n var fromPath = new Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n },\n\n hasStackSegment: function() {\n return true;\n },\n\n fromPoints: function() {\n return this.linePoints.map(function (point) { return point.fromPoint; });\n },\n\n toPoints: function() {\n return this.linePoints.map(function (point) { return point.toPoint; });\n }\n });\n\n var SplineRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.createCurveSegments(this.toPoints());\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n },\n\n createCurveSegments: function(points) {\n var curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n });\n\n var StepRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n }\n });\n\n deepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\n var RangeAreaChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n pointType: function() {\n return RangeAreaPoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n },\n\n plotRange: function(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n valueSlot: function(valueAxis, plotRange) {\n var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n },\n\n pointSlot: function(categorySlot, valueSlot) {\n var from = valueSlot.from;\n var to = valueSlot.to;\n var fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n },\n\n addValue: function(data, fields) {\n var valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n CategoricalChart.fn.addValue.call(this, data, fields);\n },\n\n updateRange: function(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n var from = value.from;\n var to = value.to;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n }\n });\n\n deepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var OHLCPoint = Candlestick.extend({\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var oPoints = [];\n var cPoints = [];\n var lhPoints = [];\n\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n var oSlot = valueAxis.getSlot(value.open, value.open);\n var cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n var mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n },\n\n createBody: function() {}\n });\n\n var OHLCChart = CandlestickChart.extend({\n pointType: function() {\n return OHLCPoint;\n }\n });\n\n var WaterfallSegment = ChartElement.extend({\n init: function(from, to, series) {\n ChartElement.fn.init.call(this);\n\n this.from = from;\n this.to = to;\n this.series = series;\n },\n\n linePoints: function() {\n var from = this.from;\n var ref = this;\n var fromBox = ref.from.box;\n var toBox = ref.to.box;\n var points = [];\n\n if (from.isVertical) {\n var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var line = this.series.line || {};\n\n var path = Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n });\n\n setDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n });\n\n var WaterfallChart = BarChart.extend({\n render: function() {\n BarChart.fn.render.call(this);\n this.createSegments();\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var totalCategories = categoriesCount(series);\n var isVertical = !this.options.invertAxes;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var total = 0;\n var runningTotal = 0;\n\n for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n var value = data.valueFields.value;\n var summary = data.fields.summary;\n var from = total;\n var to = (void 0);\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this$1$1.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n },\n\n updateRange: function(value, fields) {\n BarChart.fn.updateRange.call(this, { value: fields.to }, fields);\n },\n\n aboveAxis: function(point) {\n return point.value >= 0;\n },\n\n plotRange: function(point) {\n return [ point.from, point.to ];\n },\n\n createSegments: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n var seriesPoints = this.seriesPoints;\n var segments = this.segments = [];\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var points = seriesPoints[seriesIx];\n\n if (points) {\n var prevPoint = (void 0);\n for (var pointIx = 0; pointIx < points.length; pointIx++) {\n var point = points[pointIx];\n\n if (point && prevPoint) {\n var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this$1$1.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n });\n\n var AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\n var OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\n var CategoricalPlotArea = PlotAreaBase.extend({\n initFields: function(series) {\n var this$1$1 = this;\n\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (var i = 0; i < series.length; i++) {\n var stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this$1$1.stack100 = true;\n break;\n }\n }\n }\n\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.createCategoryAxes(panes);\n this.aggregateCategories(panes);\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n },\n\n createCharts: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n\n var visibleSeries = this$1$1.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n var groups = this$1$1.groupSeriesByCategoryAxis(visibleSeries);\n for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n this$1$1.createChartGroup(groups[groupIx], pane);\n }\n }\n },\n\n createChartGroup: function(series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n },\n\n aggregateCategories: function(panes) {\n var this$1$1 = this;\n\n var series = this.srcSeries || this.series;\n var processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var categoryAxis = this$1$1.seriesCategoryAxis(currentSeries);\n var axisPane = this$1$1.findPane(categoryAxis.options.pane);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this$1$1.aggregateSeries(currentSeries, categoryAxis);\n } else {\n currentSeries = this$1$1.filterSeries(currentSeries, categoryAxis);\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n },\n\n filterSeries: function(series, categoryAxis) {\n var dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(isNumber(categoryAxis.options.min) || isNumber(categoryAxis.options.max))) {\n return series;\n }\n\n var range = categoryAxis.currentRangeIndices();\n var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n var currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }); }, function (idx) { return defined(series.data[idx]); });\n }\n\n return currentSeries;\n },\n\n clearSeriesPointsCache: function() {\n this._seriesPointsCache = {};\n },\n\n seriesSourcePoints: function(series, categoryAxis) {\n var this$1$1 = this;\n\n var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n if (this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n var axisOptions = categoryAxis.options;\n var srcCategories = axisOptions.srcCategories;\n var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n var srcData = series.data;\n var getFn = dateAxis ? getDateField : getField;\n var result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories();//fixes major performance issue caused by searching for the index for large data\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = (void 0);\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this$1$1.chartService.intl);\n } else {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n var categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n },\n\n aggregateSeries: function(series, categoryAxis) {\n var srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n var result = deepExtend({}, series);\n var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n var data = result.data = [];\n var dataItems = categoryAxis.options.dataItems || [];\n\n var range = categoryAxis.currentRangeIndices();\n var categoryItem = function (idx) {\n var categoryIdx = idx - range.min;\n var point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n var category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (var idx = range.min; idx <= range.max; idx++) {\n var point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n },\n\n appendChart: function(chart, pane) {\n var series = chart.options.series;\n var categoryAxis = this.seriesCategoryAxis(series[0]);\n var categories = categoryAxis.options.categories;\n var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var axisName = series.axis;\n var axisOptions = [].concat(options.valueAxis);\n var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = (panes[0] || {}).name || \"default\";\n var paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesCategoryAxis: function(series) {\n var axisName = series.categoryAxis;\n var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n },\n\n stackableChartOptions: function(firstSeries, pane) {\n var stack = firstSeries.stack;\n var isStacked100 = stack && stack.type === \"100%\";\n var clip = pane.options.clip;\n\n return {\n isStacked: stack,\n isStacked100: isStacked100,\n clip: clip\n };\n },\n\n groupSeriesByCategoryAxis: function(series) {\n var categoryAxes = [];\n var unique = {};\n for (var idx = 0; idx < series.length; idx++) {\n var name = series[idx].categoryAxis || \"$$default$$\";\n if (!unique.hasOwnProperty(name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n var groups = [];\n for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n var axis = categoryAxes[axisIx];\n var axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n },\n\n createBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var barChart = new BarChart(this, $.extend({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(barChart, pane);\n },\n\n createRangeBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n },\n\n createBulletChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var lineChart = new LineChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(lineChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var areaChart = new AreaChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(areaChart, pane);\n },\n\n createRangeAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n },\n\n createOHLCChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createCandlestickChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createBoxPlotChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createWaterfallChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n },\n\n axisRequiresRounding: function(categoryAxisName, categoryAxisIndex) {\n var this$1$1 = this;\n\n var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n var currentSeries = this$1$1.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n var line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n },\n\n aggregatedAxis: function(categoryAxisName, categoryAxisIndex) {\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n },\n\n createCategoryAxesLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n },\n\n createCategoryAxes: function(panes) {\n var this$1$1 = this;\n\n var invertAxes = this.invertAxes;\n var definitions = [].concat(this.options.categoryAxis);\n var axes = [];\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var categories = axisOptions.categories; if (categories === void 0) { categories = []; }\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this$1$1.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this$1$1.isJustified();\n }\n\n if (this$1$1.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n var categoryAxis = (void 0);\n\n if (isDateAxis(axisOptions, categories[0])) {\n categoryAxis = new dataviz.DateCategoryAxis(axisOptions, this$1$1.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this$1$1.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this$1$1.namedCategoryAxes[name]) {\n throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this$1$1.appendAxis(categoryAxis);\n }\n }\n\n var primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n },\n\n isJustified: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n },\n\n createValueAxes: function(panes) {\n var this$1$1 = this;\n\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var definitions = [].concat(this.options.valueAxis);\n var invertAxes = this.invertAxes;\n var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n var axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var axisType = (void 0);\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this$1$1.chartService\n );\n\n if (name) {\n if (this$1$1.namedValueAxes[name]) {\n throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this$1$1.appendAxis(valueAxis);\n }\n }\n\n var primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var pane = this.pointPane(point);\n var categories = [];\n var values = [];\n\n if (!pane) {\n return;\n }\n\n var allAxes = pane.axes;\n for (var i = 0; i < allAxes.length; i++) {\n var axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n },\n\n pointPane: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n },\n\n updateAxisOptions: function(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n }\n });\n\n function updateAxisOptions(targetOptions, axis, options) {\n var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n }\n\n function groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n }\n\n setDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n });\n\n deepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\n var Highlight = Class.extend({\n init: function() {\n\n this._points = [];\n },\n\n destroy: function() {\n this._points = [];\n },\n\n show: function(points, opacity) {\n var this$1$1 = this;\n\n var arrayPoints = [].concat(points);\n this.hide();\n\n for (var i = 0; i < arrayPoints.length; i++) {\n var point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this$1$1.togglePointHighlight(point, true, opacity);\n this$1$1._points.push(point);\n }\n }\n },\n\n togglePointHighlight: function(point, show, opacity) {\n var toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n var eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n },\n\n hide: function() {\n var this$1$1 = this;\n\n var points = this._points;\n while (points.length) {\n this$1$1.togglePointHighlight(points.pop(), false);\n }\n },\n\n isHighlighted: function(element) {\n var points = this._points;\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n });\n\n function preventDefault() {\n this._defaultPrevented = true;\n }\n\n function acceptKey(e, mouseKey) {\n var key = (mouseKey || \"\").toLowerCase();\n var event = e.event;\n var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n }\n\n function toChartAxisRanges(axisRanges) {\n var ranges = {};\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n }\n\n var Pannable = Class.extend({\n init: function(plotArea, options) {\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n },\n\n start: function(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n },\n\n move: function(e) {\n if (this._active) {\n var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n },\n\n end: function() {\n var active = this._active;\n this._active = false;\n\n return active;\n },\n\n pan: function() {\n var ref = this;\n var plotArea = ref.plotArea;\n var axisRanges = ref.axisRanges;\n if (axisRanges.length) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.plotArea;\n },\n\n _panAxes: function(e, position) {\n var plotArea = this.plotArea;\n var delta = -e[position].delta;\n var lock = (this.options.lock || \"\").toLowerCase();\n var updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n var axes = plotArea.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n var range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n }\n });\n\n Pannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n };\n\n var ZoomSelection = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n },\n\n createElement: function() {\n var marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n var marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n },\n\n removeElement: function() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n },\n\n setStyles: function(styles) {\n elementStyles(this._marquee, styles);\n },\n\n start: function(e) {\n if (acceptKey(e, this.options.key)) {\n var chart = this.chart;\n var point = chart._eventCoordinates(e);\n var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n var offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n },\n\n _elementOffset: function() {\n var chartElement = this.chart.element;\n var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var offset = dataviz.elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n },\n\n move: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n },\n\n end: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n var elementOffset$$1 = this._elementOffset();\n var selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset$$1.left;\n selectionPosition.top -= elementOffset$$1.top;\n\n var start = { x: selectionPosition.left, y: selectionPosition.top };\n var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n },\n\n zoom: function() {\n var axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n var plotArea = this.chart._plotArea;\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n },\n\n _updateAxisRanges: function(start, end) {\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n\n var axes = this._zoomPane.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n var range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n },\n\n _selectionPosition: function(e) {\n var clipBox = this._zoomPaneClipBox;\n var startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n var pageX = e.x.location;\n var pageY = e.y.location;\n var lock = (this.options.lock || \"\").toLowerCase();\n var left = Math.min(startLocation.x, pageX);\n var top = Math.min(startLocation.y, pageY);\n var width = Math.abs(startLocation.x - pageX);\n var height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n }\n });\n\n ZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n };\n\n var ref = drawing.util;\n var limitValue$1 = ref.limitValue;\n\n // Limit the zoom rate between 1% and 90% per mousewheel event.\n // At zoom rates close to 100% the axis range quickly becomes 0.\n var MIN_RATE = 0.01;\n var MAX_RATE = 0.9;\n var DEFAULT_RATE = 0.3;\n\n var MousewheelZoom = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n },\n\n updateRanges: function(delta, coords) {\n var this$1$1 = this;\n\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n var axes = this.chart._plotArea.axes;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n var rate = limitValue$1(this$1$1.options.rate, MIN_RATE, MAX_RATE);\n var range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n },\n\n zoom: function() {\n var axisRanges = this.axisRanges;\n var plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.chart;\n }\n });\n\n var LegendLayout = ChartElement.extend({\n init: function(options, chartService) {\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n },\n\n render: function() {\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var vertical = options.vertical;\n\n this.visual = new drawing.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? \"vertical\" : \"horizontal\",\n reverse: options.rtl,\n alignItems: vertical ? \"start\" : \"center\"\n });\n\n for (var idx = 0; idx < children.length; idx++) {\n var legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n },\n\n reflow: function(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n var bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = dataviz.rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n },\n\n renderVisual: function() {\n this.addVisual();\n },\n\n createVisual: function() {}\n });\n\n var LegendItem = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n },\n\n createContainer: function() {\n this.container = new dataviz.FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n },\n\n createMarker: function() {\n this.container.append(new ShapeElement(this.markerOptions()));\n },\n\n markerOptions: function() {\n var options = this.options;\n var markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\n });\n },\n\n createLabel: function() {\n var options = this.options;\n var labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n },\n\n renderComplete: function() {\n BoxElement.fn.renderComplete.call(this);\n\n var cursor = this.options.cursor || {};\n var eventSink = this._itemOverlay = Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n },\n\n click: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n },\n\n over: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n }\n\n // Don't trigger point hover for legend items\n return true;\n },\n\n out: function(widget, e) {\n widget._unsetActivePoint();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n },\n\n eventArgs: function(e) {\n var options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n markers: this.markerOptions(),\n labels: options.labels\n },\n createVisual: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n this$1$1.renderComplete();\n\n var defaultVisual = this$1$1.visual;\n\n delete this$1$1.visual;\n\n return defaultVisual;\n }\n });\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n }\n });\n\n var HORIZONTAL = \"horizontal\";\n var POINTER = \"pointer\";\n var CUSTOM = \"custom\";\n\n var Legend = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = {}; }\n\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n },\n\n createContainers: function() {\n var options = this.options;\n var position = options.position;\n var userAlign = options.align;\n var align = position;\n var vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === \"start\") {\n align = LEFT;\n } else if (userAlign === \"end\") {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === \"start\") {\n vAlign = TOP;\n } else if (userAlign === \"end\") {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n },\n\n createItems: function() {\n var chartService = this.getService();\n var options = this.options;\n var vertical = this.isVertical();\n var innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n var items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n var count = items.length;\n\n for (var i = 0; i < count; i++) {\n var item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n },\n\n isVertical: function() {\n var ref = this.options;\n var orientation = ref.orientation;\n var position = ref.position;\n var vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n },\n\n hasItems: function() {\n return this.container.children[0].children.length > 0;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n },\n\n containerReflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var position = options.position;\n var width = options.width;\n var height = options.height;\n var pos = position === TOP || position === BOTTOM ? X : Y;\n var vertical = this.isVertical();\n var alignTarget = targetBox.clone();\n var containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n var box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n },\n\n containerCustomReflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var offsetX = options.offsetX;\n var offsetY = options.offsetY;\n var width = options.width;\n var height = options.height;\n var vertical = this.isVertical();\n var containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n },\n\n renderVisual: function() {\n if (this.hasItems()) {\n ChartElement.fn.renderVisual.call(this);\n }\n },\n\n createLegendTitle: function(title) {\n var titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n var text = titleOptions.text;\n\n if (!title || title.visible === false) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n var labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n },\n\n createTitleLayout: function() {\n this.layout = new dataviz.FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n },\n\n hasTitle: function() {\n return Boolean(this.options.title && this.options.title.visible !== false);\n },\n\n appendTitleLayoutContent: function() {\n var options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n }\n });\n\n setDefaultOptions(Legend, {\n position: RIGHT,\n items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\n }\n });\n\n var PlotAreaFactory = Class.extend({\n init: function() {\n\n this._registry = [];\n },\n\n register: function(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n },\n\n create: function(srcSeries, options, chartService) {\n var registry = this._registry;\n var match = registry[0];\n var series;\n\n for (var idx = 0; idx < registry.length; idx++) {\n var entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n\n if (series.length > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n }\n });\n\n PlotAreaFactory.current = new PlotAreaFactory();\n\n var ZOOM_ACCELERATION = 3;\n var SELECTOR_HEIGHT_ADJUST = 0.1;\n\n function createDiv(classNames) {\n var element = document.createElement(\"div\");\n if (classNames) {\n element.className = classNames;\n }\n\n return element;\n }\n\n function closestHandle(element) {\n var current = element;\n while (current && !dataviz.hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n }\n\n var Selection = Class.extend({\n init: function(chart, categoryAxis, options, observer) {\n\n var chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof dataviz.DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n },\n\n onPane: function(pane) {\n return this.categoryAxis.pane === pane;\n },\n\n createElements: function() {\n var options = this.options;\n var wrapper = this.wrapper = createDiv(\"k-selector k-pointer-events-none\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n\n var selection = this.selection = createDiv(\"k-selection k-pointer-events-none\");\n\n this.leftMask = createDiv(\"k-mask k-pointer-events-none\");\n this.rightMask = createDiv(\"k-mask k-pointer-events-none\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n var body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n selection.appendChild(body);\n\n var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle k-pointer-events-auto\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n wrapper.style.cssText = wrapper.style.cssText;\n },\n\n bindEvents: function() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n var obj;\n bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n }\n\n this._domEvents = services.DomEventsBuilder.create(this.chartElement, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n },\n\n initOptions: function() {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var box = categoryAxis.pane.chartsBox();\n var intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref$1.paddingLeft;\n var paddingTop = ref$1.paddingTop;\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n },\n\n destroy: function() {\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n var obj;\n unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n this._mousewheelHandler = null;\n }\n\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n },\n\n _rangeEventArgs: function(range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n },\n\n _pointInPane: function(x, y) {\n var paneBox = this.categoryAxis.pane.box;\n var modelCoords = this.chart._toModelCoordinates(x, y);\n return paneBox.containsPoint(modelCoords);\n },\n\n _start: function(e) {\n var options = this.options;\n var target = eventElement(e);\n if (this._state || !target) {\n return;\n }\n\n var coords = dataviz.eventCoordinates(e);\n var inPane = this._pointInPane(coords.x, coords.y);\n if (!inPane) {\n return;\n }\n\n var handle = closestHandle(target);\n var bodyRect = this.body.getBoundingClientRect();\n var inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&\n coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: handle,\n startLocation: e.x ? e.x.location : 0,\n inBody: inBody,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n var args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n },\n\n _press: function(e) {\n var handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n dataviz.addClass(handle, \"k-handle-active\");\n }\n },\n\n _move: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var target = state.moveTarget;\n var reverse = categoryAxis.options.reverse;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var delta = state.startLocation - e.x.location;\n var oldRange = { from: range.from, to: range.to };\n var span = range.to - range.from;\n var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target && !state.inBody) {\n return;\n }\n\n var leftHandle = target && dataviz.hasClasses(target, \"k-left-handle\");\n var rightHandle = target && dataviz.hasClasses(target, \"k-right-handle\");\n\n if (state.inBody) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n },\n\n _end: function() {\n if (this._state) {\n var moveTarget = this._state.moveTarget;\n if (moveTarget) {\n dataviz.removeClass(moveTarget, \"k-handle-active\");\n }\n\n var range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n },\n\n _tap: function(e) {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var coords = this.chart._eventCoordinates(e);\n var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var span = to - from;\n var mid = from + span / 2;\n var range = {};\n var rightClick = e.event.which === 3;\n var offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n },\n\n _mousewheel: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n\n this._start(e);\n\n if (this._state) {\n var range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1._end();\n }, MOUSEWHEEL_DELAY);\n }\n },\n\n _gesturestart: function(e) {\n var options = this.options;\n var touch = e.touches[0];\n var inPane = this._pointInPane(touch.pageX, touch.pageY);\n\n if (!inPane) {\n return;\n }\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n var args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n },\n\n _gestureend: function() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n },\n\n _gesturechange: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var chart = ref.chart;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n var left = Math.min(p0, p1);\n var right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n },\n\n _index: function(value) {\n var index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n },\n\n _value: function(index) {\n var value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n },\n\n _slot: function(value) {\n var categoryAxis = this.categoryAxis;\n var index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n },\n\n move: function(from, to) {\n var options = this.options;\n var reverse = this.categoryAxis.options.reverse;\n var offset = options.offset;\n var padding = options.padding;\n var border = options.selection.border;\n var left = reverse ? to : from;\n var right = reverse ? from : to;\n var edge = 'x' + (reverse ? 2 : 1);\n\n var box = this._slot(left);\n var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n var distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n },\n\n set: function(from, to) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var fromValue = limitValue(this._index(from), min, max);\n var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n },\n\n expand: function(delta) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var zDir = options.mousewheel.zoom;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n },\n\n zoom: function(delta, coords) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n var ref = this.categoryAxis.options;\n var reverse = ref.reverse;\n var origin = X + (reverse ? '2' : '1');\n var lineBox = this.categoryAxis.lineBox();\n var relative = Math.abs(lineBox[origin] - coords[X]);\n var size = lineBox.width();\n var position = round(relative / size, 2);\n var minDelta = round(position * delta);\n var maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n },\n\n trigger: function(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n });\n\n setDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n });\n\n var Tooltip = BaseTooltip.extend({\n show: function(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n var options = deepExtend({}, this.options, point.options.tooltip);\n var anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n BaseTooltip.fn.show.call(this, {\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n },\n\n hide: function() {\n delete this._current;\n BaseTooltip.fn.hide.call(this);\n }\n });\n\n var SharedTooltip = BaseTooltip.extend({\n init: function(plotArea, options) {\n BaseTooltip.fn.init.call(this, plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n },\n\n showAt: function(points, coords) {\n var tooltipPoints = grep(points, function(point) {\n var tooltip = point.series.tooltip;\n var excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n var point = tooltipPoints[0];\n var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n },\n\n _slotAnchor: function(point, slot) {\n var axis = this.plotArea.categoryAxis;\n var align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n },\n\n _defaultAnchor: function(point, slot) {\n var box = point.owner.pane.chartsBox();\n var vertical = this.plotArea.categoryAxis.options.vertical;\n var center = box.center();\n var slotCenter = slot.center();\n var align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n var centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n }\n });\n\n setDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n });\n\n var BarChartAnimation = Animation.extend({\n setup: function() {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n var axis = options.vertical ? Y : X;\n\n var fromScale = this.fromScale = new GeometryPoint(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n },\n\n step: function(pos) {\n var scaleX = dataviz.interpolateValue(this.fromScale.x, 1, pos);\n var scaleY = dataviz.interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(transform()\n .scale(scaleX, scaleY, this.origin)\n );\n },\n\n abort: function() {\n Animation.fn.abort.call(this);\n this.element.transform(null);\n }\n });\n\n setDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(BAR, BarChartAnimation);\n\n var BubbleAnimation = Animation.extend({\n setup: function() {\n var center = this.center = this.element.bbox().center();\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.center)\n );\n }\n });\n\n setDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n });\n\n AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\n var FadeInAnimation = Animation.extend({\n setup: function() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n },\n\n step: function(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n });\n\n setDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n });\n\n AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\n var PieAnimation = Animation.extend({\n setup: function() {\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.options.center)\n );\n }\n });\n\n setDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(PIE, PieAnimation);\n\n var ScatterLineChart = ScatterChart.extend({\n render: function() {\n ScatterChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n },\n\n animationPoints: function() {\n var points = ScatterChart.fn.animationPoints.call(this);\n return points.concat(this._segments);\n },\n\n createMissingValue: function(value, missingValues) {\n if (missingValues === ZERO) {\n var missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n }\n });\n\n deepExtend(ScatterLineChart.prototype, LineChartMixin);\n\n var XYPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this$1$1.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this$1$1.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n },\n\n appendChart: function(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n createScatterChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createScatterLineChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createBubbleChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createXYAxis: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n var defaultRange = tracker.query();\n var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n var typeSamples = [ axisOptions.min, axisOptions.max ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateValueAxis;\n } else if (isLog) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n },\n\n createAxes: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n var currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n },\n\n updateAxisOptions: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$1(this.options, index, vertical, options);\n updateAxisOptions$1(this.originalOptions, index, vertical, options);\n }\n });\n\n function updateAxisOptions$1(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\n var PieSegment = ChartElement.extend({\n init: function(value, sector, options) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.sector = sector;\n },\n\n render: function() {\n var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = dataviz.autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n var themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), pointData);\n\n this.append(this.label);\n }\n },\n\n reflow: function(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n },\n\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var labelsDistance = labelsOptions.distance;\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n var labelWidth = label.box.width();\n var lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n var x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n\n ChartElement.fn.createVisual.call(this);\n\n if (this.value) {\n if (options.visual) {\n var startAngle = (sector.startAngle + 180) % 360;\n var visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new GeometryPoint(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: function () {\n var group = new Group();\n this$1$1.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n },\n\n createSegmentVisual: function(group) {\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n var borderOptions = options.border || {};\n var border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n var color = options.color;\n var fill = {\n color: color,\n opacity: options.opacity\n };\n var visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n },\n\n createSegment: function(sector, options) {\n if (options.singleSegment) {\n return new drawing.Circle(new geometry.Circle(new GeometryPoint(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n },\n\n createAnimation: function() {\n var ref = this;\n var options = ref.options;\n var center = ref.sector.center;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n ChartElement.fn.createAnimation.call(this);\n },\n\n createHighlight: function(options) {\n var highlight = this.options.highlight || {};\n var border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n },\n\n highlightVisual: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new GeometryPoint(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n },\n\n tooltipAnchor: function() {\n var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n }\n });\n\n var RAD_30 = round(dataviz.rad(30), DEFAULT_PRECISION);\n var RAD_60 = round(dataviz.rad(60), DEFAULT_PRECISION);\n\n function tooltipAlignment(angle) {\n var radians = dataviz.rad(angle);\n var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n var horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n var vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n }\n\n setDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: datavizConstants.DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true\n });\n\n deepExtend(PieSegment.prototype, PointEventsMixin);\n\n var PieChartMixin = {\n createLegendItem: function(value, point, options) {\n var legendOptions = this.options.legend || {};\n var labelsOptions = legendOptions.labels || {};\n var inactiveItems = legendOptions.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n var pointVisible = options.visible !== false;\n var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n var text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n var itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n };\n\n var PIE_SECTOR_ANIM_DELAY = 70;\n\n var PieChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var colorsCount = seriesColors.length;\n var series = options.series;\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var data = currentSeries.data;\n var ref$1 = bindSegments(currentSeries);\n var total = ref$1.total;\n var points = ref$1.points;\n var count = ref$1.count;\n var anglePerValue = 360 / total;\n var constantAngle = (void 0);\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n var currentAngle = (void 0);\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n var value = pointData.value;\n var visible = pointData.visible;\n var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n var explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new dataviz.Ring(null, 0, 0, currentAngle, angle), {\n owner: this$1$1,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this$1$1.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n },\n\n addValue: function(value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new PieSegment(value, sector, segmentOptions);\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var points = ref.points;\n var seriesConfigs = ref.seriesConfigs; if (seriesConfigs === void 0) { seriesConfigs = []; }\n var count = points.length;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n var newBoxCenter = newBox.center();\n var boxCenter = box.center();\n var seriesCount = options.series.length;\n var leftSideLabels = [];\n var rightSideLabels = [];\n var padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n var radius = halfMinWidth - padding;\n var center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n var seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n var label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n },\n\n leftLabelsReflow: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n rightLabelsReflow: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n distanceBetweenLabels: function(labels) {\n var segment = last(this.points);\n var sector = segment.sector;\n var count = labels.length - 1;\n var lr = sector.radius + segment.options.labels.distance;\n var distances = [];\n var firstBox = labels[0].box;\n var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (var i = 0; i < count; i++) {\n var secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n },\n\n distributeLabels: function(distances, labels) {\n var this$1$1 = this;\n\n var count = distances.length;\n var left, right, remaining;\n\n for (var i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this$1$1._takeDistance(distances, i, --left, remaining);\n remaining = this$1$1._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n },\n\n _takeDistance: function(distances, anchor, position, amount) {\n var result = amount;\n if (distances[position] > 0) {\n var available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n },\n\n reflowLabels: function(distances, labels) {\n var this$1$1 = this;\n\n var segment = last(this.points);\n var sector = segment.sector;\n var labelOptions = segment.options.labels;\n var labelsCount = labels.length;\n var labelDistance = labelOptions.distance;\n var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n var boxX;\n\n distances[0] += 2;\n for (var i = 0; i < labelsCount; i++) {\n var label = labels[i];\n var box = label.box;\n\n boxY += distances[i];\n boxX = this$1$1.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var connectors = ref.options.connectors;\n var points = ref.points;\n var count = points.length;\n var space = 4;\n\n ChartElement.fn.createVisual.call(this);\n\n this._connectorLines = [];\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var label = segment.label;\n var angle = sector.middle();\n var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n var connectorLine = new Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n var box = label.box;\n var centerPoint = sector.center;\n var start = sector.point(angle);\n var middle = new Point(box.x1, box.center().y);\n var sr = (void 0), end = (void 0), crossing = (void 0);\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this$1$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this$1$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this$1$1._connectorLines.push(connectorLine);\n this$1$1.visual.append(connectorLine);\n }\n }\n }\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n if (dataviz.find(this.options.series, function (options) { return options.autoFit; })) {\n var targetBox = this.targetBox;\n var pieCenter = this.box.center();\n var bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n var bboxBottom = bbox.bottomRight();\n\n var scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n },\n\n labelComparator: function(reverse) {\n var reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n var first = (a.parent.sector.middle() + 270) % 360;\n var second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n },\n\n hAlignLabel: function(originalX, sector, y1, y2, direction) {\n var radius = sector.radius;\n var sector_center = sector.center;\n var cx = sector_center.x;\n var cy = sector_center.y;\n var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n },\n\n pointInCircle: function(point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format, point.value);\n },\n\n animationDelay: function(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n },\n\n stackRoot: function() {\n return this;\n }\n });\n\n function intersection(a1, a2, b1, b2) {\n var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n var result;\n if (ub !== 0) {\n var ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n }\n\n setDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n });\n\n deepExtend(PieChart.prototype, PieChartMixin);\n\n PieChart.prototype.isStackRoot = true;\n\n var PiePlotArea = PlotAreaBase.extend({\n render: function() {\n this.createPieChart(this.series);\n },\n\n createPieChart: function(series) {\n var firstSeries = series[0];\n var pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n },\n\n appendChart: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n });\n\n var DonutSegment = PieSegment.extend({\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n var lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n PieSegment.fn.reflowLabel.call(this);\n }\n }\n },\n\n createSegment: function(sector, options) {\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n }\n });\n\n setDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n });\n\n deepExtend(DonutSegment.prototype, PointEventsMixin);\n\n var DONUT_SECTOR_ANIM_DELAY = 50;\n\n var DonutChart = PieChart.extend({\n addValue: function(value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new DonutSegment(value, sector, segmentOptions);\n\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var series = options.series;\n var seriesCount = series.length;\n\n var padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n var totalSize = halfMinWidth - padding;\n var seriesWithoutSize = 0;\n var holeSize;\n\n for (var i = 0; i < seriesCount; i++) {\n var currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n var innerRadius = holeSize;\n var margin = 0;\n var size, radius;\n\n this.seriesConfigs = [];\n\n for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n var currentSeries$1 = series[i$1];\n size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this$1$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries$1.margin || 0;\n innerRadius = radius;\n }\n\n PieChart.fn.reflow.call(this, targetBox);\n },\n\n animationDelay: function(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n });\n\n setDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n });\n\n var DonutPlotArea = PiePlotArea.extend({\n render: function() {\n this.createDonutChart(this.series);\n },\n\n createDonutChart: function(series) {\n var firstSeries = series[0];\n var donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n }\n });\n\n var DEFAULT_PADDING = 0.15;\n\n var PolarPlotAreaBase = PlotAreaBase.extend({\n initFields: function() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n },\n\n alignAxes: function() {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).center;\n var axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n },\n\n createValueAxis: function() {\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n var axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = dataviz.RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = dataviz.RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n },\n\n reflowAxes: function() {\n var ref = this;\n var options = ref.options.plotArea;\n var valueAxis = ref.valueAxis;\n var polarAxis = ref.polarAxis;\n var box = ref.box;\n var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n var padding = getSpacing(options.padding || {}, defaultPadding);\n var paddingBox = box.clone().unpad(padding);\n var axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n },\n\n backgroundBox: function() {\n return this.box;\n },\n\n detachLabels: function() {}\n });\n\n var PolarScatterChart = ScatterChart.extend({\n pointSlot: function(slotX, slotY) {\n var valueRadius = slotX.center.y - slotY.y1;\n var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n });\n\n setDefaultOptions(PolarScatterChart, {\n clip: false\n });\n\n var PolarLineChart = ScatterLineChart.extend({\n\n });\n\n PolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\n setDefaultOptions(PolarLineChart, {\n clip: false\n });\n\n var SplinePolarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function(fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n },\n\n _polarAxisCenter: function() {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n return center;\n },\n\n strokeSegments: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n var center = this._polarAxisCenter();\n var curveProcessor = new CurveProcessor(false);\n var linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n }\n });\n\n var PolarAreaSegment = AreaSegment.extend({\n fillToAxes: function(fillPath) {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n var centerSegment = new geometry.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n });\n\n var PolarAreaChart = PolarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n },\n\n createMissingValue: function(value, missingValues) {\n var missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n },\n\n _hasMissingValuesGap: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n\n for (var idx = 0; idx < series.length; idx++) {\n if (this$1$1.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n },\n\n sortPoints: function(points) {\n var this$1$1 = this;\n\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n var value = point.value;\n if (!hasValue(value.y) && this$1$1.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n });\n\n function xComparer(a, b) {\n return a.value.x - b.value.x;\n }\n\n var PolarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var polarAxis = new dataviz.PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n },\n\n valueAxisOptions: function(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n },\n\n createValueAxis: function() {\n PolarPlotAreaBase.fn.createValueAxis.call(this);\n this.axisY = this.valueAxis;\n },\n\n appendChart: function(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n },\n\n createCharts: function() {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n },\n\n createScatterChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var xValue = this.axisX.getValue(point);\n var yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n },\n\n createCrosshairs: function() {}\n });\n\n setDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin);\n\n function groupBySeriesIx(segments) {\n var seriesSegments = [];\n for (var idx = 0; idx < segments.length; idx++) {\n var segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n }\n\n var RadarLineChart = LineChart.extend({\n pointSlot: function(categorySlot, valueSlot) {\n var valueRadius = categorySlot.center.y - valueSlot.y1;\n var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n },\n\n renderSegments: function() {\n LineChart.fn.renderSegments.call(this);\n\n if (this._segments && this._segments.length > 1) {\n var seriesSegments = groupBySeriesIx(this._segments);\n\n for (var idx = 0; idx < seriesSegments.length; idx++) {\n var segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n var firstPoint = segments[0].linePoints[0];\n var lastSegment = last(segments);\n var lastPoint = last(lastSegment.linePoints);\n var isFirstDataPoint = firstPoint.categoryIx === 0;\n var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n var segment = new pointType(linePoints, currentSeries, seriesIx);\n var missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n }\n });\n\n setDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n });\n\n var SplineRadarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaSegment = AreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaChart = RadarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n var stackPoints;\n var segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n }\n });\n\n var RadarSegment = DonutSegment.extend({\n init: function(value, options) {\n DonutSegment.fn.init.call(this, value, null, options);\n }\n });\n\n setDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n });\n\n var RadarClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(sector) {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var gap = options.gap;\n var spacing = options.spacing;\n var count = children.length;\n var slots = count + gap + (spacing * (count - 1));\n var slotAngle = sector.angle / slots;\n var angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, function (child) {\n var slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n }\n });\n\n setDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n });\n\n var RadarStackLayout = ChartElement.extend({\n reflow: function(sector) {\n var ref = this;\n var reverse = ref.options.reverse;\n var children = ref.children;\n var childrenCount = children.length;\n var first = reverse ? childrenCount - 1 : 0;\n var step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (var i = first; i >= 0 && i < childrenCount; i += step) {\n var childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n });\n\n var RadarBarChart = BarChart.extend({\n pointType: function() {\n return RadarSegment;\n },\n\n clusterType: function() {\n return RadarClusterLayout;\n },\n\n stackType: function() {\n return RadarStackLayout;\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n pointSlot: function(categorySlot, valueSlot) {\n var slot = categorySlot.clone();\n var y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n },\n\n reflowPoint: function(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n },\n\n createAnimation: function() {\n this.options.animation.center = this.box.toRect().center();\n BarChart.fn.createAnimation.call(this);\n }\n });\n\n RadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\n setDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n });\n\n var RadarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var categoryAxis = new dataviz.RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createCategoryAxesLabels();\n },\n\n valueAxisOptions: function(defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n },\n\n aggregateCategories: function() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n },\n\n createCategoryAxesLabels: function() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n },\n\n filterSeries: function(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n },\n\n createCharts: function() {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n },\n\n chartOptions: function(series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n },\n\n createBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n },\n\n seriesCategoryAxis: function() {\n return this.categoryAxis;\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var category = this.categoryAxis.getCategory(point);\n var value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n },\n\n createCrosshairs: function() {}\n });\n\n deepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints\n });\n\n setDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n });\n\n var FunnelSegment = ChartElement.extend({\n init: function(value, options, segmentOptions) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n },\n\n reflow: function(chartBox) {\n var points = this.points;\n var label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var visual;\n\n ChartElement.fn.createVisual.call(this);\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: function () { return this$1$1.createPath(); }\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n },\n\n createPath: function() {\n var options = this.options;\n var border = options.border;\n var path = Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n },\n\n createHighlight: function(style) {\n return Path.fromPoints(this.points, style);\n },\n\n highlightVisual: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var path = Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n },\n\n tooltipAnchor: function() {\n var box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n },\n\n formatValue: function(format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n }\n });\n\n setDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n });\n\n deepExtend(FunnelSegment.prototype, PointEventsMixin);\n\n var FunnelChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format,point.value);\n },\n\n render: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var series = options.series[0];\n var data = series.data;\n\n if (!data) {\n return;\n }\n\n var ref$1 = bindSegments(series);\n var total = ref$1.total;\n var points = ref$1.points;\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this$1$1,\n series: series,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n var value = pointData.valueFields.value;\n var segment = this$1$1.createSegment(value, fields);\n var label = this$1$1.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n },\n\n createSegment: function(value, fields) {\n var seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n var segment = new FunnelSegment(value, seriesOptions, fields);\n $.extend(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n },\n\n createLabel: function(value, fields) {\n var series = fields.series;\n var dataItem = fields.dataItem;\n var labels = deepExtend({}, this.options.labels, series.labels);\n var text = value;\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.plotArea.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = dataviz.autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n var textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n },\n\n labelPadding: function() {\n var labels = this.labels;\n var padding = { left: 0, right: 0 };\n\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n var align = label.options.align;\n if (align !== CENTER) {\n var width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n },\n\n dynamicSlopeReflow: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var firstSegment = segments[0];\n var maxSegment = firstSegment;\n\n for (var idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n var previousOffset = (width - lastUpperSide) / 2;\n var previousHeight = 0;\n\n for (var idx$1 = 0; idx$1 < count; idx$1++) {\n var percentage = segments[idx$1].percentage;\n var nextSegment = segments[idx$1 + 1];\n var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n var points = segments[idx$1].points = [];\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n var offset = (void 0);\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n },\n\n constantSlopeReflow: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var decreasingWidth = options.neckRatio <= 1;\n var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n var finalNarrow = (topMostWidth - neckRatio) / 2;\n var previousHeight = 0;\n\n for (var idx = 0; idx < count; idx++) {\n var points = segments[idx].points = [];\n var percentage = segments[idx].percentage;\n var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n },\n\n reflow: function(chartBox) {\n var points = this.points;\n var count = points.length;\n\n if (!count) {\n return;\n }\n\n var options = this.options;\n var box = chartBox.clone().unpad(this.labelPadding());\n var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n var width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (var idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n });\n\n setDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n });\n\n deepExtend(FunnelChart.prototype, PieChartMixin);\n\n var MAX_NECK_RATIO = 1e6;\n\n var PyramidChart = FunnelChart.extend({\n init: function(plotArea, options) {\n options.dynamicSlope = false;\n options.neckRatio = MAX_NECK_RATIO;\n\n FunnelChart.fn.init.call(this, plotArea, options);\n }\n });\n\n var FunnelPlotArea = PlotAreaBase.extend({\n render: function() {\n this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n },\n\n createChart: function(chartType, series) {\n var firstSeries = series[0];\n if (!firstSeries) {\n return;\n }\n\n var chart = new chartType(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(chart);\n },\n\n appendChart: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n });\n\n // Linear color scale from the given color to white minus minimum lightness offset.\n var colorScale = function (color, minLightnessOffset) {\n if (minLightnessOffset === void 0) { minLightnessOffset = 0.05; }\n\n var baseColor = kendo.parseColor(color);\n var offset = 1 - minLightnessOffset;\n\n return function (value) {\n var hsl = baseColor.toHSL();\n var range = 100 - hsl.l;\n var point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n };\n\n var HeatmapPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n var labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = dataviz.autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n },\n\n markerBox: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var rect = this.box.toRect();\n var type = valueOrDefault(markers.type, 'rect');\n var isRoundRect = type === datavizConstants.ROUNDED_RECT;\n var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n var halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n var center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return dataviz.rectToBox(rect);\n },\n\n markerBorder: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n },\n\n createMarker: function() {\n var options = this.options;\n var markerOptions = options.markers;\n var marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n },\n\n createHighlight: function(style) {\n var options = this.options;\n var markerOptions = this.options.highlight.markers || this.options.markers;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n var visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n tooltipAnchor: function() {\n var left = this.box.center().x;\n var top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n /* noop, clip labels */\n },\n\n pointData: function() {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n }\n });\n\n deepExtend(HeatmapPoint.prototype, PointEventsMixin);\n deepExtend(HeatmapPoint.prototype, NoteMixin);\n\n HeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n }\n };\n\n var HeatmapChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n },\n\n render: function() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n setRange: function() {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1._bindPoint(currentSeries, seriesIx, pointIx);\n var valueFields = ref$1.valueFields;\n if (defined(valueFields.value) && valueFields.value !== null) {\n this$1$1.valueRange.min = Math.min(this$1$1.valueRange.min, valueFields.value);\n this$1$1.valueRange.max = Math.max(this$1$1.valueRange.max, valueFields.value);\n }\n }\n }\n },\n\n addValue: function(value, fields) {\n var point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n $.extend(point, fields);\n }\n }\n\n this.points.push(point);\n },\n\n evalPointOptions: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n },\n\n pointType: function() {\n return HeatmapPoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n var scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n var point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var ref = this$1$1.seriesAxes(fields.series);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n var indexX = xAxis.categoryIndex(value.x);\n var indexY = yAxis.categoryIndex(value.y);\n var slotX = xAxis.getSlot(indexX, indexX, limit);\n var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n },\n\n pointSlot: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var ref$1 = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref$1.xAxis;\n var yAxis = ref$1.yAxis;\n var xRange = xAxis.currentRangeIndices();\n var yRange = yAxis.currentRangeIndices();\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$2 = this$1$1._bindPoint(currentSeries, seriesIx, pointIx);\n var value = ref$2.valueFields;\n var fields = ref$2.fields;\n var xIndex = xAxis.totalIndex(value.x);\n var yIndex = yAxis.totalIndex(value.y);\n var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n var yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1$1\n }, fields));\n }\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n });\n deepExtend(HeatmapChart.prototype, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n });\n\n var HeatmapPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var series = this.srcSeries || this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var data = currentSeries.data || [];\n var ref = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n\n var xCategories = dataviz.createHashSet(xAxis.categories || []);\n var yCategories = dataviz.createHashSet(yAxis.categories || []);\n\n for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n var x = ref$1.x;\n var y = ref$1.y;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n },\n\n createCharts: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n },\n\n createHeatmapChart: function(series, pane) {\n var chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesAxes: function(series) {\n var xAxis;\n var yAxis;\n\n var options = this.options;\n\n var xAxisOptions = [].concat(options.xAxis);\n var xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n } else {\n xAxis = xAxisOptions[0];\n }\n\n var yAxisOptions = [].concat(options.yAxis);\n var yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(function (axis) { return axis.name === yAxisName; });\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n },\n\n createAxisLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n },\n\n createXYAxis: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var axisOptions = $.extend({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n var axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.mapCategories();\n\n return axis;\n },\n\n createAxes: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n },\n\n updateAxisOptions: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$2(this.options, index, vertical, options);\n updateAxisOptions$2(this.originalOptions, index, vertical, options);\n },\n\n crosshairOptions: function(axis) {\n // Stack the crosshair above the series points.\n return $.extend({}, axis.options.crosshair, { zIndex: 0 });\n }\n });\n\n function updateAxisOptions$2(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\n var COLOR = \"color\";\n var FIRST = \"first\";\n var FROM = \"from\";\n var MAX = \"max\";\n var MIN = \"min\";\n var NOTE_TEXT = \"noteText\";\n var SUMMARY_FIELD = \"summary\";\n var TO = \"to\";\n\n PlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA\n ]);\n\n PlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE\n ]);\n\n PlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\n PlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\n PlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\n PlotAreaFactory.current.register(PolarPlotArea, [ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ]);\n PlotAreaFactory.current.register(RadarPlotArea, [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ]);\n\n PlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\n SeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD ]);\n SeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR, DRILLDOWN_FIELD ]);\n\n SeriesBinder.current.register(\n [ FUNNEL, PYRAMID ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n );\n\n DefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n );\n\n DefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n );\n\n SeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n );\n\n DefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n var AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\n var MOUSEMOVE = \"mousemove\";\n var CONTEXTMENU = \"contextmenu\";\n var MOUSELEAVE = \"mouseleave\";\n var MOUSEMOVE_DELAY = 20;\n\n var Chart = Class.extend({\n init: function(element, userOptions, themeOptions, context) {\n var this$1$1 = this;\n if (context === void 0) { context = {}; }\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new services.ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n var options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n dataviz.FontLoader.preloadFonts(userOptions, function () {\n this$1$1.fontLoaded = true;\n if (!this$1$1._destroyed) {\n this$1$1.trigger('init');\n this$1$1._redraw();\n this$1$1._attachEvents();\n }\n });\n },\n\n _initElement: function(element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n },\n\n _setElementClass: function(element) {\n dataviz.addClass(element, \"k-chart\");\n },\n\n _initTheme: function(options, themeOptions) {\n var seriesCopies = [];\n var series = options.series || [];\n\n for (var i = 0; i < series.length; i++) {\n seriesCopies.push($.extend({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n },\n\n getSize: function() {\n var chartArea = this.options.chartArea || {};\n var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n },\n\n resize: function(force) {\n var size = this.getSize();\n var currentSize = this._size;\n var hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && dataviz.find(this._selections, function (s) { return !s.visible; })) {\n this._destroySelections();\n this._setupSelection();\n }\n },\n\n _resize: function() {\n this._noTransitionsRedraw();\n },\n\n redraw: function(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n },\n\n getAxis: function(name) {\n return findAxisByName(name, this._plotArea.axes);\n },\n\n findAxisByName: function(name) {\n return this.getAxis(name);\n },\n\n findPaneByName: function(name) {\n var panes = this._plotArea.panes;\n\n for (var idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n },\n\n findPaneByIndex: function(idx) {\n var panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n },\n\n plotArea: function() {\n return new ChartPlotArea(this._plotArea);\n },\n\n toggleHighlight: function(show, filter) {\n var plotArea = this._plotArea;\n var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n var points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n var seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (inArray(firstSeries.type, [ PIE, FUNNEL, PYRAMID ])) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n },\n\n togglePointsHighlight: function(show, points) {\n var highlight = this._highlight;\n for (var idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n },\n\n showTooltip: function(filter) {\n var shared = this._sharedTooltip();\n var ref = this;\n var tooltip = ref._tooltip;\n var plotArea = ref._plotArea;\n var point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n },\n\n hideTooltip: function() {\n this._tooltip.hide();\n },\n\n _initSurface: function() {\n var surface = this.surface;\n var wrap = this._surfaceWrap();\n\n var chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n dataviz.elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n dataviz.elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = drawing.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n },\n\n _surfaceWrap: function() {\n return this.element;\n },\n\n _redraw: function() {\n var model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._model = model;\n this._plotArea = model._plotArea;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n },\n\n exportVisual: function(exportOptions) {\n var visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n var currentOptions = this.options;\n var options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n var model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n },\n\n _sharedTooltip: function() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n },\n\n _createPannable: function() {\n var options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n },\n\n _createZoomSelection: function() {\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n },\n\n _createMousewheelZoom: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n },\n\n _toggleDragZoomEvents: function() {\n var pannable = this.options.pannable;\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n var mousewheel = (zoomable || {}).mousewheel;\n var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n var element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n },\n\n _toggleDomEvents: function(drag, zoom) {\n var domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n },\n\n _createTooltip: function() {\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n },\n\n _createSharedTooltip: function(options) {\n return new SharedTooltip(this._plotArea, options);\n },\n\n applyDefaults: function(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n },\n\n applySeriesColors: function() {\n var options = this.options;\n var series = options.series;\n var colors = options.seriesColors || [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var seriesColor = colors[i % colors.length];\n var defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n },\n\n _getModel: function() {\n var options = this.options;\n var plotArea = this._createPlotArea();\n var model = new dataviz.RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n var title = Title.buildTitle(options.title);\n var subtitle = Title.buildTitle(options.subtitle, {\n align: options.title.align,\n position: options.title.position\n });\n model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n if (options.legend && options.legend.visible) {\n model.append(new Legend(plotArea.options.legend, this.chartService));\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n },\n\n _modelOptions: function() {\n var options = this.options;\n var size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || datavizConstants.DEFAULT_WIDTH,\n height: size.height || datavizConstants.DEFAULT_HEIGHT\n }, options.chartArea);\n },\n\n _createPlotArea: function(skipSeries) {\n var options = this.options;\n\n var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n },\n\n _setupSelection: function() {\n var this$1$1 = this;\n\n var ref = this;\n var axes = ref._plotArea.axes;\n var selections = this._selections = [];\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n var range = axis.range();\n\n var selection = new Selection(this$1$1, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n },\n\n _selectStart: function(e) {\n return this.trigger(SELECT_START, e);\n },\n\n _select: function(e) {\n return this.trigger(SELECT, e);\n },\n\n _selectEnd: function(e) {\n return this.trigger(SELECT_END, e);\n },\n\n _initHandlers: function() {\n this._clickHandler = this._click.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = kendo.throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n },\n\n addObserver: function(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n },\n\n removeObserver: function(observer) {\n var index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n },\n\n requiresHandlers: function(eventNames) {\n var observers = this.observers;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n },\n\n trigger: function(name, args) {\n if (args === void 0) { args = {}; }\n\n args.sender = this;\n\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n } else if (name === SERIES_OVER) {\n this._updateDrilldownPoint(args.point);\n } else if (name === SERIES_LEAVE) {\n this._resetDrilldownPoint();\n } else if (name === SERIES_CLICK) {\n this._startDrilldown(args.point);\n }\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n },\n\n _attachEvents: function() {\n var element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n var obj;\n bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n\n this.domEvents = services.DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n },\n\n _mouseleave: function(e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotAreaHovered) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n },\n\n _cancelDomEvents: function() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n },\n\n _gesturestart: function(e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this.surface.suspendTracking();\n }\n },\n\n _gestureend: function(e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n },\n\n _gesturechange: function(e) {\n var mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n var previousGestureDistance = this._gestureDistance;\n var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n var coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n },\n\n _mouseout: function(e) {\n if (e.element) {\n var element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n },\n\n _start: function(e) {\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n },\n\n _move: function(e) {\n var ref = this;\n var state = ref._navState;\n var pannable = ref._pannable;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n var ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n var ranges$1 = {};\n var axes = state.axes;\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n var axis = currentAxis.options.vertical ? e.y : e.x;\n var delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges$1;\n this.trigger(DRAG, {\n axisRanges: ranges$1,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n },\n\n _end: function(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n var pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n var ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n },\n\n _stopChartHandlers: function(e) {\n var selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (var idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n },\n\n _mousewheelZoomRate: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n },\n\n _mousewheel: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n var mousewheelZoom = this._mousewheelZoom;\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1.trigger(ZOOM_END, args);\n this$1$1._zooming = false;\n if (this$1$1.surface) {\n this$1$1.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n var state = this._navState;\n if (!state) {\n var prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n var totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n var axes = this._navState.axes;\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1$1._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n },\n\n _startNavigation: function(e, coords, chartEvent) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPointPane(coords);\n var axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n var ranges = axisRanges(axes);\n\n var prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n },\n\n _endNavigation: function(e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n },\n\n _getChartElement: function(e, match) {\n var element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n },\n\n _drawingChartElement: function(element, e, match) {\n var current = element;\n var chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n },\n\n _eventCoordinates: function(e) {\n var coordinates = dataviz.eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n },\n\n _elementPadding: function() {\n if (!this._padding) {\n var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n },\n\n _toDocumentCoordinates: function(point) {\n var padding = this._elementPadding();\n var offset = dataviz.elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n },\n\n _toModelCoordinates: function(clientX, clientY) {\n var element = this.element;\n var offset = dataviz.elementOffset(element);\n var padding = this._elementPadding();\n var inverseTransform = dataviz.elementScale(element).invert();\n var point = new GeometryPoint(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n },\n\n _tap: function(e) {\n var this$1$1 = this;\n\n var drawingElement = this.surface.eventTarget(e);\n var element = this._drawingChartElement(drawingElement, e);\n var sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(function () {\n this$1$1.handlingTap = false;\n }, 0);\n },\n\n _click: function(e) {\n var element = this._getChartElement(e);\n this._propagateClick(element, e);\n },\n\n _propagateClick: function(element, e) {\n var this$1$1 = this;\n\n var current = element;\n while (current) {\n if (current.click) {\n current.click(this$1$1, e);\n }\n\n current = current.parent;\n }\n },\n\n _startHover: function(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n var point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n this._showInactiveOpacity(point, e);\n\n return point;\n },\n\n _displayTooltip: function(point) {\n var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n },\n\n _displayInactiveOpacity: function(activePoint, multipleSeries, highlightPoints) {\n var chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n var inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n },\n\n _getInactivePoints: function(activePoint, chartInstance) {\n var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(function (point) { return point !== activePoint; });\n },\n\n _getAllPointsOfType: function(container, type) {\n var this$1$1 = this;\n\n var points = [];\n\n for (var i = 0; i < container.children.length; i++) {\n var element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this$1$1._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n },\n\n _updateHoveredPoint: function(point, e) {\n var hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n },\n\n _updateDrilldownPoint: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var ref = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n var fields = ref.fields;\n if (fields.drilldown) {\n this._drilldownState = { cursor: this.element.style.cursor };\n this.element.style.cursor = 'pointer';\n }\n },\n\n _resetDrilldownPoint: function() {\n if (this._drilldownState) {\n this.element.style.cursor = this._drilldownState.cursor;\n this._drilldownState = null;\n }\n },\n\n _startDrilldown: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var series = point.series;\n var ref = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n var fields = ref.fields;\n var value = fields.drilldown;\n if (value) {\n var args = { series: series, point: point, value: value, sender: this };\n this.trigger(DRILLDOWN, args);\n }\n },\n\n _updateSeriesOpacity: function(point, resetOpacity) {\n var this$1$1 = this;\n\n var plotArea = this._plotArea;\n var length = plotArea.series.length;\n\n for (var i = 0; i < length; i++) {\n var currSeries = plotArea.series[i];\n var defaultOpacity = this$1$1._getDefaultOpacityForSeries(currSeries);\n var inactiveOpacity = this$1$1._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n },\n\n _applySeriesOpacity: function(elements, activeSeries, reset, series) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var currSeries = element.series || series;\n var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n var opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this$1$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n },\n\n _chartInstanceFromPoint: function(point) {\n var chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n },\n\n _showInactiveOpacity: function(point, e) {\n var activePoint = this._activePoint;\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n }\n\n return point;\n },\n\n _hideInactiveOpacity: function(point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n if (hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n },\n\n _hasInactiveOpacity: function() {\n var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n },\n\n _getInactiveOpacityForSeries: function(series) {\n var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _getDefaultOpacityForSeries: function(series) {\n return series.defaultOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _mouseover: function(e) {\n var point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n var obj;\n bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n }\n },\n\n _mouseMoveTracking: function(e) {\n var ref = this;\n var options = ref.options;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n var point = ref._activePoint;\n var coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n var obj;\n unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n this._unsetActivePoint();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n },\n\n _mousemove: function(e) {\n var coords = this._eventCoordinates(e);\n var plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n var overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n this._plotAreaHovered = true;\n this._plotArea.hover(this, e);\n } else if (this._plotAreaHovered && !overPlotArea) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n },\n\n _trackCrosshairs: function(coords) {\n var crosshairs = this._plotArea.crosshairs;\n\n for (var i = 0; i < crosshairs.length; i++) {\n var current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n },\n\n _trackSharedTooltip: function(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var plotArea = ref._plotArea;\n var categoryAxis = ref._plotArea.categoryAxis;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n var index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n var points = plotArea.pointsByCategoryIndex(index);\n var pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n var hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n },\n\n hideElements: function(options) {\n var plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n },\n\n _unsetActivePoint: function(options) {\n var ref = this;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n },\n\n _deferRedraw: function() {\n this._redraw();\n },\n\n _clearRedrawTimeout: function() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var definitions = [].concat(options.categoryAxis);\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this$1$1.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n },\n\n bindCategoryAxisFromSeries: function(axis, axisIx) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var seriesLength = series.length;\n var uniqueCategories = new dataviz.HashMap();//perf improvement in case type category with dates\n var items = [];\n var bindable = false;\n var dateAxis;\n\n for (var seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n var s = series[seriesIx];\n var onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n var data = s.data;\n var dataLength = data.length;\n var bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n var getFn = dateAxis ? getDateField : getField;\n\n for (var dataIx = 0; dataIx < dataLength; dataIx++) {\n var dataRow = data[dataIx];\n var category = getFn(s.categoryField, dataRow, this$1$1.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dataviz.dateComparer(a[0], b[0]);\n });\n }\n\n var result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\n axis.categories = [];\n }\n },\n\n _isBindable: function(series) {\n var valueFields = SeriesBinder.current.valueFields(series);\n var result = true;\n\n for (var i = 0; i < valueFields.length; i++) {\n var field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n },\n\n _noTransitionsRedraw: function() {\n var options = this.options;\n var transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n },\n\n _legendItemHover: function(seriesIndex, pointIndex) {\n var ref = this;\n var plotArea = ref._plotArea;\n var highlight = ref._highlight;\n var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n var items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL, PYRAMID ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n var multipleSeries = plotArea.series.length > 1;\n var point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n },\n\n _shouldAttachMouseMove: function() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n },\n\n updateMouseMoveHandler: function() {\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n },\n\n applyOptions: function(options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n },\n\n setOptions: function(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n },\n\n setDirection: function(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n },\n\n setIntlService: function(intl) {\n this.chartService.intl = intl;\n },\n\n noTransitionsRedraw: function() {\n this._noTransitionsRedraw();\n },\n\n destroy: function() {\n this._destroyed = true;\n\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n var obj$1;\n unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n }\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n },\n\n _destroySurface: function() {\n var surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n },\n\n _destroySelections: function() {\n var selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n },\n\n _destroyView: function() {\n var model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n this._resetDrilldownPoint();\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n }\n });\n\n function resolveAxisAliases(options) {\n var aliases = AXIS_NAMES;\n\n for (var idx = 0; idx < aliases.length; idx++) {\n var alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n }\n\n function pointByCategoryName(points, name) {\n if (points) {\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n }\n\n function applyAxisDefaults(options, themeOptions) {\n var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n var axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n var axisColor = (axisOptions || {}).color || axisDefaults.color;\n var result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n }\n\n function applySeriesDefaults(options, themeOptions) {\n var series = options.series;\n var seriesLength = series.length;\n var seriesDefaults = options.seriesDefaults;\n var commonDefaults = deepExtend({}, options.seriesDefaults);\n var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (var i = 0; i < seriesLength; i++) {\n var seriesType = series[i].type || options.seriesDefaults.type;\n\n var baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n }\n\n function cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n }\n\n function axisRanges(axes) {\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n }\n\n function sortDates(dates, comparer) {\n if (comparer === void 0) { comparer = dataviz.dateComparer; }\n\n for (var i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n }\n\n function uniqueDates(srcDates, comparer) {\n if (comparer === void 0) { comparer = dataviz.dateComparer; }\n\n var dates = sortDates(srcDates, comparer);\n var length = dates.length;\n var result = length > 0 ? [ dates[0] ] : [];\n\n for (var i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n }\n\n function transpose(rows) {\n var rowCount = rows.length;\n var result = [];\n\n for (var rowIx = 0; rowIx < rowCount; rowIx++) {\n var row = rows[rowIx];\n var colCount = row.length;\n\n for (var colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\n }\n\n var DATA_FIELDS = [ 'data', 'categories' ];\n\n function clearMissingValues(originalOptions, options) {\n for (var field in options) {\n if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n var fieldValue = options[field];\n var originalValue = originalOptions[field];\n if (defined(originalValue)) {\n var nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n }\n\n function triggerPaneRender(panes) {\n for (var idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n }\n\n setDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {}\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n });\n\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n Aggregates: Aggregates,\n AreaChart: AreaChart,\n AreaSegment: AreaSegment,\n AxisGroupRangeTracker: AxisGroupRangeTracker,\n Bar: Bar,\n BarChart: BarChart,\n BarLabel: BarLabel,\n BoxPlotChart: BoxPlotChart,\n BoxPlot: BoxPlot,\n BubbleChart: BubbleChart,\n Bullet: Bullet,\n BulletChart: BulletChart,\n CandlestickChart: CandlestickChart,\n Candlestick: Candlestick,\n CategoricalChart: CategoricalChart,\n CategoricalErrorBar: CategoricalErrorBar,\n CategoricalPlotArea: CategoricalPlotArea,\n Chart: Chart,\n ChartContainer: ChartContainer,\n ClipAnimation: ClipAnimation,\n ClusterLayout: ClusterLayout,\n Crosshair: Crosshair,\n CrosshairTooltip: CrosshairTooltip,\n DefaultAggregates: DefaultAggregates,\n DonutChart: DonutChart,\n DonutPlotArea: DonutPlotArea,\n DonutSegment: DonutSegment,\n ErrorBarBase: ErrorBarBase,\n ErrorRangeCalculator: ErrorRangeCalculator,\n Highlight: Highlight,\n SharedTooltip: SharedTooltip,\n Legend: Legend,\n LegendItem: LegendItem,\n LegendLayout: LegendLayout,\n LineChart: LineChart,\n LinePoint: LinePoint,\n LineSegment: LineSegment,\n Pane: Pane,\n PieAnimation: PieAnimation,\n PieChart: PieChart,\n PieChartMixin: PieChartMixin,\n PiePlotArea: PiePlotArea,\n PieSegment: PieSegment,\n PlotAreaBase: PlotAreaBase,\n PlotAreaEventsMixin: PlotAreaEventsMixin,\n PlotAreaFactory: PlotAreaFactory,\n PointEventsMixin: PointEventsMixin,\n RangeBar: RangeBar,\n RangeBarChart: RangeBarChart,\n RangeAreaPoint: RangeAreaPoint,\n RangeAreaChart: RangeAreaChart,\n ScatterChart: ScatterChart,\n ScatterErrorBar: ScatterErrorBar,\n ScatterLineChart: ScatterLineChart,\n Selection: Selection,\n SeriesAggregator: SeriesAggregator,\n SeriesBinder: SeriesBinder,\n SplineSegment: SplineSegment,\n SplineAreaSegment: SplineAreaSegment,\n StackWrap: StackWrap,\n Tooltip: Tooltip,\n OHLCChart: OHLCChart,\n OHLCPoint: OHLCPoint,\n WaterfallChart: WaterfallChart,\n WaterfallSegment: WaterfallSegment,\n XYPlotArea: XYPlotArea,\n MousewheelZoom: MousewheelZoom,\n ZoomSelection: ZoomSelection,\n Pannable: Pannable,\n ChartAxis: ChartAxis,\n ChartPane: ChartPane,\n ChartPlotArea: ChartPlotArea,\n findAxisByName: findAxisByName,\n anyHasZIndex: anyHasZIndex,\n appendIfNotNull: appendIfNotNull,\n areNumbers: areNumbers,\n bindSegments: bindSegments,\n categoriesCount: categoriesCount,\n countNumbers: countNumbers,\n equalsIgnoreCase: equalsIgnoreCase,\n evalOptions: evalOptions,\n filterSeriesByType: filterSeriesByType,\n getDateField: getDateField,\n getField: getField,\n hasGradientOverlay: hasGradientOverlay,\n hasValue: hasValue,\n isDateAxis: isDateAxis,\n segmentVisible: segmentVisible,\n singleItemOrArray: singleItemOrArray,\n createOutOfRangePoints: createOutOfRangePoints\n });\n\n })(window.kendo.jQuery);\n\n var __meta__$D = {\n id: \"breadcrumb\",\n name: \"Breadcrumb\",\n category: \"web\",\n description: \"The Breadcrumb widget displays navigation breadcrumb.\",\n depends: [ \"core\", \"icons\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n extend = $.extend,\n mediaQuery = kendo.mediaQuery,\n isPlainObject = $.isPlainObject,\n support = kendo.support,\n encode = kendo.htmlEncode,\n\n BREADCRUMB = \".kendoBreadcrumb\",\n\n ARIA_HIDDEN = \"aria-hidden\",\n ARIA_LABEL = \"aria-label\",\n\n CLICK = \"click\",\n FOCUS = \"focus\",\n BLUR = \"blur\",\n KEYDOWN = \"keydown\",\n CHANGE = \"change\",\n DOT = \".\";\n\n var breadcrumbStyles = {\n widget: \"k-breadcrumb k-breadcrumb-wrap\",\n overlay: \"k-breadcrumb-container\",\n textbox: \"k-input-inner\",\n textboxWrapper: \"k-textbox k-input k-input-md k-rounded-md k-input-solid\",\n link: \"k-breadcrumb-link\",\n item: \"k-breadcrumb-item\",\n delimiter: \"k-breadcrumb-delimiter-icon\",\n rootItem: \"k-breadcrumb-root-item\",\n rootLink: \"k-breadcrumb-root-link\",\n overflowIcon: \"k-breadcrumb-overflow-icon\",\n focused: \"k-focus\",\n hidden: \"k-hidden\",\n inputWrapper: \"k-breadcrumb-input-container\"\n };\n\n var Breadcrumb = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n options = options || {};\n\n Widget.fn.init.call(that, element, options);\n\n that._wrapper();\n\n if (options.editable) {\n that._editable();\n that._tabindex();\n }\n\n that.wrapper.on(CLICK + BREADCRUMB, \"a:not(.k-disabled)\", that._click.bind(that));\n\n if (options.value || options.bindToLocation || !options.items) {\n that._value();\n } else if (options.items) {\n that.items(options.items);\n }\n\n that._applyCssClasses();\n\n that._resizeHandler = kendo.onResize(function() {\n that.resize(true);\n });\n },\n\n options: {\n editable: false,\n navigational: false,\n bindToLocation: false,\n items: null,\n name: \"Breadcrumb\",\n size: \"medium\",\n gap: 0,\n rootIcon: \"home\",\n delimiterIcon: \"chevron-right\",\n messages: {\n rootTitle: \"Go to root\"\n }\n },\n\n events: [ CHANGE, CLICK ],\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n kendo.unbindResize(that._resizeHandler);\n\n that.wrapper\n .add(that.wrapper.find(\"input\"))\n .add(that.wrapper.find(\"a\"))\n .off(BREADCRUMB);\n },\n\n items: function(items) {\n var that = this;\n\n if (items === undefined$1) {\n return that.options.items;\n }\n\n that.options.items = items;\n that._segments = items;\n that.refresh();\n },\n\n _update: function(val) {\n var that = this;\n\n if (val !== that.value()) {\n that._generateSegments(val);\n that.refresh();\n that.trigger(CHANGE, { sender: this, value: val });\n }\n },\n\n _generateSegments: function(value) {\n var that = this,\n options = that.options,\n items = options.items,\n path, segments;\n\n segments = that._split(value);\n\n if (!items) {\n that.options.items = that._segments = segments;\n return;\n }\n\n that._segments = [];\n\n for (var i = 0; i < segments.length; i++) {\n path = that._path(items.slice(0, i + 1));\n\n if (path !== \"\" && value.indexOf(path) > -1 && items[i] && items[i].text === segments[i]) {\n that._segments.push(items[i]);\n } else {\n that._segments.push(segments[i]);\n }\n }\n },\n\n _click: function(e) {\n var that = this,\n options = that.options,\n item = $(e.target).closest(DOT + breadcrumbStyles.item),\n previousDomItems = item.prevAll().addBack(),\n previousItems = that._getItems(previousDomItems),\n path = that._path(previousItems),\n segment = that._segments[item.index()];\n\n if (!options.navigational) {\n e.preventDefault();\n }\n\n if (!that.trigger(CLICK, { sender: that, originalEvent: e, isRoot: segment.type === \"rootitem\", item: segment })) {\n that._update(path);\n }\n },\n\n _getItems: function(items) {\n var that = this;\n\n return $.map(items, function(item) {\n return that._segments[$(item).index()] || item.innerText;\n });\n },\n\n _edit: function() {\n var that = this,\n input = that.input;\n\n that.oldValue = that.value();\n that.inputWrapper.css(\"height\", that.wrapper.height());\n that.overlay.hide();\n that.input.val(that.value());\n that.input.attr(ARIA_HIDDEN, false);\n that.inputWrapper.show();\n\n setTimeout(function() {\n input.select();\n });\n },\n\n _blur: function(shouldRestoreValue) {\n var that = this,\n input = that.input,\n inputWrapper = that.inputWrapper,\n wrapper = that.wrapper,\n overlay = that.overlay,\n val = input.val().replace(/\\/{2,}/g, \"/\");\n\n if (overlay.is(\":visible\")) {\n return;\n }\n\n if (shouldRestoreValue) {\n val = that.oldValue;\n }\n\n input.attr(ARIA_HIDDEN, true);\n inputWrapper.hide();\n overlay.show();\n input.val(\"\");\n that._update(val);\n wrapper.removeClass(breadcrumbStyles.focused);\n },\n\n _keydown: function(e) {\n var that = this,\n key = e.keyCode,\n isEnter = key === kendo.keys.ENTER,\n isEsc = key === kendo.keys.ESC;\n\n if (isEnter || isEsc) {\n that._blur(isEsc);\n\n setTimeout(function() {\n that.overlay.find(\"a\").first().trigger(\"focus\");\n });\n }\n },\n\n isNavigational: function(target) {\n var canNavigate =\n target.hasClass(breadcrumbStyles.textbox) ||\n target.closest(DOT + breadcrumbStyles.item);\n\n if (target[0] === this.wrapper[0]) {\n return false;\n }\n\n return canNavigate && !target.hasClass(\"k-breadcrumb-last-item\");\n },\n\n _wrapperKeydown: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (ev.keyCode === kendo.keys.ENTER && !isNavigational) {\n that._edit();\n }\n },\n\n _wrapperClick: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (!isNavigational) {\n this._edit();\n }\n },\n\n _wrapperFocus: function(ev) {\n $(ev.target).addClass(breadcrumbStyles.focused);\n },\n\n _wrapperBlur: function(ev) {\n $(ev.target).removeClass(breadcrumbStyles.focused);\n },\n\n _wrapper: function() {\n var that = this,\n element = this.element,\n elementIsInput = element.is(\"input\"),\n inputWrapper = $(\"
    \");\n\n that.wrapper = elementIsInput ? element\n .wrap($(\"