{"version":3,"sources":["webpack:///./shortcuts_navigation.js","webpack:///./project_select_combo_button.js","webpack:///./project_select.js","webpack:///./pages/projects/project.js","webpack:///./pages/projects/index.js","webpack:////home/git/gitlab/node_modules/raphael/raphael.js","webpack:///./shortcuts_network.js","webpack:///./network/raphael.js","webpack:///./network/branch_graph.js","webpack:///./pages/projects/network/network.js","webpack:///./pages/projects/network/show/index.js"],"names":["ShortcutsNavigation","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","mousetrap__WEBPACK_IMPORTED_MODULE_0___default","a","bind","_shortcuts_dashboard_navigation__WEBPACK_IMPORTED_MODULE_1__","enabledHelp","push","_shortcuts__WEBPACK_IMPORTED_MODULE_2__","ProjectSelectComboButton","select","projectSelectInput","jquery_default","newItemBtn","resourceType","data","resourceLabel","formattedText","deriveTextVariants","groupId","bindEvents","initLocalStorage","siblings","on","e","openDropdown","getProjectFromLocalStorage","preventDefault","selectProject","accessor","isLocalStorageAccessSafe","localStorageKey","localStorageItemType","join","setBtnTextFromLocalStorage","event","currentTarget","select2","selectedProjectData","JSON","parse","val","projectMeta","url","name","setNewItemBtnAttributes","setProjectInLocalStorage","cachedProjectData","project","attr","text","defaultTextPrefix","presetTextSuffix","projectString","localStorage","getItem","stringify","setItem","split","slice","projectSelect","each","i","placeholder","simpleFilter","includeGroups","allProjects","orderBy","withIssuesEnabled","withMergeRequestsEnabled","minimumInputLength","query","finalCallback","projectsCallback","projects","results","callback","groupsCallback","groups","concat","api","term","groupProjects","order_by","with_issues_enabled","with_merge_requests_enabled","membership","id","web_url","name_with_namespace","dropdownCssClass","project_select_combo_button","__webpack_require__","d","__webpack_exports__","Project","$cloneOptions","jquery__WEBPACK_IMPORTED_MODULE_0___default","$projectCloneField","$cloneBtnText","selectedCloneOption","trim","length","$","addClass","$this","activeText","find","not","removeClass","toggleClass","initRefSwitcher","parents","submit","js_cookie__WEBPACK_IMPORTED_MODULE_1___default","set","remove","projectSelectDropdown","_project_select__WEBPACK_IMPORTED_MODULE_6__","changeProject","window","location","refListItem","document","createElement","refLink","href","$dropdown","selected","glDropdown","_lib_utils_axios_utils__WEBPACK_IMPORTED_MODULE_4__","get","params","ref","search","then","_ref","catch","_flash__WEBPACK_IMPORTED_MODULE_5__","_locale__WEBPACK_IMPORTED_MODULE_2__","selectable","filterable","filterRemote","filterByText","inputFieldName","fieldName","renderRow","li","cloneNode","header","className","textContent","link","dataset","appendChild","obj","$el","toggleLabel","clicked","options","$form","closest","$visit","shouldVisit","action","divider","indexOf","_lib_utils_url_utility__WEBPACK_IMPORTED_MODULE_3__","visitUrl","serialize","addEventListener","_project__WEBPACK_IMPORTED_MODULE_0__","_shortcuts_navigation__WEBPACK_IMPORTED_MODULE_1__","factory","modules","installedModules","moduleId","exports","module","loaded","m","c","p","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","undefined","R","apply","eve","first","is","array","_engine","create","splice","nu","add","args","Array","prototype","arguments","f","pop","version","paperproto","separator","elements","circle","rect","path","ellipse","image","formatrg","has","g","doc","win","oldRaphael","was","Raphael","Paper","ca","customAttributes","supportsTouch","DocumentTouch","E","S","Str","String","events","touchMap","mousedown","mousemove","mouseup","lowerCase","toLowerCase","math","Math","mmax","max","mmin","min","abs","pow","PI","objectToString","toString","colourRegExp","_ISURL","isnan","NaN","Infinity","-Infinity","bezierrg","round","toFloat","parseFloat","toInt","parseInt","upperCase","toUpperCase","availableAttrs","_availableAttrs","arrow-end","arrow-start","blur","clip-rect","cursor","cx","cy","fill","fill-opacity","font","font-family","font-size","font-style","font-weight","gradient","height","letter-spacing","opacity","r","rx","ry","src","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","target","text-anchor","title","transform","width","x","y","class","availableAnimAttrs","_availableAnimAttrs","commaSpaces","hsrg","hs","rg","p2s","pathCommand","tCommand","pathValues","eldata","_radial_gradient","sortByNumber","b","pipe","rectPath","_rectPath","w","h","ellipsePath","getPath","_getPath","el","attrs","bbox","_getBBox","mapPath","matrix","j","ii","jj","pathi","path2curve","_g","type","SVGAngle","implementation","hasFeature","innerHTML","firstChild","style","behavior","adj","clone","res","constructor","key","svg","vml","_Paper","fn","_id","o","isArray","angle","x1","y1","x2","y2","x3","y3","atan2","rad","deg","snapTo","values","value","tolerance","rem","uuidRegEx","uuidReplacer","createUUID","random","replace","setWindow","newwin","initWin","toHex","color","bod","docum","ActiveXObject","write","close","body","createPopup","range","createTextRange","cacher","queryCommandValue","display","defaultView","getComputedStyle","getPropertyValue","hsbtoString","s","hsltoString","l","rgbtoString","hex","prepareRGB","clr","getRGB","packageRGB","rgb","scope","postprocessor","newf","arg","cache","count","item","repush","shift","hsb2rgb","hsl2rgb","rgb2hsl","rgb2hsb","v","G","B","X","C","V","L","M","_path2string","_preload","img","cssText","onload","removeChild","onerror","clrToString","catmullRom2bezier","crp","z","iLen","colour","error","substring","charAt","red","green","blue","t","match","hsb","hsl","getColor","start","reset","parsePathString","pathString","pth","paths","arr","pathClone","paramCounts","q","parseTransformString","TString","ps","sleep","setTimeout","base3","p1","p2","p3","p4","bezlen","x4","y4","z2","Tvalues","Cvalues","sum","ct","xbase","ybase","comb","sqrt","intersect","denominator","px","py","px2","toFixed","py2","interHelper","bez1","bez2","justCount","bbox1","bezierBBox","bbox2","isBBoxIntersect","l1","l2","n1","n2","dots1","dots2","xy","findDotsAtSegment","di","di1","dj","dj1","ci","cj","t1","t2","interPathHelper","path1","path2","_path2curve","x1m","y1m","x2m","y2m","pi","pj","intr","k","kk","segment1","segment2","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","t13","t12","t3","mx","my","nx","ny","ax","ay","alpha","n","end","curveDim","isPointInsideBBox","pathIntersection","pathIntersectionNumber","isPointInsidePath","pathBBox","_removedFactory","methodname","pathDimensions","Y","dim","xmin","ymin","xmax","ymax","bb","pathArray","pathToRelative","_pathToRelative","rel","pa","len","pathToAbsolute","_pathToAbsolute","crz","dots","l2c","q2c","a2c","large_arc_flag","sweep_flag","recursive","_120","rotate","cos","sin","f1","f2","rx2","ry2","asin","df","f2old","x2old","y2old","c1","s1","c2","s2","tan","hx","hy","m1","m2","m3","m4","newres","findDotAtSegment","dot","curve","bx","by","qx","qy","attrs2","processPath","pcom","T","Q","fixArc","pp","pcoms1","pcoms2","fixM","a1","a2","pfirst","seg","seg2","seglen","seg2len","tear","_parseDots","par","offset","_tear","paper","top","prev","bottom","next","toMatrix","_tofront","_toback","_insertafter","el2","_insertbefore","_","getBBox","extractTransform","transformPath","_extractTransform","tstr","dx","dy","tdata","sx","sy","Matrix","tlen","command","absolute","inver","invert","translate","scale","dirtyT","getEmpty","equaliseTransform","_equaliseTransform","tt1","tt2","maxlength","from","to","_getContainer","container","getElementById","tagName","pixelWidth","offsetWidth","pixelHeight","offsetHeight","matrixproto","norm","normalize","mag","out","me","fromCharCode","toFilter","row","scalex","shear","scaley","acos","isSimple","isSuperSimple","noRotation","toTransformString","shorter","returnValue","preventTouch","originalEvent","stopPropagation","cancelBubble","stopTouch","getEventPosition","scrollY","documentElement","scrollTop","scrollX","scrollLeft","clientX","clientY","addEvent","element","pos","_f","olde","targetTouches","removeEventListener","attachEvent","detachEvent","drag","dragMove","dragi","touches","touch","identifier","_drag","node","nextSibling","parent","parentNode","opera","getElementByPoint","insertBefore","move_scope","dragUp","unmousemove","unmouseup","end_scope","start_scope","elproto","eventName","unbind","shape","removeData","getData","hover","f_in","f_out","scope_in","scope_out","mouseover","mouseout","unhover","unmouseover","unmouseout","draggable","onmove","onstart","onend","onDragOver","undrag","unmousedown","__set__","format","itemsArray","Set","setStart","setFinish","getSize","canvas","setSize","setViewBox","fit","raphael","x_y_w_h","elem","box","docElem","clientTop","clientLeft","elementFromPoint","so","getBoundingClientRect","ownerDocument","pageYOffset","left","pageXOffset","sr","createSVGRect","hits","getIntersectionList","getById","raphaelid","getElementsByBBox","forEach","bot","thisArg","getElementsByPoint","isPointInside","rp","realPath","isWithoutTransform","removed","dirty","bboxwt","glow","offsetx","offsety","getPointAtSegmentLength","ll","step","getTatLen","getLengthFactory","istotal","subpath","onlystart","point","sp","subpaths","getTotalLength","getPointAtLength","getSubpathsAtLength","getSubpath","ef","easing_formulas","linear","<",">","<>","backIn","backOut","elastic","bounce","easeIn","easeOut","easeInOut","animationElements","requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animation","Now","Date","paused","now","time","ms","easing","diff","that","init","initstatus","anim","percent","status","stop","upto255","real","from2","repeat","totalOrigin","runAnimation","percents","CubicBezierAtTime","duration","sampleCurveX","epsilon","t0","d2","solveCurveX","solve","Animation","newAnim","times","sort","isInAnim","isInAnimSet","timestamp","toColour","pathes","toPath","eq","to2","easyeasy","del","origin","stopAnimation","animateWith","onAnimation","delay","floor","json","100","lastKey","animate","setTime","pause","resume","tokenRegex","objNotationRegex","items","setproto","method","clear","index","insertion","tail","todel","arglen","exclude","collector","insertAfter","glowConfig","ret","shape2","index2","registerFont","face","fonts","fontcopy","glyphs","family","prop","glyph","getFont","weight","stretch","normal","bold","lighter","bolder","thefont","RegExp","fontName","test","print","string","size","letter_spacing","line_spacing","letters","notfirst","lineHeight","shifty","descent","curr","token","str","fullfill","all","quote","quotedName","isFunc","replacer","ninja","st","readyState","isLoaded","current_event","comaseparator","numsort","firstDefined","lastDefined","objtos","ar","oldstop","listeners","indexed","queue","ce","zIndex","_events","nes","names","es","sep","exist","hasOwnProperty","nt","subname","cur","nts","off","funcs","once","xlink","markers","block","classic","diamond","open","oval","markerCounter","setAttributeNS","setAttribute","createElementNS","webkitTapHighlightColor","addGradientFill","fx","fy","SVG","_fx","_fy","dir","isNaN","vector","defs","gradientTransform","stop-color","stop-opacity","isFinite","fillurl","fillOpacity","mode","documentMode","protocol","host","pathname","updatePosition","pattern","patternTransform","addArrow","isEnd","refX","se","arrows","endPath","endMarker","startPath","startMarker","pathId","markerId","use","marker","getElementsByTagName","markerHeight","markerWidth","orient","refY","xlink:href","delta","startdx","enddx","dasharray","-",".","-.","-..",". ","- ","--","- .","--.","--..","addDashes","butt","square","dashes","setFillAndStroke","vis","visibility","att","nodeValue","createTextNode","pn","hl","clip","rc","clip-path","getAttribute","startString","endString","isURL","ig","patternUnits","stops","cssrule","tuneText","fontSize","tspan","texts","tspans","dif","getRealNode","Element","sw","hide","show","containerStyle","canvasHidden","parentElement","clientWidth","clientHeight","def","subkey","toFront","toBack","afterNode","beforeNode","fltr","stdDeviation","_blur","filter","removeAttribute","preserveAspectRatio","_viewBox","con","Error","isFloating","cnvs","css","xmlns","xmlns:xlink","_left","_top","renderfix","vb","paperSize","aspectRatio","_vbSize","viewBox","getScreenCTM","createSVGMatrix","desc","map","Z","bites","blurregexp","cssDot","zoom","pathTypes","ovalTypes","compensation","setCoords","fillpos","flip","kx","ky","coordsize","rotation","coordorigin","fillsize","position","createNode","newpath","isOval","total","vals","isMove","path2vml","div","clipRect","dstyle","textpath","textpathStyle","fontFamily","fontWeight","fontStyle","newstroke","strokeColor","joinstyle","miterlimit","endcap","dashstyle","span","brect","W","right","H","dirtyattrs","dd","bbx","fxfy","color2","clrs","colors","focus","focussize","focusposition","_oid","oldt","vbs","_viewBoxShift","vbt","skew","isGrad","isPatt","bbt","auxGetBBox","runtimeStyle","margin","Path","textpathok","cs","styleSheets","createStyleSheet","addRule","namespaces","rvml","ShortcutsNetwork","graph","mousetrap_default","scrollRight","scrollUp","scrollDown","scrollBottom","shortcuts_navigation","raphael_default","commitTooltip","commit","icon","gon","relative_url_root","author","nameText","idText","messageText","message","textSet","textWrap","boxWidth","tooltip","content","abc","letterWidth","words","word","network_raphael","BranchGraph","element1","options1","preparedCommits","mtime","mspace","offsetX","offsetY","unitTime","unitSpace","prev_start","load","_this2","axios_utils","prepareData","days","commits","buildGraph","locale","ch","cw","collectParents","graphHeight","graphWidth","barHeight","isParent","markCommit","collectColors","space","len1","ref1","results1","cuday","cumonth","day","mm","renderPartialGraph","isGraphEdge","hasDrawn","drawDot","drawLines","appendLabel","appendAnchor","scroll","shortrefs","textbox","refs","substr","anchor","click","commit_url","avatar_box_x","avatar_box_y","arrow","parentCommit","parentX1","parentX2","parentY","route","commit_id","network","opts","vph","branch_graph","networkGraph","shortcuts_network"],"mappings":"8HAIqBA,cACnB,SAAAA,iGAAcC,CAAAC,KAAAF,GAAA,IAAAG,mKAAAC,CAAAF,MAAAF,EAAAK,WAAAC,OAAAC,eAAAP,IAAAQ,KAAAN,OAAA,OAGZO,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,wBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,iCAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,qBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,wBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,uBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,wBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,kCAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,uBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,6BAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,+BAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,qBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,yBAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,2BAC9CG,EAAAC,EAAUC,KAAK,MAAO,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,6BAC9CG,EAAAC,EAAUC,KAAK,IAAK,kBAAML,OAAAM,EAAA,EAAAN,CAAkB,0BAE5CH,EAAKU,YAAYC,KAAK,4BAnBVX,qUADiCY,EAAA,4VCA/C,SAAAC,EAAYC,gGAAQhB,CAAAC,KAAAc,GAClBd,KAAKgB,mBAAqBC,IAAEF,GAC5Bf,KAAKkB,WAAaD,IAAE,0BACpBjB,KAAKmB,aAAenB,KAAKkB,WAAWE,KAAK,QACzCpB,KAAKqB,cAAgBrB,KAAKkB,WAAWE,KAAK,SAC1CpB,KAAKsB,cAAgBtB,KAAKuB,qBAC1BvB,KAAKwB,QAAUxB,KAAKgB,mBAAmBI,KAAK,WAC5CpB,KAAKyB,aACLzB,KAAK0B,kEAGM,IAAAzB,EAAAD,KACXA,KAAKgB,mBAAmBW,SAAS,mCAC9BC,GAAG,QAAS,SAAAC,GAAA,OAAK5B,EAAK6B,aAAaD,KAEtC7B,KAAKkB,WAAWU,GAAG,QAAS,SAACC,GACtB5B,EAAK8B,+BACRF,EAAEG,iBACF/B,EAAK6B,aAAaD,MAItB7B,KAAKgB,mBAAmBY,GAAG,SAAU,kBAAM3B,EAAKgC,6DAIrBC,EAAA,EAAkBC,6BAG3CnC,KAAKoC,iBAAmB,QAASpC,KAAKwB,QAASxB,KAAKsB,cAAce,qBAAsB,kBAAkBC,KAAK,KAC/GtC,KAAKuC,mEAKIC,GACXvB,IAAEuB,EAAMC,eAAed,SAAS,wBAAwBe,QAAQ,gDAIhE,IAAMC,EAAsBC,KAAKC,MAAM7C,KAAKgB,mBAAmB8B,OAIzDC,GACJC,IAJoBL,EAAoBK,IAApC,IAA2ChD,KAAKgB,mBAAmBI,KAAK,gBAK5E6B,KAJkBN,EAAoBM,MAOxCjD,KAAKkD,wBAAwBH,GAC7B/C,KAAKmD,yBAAyBJ,wDAI9B,IAAMK,EAAoBpD,KAAK+B,6BAE/B/B,KAAKkD,wBAAwBE,mDAGPC,GAClBA,GACFrD,KAAKkB,WAAWoC,KAAK,OAAQD,EAAQL,KACrChD,KAAKkB,WAAWqC,KAAQvD,KAAKsB,cAAckC,kBAA3C,OAAmEH,EAAQJ,OAE3EjD,KAAKkB,WAAWqC,KAAhB,4BAAiDvD,KAAKsB,cAAcmC,uEAKtE,IAAMC,EAAgBC,aAAaC,QAAQ5D,KAAKoC,iBAEhD,OAAOQ,KAAKC,MAAMa,oDAGKX,GACvB,IAAMW,EAAgBd,KAAKiB,UAAUd,GAErCY,aAAaG,QAAQ9D,KAAKoC,gBAAiBsB,gDAI3C,IAAMF,EAAoBxD,KAAKqB,cAM/B,OACEgB,qBAJIA,OAA8BrC,KAAKmB,aAAa4C,MAAM,KAAKzB,KAAK,KAAK0B,MAAM,GAAI,GAKnFR,oBACAC,iBALuBzD,KAAKmB,aAAa4C,MAAM,KAAKzB,KAAK,KAAK0B,MAAM,GAAI,aCnF/D,SAASC,IACtBhD,IAAE,wBAAwBiD,KAAK,SAASC,EAAGpD,GACzC,IAAIqD,EAiBgBnE,EAhBdoE,EAAepD,IAAEF,GAAQK,KAAK,kBAAmB,EA+DvD,OA9DApB,KAAKwB,QAAUP,IAAEF,GAAQK,KAAK,WAC9BpB,KAAKsE,cAAgBrD,IAAEF,GAAQK,KAAK,iBACpCpB,KAAKuE,YAActD,IAAEF,GAAQK,KAAK,iBAAkB,EACpDpB,KAAKwE,QAAUvD,IAAEF,GAAQK,KAAK,YAAc,KAC5CpB,KAAKyE,kBAAoBxD,IAAEF,GAAQK,KAAK,qBACxCpB,KAAK0E,yBAA2BzD,IAAEF,GAAQK,KAAK,4BAE/CgD,EAAc,qBACVpE,KAAKsE,gBACPF,GAAe,aAGjBnD,IAAEF,GAAQ2B,SACR0B,YAAaA,EACbO,mBAAoB,EACpBC,OAAkB3E,EAkCfD,KAjCM,SAAU4E,GACf,IAAIC,EAAeC,EAqBnB,OApBAD,EAAgB,SAAUE,GACxB,IAAI3D,EAIJ,OAHAA,GACE4D,QAASD,GAEJH,EAAMK,SAAS7D,IAGtB0D,EADE7E,EAAMqE,cACW,SAAUS,GAC3B,IAAIG,EAMJ,OALAA,EAAiB,SAAUC,GACzB,IAAI/D,EAEJ,OADAA,EAAO+D,EAAOC,OAAOL,GACdF,EAAczD,IAEhBiE,EAAA,EAAIF,OAAOP,EAAMU,QAAUJ,IAGjBL,EAEjB5E,EAAMuB,QACD6D,EAAA,EAAIE,cAActF,EAAMuB,QAASoD,EAAMU,KAAMR,GAE7CO,EAAA,EAAIN,SAASH,EAAMU,MACxBE,SAAUvF,EAAMuE,QAChBiB,oBAAqBxF,EAAMwE,kBAC3BiB,4BAA6BzF,EAAMyE,yBACnCiB,YAAa1F,EAAMsE,aAClBO,KAITc,GAAI,SAASvC,GACX,OAAIgB,EAAqBhB,EAAQuC,GAC1BhD,KAAKiB,WACVZ,KAAMI,EAAQJ,KACdD,IAAKK,EAAQwC,WAGjBtC,KAAM,SAAUF,GACd,OAAOA,EAAQyC,qBAAuBzC,EAAQJ,MAEhD8C,iBAAkB,0BAEhB1B,EAAqBtD,EAClB,IAAIiF,EAAyBjF,KAzExCkF,EAAAC,EAAAC,EAAA,sBAAAlC,wWCUqBmC,aACnB,SAAAA,iGAAcrG,CAAAC,KAAAoG,GACZ,IAAMC,EAAgBC,IAAE,6BAClBC,EAAqBD,IAAE,kBACvBE,EAAgBF,IAAE,6BAElBG,EAAsBD,EAAcjD,OAAOmD,OAC7CD,EAAoBE,OAAS,GAC/BL,IAAAM,eAAiBH,EAAjB,KAA0CJ,GAAeQ,SAAS,aAGpEP,IAAE,IAAKD,GAAezE,GAAG,QAAS,SAACC,GACjC,IAAMiF,EAAQR,IAAEzE,EAAEY,eACZO,EAAM8D,EAAMxD,KAAK,QACjByD,EAAaD,EAAME,KAAK,8BAA8BzD,OAS5D,OAPA1B,EAAEG,iBAEFsE,IAAE,aAAcD,GAAeY,IAAIH,GAAOI,YAAY,aACtDJ,EAAMK,YAAY,aAClBZ,EAAmBzD,IAAIE,GACvBwD,EAAcjD,KAAKwD,GAEZT,IAAE,UAAU/C,KAAKP,KAG1BoD,EAAQgB,kBACRd,IAAE,wBAAwB1E,GAAG,SAAU,WACrC,OAAO0E,IAAEtG,MAAMqH,QAAQ,QAAQC,WAEjChB,IAAE,wBAAwB1E,GAAG,QAAS,SAASC,GAG7C,OAFA0F,EAAA/G,EAAQgH,IAAI,sBAAuB,SACnClB,IAAEtG,MAAMqH,QAAQ,uBAAuBI,SAChC5F,EAAEG,mBAEXsE,IAAE,6BAA6B1E,GAAG,QAAS,SAASC,GAGlD,OAFA0F,EAAA/G,EAAQgH,IAAI,2BAA4B,SACxClB,IAAEtG,MAAMqH,QAAQ,wBAAwBI,SACjC5F,EAAEG,mBAEXoE,EAAQsB,uFAIRtH,OAAAuH,EAAA,EAAAvH,GACAkG,IAAE,wBAAwB1E,GAAG,QAAS,SAAAC,GAAA,OAAKuE,EAAQwB,cAActB,IAAEzE,EAAEY,eAAeK,+CAGjEE,GACnB,OAAO6E,OAAOC,SAAW9E,4CAIzB,IAAI+E,EAAcC,SAASC,cAAc,MACrCC,EAAUF,SAASC,cAAc,KAIrC,OAFAC,EAAQC,KAAO,IAER7B,IAAE,6BAA6BpC,KAAK,WACzC,IAAIkE,EAAWC,EAGf,OAFAD,EAAY9B,IAAEtG,MACdqI,EAAWD,EAAUhH,KAAK,YACnBgH,EAAUE,YACflH,KAD0B,SACrBkE,EAAML,GACTsD,EAAA,EAAMC,IAAIJ,EAAUhH,KAAK,YACvBqH,QACEC,IAAKN,EAAUhH,KAAK,OACpBuH,OAAQrD,KAGXsD,KAAK,SAAAC,GAAA,IAAGzH,EAAHyH,EAAGzH,KAAH,OAAc6D,EAAS7D,KAC5B0H,MAAM,kBAAM1I,OAAA2I,EAAA,EAAA3I,CAAMA,OAAA4I,EAAA,EAAA5I,CAAG,gDAExB6I,YAAY,EACZC,YAAY,EACZC,cAAc,EACdC,cAAc,EACdC,eAAgBjB,EAAUhH,KAAK,kBAC/BkI,UAAWlB,EAAUhH,KAAK,aAC1BmI,UAAW,SAASb,GAClB,IAAIc,EAAKzB,EAAY0B,WAAU,GAE/B,GAAkB,MAAdf,EAAIgB,OACNF,EAAGG,UAAY,kBACfH,EAAGI,YAAclB,EAAIgB,WAChB,CACL,IAAIG,EAAO3B,EAAQuB,WAAU,GAEzBf,IAAQL,IACVwB,EAAKF,UAAY,aAGnBE,EAAKD,YAAclB,EACnBmB,EAAKC,QAAQpB,IAAMA,EAEnBc,EAAGO,YAAYF,GAGjB,OAAOL,GAET5D,GAAI,SAASoE,EAAKC,GAChB,OAAOA,EAAI3G,KAAK,aAElB4G,YAAa,SAASF,EAAKC,GACzB,OAAOA,EAAI1G,OAAOmD,QAEpByD,QAAS,SAASC,GAGhB,GAFcA,EAANvI,EACNG,iBACEsE,IAAE,qBAAqBK,OAAQ,CACjC,IAAI0D,EAAQjC,EAAUkC,QAAQ,QAE1BC,EAASnC,EAAUhH,KAAK,SACxBoJ,IAAcD,GAAgBA,EAC9BE,EAASJ,EAAM/G,KAAK,UACpBoH,GAAmC,IAAzBD,EAAOE,QAAQ,KAAc,IAAM,IAC7CH,GACFpK,OAAAwK,EAAA,EAAAxK,CAAAyK,GAAYJ,EAASC,EAAUL,EAAMS,8FC5HnD9C,SAAS+C,iBAAiB,mBAAoB,WAC5C,IAAIC,EAAA,EACJ,IAAIC,EAAA,yBCIN,IAAAC,IASC,WACD,gBAAAC,GAEA,IAAAC,KAGA,SAAAnF,EAAAoF,GAGA,GAAAD,EAAAC,GACA,OAAAD,EAAAC,GAAAC,QAGA,IAAAC,EAAAH,EAAAC,IACAC,WACA1F,GAAAyF,EACAG,QAAA,GAUA,OANAL,EAAAE,GAAA/K,KAAAiL,EAAAD,QAAAC,IAAAD,QAAArF,GAGAsF,EAAAC,QAAA,EAGAD,EAAAD,QAcA,OATArF,EAAAwF,EAAAN,EAGAlF,EAAAyF,EAAAN,EAGAnF,EAAA0F,EAAA,GAGA1F,EAAA,GAvCA,EA4CA,SAAAsF,EAAAD,EAAArF,GAEA,IAAA2F,EAAAC,EAAiED,GAAA3F,EAAA,GAAAA,EAAA,GAAAA,EAAA,SAI/D6F,KAJ+DD,EAAA,SAAAE,GAEjE,OAAAA,GAEEC,MAAAV,EAAAM,MAAAL,EAAAD,QAAAO,IAIF,SAAAN,EAAAD,EAAArF,GAEA,IAAA2F,EAAAC,EAAiED,GAAA3F,EAAA,SA4xK/D6F,KA5xK+DD,EAAA,SAAAI,GAoDjE,SAAAF,EAAAG,GACA,GAAAH,EAAAI,GAAAD,EAAA,YACA,OAAAV,EAAAU,IAAAD,EAAArK,GAAA,kBAAAsK,GACU,GAAAH,EAAAI,GAAAD,EAAAE,GACV,OAAAL,EAAAM,QAAAC,OAAAN,GAAAD,EAAAG,EAAAK,OAAA,IAAAR,EAAAI,GAAAD,EAAA,GAAAM,KAAAC,IAAAP,GAEA,IAAAQ,EAAAC,MAAAC,UAAA5I,MAAA1D,KAAAuM,UAAA,GACA,GAAAd,EAAAI,GAAAO,IAAA/F,OAAA,gBACA,IAAAmG,EAAAJ,EAAAK,MACA,OAAAvB,EAAAsB,EAAAxM,KAAAyL,EAAAM,QAAAC,OAAAN,GAAAD,EAAAW,IAAAT,EAAArK,GAAA,6BACAkL,EAAAxM,KAAAyL,EAAAM,QAAAC,OAAAN,GAAAD,EAAAW,MAGA,OAAAX,EAAAM,QAAAC,OAAAN,GAAAD,EAAAc,WAIAd,EAAAiB,QAAA,QACAjB,EAAAE,MACA,IAAAT,EAiDAyB,EAhDAC,EAAA,QACAC,GAAqBC,OAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,QAAA,EAAAhK,KAAA,EAAAiK,MAAA,GACrBC,EAAA,aAEAC,EAAA,iBACAC,GACAC,IAAA5F,SACA6F,IAAAhG,QAEAiG,GACAC,IAAA3N,OAAAwM,UAAAc,GAAApN,KAAAqN,EAAAE,IAAA,WACA1B,GAAAwB,EAAAE,IAAAG,SAEAC,EAAA,WAiCAjO,KAAAkO,GAAAlO,KAAAmO,qBAIAnC,EAAA,QACA5G,EAAA,SACAgJ,EAAA,iBAAAT,EAAAE,KAAAF,EAAAE,IAAAQ,eAAAV,EAAAC,eAAAS,cACAC,EAAA,GACAC,EAAA,IACAC,EAAAC,OACA1K,EAAA,QACA2K,EAAA,0GAAA3K,GAAAwK,GACAI,GACAC,UAAA,aACAC,UAAA,YACAC,QAAA,YAEAC,EAAAP,EAAA5B,UAAAoC,YACAC,EAAAC,KACAC,EAAAF,EAAAG,IACAC,EAAAJ,EAAAK,IACAC,EAAAN,EAAAM,IACAC,EAAAP,EAAAO,IACAC,EAAAR,EAAAQ,GACAjD,EAAA,SAEAJ,EAAA,QAGAsD,EAAAtP,OAAAwM,UAAA+C,SAIAC,GADA7D,EAAA8D,OAAA,4BACA,oTACAC,GAAkBC,IAAA,EAAAC,SAAA,EAAAC,YAAA,GAClBC,EAAA,yDACAC,EAAAlB,EAAAkB,MAEAC,EAAAC,WACAC,EAAAC,SACAC,EAAAhC,EAAA5B,UAAA6D,YACAC,EAAA3E,EAAA4E,iBACAC,YAAA,OACAC,cAAA,OACAC,KAAA,EACAC,YAAA,cACAC,OAAA,UACAC,GAAA,EACAC,GAAA,EACAC,KAAA,OACAC,eAAA,EACAC,KAAA,eACAC,cAAA,UACAC,YAAA,KACAC,aAAA,SACAC,cAAA,IACAC,SAAA,EACAC,OAAA,EACAxJ,KAAA,wBACAyJ,iBAAA,EACAC,QAAA,EACAvE,KAAA,OACAwE,EAAA,EACAC,GAAA,EACAC,GAAA,EACAC,IAAA,GACAC,OAAA,OACAC,mBAAA,GACAC,iBAAA,OACAC,kBAAA,OACAC,oBAAA,EACAC,iBAAA,EACAC,eAAA,EACAC,OAAA,SACAC,cAAA,SACAC,MAAA,UACAC,UAAA,GACAC,MAAA,EACAC,EAAA,EACAC,EAAA,EACAC,MAAA,IAEAC,EAAAlH,EAAAmH,qBACApC,KAAAtE,EACAuE,YAAA,MACAE,GAAAzE,EACA0E,GAAA1E,EACA2E,KAAA,SACAC,eAAA5E,EACA+E,YAAA/E,EACAmF,OAAAnF,EACAqF,QAAArF,EACAc,KAAA,OACAwE,EAAAtF,EACAuF,GAAAvF,EACAwF,GAAAxF,EACA0F,OAAA,SACAK,iBAAA/F,EACAgG,eAAAhG,EACAoG,UAAA,YACAC,MAAArG,EACAsG,EAAAtG,EACAuG,EAAAvG,GAGA2G,EAAA,0RACAC,GAAiBC,GAAA,EAAAC,GAAA,GACjBC,EAAA,yBACAC,EAAA,udACAC,EAAA,gdACAC,EAAA,yTAEAC,GADA5H,EAAA6H,iBAAA,0TAKAC,EAAA,SAAArT,EAAAsT,GACA,OAAA1D,EAAA5P,GAAA4P,EAAA0D,IAGAC,EAAA,SAAAjB,GACA,OAAAA,GAEAkB,EAAAjI,EAAAkI,UAAA,SAAAnB,EAAAC,EAAAmB,EAAAC,EAAArC,GACA,OAAAA,IACA,IAAAgB,EAAAhB,EAAAiB,IAAA,IAAAmB,EAAA,EAAApC,EAAA,QAAAA,IAAA,MAAAA,MAAA,MAAAqC,EAAA,EAAArC,IAAA,IAAAA,IAAA,OAAAA,MAAA,MAAAA,EAAAoC,EAAA,QAAApC,IAAA,OAAAA,OAAA,QAAAA,EAAAqC,IAAA,IAAArC,IAAA,MAAAA,OAAA,QAEA,IAAAgB,EAAAC,IAAA,IAAAmB,EAAA,UAAAC,IAAA,KAAAD,EAAA,WAEAE,EAAA,SAAAtB,EAAAC,EAAAhB,EAAAC,GAIA,OAHA,MAAAA,IACAA,EAAAD,KAEA,IAAAe,EAAAC,IAAA,OAAAf,IAAA,IAAAD,EAAAC,EAAA,UAAAA,IAAA,IAAAD,EAAAC,EAAA,WAAAA,IAAA,OAEAqC,EAAAtI,EAAAuI,UACAhH,KAAA,SAAAiH,GACA,OAAAA,EAAAjR,KAAA,SAEA8J,OAAA,SAAAmH,GACA,IAAA/T,EAAA+T,EAAAC,MACA,OAAAJ,EAAA5T,EAAAyQ,GAAAzQ,EAAA0Q,GAAA1Q,EAAAsR,IAEAvE,QAAA,SAAAgH,GACA,IAAA/T,EAAA+T,EAAAC,MACA,OAAAJ,EAAA5T,EAAAyQ,GAAAzQ,EAAA0Q,GAAA1Q,EAAAuR,GAAAvR,EAAAwR,KAEA3E,KAAA,SAAAkH,GACA,IAAA/T,EAAA+T,EAAAC,MACA,OAAAR,EAAAxT,EAAAsS,EAAAtS,EAAAuS,EAAAvS,EAAAqS,MAAArS,EAAAmR,OAAAnR,EAAAsR,IAEAtE,MAAA,SAAA+G,GACA,IAAA/T,EAAA+T,EAAAC,MACA,OAAAR,EAAAxT,EAAAsS,EAAAtS,EAAAuS,EAAAvS,EAAAqS,MAAArS,EAAAmR,SAEApO,KAAA,SAAAgR,GACA,IAAAE,EAAAF,EAAAG,WACA,OAAAV,EAAAS,EAAA3B,EAAA2B,EAAA1B,EAAA0B,EAAA5B,MAAA4B,EAAA9C,SAEAnK,IAAA,SAAA+M,GACA,IAAAE,EAAAF,EAAAG,WACA,OAAAV,EAAAS,EAAA3B,EAAA2B,EAAA1B,EAAA0B,EAAA5B,MAAA4B,EAAA9C,UAaAgD,EAAA5I,EAAA4I,QAAA,SAAArH,EAAAsH,GACA,IAAAA,EACA,OAAAtH,EAEA,IAAAwF,EAAAC,EAAA5O,EAAA0Q,EAAAC,EAAAC,EAAAC,EAEA,IAAA7Q,EAAA,EAAA2Q,GADAxH,EAAA2H,GAAA3H,IACA3G,OAA0CxC,EAAA2Q,EAAQ3Q,IAElD,IAAA0Q,EAAA,EAAAE,GADAC,EAAA1H,EAAAnJ,IACAwC,OAA+CkO,EAAAE,EAAQF,GAAA,EACvD/B,EAAA8B,EAAA9B,EAAAkC,EAAAH,GAAAG,EAAAH,EAAA,IACA9B,EAAA6B,EAAA7B,EAAAiC,EAAAH,GAAAG,EAAAH,EAAA,IACAG,EAAAH,GAAA/B,EACAkC,EAAAH,EAAA,GAAA9B,EAGA,OAAAzF,GAWA,GARAvB,EAAAmJ,GAAAvH,EAOA5B,EAAAoJ,KAAAxH,EAAAE,IAAAuH,UAAAzH,EAAAC,IAAAyH,eAAAC,WAAA,uEACA,OAAAvJ,EAAAoJ,KAAA,CACA,IACArB,EADA5N,EAAAyH,EAAAC,IAAA3F,cAAA,OAKA,GAHA/B,EAAAqP,UAAA,sBACAzB,EAAA5N,EAAAsP,YACAC,MAAAC,SAAA,qBACA5B,GAAA,iBAAAA,EAAA6B,IACA,OAAA5J,EAAAoJ,KAAA7G,EAEApI,EAAA,KAqEA,SAAA0P,GAAA5L,GACA,sBAAAA,GAAA5J,OAAA4J,OACA,OAAAA,EAEA,IAAA6L,EAAA,IAAA7L,EAAA8L,YACA,QAAAC,KAAA/L,IAAA0D,GAAAqI,KACAF,EAAAE,GAAAH,GAAA5L,EAAA+L,KAEA,OAAAF,EA/DA9J,EAAAiK,MAAAjK,EAAAkK,IAAA,OAAAlK,EAAAoJ,MACApJ,EAAAmK,OAAAjI,EA2BAlC,EAAAoK,GAAAlJ,EAAAgB,EAAArB,UAAAb,EAAAa,UACAb,EAAAqK,IAAA,EAWArK,EAAAI,GAAA,SAAAkK,EAAAlB,GAEA,iBADAA,EAAApG,EAAAzO,KAAA6U,KAEArF,EAAApC,IAAA2I,GAEA,SAAAlB,EACAkB,aAAA1J,MAEA,QAAAwI,GAAA,OAAAkB,GACAlB,UAAAkB,GAAA,OAAAA,GACA,UAAAlB,GAAAkB,IAAAjW,OAAAiW,IACA,SAAAlB,GAAAxI,MAAA2J,SAAA3J,MAAA2J,QAAAD,IACA3G,EAAApP,KAAA+V,GAAArS,MAAA,MAAAgL,eAAAmG,GA4BApJ,EAAAwK,MAAA,SAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,SAAAD,EAAA,CACA,IAAA9D,EAAA0D,EAAAE,EACA3D,EAAA0D,EAAAE,EACA,OAAA7D,GAAAC,GAGA,QAAA9D,EAAA6H,OAAA/D,GAAAD,GAAArD,EAAA,SAFA,EAIA,OAAA1D,EAAAwK,MAAAC,EAAAC,EAAAG,EAAAC,GAAA9K,EAAAwK,MAAAG,EAAAC,EAAAC,EAAAC,IAYA9K,EAAAgL,IAAA,SAAAC,GACA,OAAAA,EAAA,IAAAvH,EAAA,KAWA1D,EAAAiL,IAAA,SAAAD,GACA,OAAA7H,KAAAiB,MAAA,IAAA4G,EAAAtH,EAAA,cAaA1D,EAAAkL,OAAA,SAAAC,EAAAC,EAAAC,GAEA,GADAA,EAAArL,EAAAI,GAAAiL,EAAA,UAAAA,EAAA,GACArL,EAAAI,GAAA+K,EAAA9K,IAEA,IADA,IAAAjI,EAAA+S,EAAAvQ,OACAxC,KAAA,GAAAoL,EAAA2H,EAAA/S,GAAAgT,IAAAC,EACA,OAAAF,EAAA/S,OAEU,CAEV,IAAAkT,EAAAF,GADAD,MAEA,GAAAG,EAAAD,EACA,OAAAD,EAAAE,EAEA,GAAAA,EAAAH,EAAAE,EACA,OAAAD,EAAAE,EAAAH,EAGA,OAAAC,GASA,IAAAG,GAAAC,GAAAxL,EAAAyL,YAAAF,GAIM,QAJNC,GAIM,SAAA7L,GACN,IAAAoG,EAAA,GAAA7C,EAAAwI,SAAA,EAEA,OADA,KAAA/L,EAAAoG,EAAA,EAAAA,EAAA,GACAnC,SAAA,KANA,WACA,6CAAA+H,QAAAJ,GAAAC,IAAA9G,gBAgBA1E,EAAA4L,UAAA,SAAAC,GACA3L,EAAA,oBAAAF,EAAA4B,EAAAE,IAAA+J,GACAjK,EAAAE,IAAA+J,EACAjK,EAAAC,IAAAD,EAAAE,IAAA7F,SACA+D,EAAAM,QAAAwL,SACA9L,EAAAM,QAAAwL,QAAAlK,EAAAE,MAGA,IAAAiK,GAAA,SAAAC,GACA,GAAAhM,EAAAkK,IAAA,CAEA,IACA+B,EADAtR,EAAA,aAEA,IACA,IAAAuR,EAAA,IAAAC,cAAA,YACAD,EAAAE,MAAA,UACAF,EAAAG,QACAJ,EAAAC,EAAAI,KACc,MAAAxW,GACdmW,EAAAM,cAAAtQ,SAAAqQ,KAEA,IAAAE,EAAAP,EAAAQ,kBACAV,GAAAW,GAAA,SAAAV,GACA,IACAC,EAAAvC,MAAAsC,MAAAvJ,EAAAuJ,GAAAL,QAAAhR,EAAA4H,GACA,IAAA6I,EAAAoB,EAAAG,kBAAA,aAEA,qBADAvB,GAAA,IAAAA,IAAA,SAAAA,GAAA,SAAAA,KAAA,IACAxH,SAAA,KAAA3L,OAAA,GACkB,MAAAnC,GAClB,oBAGU,CACV,IAAAsC,EAAAwJ,EAAAC,IAAA3F,cAAA,KACA9D,EAAAwO,MAAA,wBACAxO,EAAAsR,MAAAkD,QAAA,OACAhL,EAAAC,IAAAyK,KAAAtO,YAAA5F,GACA2T,GAAAW,GAAA,SAAAV,GAEA,OADA5T,EAAAsR,MAAAsC,QACApK,EAAAC,IAAAgL,YAAAC,iBAAA1U,EAAAmK,GAAAwK,iBAAA,WAGA,OAAAhB,GAAAC,IAEAgB,GAAA,WACA,cAAA/Y,KAAAmU,EAAAnU,KAAAgZ,EAAAhZ,KAAA8T,GAAA,KAEAmF,GAAA,WACA,cAAAjZ,KAAAmU,EAAAnU,KAAAgZ,EAAAhZ,KAAAkZ,GAAA,KAEAC,GAAA,WACA,OAAAnZ,KAAAoZ,KAEAC,GAAA,SAAAvH,EAAAnE,EAAAmG,GAMA,GALA,MAAAnG,GAAA5B,EAAAI,GAAA2F,EAAA,iBAAAA,GAAA,MAAAA,GAAA,MAAAA,IACAgC,EAAAhC,EAAAgC,EACAnG,EAAAmE,EAAAnE,EACAmE,OAEA,MAAAnE,GAAA5B,EAAAI,GAAA2F,EA5aA,UA4aA,CACA,IAAAwH,EAAAvN,EAAAwN,OAAAzH,GACAA,EAAAwH,EAAAxH,EACAnE,EAAA2L,EAAA3L,EACAmG,EAAAwF,EAAAxF,EAQA,OANAhC,EAAA,GAAAnE,EAAA,GAAAmG,EAAA,KACAhC,GAAA,IACAnE,GAAA,IACAmG,GAAA,MAGAhC,EAAAnE,EAAAmG,IAEA0F,GAAA,SAAA1H,EAAAnE,EAAAmG,EAAAuC,GAIA,IAAAoD,GACA3H,EAJAA,GAAA,IAKAnE,EAJAA,GAAA,IAKAmG,EAJAA,GAAA,IAKAsF,IAAArN,EAAA0N,IAAA3H,EAAAnE,EAAAmG,GACAnE,SAAAwJ,IAGA,OADApN,EAAAI,GAAAkK,EAAA,YAAAoD,EAAA5H,QAAAwE,GACAoD,GAqNA,SAAAhB,GAAA3L,EAAA4M,EAAAC,GAeA,OAdA,SAAAC,IACA,IAAAC,EAAAlN,MAAAC,UAAA5I,MAAA1D,KAAAuM,UAAA,GACAH,EAAAmN,EAAAvX,KAAA,KACAwX,EAAAF,EAAAE,MAAAF,EAAAE,UACAC,EAAAH,EAAAG,MAAAH,EAAAG,UACA,OAAAD,EAAApM,GAAAhB,IAXA,SAAAN,EAAA4N,GACA,QAAA7V,EAAA,EAAA2Q,EAAA1I,EAAAzF,OAA2CxC,EAAA2Q,EAAQ3Q,IAAA,GAAAiI,EAAAjI,KAAA6V,EACnD,OAAA5N,EAAAxL,KAAAwL,EAAAG,OAAApI,EAAA,OAUA8V,CAAAF,EAAArN,GACAiN,IAAAG,EAAApN,IAAAoN,EAAApN,KAEAqN,EAAApT,QAAA,YAAAmT,EAAAC,EAAAG,SACAH,EAAAnZ,KAAA8L,GACAoN,EAAApN,GAAAI,EAAAd,GAAA0N,EAAAG,GACAF,IAAAG,EAAApN,IAAAoN,EAAApN,KA3MAX,EAAAgM,MAAA,SAAAuB,GACA,IAAAG,EA8BA,OA7BA1N,EAAAI,GAAAmN,EAAA,iBAAAA,GAAA,MAAAA,GAAA,MAAAA,GACAG,EAAA1N,EAAAoO,QAAAb,GACAA,EAAAxH,EAAA2H,EAAA3H,EACAwH,EAAA3L,EAAA8L,EAAA9L,EACA2L,EAAAxF,EAAA2F,EAAA3F,EACAwF,EAAAF,IAAAK,EAAAL,KACUrN,EAAAI,GAAAmN,EAAA,iBAAAA,GAAA,MAAAA,GAAA,MAAAA,GACVG,EAAA1N,EAAAqO,QAAAd,GACAA,EAAAxH,EAAA2H,EAAA3H,EACAwH,EAAA3L,EAAA8L,EAAA9L,EACA2L,EAAAxF,EAAA2F,EAAA3F,EACAwF,EAAAF,IAAAK,EAAAL,MAEArN,EAAAI,GAAAmN,EAAA,YACAA,EAAAvN,EAAAwN,OAAAD,IAEAvN,EAAAI,GAAAmN,EAAA,iBAAAA,GAAA,MAAAA,GAAA,MAAAA,GACAG,EAAA1N,EAAAsO,QAAAf,GACAA,EAAAnF,EAAAsF,EAAAtF,EACAmF,EAAAN,EAAAS,EAAAT,EACAM,EAAAJ,EAAAO,EAAAP,EACAO,EAAA1N,EAAAuO,QAAAhB,GACAA,EAAAiB,EAAAd,EAAA3F,IAEAwF,GAAwBF,IAAA,SACxBtH,EAAAwH,EAAA3L,EAAA2L,EAAAxF,EAAAwF,EAAAnF,EAAAmF,EAAAN,EAAAM,EAAAiB,EAAAjB,EAAAJ,GAAA,GAGAI,EAAA3J,SAAAwJ,GACAG,GAmBAvN,EAAAoO,QAAA,SAAAhG,EAAA6E,EAAAuB,EAAAlE,GAQA,IAAAtK,EAAAyO,EAAAC,EAAAC,EAAAC,EAUA,OAjBA3a,KAAAmM,GAAAgI,EAAA,iBAAAA,GAAA,MAAAA,GAAA,MAAAA,IACAoG,EAAApG,EAAAL,EACAkF,EAAA7E,EAAA6E,EACA3C,EAAAlC,EAAAkC,EACAlC,OAMAuG,GADAC,EAAAJ,EAAAvB,IACA,EAAAzJ,GAFA4E,GAFAA,GAAA,KAEA,QAEA,MACApI,EAAAyO,EAAAC,EAAAF,EAAAI,EAMAnB,GAHAzN,IAAA4O,EAAAD,EAAA,IAAAA,EAAAC,GADAxG,OAEAqG,IAAAE,EAAAC,IAAAD,EAAA,KAAAvG,GACAsG,IAAA,IAAAC,EAAAC,IAAAD,GAAAvG,GACAkC,IAmBAtK,EAAAqO,QAAA,SAAAjG,EAAA6E,EAAAE,EAAA7C,GAYA,IAAAtK,EAAAyO,EAAAC,EAAAC,EAAAC,EAUA,OArBA3a,KAAAmM,GAAAgI,EAAA,iBAAAA,GAAA,MAAAA,GAAA,MAAAA,IACA+E,EAAA/E,EAAA+E,EACAF,EAAA7E,EAAA6E,EACA7E,QAEAA,EAAA,GAAA6E,EAAA,GAAAE,EAAA,KACA/E,GAAA,IACA6E,GAAA,IACAE,GAAA,KAIA/E,GAFAA,GAAA,KAEA,OAEAuG,GADAC,EAAA,EAAA3B,GAAAE,EAAA,GAAAA,EAAA,EAAAA,KACA,EAAA3J,EAAA4E,EAAA,MACApI,EAAAyO,EAAAC,EAAAvB,EAAAyB,EAAA,EAMAnB,GAHAzN,IAAA4O,EAAAD,EAAA,IAAAA,EAAAC,GADAxG,OAEAqG,IAAAE,EAAAC,IAAAD,EAAA,KAAAvG,GACAsG,IAAA,IAAAC,EAAAC,IAAAD,GAAAvG,GACAkC,IAkBAtK,EAAAuO,QAAA,SAAAxI,EAAAnE,EAAAmG,GAMA,IAAA8G,EAAAD,EAUA,OAdA7I,GADAgC,EAAAuF,GAAAvH,EAAAnE,EAAAmG,IACA,GACAnG,EAAAmG,EAAA,GACAA,IAAA,IAYiBK,IAPjB,IADAwG,GADAC,EAAAzL,EAAA2C,EAAAnE,EAAAmG,IACAzE,EAAAyC,EAAAnE,EAAAmG,IACA,KACA8G,GAAA9I,GAAAnE,EAAAmG,GAAA6G,EACAC,GAAAjN,GAAAmG,EAAAhC,GAAA6I,EAAA,GACA7I,EAAAnE,GAAAgN,EAAA,GAEA,cAEiB3B,EADjB,GAAA2B,EAAA,EAAAA,EAAAC,EACiB9G,EAAA8G,EAAAjL,SAAAoJ,KAkBjBhN,EAAAsO,QAAA,SAAAvI,EAAAnE,EAAAmG,GAMA,IAAA+G,EAAAC,EAAArP,EAAAkP,EAaA,OAjBA7I,GADAgC,EAAAuF,GAAAvH,EAAAnE,EAAAmG,IACA,GACAnG,EAAAmG,EAAA,GACAA,IAAA,GAWA+G,IARAC,EAAA3L,EAAA2C,EAAAnE,EAAAmG,KACArI,EAAA4D,EAAAyC,EAAAnE,EAAAmG,KAOA,GAIiBK,IATjB,IADAwG,EAAAG,EAAArP,GACA,KACAqP,GAAAhJ,GAAAnE,EAAAmG,GAAA6G,EACAG,GAAAnN,GAAAmG,EAAAhC,GAAA6I,EAAA,GACA7I,EAAAnE,GAAAgN,EAAA,GACA,cAKiB3B,EAHjB,GAAA2B,EAAA,EACAE,EAAA,GAAAF,GAAA,EAAAE,GACAF,GAAA,IAAAE,GACiB3B,EAAA2B,EAAAlL,SAAAsJ,KAEjBlN,EAAAgP,aAAA,WACA,OAAA/a,KAAAsC,KAAA,KAAAoV,QAAAnE,EAAA,OAyBAxH,EAAAiP,SAAA,SAAA/I,EAAAnF,GACA,IAAAmO,EAAAtN,EAAAC,IAAA3F,cAAA,OACAgT,EAAAxF,MAAAyF,QAAA,6CACAD,EAAAE,OAAA,WACArO,EAAAxM,KAAAN,MACAA,KAAAmb,OAAA,KACAxN,EAAAC,IAAAyK,KAAA+C,YAAApb,OAEAib,EAAAI,QAAA,WACA1N,EAAAC,IAAAyK,KAAA+C,YAAApb,OAEA2N,EAAAC,IAAAyK,KAAAtO,YAAAkR,GACAA,EAAAhJ,OAGA,SAAAqJ,KACA,OAAAtb,KAAAoZ,IA+KA,SAAAmC,GAAAC,EAAAC,GAEA,IADA,IAAAvV,KACA/B,EAAA,EAAAuX,EAAAF,EAAA7U,OAA2C+U,EAAA,GAAAD,EAAAtX,EAAmBA,GAAA,GAC9D,IAAAwH,IAC0BmH,GAAA0I,EAAArX,EAAA,GAAA4O,GAAAyI,EAAArX,EAAA,KACA2O,GAAA0I,EAAArX,GAAA4O,GAAAyI,EAAArX,EAAA,KACA2O,GAAA0I,EAAArX,EAAA,GAAA4O,GAAAyI,EAAArX,EAAA,KACA2O,GAAA0I,EAAArX,EAAA,GAAA4O,GAAAyI,EAAArX,EAAA,KAE1BsX,EACAtX,EAEkBuX,EAAA,GAAAvX,EAClBwH,EAAA,IAA6BmH,GAAA0I,EAAA,GAAAzI,GAAAyI,EAAA,IACXE,EAAA,GAAAvX,IAClBwH,EAAA,IAA6BmH,GAAA0I,EAAA,GAAAzI,GAAAyI,EAAA,IAC7B7P,EAAA,IAA6BmH,GAAA0I,EAAA,GAAAzI,GAAAyI,EAAA,KAL7B7P,EAAA,IAA6BmH,GAAA0I,EAAAE,EAAA,GAAA3I,GAAAyI,EAAAE,EAAA,IAQ7BA,EAAA,GAAAvX,EACAwH,EAAA,GAAAA,EAAA,GACkBxH,IAClBwH,EAAA,IAA6BmH,GAAA0I,EAAArX,GAAA4O,GAAAyI,EAAArX,EAAA,KAG7B+B,EAAAtF,MAAA,MACA+K,EAAA,GAAAmH,EAAA,EAAAnH,EAAA,GAAAmH,EAAAnH,EAAA,GAAAmH,GAAA,IACAnH,EAAA,GAAAoH,EAAA,EAAApH,EAAA,GAAAoH,EAAApH,EAAA,GAAAoH,GAAA,GACApH,EAAA,GAAAmH,EAAA,EAAAnH,EAAA,GAAAmH,EAAAnH,EAAA,GAAAmH,GAAA,GACAnH,EAAA,GAAAoH,EAAA,EAAApH,EAAA,GAAAoH,EAAApH,EAAA,GAAAoH,GAAA,EACApH,EAAA,GAAAmH,EACAnH,EAAA,GAAAoH,IAIA,OAAA7M,EApLA6F,EAAAwN,OAAAd,GAAA,SAAAkD,GACA,IAAAA,MAAAnN,EAAAmN,IAAAhR,QAAA,OACA,OAAqBmH,GAAA,EAAAnE,GAAA,EAAAmG,GAAA,EAAAsF,IAAA,OAAAwC,MAAA,EAAAjM,SAAA2L,IAErB,WAAAK,EACA,OAAqB7J,GAAA,EAAAnE,GAAA,EAAAmG,GAAA,EAAAsF,IAAA,OAAAzJ,SAAA2L,KAErBlI,EAAA1F,GAAAiO,EAAA3M,cAAA6M,UAAA,YAAAF,EAAAG,WAAAH,EAAA7D,GAAA6D,IACA,IACAI,EACAC,EACAC,EACApK,EACAqK,EACAhF,EACAuC,EAAAkC,EAAAQ,MAAAvM,GACA,OAAA6J,GACAA,EAAA,KACAwC,EAAA3L,EAAAmJ,EAAA,GAAAoC,UAAA,OACAG,EAAA1L,EAAAmJ,EAAA,GAAAoC,UAAA,SACAE,EAAAzL,EAAAmJ,EAAA,GAAAoC,UAAA,UAEApC,EAAA,KACAwC,EAAA3L,GAAA4L,EAAAzC,EAAA,GAAAqC,OAAA,IAAAI,EAAA,IACAF,EAAA1L,GAAA4L,EAAAzC,EAAA,GAAAqC,OAAA,IAAAI,EAAA,IACAH,EAAAzL,GAAA4L,EAAAzC,EAAA,GAAAqC,OAAA,IAAAI,EAAA,KAEAzC,EAAA,KACAvC,EAAAuC,EAAA,GAAA1V,GAAAoP,GACA4I,EAAA3L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAA+X,GAAA,MACAC,EAAA5L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAAgY,GAAA,MACAC,EAAA7L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAAiY,GAAA,MACA,QAAAxC,EAAA,GAAAzK,cAAAhL,MAAA,OAAA6N,EAAAzB,EAAA8G,EAAA,KACAA,EAAA,SAAAA,EAAA,GAAAlT,OAAA,KAAA6N,GAAA,MAEA4H,EAAA,IACAvC,EAAAuC,EAAA,GAAA1V,GAAAoP,GACA4I,EAAA3L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAA+X,GAAA,MACAC,EAAA5L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAAgY,GAAA,MACAC,EAAA7L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAAiY,GAAA,OACA,OAAA/E,EAAA,GAAAlT,OAAA,SAAAkT,EAAA,GAAAlT,OAAA,MAAA+X,GAAA,KACA,QAAAtC,EAAA,GAAAzK,cAAAhL,MAAA,OAAA6N,EAAAzB,EAAA8G,EAAA,KACAA,EAAA,SAAAA,EAAA,GAAAlT,OAAA,KAAA6N,GAAA,KACA9F,EAAAoO,QAAA4B,EAAAC,EAAAC,EAAApK,IAEA4H,EAAA,IACAvC,EAAAuC,EAAA,GAAA1V,GAAAoP,GACA4I,EAAA3L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAA+X,GAAA,MACAC,EAAA5L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAAgY,GAAA,MACAC,EAAA7L,EAAA8G,EAAA,IACA,KAAAA,EAAA,GAAAlT,OAAA,KAAAiY,GAAA,OACA,OAAA/E,EAAA,GAAAlT,OAAA,SAAAkT,EAAA,GAAAlT,OAAA,MAAA+X,GAAA,KACA,QAAAtC,EAAA,GAAAzK,cAAAhL,MAAA,OAAA6N,EAAAzB,EAAA8G,EAAA,KACAA,EAAA,SAAAA,EAAA,GAAAlT,OAAA,KAAA6N,GAAA,KACA9F,EAAAqO,QAAA2B,EAAAC,EAAAC,EAAApK,MAEA4H,GAAoB3H,EAAAiK,EAAApO,EAAAqO,EAAAlI,EAAAmI,EAAAtM,SAAA2L,KACpBlC,IAAA,cAAA6C,EAAAD,GAAA,EAAAD,GAAA,IAAApM,SAAA,IAAA3L,MAAA,GACA+H,EAAAI,GAAA0F,EAAA,YAAA4H,EAAA5H,WACA4H,KAEiB3H,GAAA,EAAAnE,GAAA,EAAAmG,GAAA,EAAAsF,IAAA,OAAAwC,MAAA,EAAAjM,SAAA2L,KACXvP,GAYNA,EAAAqQ,IAAA3D,GAAA,SAAAtE,EAAA6E,EAAAlF,GACA,OAAA/H,EAAAoO,QAAAhG,EAAA6E,EAAAlF,GAAAsF,MAaArN,EAAAsQ,IAAA5D,GAAA,SAAAtE,EAAA6E,EAAAE,GACA,OAAAnN,EAAAqO,QAAAjG,EAAA6E,EAAAE,GAAAE,MAaArN,EAAA0N,IAAAhB,GAAA,SAAA3G,EAAAnE,EAAAmG,GACA,SAAA3D,EAAA2C,GAA4B,OAAAA,EAAA,KAC5B,oBAAA3C,EAAA2D,GAAA3D,EAAAxC,IAAA,EAAAwC,EAAA2B,IAAA,IAAAnC,SAAA,IAAA3L,MAAA,KAWA+H,EAAAuQ,SAAA,SAAAnF,GACA,IAAAoF,EAAAvc,KAAAsc,SAAAC,MAAAvc,KAAAsc,SAAAC,QAAmEpI,EAAA,EAAA6E,EAAA,EAAAlF,EAAAqD,GAAA,KACnEsC,EAAAzZ,KAAAma,QAAAoC,EAAApI,EAAAoI,EAAAvD,EAAAuD,EAAAzI,GAOA,OANAyI,EAAApI,GAAA,KACAoI,EAAApI,EAAA,IACAoI,EAAApI,EAAA,EACAoI,EAAAvD,GAAA,GACAuD,EAAAvD,GAAA,IAAAhZ,KAAAsc,SAAAC,OAAqDpI,EAAA,EAAA6E,EAAA,EAAAlF,EAAAyI,EAAAzI,KAErD2F,EAAAL,KAQArN,EAAAuQ,SAAAE,MAAA,kBACAxc,KAAAuc,OAoDAxQ,EAAA0Q,gBAAA,SAAAC,GACA,IAAAA,EACA,YAEA,IAAAC,EAAAC,GAAAF,GACA,GAAAC,EAAAE,IACA,OAAAC,GAAAH,EAAAE,KAGA,IAAAE,GAA4Bvc,EAAA,EAAAkL,EAAA,EAAAyI,EAAA,EAAA+E,EAAA,EAAAzN,EAAA,EAAAqG,EAAA,EAAAkL,EAAA,EAAAhE,EAAA,EAAAkD,EAAA,EAAA3B,EAAA,EAAAkB,EAAA,GAC5Bra,KA4BA,OA3BA2K,EAAAI,GAAAuQ,EAAAtQ,IAAAL,EAAAI,GAAAuQ,EAAA,GAAAtQ,KACAhL,EAAA0b,GAAAJ,IAEAtb,EAAAuF,QACA6H,EAAAkO,GAAAhF,QAAAlE,EAAA,SAAAhT,EAAAsT,EAAApI,GACA,IAAAjD,KACAxF,EAAA6Q,EAAA9E,cASA,GARAtD,EAAAgM,QAAAhE,EAAA,SAAAlT,EAAAsT,GACAA,GAAArL,EAAA7H,MAAAkT,KAEA,KAAA7Q,GAAAwF,EAAA9B,OAAA,IACAvF,EAAAR,MAAAkT,GAAA1O,GAAAqD,EAAA8D,OAAA,OACAtJ,EAAA,IACA6Q,EAAA,KAAAA,EAAA,SAEA,KAAA7Q,EACA7B,EAAAR,MAAAkT,GAAA1O,GAAAqD,SACkB,KAAAA,EAAA9B,QAAAoW,EAAA9Z,KAClB7B,EAAAR,MAAAkT,GAAA1O,GAAAqD,EAAA8D,OAAA,EAAAwQ,EAAA9Z,MACA8Z,EAAA9Z,SAMA7B,EAAAuO,SAAA5D,EAAAgP,aACA4B,EAAAE,IAAAC,GAAA1b,GACAA,GAaA2K,EAAAkR,qBAAAxE,GAAA,SAAAyE,GACA,IAAAA,EACA,YAEA,IACA9b,KAeA,OAdA2K,EAAAI,GAAA+Q,EAAA9Q,IAAAL,EAAAI,GAAA+Q,EAAA,GAAA9Q,KACAhL,EAAA0b,GAAAI,IAEA9b,EAAAuF,QACA6H,EAAA0O,GAAAxF,QAAAjE,EAAA,SAAAjT,EAAAsT,EAAApI,GACA,IAAAjD,KACAsG,EAAAzO,KAAAwT,GACApI,EAAAgM,QAAAhE,EAAA,SAAAlT,EAAAsT,GACAA,GAAArL,EAAA7H,MAAAkT,KAEA1S,EAAAR,MAAAkT,GAAA1O,GAAAqD,MAGArH,EAAAuO,SAAA5D,EAAAgP,aACA3Z,IAGA,IAAAwb,GAAA,SAAAO,GACA,IAAAxR,EAAAiR,GAAAO,GAAAP,GAAAO,OAcA,OAbAxR,EAAAwR,GACAxR,EAAAwR,GAAAC,MAAA,IAEAzR,EAAAwR,IACAC,MAAA,KAGAC,WAAA,WACA,QAAAtH,KAAApK,IAAA+B,GAAAqI,OAAAoH,IACAxR,EAAAoK,GAAAqH,SACAzR,EAAAoK,GAAAqH,cAAAzR,EAAAoK,MAGApK,EAAAwR,IA2JA,SAAAG,GAAApB,EAAAqB,EAAAC,EAAAC,EAAAC,GAGA,OAAAxB,GADAA,IADA,EAAAqB,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,GACA,EAAAH,EAAA,GAAAC,EAAA,EAAAC,GACA,EAAAF,EAAA,EAAAC,EAEA,SAAAG,GAAAnH,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA+G,EAAAC,EAAApC,GACA,MAAAA,IACAA,EAAA,GAQA,IALA,IAAAqC,GADArC,IAAA,IAAAA,EAAA,IAAAA,GACA,EAEAsC,IAAA,8EACAC,GAAA,yEACAC,EAAA,EACA9Z,EAAA,EAAwBA,EAJxB,GAI+BA,IAAA,CAC/B,IAAA+Z,EAAAJ,EAAAC,EAAA5Z,GAAA2Z,EACAK,EAAAb,GAAAY,EAAA1H,EAAAE,EAAAE,EAAAgH,GACAQ,EAAAd,GAAAY,EAAAzH,EAAAE,EAAAE,EAAAgH,GACAQ,EAAAF,IAAAC,IACAH,GAAAD,EAAA7Z,GAAA8K,EAAAqP,KAAAD,GAEA,OAAAP,EAAAG,EAmBA,SAAAM,GAAA/H,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA+G,EAAAC,GACA,KACA1O,EAAAqH,EAAAE,GAAArH,EAAAuH,EAAAgH,IACAvO,EAAAmH,EAAAE,GAAAvH,EAAAyH,EAAAgH,IACAzO,EAAAsH,EAAAE,GAAAtH,EAAAwH,EAAAgH,IACAxO,EAAAoH,EAAAE,GAAAxH,EAAA0H,EAAAgH,IAJA,CAQA,IAEAW,GAAAhI,EAAAE,IAAAG,EAAAgH,IAAApH,EAAAE,IAAAC,EAAAgH,GAEA,GAAAY,EAAA,CAGA,IAAAC,IAPAjI,EAAAG,EAAAF,EAAAC,IAAAE,EAAAgH,IAAApH,EAAAE,IAAAE,EAAAiH,EAAAhH,EAAA+G,IAOAY,EACAE,IAPAlI,EAAAG,EAAAF,EAAAC,IAAAG,EAAAgH,IAAApH,EAAAE,IAAAC,EAAAiH,EAAAhH,EAAA+G,IAOAY,EACAG,GAAAF,EAAAG,QAAA,GACAC,GAAAH,EAAAE,QAAA,GACA,KACAD,GAAAtP,EAAAmH,EAAAE,GAAAkI,QAAA,IACAD,GAAAxP,EAAAqH,EAAAE,GAAAkI,QAAA,IACAD,GAAAtP,EAAAuH,EAAAgH,GAAAgB,QAAA,IACAD,GAAAxP,EAAAyH,EAAAgH,GAAAgB,QAAA,IACAC,GAAAxP,EAAAoH,EAAAE,GAAAiI,QAAA,IACAC,GAAA1P,EAAAsH,EAAAE,GAAAiI,QAAA,IACAC,GAAAxP,EAAAwH,EAAAgH,GAAAe,QAAA,IACAC,GAAA1P,EAAA0H,EAAAgH,GAAAe,QAAA,IAIA,OAAiB9L,EAAA2L,EAAA1L,EAAA2L,KAQjB,SAAAI,GAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAAnT,EAAAoT,WAAAJ,GACAK,EAAArT,EAAAoT,WAAAH,GACA,IAAAjT,EAAAsT,gBAAAH,EAAAE,GACA,OAAAH,EAAA,KAUA,IARA,IAAAK,EAAA3B,GAAA3R,MAAA,EAAA+S,GACAQ,EAAA5B,GAAA3R,MAAA,EAAAgT,GACAQ,EAAArQ,KAAAmQ,EAAA,MACAG,EAAAtQ,KAAAoQ,EAAA,MACAG,KACAC,KACAC,KACA/J,EAAAoJ,EAAA,KACA9a,EAAA,EAAwBA,EAAAqb,EAAA,EAAYrb,IAAA,CACpC,IAAAwH,EAAAI,EAAA8T,kBAAA7T,MAAAD,EAAAgT,EAAA3Z,OAAAjB,EAAAqb,IACAE,EAAA9e,MAAyBkS,EAAAnH,EAAAmH,EAAAC,EAAApH,EAAAoH,EAAAmJ,EAAA/X,EAAAqb,IAEzB,IAAArb,EAAA,EAAoBA,EAAAsb,EAAA,EAAYtb,IAChCwH,EAAAI,EAAA8T,kBAAA7T,MAAAD,EAAAiT,EAAA5Z,OAAAjB,EAAAsb,IACAE,EAAA/e,MAAyBkS,EAAAnH,EAAAmH,EAAAC,EAAApH,EAAAoH,EAAAmJ,EAAA/X,EAAAsb,IAEzB,IAAAtb,EAAA,EAAoBA,EAAAqb,EAAQrb,IAC5B,QAAA0Q,EAAA,EAA4BA,EAAA4K,EAAQ5K,IAAA,CACpC,IAAAiL,EAAAJ,EAAAvb,GACA4b,EAAAL,EAAAvb,EAAA,GACA6b,EAAAL,EAAA9K,GACAoL,EAAAN,EAAA9K,EAAA,GACAqL,EAAA3Q,EAAAwQ,EAAAjN,EAAAgN,EAAAhN,GAAA,aACAqN,EAAA5Q,EAAA0Q,EAAAnN,EAAAkN,EAAAlN,GAAA,aACA3G,EAAAoS,GAAAuB,EAAAhN,EAAAgN,EAAA/M,EAAAgN,EAAAjN,EAAAiN,EAAAhN,EAAAiN,EAAAlN,EAAAkN,EAAAjN,EAAAkN,EAAAnN,EAAAmN,EAAAlN,GACA,GAAA5G,EAAA,CACA,GAAAyT,EAAAzT,EAAA2G,EAAA8L,QAAA,KAAAzS,EAAA4G,EAAA6L,QAAA,GACA,SAEAgB,EAAAzT,EAAA2G,EAAA8L,QAAA,IAAAzS,EAAA4G,EAAA6L,QAAA,GACA,IAAAwB,EAAAN,EAAA5D,EAAA3M,GAAApD,EAAA+T,GAAAJ,EAAAI,KAAAH,EAAAG,GAAAJ,EAAAI,MAAAH,EAAA7D,EAAA4D,EAAA5D,GACAmE,EAAAL,EAAA9D,EAAA3M,GAAApD,EAAAgU,GAAAH,EAAAG,KAAAF,EAAAE,GAAAH,EAAAG,MAAAF,EAAA/D,EAAA8D,EAAA9D,GACAkE,GAAA,GAAAA,GAAA,OAAAC,GAAA,GAAAA,GAAA,QACApB,EACApJ,IAEAA,EAAAjV,MACAkS,EAAA3G,EAAA2G,EACAC,EAAA5G,EAAA4G,EACAqN,GAAA/Q,EAAA+Q,EAAA,GACAC,GAAAhR,EAAAgR,EAAA,OAOA,OAAAxK,EAgCA,SAAAyK,GAAAC,EAAAC,EAAAvB,GACAsB,EAAAxU,EAAA0U,YAAAF,GACAC,EAAAzU,EAAA0U,YAAAD,GAGA,IAFA,IAAAhK,EAAAC,EAAAC,EAAAC,EAAA+J,EAAAC,EAAAC,EAAAC,EAAA9B,EAAAC,EACAnJ,EAAAoJ,EAAA,KACA9a,EAAA,EAAA2Q,EAAAyL,EAAA5Z,OAA2CxC,EAAA2Q,EAAQ3Q,IAAA,CACnD,IAAA2c,EAAAP,EAAApc,GACA,QAAA2c,EAAA,GACAtK,EAAAkK,EAAAI,EAAA,GACArK,EAAAkK,EAAAG,EAAA,OACc,CACd,KAAAA,EAAA,IAEAtK,GADAuI,GAAAvI,EAAAC,GAAArR,OAAA0b,EAAA9c,MAAA,KACA,GACAyS,EAAAsI,EAAA,KAEAA,GAAAvI,EAAAC,EAAAD,EAAAC,EAAAiK,EAAAC,EAAAD,EAAAC,GACAnK,EAAAkK,EACAjK,EAAAkK,GAEA,QAAA9L,EAAA,EAAAE,EAAAyL,EAAA7Z,OAAmDkO,EAAAE,EAAQF,IAAA,CAC3D,IAAAkM,EAAAP,EAAA3L,GACA,QAAAkM,EAAA,GACArK,EAAAkK,EAAAG,EAAA,GACApK,EAAAkK,EAAAE,EAAA,OACsB,CACtB,KAAAA,EAAA,IAEArK,GADAsI,GAAAtI,EAAAC,GAAAvR,OAAA2b,EAAA/c,MAAA,KACA,GACA2S,EAAAqI,EAAA,KAEAA,GAAAtI,EAAAC,EAAAD,EAAAC,EAAAiK,EAAAC,EAAAD,EAAAC,GACAnK,EAAAkK,EACAjK,EAAAkK,GAEA,IAAAG,EAAAlC,GAAAC,EAAAC,EAAAC,GACA,GAAAA,EACApJ,GAAAmL,MAC0B,CAC1B,QAAAC,EAAA,EAAAC,EAAAF,EAAAra,OAA8Dsa,EAAAC,EAAQD,IACtED,EAAAC,GAAAE,SAAAhd,EACA6c,EAAAC,GAAAG,SAAAvM,EACAmM,EAAAC,GAAAlC,OACAiC,EAAAC,GAAAjC,OAEAnJ,IAAAzQ,OAAA4b,OAMA,OAAAnL,EA1UA9J,EAAA8T,kBAAA,SAAAwB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1F,GACA,IAAAkE,EAAA,EAAAlE,EACA2F,EAAArS,EAAA4Q,EAAA,GACA0B,EAAAtS,EAAA4Q,EAAA,GACAC,EAAAnE,IACA6F,EAAA1B,EAAAnE,EACApJ,EAAA+O,EAAAR,EAAA,EAAAS,EAAA5F,EAAAqF,EAAA,EAAAnB,EAAAlE,IAAAuF,EAAAM,EAAAJ,EACA5O,EAAA8O,EAAAP,EAAA,EAAAQ,EAAA5F,EAAAsF,EAAA,EAAApB,EAAAlE,IAAAwF,EAAAK,EAAAH,EACAI,EAAAX,EAAA,EAAAnF,GAAAqF,EAAAF,GAAAhB,GAAAoB,EAAA,EAAAF,EAAAF,GACAY,EAAAX,EAAA,EAAApF,GAAAsF,EAAAF,GAAAjB,GAAAqB,EAAA,EAAAF,EAAAF,GACAY,EAAAX,EAAA,EAAArF,GAAAuF,EAAAF,GAAAlB,GAAAsB,EAAA,EAAAF,EAAAF,GACAY,EAAAX,EAAA,EAAAtF,GAAAwF,EAAAF,GAAAnB,GAAAuB,EAAA,EAAAF,EAAAF,GACAY,EAAAhC,EAAAiB,EAAAnF,EAAAqF,EACAc,EAAAjC,EAAAkB,EAAApF,EAAAsF,EACAvQ,EAAAmP,EAAAqB,EAAAvF,EAAAyF,EACAzQ,EAAAkP,EAAAsB,EAAAxF,EAAA0F,EACAU,EAAA,OAAArT,EAAA6H,MAAAkL,EAAAE,EAAAD,EAAAE,GAAA1S,EAEA,OADAuS,EAAAE,GAAAD,EAAAE,KAAAG,GAAA,MAEAxP,IACAC,IACAtH,GAAiBqH,EAAAkP,EAAAjP,EAAAkP,GACjBM,GAAiBzP,EAAAoP,EAAAnP,EAAAoP,GACjB5F,OAAqBzJ,EAAAsP,EAAArP,EAAAsP,GACrBG,KAAmB1P,EAAA7B,EAAA8B,EAAA7B,GACnBoR,UAiCAvW,EAAAoT,WAAA,SAAAkC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA7V,EAAAI,GAAAkV,EAAA,WACAA,KAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,IAEA,IAAAnN,EAAAgO,GAAAzW,MAAA,KAAAqV,GACA,OACAvO,EAAA2B,EAAAnF,IAAAwD,EACAC,EAAA0B,EAAAnF,IAAAyD,EACA2D,GAAAjC,EAAArF,IAAA0D,EACA6D,GAAAlC,EAAArF,IAAA2D,EACAF,MAAA4B,EAAArF,IAAA0D,EAAA2B,EAAAnF,IAAAwD,EACAnB,OAAA8C,EAAArF,IAAA2D,EAAA0B,EAAAnF,IAAAyD,IAgBAhH,EAAA2W,kBAAA,SAAAjO,EAAA3B,EAAAC,GACA,OAAAD,GAAA2B,EAAA3B,MAAA2B,EAAAiC,IAAA3D,GAAA0B,EAAA1B,MAAA0B,EAAAkC,IAcA5K,EAAAsT,gBAAA,SAAAH,EAAAE,GACA,IAAAjb,EAAA4H,EAAA2W,kBACA,OAAAve,EAAAib,EAAAF,EAAApM,EAAAoM,EAAAnM,IACA5O,EAAAib,EAAAF,EAAAxI,GAAAwI,EAAAnM,IACA5O,EAAAib,EAAAF,EAAApM,EAAAoM,EAAAvI,KACAxS,EAAAib,EAAAF,EAAAxI,GAAAwI,EAAAvI,KACAxS,EAAA+a,EAAAE,EAAAtM,EAAAsM,EAAArM,IACA5O,EAAA+a,EAAAE,EAAA1I,GAAA0I,EAAArM,IACA5O,EAAA+a,EAAAE,EAAAtM,EAAAsM,EAAAzI,KACAxS,EAAA+a,EAAAE,EAAA1I,GAAA0I,EAAAzI,MACAuI,EAAApM,EAAAsM,EAAA1I,IAAAwI,EAAApM,EAAAsM,EAAAtM,GAAAsM,EAAAtM,EAAAoM,EAAAxI,IAAA0I,EAAAtM,EAAAoM,EAAApM,KACAoM,EAAAnM,EAAAqM,EAAAzI,IAAAuI,EAAAnM,EAAAqM,EAAArM,GAAAqM,EAAArM,EAAAmM,EAAAvI,IAAAyI,EAAArM,EAAAmM,EAAAnM,IAkKAhH,EAAA4W,iBAAA,SAAApC,EAAAC,GACA,OAAAF,GAAAC,EAAAC,IAEAzU,EAAA6W,uBAAA,SAAArC,EAAAC,GACA,OAAAF,GAAAC,EAAAC,EAAA,IAoEAzU,EAAA8W,kBAAA,SAAAvV,EAAAwF,EAAAC,GACA,IAAA0B,EAAA1I,EAAA+W,SAAAxV,GACA,OAAAvB,EAAA2W,kBAAAjO,EAAA3B,EAAAC,IACAuN,GAAAhT,IAAA,IAAAwF,EAAAC,IAAA,IAAA0B,EAAAiC,GAAA,cAEA3K,EAAAgX,gBAAA,SAAAC,GACA,kBACA/W,EAAA,0DAAA+W,EAAA,sBAAAA,KAwBA,IAAAC,GAAAlX,EAAA+W,SAAA,SAAAxV,GACA,IAAAqP,EAAAC,GAAAtP,GACA,GAAAqP,EAAAlI,KACA,OAAAmB,GAAA+G,EAAAlI,MAEA,IAAAnH,EACA,OAAqBwF,EAAA,EAAAC,EAAA,EAAAF,MAAA,EAAAlB,OAAA,EAAA+E,GAAA,EAAAC,GAAA,GAQrB,IALA,IAIAhL,EAJAmH,EAAA,EACAC,EAAA,EACA2H,KACAwI,KAEA/e,EAAA,EAAA2Q,GANAxH,EAAA2H,GAAA3H,IAMA3G,OAA0CxC,EAAA2Q,EAAQ3Q,IAElD,SADAwH,EAAA2B,EAAAnJ,IACA,GACA2O,EAAAnH,EAAA,GACAoH,EAAApH,EAAA,GACA+O,EAAA9Z,KAAAkS,GACAoQ,EAAAtiB,KAAAmS,OACc,CACd,IAAAoQ,EAAAV,GAAA3P,EAAAC,EAAApH,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IACA+O,IAAAtV,GAAA+d,EAAA7T,IAAAwD,EAAAqQ,EAAA/T,IAAA0D,GACAoQ,IAAA9d,GAAA+d,EAAA7T,IAAAyD,EAAAoQ,EAAA/T,IAAA2D,GACAD,EAAAnH,EAAA,GACAoH,EAAApH,EAAA,GAGA,IAAAyX,EAAA/T,EAAArD,GAAA,EAAA0O,GACA2I,EAAAhU,EAAArD,GAAA,EAAAkX,GACAI,EAAAnU,EAAAnD,GAAA,EAAA0O,GACA6I,EAAApU,EAAAnD,GAAA,EAAAkX,GACArQ,EAAAyQ,EAAAF,EACAzR,EAAA4R,EAAAF,EACAG,GACA1Q,EAAAsQ,EACArQ,EAAAsQ,EACA3M,GAAA4M,EACA3M,GAAA4M,EACA1Q,QACAlB,SACAV,GAAAmS,EAAAvQ,EAAA,EACA3B,GAAAmS,EAAA1R,EAAA,GAGA,OADAgL,EAAAlI,KAAAmB,GAAA4N,GACAA,GAEA1G,GAAA,SAAA2G,GACA,IAAA5N,EAAAD,GAAA6N,GAEA,OADA5N,EAAAlG,SAAA5D,EAAAgP,aACAlF,GAEA6N,GAAA3X,EAAA4X,gBAAA,SAAAF,GACA,IAAA9G,EAAAC,GAAA6G,GACA,GAAA9G,EAAAiH,IACA,OAAA9G,GAAAH,EAAAiH,KAEA7X,EAAAI,GAAAsX,EAAArX,IAAAL,EAAAI,GAAAsX,KAAA,GAAArX,KACAqX,EAAA1X,EAAA0Q,gBAAAgH,IAEA,IAAA5N,KACA/C,EAAA,EACAC,EAAA,EACAiP,EAAA,EACAC,EAAA,EACA1F,EAAA,EACA,KAAAkH,EAAA,QAGAzB,EAFAlP,EAAA2Q,EAAA,MAGAxB,EAFAlP,EAAA0Q,EAAA,MAGAlH,IACA1G,EAAAjV,MAAA,IAAAkS,EAAAC,KAEA,QAAA5O,EAAAoY,EAAAzH,EAAA2O,EAAA9c,OAAuDxC,EAAA2Q,EAAQ3Q,IAAA,CAC/D,IAAA2N,EAAA+D,EAAA1R,MACA0f,EAAAJ,EAAAtf,GACA,GAAA0f,EAAA,IAAA9U,EAAAzO,KAAAujB,EAAA,IAEA,OADA/R,EAAA,GAAA/C,EAAAzO,KAAAujB,EAAA,IACA/R,EAAA,IACA,QACAA,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,KAAA+R,EAAA,GAAA/Q,GAAA8L,QAAA,GACA9M,EAAA,KAAA+R,EAAA,GAAA9Q,GAAA6L,QAAA,GACA,MACA,QACA9M,EAAA,KAAA+R,EAAA,GAAA9Q,GAAA6L,QAAA,GACA,MACA,QACAoD,EAAA6B,EAAA,GACA5B,EAAA4B,EAAA,GACA,QACA,QAAAhP,EAAA,EAAAE,EAAA8O,EAAAld,OAA4DkO,EAAAE,EAAQF,IACpE/C,EAAA+C,KAAAgP,EAAAhP,MAAA,EAAA/B,EAAAC,IAAA6L,QAAA,OAGkB,CAClB9M,EAAA+D,EAAA1R,MACA,KAAA0f,EAAA,KACA7B,EAAA6B,EAAA,GAAA/Q,EACAmP,EAAA4B,EAAA,GAAA9Q,GAEA,QAAAkO,EAAA,EAAAC,EAAA2C,EAAAld,OAAoDsa,EAAAC,EAAQD,IAC5DpL,EAAA1R,GAAA8c,GAAA4C,EAAA5C,GAGA,IAAA6C,EAAAjO,EAAA1R,GAAAwC,OACA,OAAAkP,EAAA1R,GAAA,IACA,QACA2O,EAAAkP,EACAjP,EAAAkP,EACA,MACA,QACAnP,IAAA+C,EAAA1R,GAAA2f,EAAA,GACA,MACA,QACA/Q,IAAA8C,EAAA1R,GAAA2f,EAAA,GACA,MACA,QACAhR,IAAA+C,EAAA1R,GAAA2f,EAAA,GACA/Q,IAAA8C,EAAA1R,GAAA2f,EAAA,IAKA,OAFAjO,EAAAlG,SAAA5D,EAAAgP,aACA4B,EAAAiH,IAAA9G,GAAAjH,GACAA,GAEAkO,GAAAhY,EAAAiY,gBAAA,SAAAP,GACA,IAAA9G,EAAAC,GAAA6G,GACA,GAAA9G,EAAApN,IACA,OAAAuN,GAAAH,EAAApN,KAKA,GAHAxD,EAAAI,GAAAsX,EAAArX,IAAAL,EAAAI,GAAAsX,KAAA,GAAArX,KACAqX,EAAA1X,EAAA0Q,gBAAAgH,KAEAA,MAAA9c,OACA,kBAEA,IAAAkP,KACA/C,EAAA,EACAC,EAAA,EACAiP,EAAA,EACAC,EAAA,EACA1F,EAAA,EACA,KAAAkH,EAAA,QAGAzB,EAFAlP,GAAA2Q,EAAA,MAGAxB,EAFAlP,GAAA0Q,EAAA,MAGAlH,IACA1G,EAAA,QAAA/C,EAAAC,IAGA,IADA,IACAjB,EAAA+R,EADAI,EAAA,GAAAR,EAAA9c,QAAA,KAAA8c,EAAA,YAAAA,EAAA,MAAAhT,eAAA,KAAAgT,EAAA,MAAAhT,cACAtM,EAAAoY,EAAAzH,EAAA2O,EAAA9c,OAA8DxC,EAAA2Q,EAAQ3Q,IAAA,CAGtE,GAFA0R,EAAAjV,KAAAkR,OACA+R,EAAAJ,EAAAtf,IACA,IAAAqM,EAAAlQ,KAAAujB,EAAA,IAEA,OADA/R,EAAA,GAAAtB,EAAAlQ,KAAAujB,EAAA,IACA/R,EAAA,IACA,QACAA,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,GAAA+R,EAAA,GACA/R,EAAA,KAAA+R,EAAA,GAAA/Q,GACAhB,EAAA,KAAA+R,EAAA,GAAA9Q,GACA,MACA,QACAjB,EAAA,IAAA+R,EAAA,GAAA9Q,EACA,MACA,QACAjB,EAAA,IAAA+R,EAAA,GAAA/Q,EACA,MACA,QAEA,IADA,IAAAoR,GAAApR,EAAAC,GAAA3N,GAAAye,EAAA7f,MAAA,IACA6Q,EAAA,EAAAE,EAAAmP,EAAAvd,OAA8DkO,EAAAE,EAAQF,IACtEqP,EAAArP,IAAAqP,EAAArP,GAAA/B,EACAoR,IAAArP,IAAAqP,EAAArP,GAAA9B,EAEA8C,EAAA9I,MACA8I,IAAAzQ,GAAAmW,GAAA2I,EAAAD,IACA,MACA,QACAjC,GAAA6B,EAAA,GAAA/Q,EACAmP,GAAA4B,EAAA,GAAA9Q,EACA,QACA,IAAA8B,EAAA,EAAAE,EAAA8O,EAAAld,OAAwDkO,EAAAE,EAAQF,IAChE/C,EAAA+C,IAAAgP,EAAAhP,MAAA,EAAA/B,EAAAC,QAGkB,QAAA8Q,EAAA,GAClBK,GAAApR,EAAAC,GAAA3N,GAAAye,EAAA7f,MAAA,IACA6R,EAAA9I,MACA8I,IAAAzQ,GAAAmW,GAAA2I,EAAAD,IACAnS,GAAA,KAAA1M,GAAAye,EAAA7f,OAAA,SAEA,QAAAid,EAAA,EAAAC,EAAA2C,EAAAld,OAAoDsa,EAAAC,EAAQD,IAC5DnP,EAAAmP,GAAA4C,EAAA5C,GAGA,OAAAnP,EAAA,IACA,QACAgB,EAAAkP,EACAjP,EAAAkP,EACA,MACA,QACAnP,EAAAhB,EAAA,GACA,MACA,QACAiB,EAAAjB,EAAA,GACA,MACA,QACAkQ,EAAAlQ,IAAAnL,OAAA,GACAsb,EAAAnQ,IAAAnL,OAAA,GACA,QACAmM,EAAAhB,IAAAnL,OAAA,GACAoM,EAAAjB,IAAAnL,OAAA,IAKA,OAFAkP,EAAAlG,SAAA5D,EAAAgP,aACA4B,EAAApN,IAAAuN,GAAAjH,GACAA,GAEAsO,GAAA,SAAA3N,EAAAC,EAAAC,EAAAC,GACA,OAAAH,EAAAC,EAAAC,EAAAC,EAAAD,EAAAC,IAEAyN,GAAA,SAAA5N,EAAAC,EAAA2L,EAAAC,EAAA3L,EAAAC,GAGA,OAFA,IAGAH,EAFA,IAEA4L,EAHA,IAIA3L,EAHA,IAGA4L,EAJA,IAKA3L,EAJA,IAIA0L,EALA,IAMAzL,EALA,IAKA0L,EACA3L,EACAC,IAGA0N,GAAA,SAAA7N,EAAAC,EAAA1E,EAAAC,EAAAuE,EAAA+N,EAAAC,EAAA7N,EAAAC,EAAA6N,GAGA,IAGA5E,EAHA6E,EAAA,IAAAhV,EAAA,IACAsH,EAAAtH,EAAA,MAAA8G,GAAA,GACAV,KAEA6O,EAAAjM,GAAA,SAAA3F,EAAAC,EAAAgE,GAGA,OAA6BjE,EAF7BA,EAAA7D,EAAA0V,IAAA5N,GAAAhE,EAAA9D,EAAA2V,IAAA7N,GAE6BhE,EAD7BD,EAAA7D,EAAA2V,IAAA7N,GAAAhE,EAAA9D,EAAA0V,IAAA5N,MAGA,GAAAyN,EAqCAK,EAAAL,EAAA,GACAM,EAAAN,EAAA,GACAvT,EAAAuT,EAAA,GACAtT,EAAAsT,EAAA,OAxCA,CAEAhO,GADAoJ,EAAA8E,EAAAlO,EAAAC,GAAAM,IACAjE,EACA2D,EAAAmJ,EAAA7M,EAEA2D,GADAkJ,EAAA8E,EAAAhO,EAAAC,GAAAI,IACAjE,EACA6D,EAAAiJ,EAAA7M,EACA9D,EAAA0V,IAAAlV,EAAA,IAAA8G,GACAtH,EAAA2V,IAAAnV,EAAA,IAAA8G,GADA,IAEAzD,GAAA0D,EAAAE,GAAA,EACA3D,GAAA0D,EAAAE,GAAA,EACAxC,EAAArB,KAAAf,KAAAgB,KAAAf,KACAmC,EAAA,IAEApC,GADAoC,EAAAlF,EAAAqP,KAAAnK,GAEAnC,GAAAmC,GAEA,IAAA4Q,EAAAhT,IACAiT,EAAAhT,IACAiP,GAAAqD,GAAAC,GAAA,KACAtV,EAAAqP,KAAA/O,GAAAwV,EAAAC,EAAAD,EAAAhS,IAAAiS,EAAAlS,MAAAiS,EAAAhS,IAAAiS,EAAAlS,OACA7B,EAAAgQ,EAAAlP,EAAAgB,EAAAf,GAAAwE,EAAAE,GAAA,EACAxF,EAAA+P,GAAAjP,EAAAc,EAAAf,GAAA0E,EAAAE,GAAA,EACAkO,EAAA5V,EAAAgW,OAAAxO,EAAAvF,GAAAc,GAAA4M,QAAA,IACAkG,EAAA7V,EAAAgW,OAAAtO,EAAAzF,GAAAc,GAAA4M,QAAA,IAEAiG,EAAArO,EAAAvF,EAAAxB,EAAAoV,IACAC,EAAApO,EAAAzF,EAAAxB,EAAAqV,IACAD,EAAA,IAAAA,EAAA,EAAApV,EAAAoV,GACAC,EAAA,IAAAA,EAAA,EAAArV,EAAAqV,GACAP,GAAAM,EAAAC,IACAD,GAAA,EAAApV,IAEA8U,GAAAO,EAAAD,IACAC,GAAA,EAAArV,GAQA,IAAAyV,EAAAJ,EAAAD,EACA,GAAAtV,EAAA2V,GAAAT,EAAA,CACA,IAAAU,EAAAL,EACAM,EAAA1O,EACA2O,EAAA1O,EACAmO,EAAAD,EAAAJ,GAAAF,GAAAO,EAAAD,EAAA,MACAnO,EAAAzF,EAAAc,EAAA9C,EAAA0V,IAAAG,GACAnO,EAAAzF,EAAAc,EAAA/C,EAAA2V,IAAAE,GACAjP,EAAAwO,GAAA3N,EAAAC,EAAA5E,EAAAC,EAAAuE,EAAA,EAAAgO,EAAAa,EAAAC,GAAAP,EAAAK,EAAAlU,EAAAC,IAEAgU,EAAAJ,EAAAD,EACA,IAAAS,EAAArW,EAAA0V,IAAAE,GACAU,EAAAtW,EAAA2V,IAAAC,GACAW,EAAAvW,EAAA0V,IAAAG,GACAW,EAAAxW,EAAA2V,IAAAE,GACA5I,EAAAjN,EAAAyW,IAAAR,EAAA,GACAS,EAAA,IAAA5T,EAAAmK,EACA0J,EAAA,IAAA5T,EAAAkK,EACA2J,GAAArP,EAAAC,GACAqP,GAAAtP,EAAAmP,EAAAJ,EAAA9O,EAAAmP,EAAAN,GACAS,GAAArP,EAAAiP,EAAAF,EAAA9O,EAAAiP,EAAAJ,GACAQ,GAAAtP,EAAAC,GAGA,GAFAmP,EAAA,KAAAD,EAAA,GAAAC,EAAA,GACAA,EAAA,KAAAD,EAAA,GAAAC,EAAA,GACAtB,EACA,OAAAsB,EAAAC,EAAAC,GAAA5gB,GAAAyQ,GAIA,IADA,IAAAoQ,KACA9hB,EAAA,EAAA2Q,GAFAe,GAAAiQ,EAAAC,EAAAC,GAAA5gB,GAAAyQ,GAAAvT,OAAAyB,GAAA,MAEA4C,OAAiDxC,EAAA2Q,EAAQ3Q,IACzD8hB,EAAA9hB,KAAA,EAAAugB,EAAA7O,EAAA1R,EAAA,GAAA0R,EAAA1R,GAAA4S,GAAAhE,EAAA2R,EAAA7O,EAAA1R,GAAA0R,EAAA1R,EAAA,GAAA4S,GAAAjE,EAEA,OAAAmT,GAGAC,GAAA,SAAA7E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1F,GACA,IAAAkE,EAAA,EAAAlE,EACA,OACApJ,EAAAtD,EAAA4Q,EAAA,GAAAiB,EAAA,EAAA7R,EAAA4Q,EAAA,GAAAlE,EAAAqF,EAAA,EAAAnB,EAAAlE,IAAAuF,EAAAjS,EAAA0M,EAAA,GAAAyF,EACA5O,EAAAvD,EAAA4Q,EAAA,GAAAkB,EAAA,EAAA9R,EAAA4Q,EAAA,GAAAlE,EAAAsF,EAAA,EAAApB,EAAAlE,IAAAwF,EAAAlS,EAAA0M,EAAA,GAAA0F,IAGAa,GAAAhK,GAAA,SAAA4I,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,IAOAuE,EAPA3lB,EAAAihB,EAAA,EAAAF,EAAAF,GAAAM,EAAA,EAAAF,EAAAF,GACAzN,EAAA,GAAAyN,EAAAF,GAAA,GAAAI,EAAAF,GACA7V,EAAA2V,EAAAE,EACAnB,IAAAtM,EAAA7E,EAAAqP,KAAAxK,IAAA,EAAAtT,EAAAkL,IAAA,EAAAlL,EACA6f,IAAAvM,EAAA7E,EAAAqP,KAAAxK,IAAA,EAAAtT,EAAAkL,IAAA,EAAAlL,EACAuS,GAAAuO,EAAAM,GACA9O,GAAAuO,EAAAM,GA+BA,OA7BApS,EAAA6Q,GAAA,SAAAA,EAAA,IACA7Q,EAAA8Q,GAAA,SAAAA,EAAA,IACAD,EAAA,GAAAA,EAAA,IACA+F,EAAAD,GAAA7E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAxB,GACAtN,EAAAlS,KAAAulB,EAAArT,GACAC,EAAAnS,KAAAulB,EAAApT,IAEAsN,EAAA,GAAAA,EAAA,IACA8F,EAAAD,GAAA7E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAvB,GACAvN,EAAAlS,KAAAulB,EAAArT,GACAC,EAAAnS,KAAAulB,EAAApT,IAEAvS,EAAAkhB,EAAA,EAAAF,EAAAF,GAAAM,EAAA,EAAAF,EAAAF,GAEA9V,EAAA4V,EAAAE,EACApB,KAFAtM,EAAA,GAAA0N,EAAAF,GAAA,GAAAI,EAAAF,IAEAvS,EAAAqP,KAAAxK,IAAA,EAAAtT,EAAAkL,IAAA,EAAAlL,EACA6f,IAAAvM,EAAA7E,EAAAqP,KAAAxK,IAAA,EAAAtT,EAAAkL,IAAA,EAAAlL,EACA+O,EAAA6Q,GAAA,SAAAA,EAAA,IACA7Q,EAAA8Q,GAAA,SAAAA,EAAA,IACAD,EAAA,GAAAA,EAAA,IACA+F,EAAAD,GAAA7E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAxB,GACAtN,EAAAlS,KAAAulB,EAAArT,GACAC,EAAAnS,KAAAulB,EAAApT,IAEAsN,EAAA,GAAAA,EAAA,IACA8F,EAAAD,GAAA7E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAvB,GACAvN,EAAAlS,KAAAulB,EAAArT,GACAC,EAAAnS,KAAAulB,EAAApT,KAGAzD,KAAuBwD,EAAAzD,EAAArD,GAAA,EAAA8G,GAAAC,EAAA1D,EAAArD,GAAA,EAAA+G,IACvB3D,KAAuB0D,EAAA3D,EAAAnD,GAAA,EAAA8G,GAAAC,EAAA5D,EAAAnD,GAAA,EAAA+G,OAGvBkC,GAAAlJ,EAAA0U,YAAAhI,GAAA,SAAAnL,EAAAkT,GACA,IAAA7D,GAAA6D,GAAA5D,GAAAtP,GACA,IAAAkT,GAAA7D,EAAAyJ,MACA,OAAAtJ,GAAAH,EAAAyJ,OAyFA,IAvFA,IAAAza,EAAAoY,GAAAzW,GACAkQ,EAAAgD,GAAAuD,GAAAvD,GACAhM,GAA0B1B,EAAA,EAAAC,EAAA,EAAAsT,GAAA,EAAAC,GAAA,EAAA5L,EAAA,EAAAwI,EAAA,EAAAqD,GAAA,KAAAC,GAAA,MAC1BC,GAA2B3T,EAAA,EAAAC,EAAA,EAAAsT,GAAA,EAAAC,GAAA,EAAA5L,EAAA,EAAAwI,EAAA,EAAAqD,GAAA,KAAAC,GAAA,MAC3BE,EAAA,SAAApZ,EAAApH,EAAAygB,GACA,IAAAzE,EAAAC,EACA,IAAA7U,EACA,WAAApH,EAAA4M,EAAA5M,EAAA6M,EAAA7M,EAAA4M,EAAA5M,EAAA6M,EAAA7M,EAAA4M,EAAA5M,EAAA6M,GAGA,SADAzF,EAAA,KAJuCsZ,EAAA,EAAAC,EAAA,MAIvC3gB,EAAAqgB,GAAArgB,EAAAsgB,GAAA,MACAlZ,EAAA,IACA,QACApH,EAAAwU,EAAApN,EAAA,GACApH,EAAAgd,EAAA5V,EAAA,GACA,MACA,QACAA,GAAA,KAAAlI,GAAAif,GAAArY,GAAA,GAAA9F,EAAA4M,EAAA5M,EAAA6M,GAAA3N,GAAAkI,EAAAtJ,MAAA,MACA,MACA,QACA,KAAA2iB,GAAA,KAAAA,GACAzE,EAAA,EAAAhc,EAAA4M,EAAA5M,EAAAmgB,GACAlE,EAAA,EAAAjc,EAAA6M,EAAA7M,EAAAogB,KAGApE,EAAAhc,EAAA4M,EACAqP,EAAAjc,EAAA6M,GAEAzF,GAAA,IAAA4U,EAAAC,GAAA/c,GAAAkI,EAAAtJ,MAAA,IACA,MACA,QACA,KAAA2iB,GAAA,KAAAA,GACAzgB,EAAAqgB,GAAA,EAAArgB,EAAA4M,EAAA5M,EAAAqgB,GACArgB,EAAAsgB,GAAA,EAAAtgB,EAAA6M,EAAA7M,EAAAsgB,KAGAtgB,EAAAqgB,GAAArgB,EAAA4M,EACA5M,EAAAsgB,GAAAtgB,EAAA6M,GAEAzF,GAAA,KAAAlI,GAAAgf,GAAAle,EAAA4M,EAAA5M,EAAA6M,EAAA7M,EAAAqgB,GAAArgB,EAAAsgB,GAAAlZ,EAAA,GAAAA,EAAA,KACA,MACA,QACApH,EAAAqgB,GAAAjZ,EAAA,GACApH,EAAAsgB,GAAAlZ,EAAA,GACAA,GAAA,KAAAlI,GAAAgf,GAAAle,EAAA4M,EAAA5M,EAAA6M,EAAAzF,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KACA,MACA,QACAA,GAAA,KAAAlI,GAAA+e,GAAAje,EAAA4M,EAAA5M,EAAA6M,EAAAzF,EAAA,GAAAA,EAAA,KACA,MACA,QACAA,GAAA,KAAAlI,GAAA+e,GAAAje,EAAA4M,EAAA5M,EAAA6M,EAAAzF,EAAA,GAAApH,EAAA6M,IACA,MACA,QACAzF,GAAA,KAAAlI,GAAA+e,GAAAje,EAAA4M,EAAA5M,EAAA6M,EAAA7M,EAAA4M,EAAAxF,EAAA,KACA,MACA,QACAA,GAAA,KAAAlI,GAAA+e,GAAAje,EAAA4M,EAAA5M,EAAA6M,EAAA7M,EAAAwU,EAAAxU,EAAAgd,IAGA,OAAA5V,GAEAwZ,EAAA,SAAAC,EAAA5iB,GACA,GAAA4iB,EAAA5iB,GAAAwC,OAAA,GACAogB,EAAA5iB,GAAA+V,QAEA,IADA,IAAA4G,EAAAiG,EAAA5iB,GACA2c,EAAAna,QACAqgB,EAAA7iB,GAAA,IACAqZ,IAAAyJ,EAAA9iB,GAAA,KACA4iB,EAAAxa,OAAApI,IAAA,QAAAiB,GAAA0b,EAAAvU,OAAA,OAEAwa,EAAAxa,OAAApI,EAAA,GACA2Q,EAAA3F,EAAAxD,EAAAhF,OAAA6W,KAAA7W,QAAA,KAGAugB,EAAA,SAAA3G,EAAAC,EAAA2G,EAAAC,EAAAjjB,GACAoc,GAAAC,GAAA,KAAAD,EAAApc,GAAA,SAAAqc,EAAArc,GAAA,KACAqc,EAAAjU,OAAApI,EAAA,OAAAijB,EAAAtU,EAAAsU,EAAArU,IACAoU,EAAAd,GAAA,EACAc,EAAAb,GAAA,EACAa,EAAArU,EAAAyN,EAAApc,GAAA,GACAgjB,EAAApU,EAAAwN,EAAApc,GAAA,GACA2Q,EAAA3F,EAAAxD,EAAAhF,OAAA6W,KAAA7W,QAAA,KAGAqgB,KACAC,KACAI,EAAA,GACAV,EAAA,GACAxiB,EAAA,EAAA2Q,EAAA3F,EAAAxD,EAAAhF,OAAA6W,KAAA7W,QAAA,GAAuExC,EAAA2Q,EAAQ3Q,IAAA,CAC/EwH,EAAAxH,KAAAkjB,EAAA1b,EAAAxH,GAAA,IAEA,KAAAkjB,IAEAL,EAAA7iB,GAAAkjB,EACAljB,IAAAwiB,EAAAK,EAAA7iB,EAAA,KAEAwH,EAAAxH,GAAAuiB,EAAA/a,EAAAxH,GAAAqQ,EAAAmS,GAEA,KAAAK,EAAA7iB,IAAA,KAAAkjB,IAAAL,EAAA7iB,GAAA,KAIA2iB,EAAAnb,EAAAxH,GAEAqZ,IACAA,EAAArZ,KAAAkjB,EAAA7J,EAAArZ,GAAA,IACA,KAAAkjB,IAEAJ,EAAA9iB,GAAAkjB,EACAljB,IAAAwiB,EAAAM,EAAA9iB,EAAA,KAEAqZ,EAAArZ,GAAAuiB,EAAAlJ,EAAArZ,GAAAsiB,EAAAE,GAEA,KAAAM,EAAA9iB,IAAA,KAAAkjB,IAAAJ,EAAA9iB,GAAA,KAEA2iB,EAAAtJ,EAAArZ,IAEA+iB,EAAAvb,EAAA6R,EAAAhJ,EAAAiS,EAAAtiB,GACA+iB,EAAA1J,EAAA7R,EAAA8a,EAAAjS,EAAArQ,GACA,IAAAmjB,EAAA3b,EAAAxH,GACAojB,EAAA/J,KAAArZ,GACAqjB,EAAAF,EAAA3gB,OACA8gB,EAAAjK,GAAA+J,EAAA5gB,OACA6N,EAAA1B,EAAAwU,EAAAE,EAAA,GACAhT,EAAAzB,EAAAuU,EAAAE,EAAA,GACAhT,EAAA6R,GAAAjW,EAAAkX,EAAAE,EAAA,KAAAhT,EAAA1B,EACA0B,EAAA8R,GAAAlW,EAAAkX,EAAAE,EAAA,KAAAhT,EAAAzB,EACA0T,EAAAJ,GAAA7I,IAAApN,EAAAmX,EAAAE,EAAA,KAAAhB,EAAA3T,GACA2T,EAAAH,GAAA9I,IAAApN,EAAAmX,EAAAE,EAAA,KAAAhB,EAAA1T,GACA0T,EAAA3T,EAAA0K,GAAA+J,EAAAE,EAAA,GACAhB,EAAA1T,EAAAyK,GAAA+J,EAAAE,EAAA,GAKA,OAHAjK,IACAb,EAAAyJ,MAAAtJ,GAAAnR,IAEA6R,GAAA7R,EAAA6R,GAAA7R,GACU,KAAAmR,IAuCV4K,IAtCA3b,EAAA4b,WAAAlP,GAAA,SAAA/G,GAEA,IADA,IAAAwS,KACA/f,EAAA,EAAA2Q,EAAApD,EAAA/K,OAAkDxC,EAAA2Q,EAAQ3Q,IAAA,CAC1D,IAAAgiB,KACAyB,EAAAlW,EAAAvN,GAAAgY,MAAA,uBAEA,GADAgK,EAAApO,MAAAhM,EAAAwN,OAAAqO,EAAA,IACAzB,EAAApO,MAAA6D,MACA,YAEAuK,EAAAtU,QAAAsU,EAAApO,MAAAlG,QACAsU,EAAApO,MAAAoO,EAAApO,MAAAqB,IACAwO,EAAA,KAAAzB,EAAA0B,OAAAD,EAAA,QACA1D,EAAAtjB,KAAAulB,GAEA,IAAAhiB,EAAA,EAAA2Q,EAAAoP,EAAAvd,OAAA,EAA8CxC,EAAA2Q,EAAQ3Q,IACtD,IAAA+f,EAAA/f,GAAA0jB,OAAA,CAGA,IAFA,IAAAtL,EAAAnM,EAAA8T,EAAA/f,EAAA,GAAA0jB,QAAA,GACArF,EAAA,EACA3N,EAAA1Q,EAAA,EAAwC0Q,EAAAC,EAAQD,IAChD,GAAAqP,EAAArP,GAAAgT,OAAA,CACArF,EAAA0B,EAAArP,GAAAgT,OACA,MAGArF,IACAA,EAAA,IACA3N,EAAAC,GAIA,IADA,IAAA5O,IADAsc,EAAApS,EAAAoS,IACAjG,IAAA1H,EAAA1Q,EAAA,GAC2BA,EAAA0Q,EAAO1Q,IAClCoY,GAAArW,EACAge,EAAA/f,GAAA0jB,OAAAtL,EAAA,IAIA,OAAA2H,IAEAnY,EAAA+b,MAAA,SAAAvT,EAAAwT,GACAxT,GAAAwT,EAAAC,MAAAD,EAAAC,IAAAzT,EAAA0T,MACA1T,GAAAwT,EAAAG,SAAAH,EAAAG,OAAA3T,EAAA4T,MACA5T,EAAA4T,OAAA5T,EAAA4T,KAAAF,KAAA1T,EAAA0T,MACA1T,EAAA0T,OAAA1T,EAAA0T,KAAAE,KAAA5T,EAAA4T,QAkDAC,IAhDArc,EAAAsc,SAAA,SAAA9T,EAAAwT,GACAA,EAAAC,MAAAzT,IAGAmT,GAAAnT,EAAAwT,GACAxT,EAAA4T,KAAA,KACA5T,EAAA0T,KAAAF,EAAAC,IACAD,EAAAC,IAAAG,KAAA5T,EACAwT,EAAAC,IAAAzT,IAEAxI,EAAAuc,QAAA,SAAA/T,EAAAwT,GACAA,EAAAG,SAAA3T,IAGAmT,GAAAnT,EAAAwT,GACAxT,EAAA4T,KAAAJ,EAAAG,OACA3T,EAAA0T,KAAA,KACAF,EAAAG,OAAAD,KAAA1T,EACAwT,EAAAG,OAAA3T,IAEAxI,EAAAwc,aAAA,SAAAhU,EAAAiU,EAAAT,GACAL,GAAAnT,EAAAwT,GACAS,GAAAT,EAAAC,MAAAD,EAAAC,IAAAzT,GACAiU,EAAAL,OAAAK,EAAAL,KAAAF,KAAA1T,GACAA,EAAA4T,KAAAK,EAAAL,KACA5T,EAAA0T,KAAAO,EACAA,EAAAL,KAAA5T,GAEAxI,EAAA0c,cAAA,SAAAlU,EAAAiU,EAAAT,GACAL,GAAAnT,EAAAwT,GACAS,GAAAT,EAAAG,SAAAH,EAAAG,OAAA3T,GACAiU,EAAAP,OAAAO,EAAAP,KAAAE,KAAA5T,GACAA,EAAA0T,KAAAO,EAAAP,KACAO,EAAAP,KAAA1T,EACAA,EAAA4T,KAAAK,GAcAzc,EAAAqc,SAAA,SAAA9a,EAAAsF,GACA,IAAA4Q,EAAAP,GAAA3V,GACAiH,GACAmU,GACA9V,UAAAtE,GAEAqa,QAAA,WACA,OAAAnF,IAIA,OADAoF,GAAArU,EAAA3B,GACA2B,EAAAK,SAiBAgU,IAHA7c,EAAA8c,cAAA,SAAAvb,EAAAsF,GACA,OAAA+B,EAAArH,EAAA8a,GAAA9a,EAAAsF,KAEA7G,EAAA+c,kBAAA,SAAAvU,EAAAwU,GACA,SAAAA,EACA,OAAAxU,EAAAmU,EAAA9V,UAEAmW,EAAAva,EAAAua,GAAArR,QAAA,gBAA4CnD,EAAAmU,EAAA9V,WAAAtE,GAC5C,IAEA0a,EACAC,EAHAC,EAAAnd,EAAAkR,qBAAA8L,GACA/R,EAAA,EAGAmS,EAAA,EACAC,EAAA,EACAV,EAAAnU,EAAAmU,EACAjd,EAAA,IAAA4d,GAEA,GADAX,EAAA9V,UAAAsW,MACAA,EACA,QAAA/kB,EAAA,EAAA2Q,EAAAoU,EAAAviB,OAAmDxC,EAAA2Q,EAAQ3Q,IAAA,CAC3D,IAKAqS,EACAC,EACAC,EACAC,EACA6M,EATAtH,EAAAgN,EAAA/kB,GACAmlB,EAAApN,EAAAvV,OACA4iB,EAAA/a,EAAA0N,EAAA,IAAAlN,cACAwa,EAAAtN,EAAA,IAAAqN,EACAE,EAAAD,EAAA/d,EAAAie,SAAA,EAMA,KAAAH,GAAA,GAAAD,EACAE,GACAhT,EAAAiT,EAAA3W,EAAA,KACA2D,EAAAgT,EAAA1W,EAAA,KACA2D,EAAA+S,EAAA3W,EAAAoJ,EAAA,GAAAA,EAAA,IACAvF,EAAA8S,EAAA1W,EAAAmJ,EAAA,GAAAA,EAAA,IACAzQ,EAAAke,UAAAjT,EAAAF,EAAAG,EAAAF,IAEAhL,EAAAke,UAAAzN,EAAA,GAAAA,EAAA,IAEsB,KAAAqN,EACtB,GAAAD,GACA9F,KAAAjP,EAAAoU,QAAA,GACAld,EAAAiZ,OAAAxI,EAAA,GAAAsH,EAAA1Q,EAAA0Q,EAAA3Q,MAAA,EAAA2Q,EAAAzQ,EAAAyQ,EAAA7R,OAAA,GACAqF,GAAAkF,EAAA,IAC0B,GAAAoN,IAC1BE,GACA9S,EAAA+S,EAAA3W,EAAAoJ,EAAA,GAAAA,EAAA,IACAvF,EAAA8S,EAAA1W,EAAAmJ,EAAA,GAAAA,EAAA,IACAzQ,EAAAiZ,OAAAxI,EAAA,GAAAxF,EAAAC,IAEAlL,EAAAiZ,OAAAxI,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEAlF,GAAAkF,EAAA,IAEsB,KAAAqN,EACtB,GAAAD,GAAA,GAAAA,GACA9F,KAAAjP,EAAAoU,QAAA,GACAld,EAAAme,MAAA1N,EAAA,GAAAA,EAAAoN,EAAA,GAAA9F,EAAA1Q,EAAA0Q,EAAA3Q,MAAA,EAAA2Q,EAAAzQ,EAAAyQ,EAAA7R,OAAA,GACAwX,GAAAjN,EAAA,GACAkN,GAAAlN,EAAAoN,EAAA,IAC0B,GAAAA,IAC1BE,GACA9S,EAAA+S,EAAA3W,EAAAoJ,EAAA,GAAAA,EAAA,IACAvF,EAAA8S,EAAA1W,EAAAmJ,EAAA,GAAAA,EAAA,IACAzQ,EAAAme,MAAA1N,EAAA,GAAAA,EAAA,GAAAxF,EAAAC,IAEAlL,EAAAme,MAAA1N,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEAiN,GAAAjN,EAAA,GACAkN,GAAAlN,EAAA,IAEsB,KAAAqN,GAAA,GAAAD,GACtB7d,EAAAgB,IAAAyP,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAEAwM,EAAAmB,OAAA,EACAtV,EAAAK,OAAAnJ,EAUA8I,EAAAK,OAAAnJ,EAEAid,EAAAS,KACAT,EAAAU,KACAV,EAAA1R,MACA0R,EAAAM,KAAAvd,EAAA5J,EACA6mB,EAAAO,KAAAxd,EAAAqB,EAEA,GAAAqc,GAAA,GAAAC,IAAApS,GAAA0R,EAAAjU,MACAiU,EAAAjU,KAAA3B,IAAAkW,EACAN,EAAAjU,KAAA1B,IAAAkW,GAEAP,EAAAmB,OAAA,IAGAC,GAAA,SAAA9P,GACA,IAAAd,EAAAc,EAAA,GACA,OAAAd,EAAAlK,eACA,eAAAkK,EAAA,KACA,eAAAA,EAAA,aACA,kBAAAc,EAAArT,QACAuS,EAAA,EAAAc,EAAA,GAAAA,EAAA,KAEAd,EAAA,GAEA,kBAAAc,EAAArT,QACAuS,EAAA,IAAAc,EAAA,GAAAA,EAAA,IACkB,GAAAA,EAAArT,QAClBuS,EAAA,MAEAA,EAAA,KAIA6Q,GAAAhe,EAAAie,mBAAA,SAAA5J,EAAAC,GACAA,EAAA7R,EAAA6R,GAAA3I,QAAA,gBAAwC0I,GACxCA,EAAArU,EAAAkR,qBAAAmD,OACAC,EAAAtU,EAAAkR,qBAAAoD,OAMA,IALA,IAGAxL,EAAAE,EACAkV,EAAAC,EAJAC,EAAAhb,EAAAiR,EAAAzZ,OAAA0Z,EAAA1Z,QACAyjB,KACAC,KACAlmB,EAAA,EAEmBA,EAAAgmB,EAAehmB,IAAA,CAGlC,GAFA8lB,EAAA7J,EAAAjc,IAAA2lB,GAAAzJ,EAAAlc,IACA+lB,EAAA7J,EAAAlc,IAAA2lB,GAAAG,GACAA,EAAA,IAAAC,EAAA,IACA,KAAAD,EAAA,GAAAjb,gBAAAib,EAAA,IAAAC,EAAA,IAAAD,EAAA,IAAAC,EAAA,KACA,KAAAD,EAAA,GAAAjb,gBAAAib,EAAA,IAAAC,EAAA,IAAAD,EAAA,IAAAC,EAAA,IAEA,OAIA,IAFAE,EAAAjmB,MACAkmB,EAAAlmB,MACA0Q,EAAA,EAAAE,EAAA5F,EAAA8a,EAAAtjB,OAAAujB,EAAAvjB,QAA+DkO,EAAAE,EAAQF,IACvEA,KAAAoV,IAAAG,EAAAjmB,GAAA0Q,GAAAoV,EAAApV,IACAA,KAAAqV,IAAAG,EAAAlmB,GAAA0Q,GAAAqV,EAAArV,IAGA,OACAuV,OACAC,OA4EA,SAAAhB,GAAA7oB,EAAAsT,EAAApI,EAAAxF,EAAArE,EAAAiL,GACA,MAAAtM,GACAR,KAAAQ,KACAR,KAAA8T,KACA9T,KAAA0L,KACA1L,KAAAkG,KACAlG,KAAA6B,KACA7B,KAAA8M,OAEA9M,KAAAQ,EAAA,EACAR,KAAA8T,EAAA,EACA9T,KAAA0L,EAAA,EACA1L,KAAAkG,EAAA,EACAlG,KAAA6B,EAAA,EACA7B,KAAA8M,EAAA,GAvFAf,EAAAue,cAAA,SAAAxX,EAAAC,EAAAmB,EAAAC,GACA,IAAAoW,EAEA,UADAA,EAAA,MAAApW,GAAApI,EAAAI,GAAA2G,EAAA,UAAAA,EAAAnF,EAAAC,IAAA4c,eAAA1X,IAIA,OAAAyX,EAAAE,QACA,MAAA1X,GAEAwX,YACA1X,MAAA0X,EAAA9U,MAAAiV,YAAAH,EAAAI,YACAhZ,OAAA4Y,EAAA9U,MAAAmV,aAAAL,EAAAM,eAIAN,YACA1X,MAAAE,EACApB,OAAAuC,IAKAqW,UAAA,EACAzX,IACAC,IACAF,MAAAqB,EACAvC,OAAAwC,IAcApI,EAAA2X,kBACA3X,EAAAM,WAYAN,EAAAkJ,cAiBAlJ,EAAA6I,OAAA,SAAApU,EAAAsT,EAAApI,EAAAxF,EAAArE,EAAAiL,GACA,WAAAuc,GAAA7oB,EAAAsT,EAAApI,EAAAxF,EAAArE,EAAAiL,IAmBA,SAAAge,GA0JA,SAAAC,EAAAvqB,GACA,OAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAEA,SAAAwqB,EAAAxqB,GACA,IAAAyqB,EAAAhc,EAAAqP,KAAAyM,EAAAvqB,IACAA,EAAA,KAAAA,EAAA,IAAAyqB,GACAzqB,EAAA,KAAAA,EAAA,IAAAyqB,GAhJAH,EAAAre,IAAA,SAAAjM,EAAAsT,EAAApI,EAAAxF,EAAArE,EAAAiL,GACA,IAGAgG,EAAAC,EAAA0I,EAAA5F,EAHAqV,aACAzf,IAAAzL,KAAAQ,EAAAR,KAAA0L,EAAA1L,KAAA6B,IAAA7B,KAAA8T,EAAA9T,KAAAkG,EAAAlG,KAAA8M,IAAA,QACA8H,IAAApU,EAAAkL,EAAA7J,IAAAiS,EAAA5N,EAAA4G,IAAA,QAOA,IAJAtM,gBAAA6oB,KACAzU,IAAApU,MAAAkL,EAAAlL,EAAAqB,IAAArB,EAAAsT,EAAAtT,EAAA0F,EAAA1F,EAAAsM,IAAA,SAGAgG,EAAA,EAAwBA,EAAA,EAAOA,IAC/B,IAAAC,EAAA,EAA4BA,EAAA,EAAOA,IAAA,CAEnC,IADA8C,EAAA,EACA4F,EAAA,EAAgCA,EAAA,EAAOA,IACvC5F,GAAApK,EAAAqH,GAAA2I,GAAA7G,EAAA6G,GAAA1I,GAEAmY,EAAApY,GAAAC,GAAA8C,EAGA7V,KAAAQ,EAAA0qB,EAAA,MACAlrB,KAAA8T,EAAAoX,EAAA,MACAlrB,KAAA0L,EAAAwf,EAAA,MACAlrB,KAAAkG,EAAAglB,EAAA,MACAlrB,KAAA6B,EAAAqpB,EAAA,MACAlrB,KAAA8M,EAAAoe,EAAA,OASAJ,EAAApB,OAAA,WACA,IAAAyB,EAAAnrB,KACA8S,EAAAqY,EAAA3qB,EAAA2qB,EAAAjlB,EAAAilB,EAAArX,EAAAqX,EAAAzf,EACA,WAAA2d,GAAA8B,EAAAjlB,EAAA4M,GAAAqY,EAAArX,EAAAhB,GAAAqY,EAAAzf,EAAAoH,EAAAqY,EAAA3qB,EAAAsS,GAAAqY,EAAAzf,EAAAyf,EAAAre,EAAAqe,EAAAjlB,EAAAilB,EAAAtpB,GAAAiR,GAAAqY,EAAArX,EAAAqX,EAAAtpB,EAAAspB,EAAA3qB,EAAA2qB,EAAAre,GAAAgG,IASAgY,EAAAlV,MAAA,WACA,WAAAyT,GAAArpB,KAAAQ,EAAAR,KAAA8T,EAAA9T,KAAA0L,EAAA1L,KAAAkG,EAAAlG,KAAA6B,EAAA7B,KAAA8M,IAWAge,EAAAnB,UAAA,SAAA7W,EAAAC,GACA/S,KAAAyM,IAAA,QAAAqG,EAAAC,IAaA+X,EAAAlB,MAAA,SAAA9W,EAAAC,EAAA9B,EAAAC,GACA,MAAA6B,MAAAD,IACA7B,GAAAC,IAAAlR,KAAAyM,IAAA,QAAAwE,EAAAC,GACAlR,KAAAyM,IAAAqG,EAAA,IAAAC,EAAA,MACA9B,GAAAC,IAAAlR,KAAAyM,IAAA,SAAAwE,GAAAC,IAYA4Z,EAAApG,OAAA,SAAAlkB,EAAAsS,EAAAC,GACAvS,EAAAuL,EAAAgL,IAAAvW,GACAsS,KAAA,EACAC,KAAA,EACA,IAAA4R,GAAA1V,EAAA0V,IAAAnkB,GAAAoe,QAAA,GACAgG,GAAA3V,EAAA2V,IAAApkB,GAAAoe,QAAA,GACA5e,KAAAyM,IAAAkY,EAAAC,KAAAD,EAAA7R,EAAAC,GACA/S,KAAAyM,IAAA,SAAAqG,GAAAC,IAYA+X,EAAAhY,EAAA,SAAAA,EAAAC,GACA,OAAAD,EAAA9S,KAAAQ,EAAAuS,EAAA/S,KAAA0L,EAAA1L,KAAA6B,GAYAipB,EAAA/X,EAAA,SAAAD,EAAAC,GACA,OAAAD,EAAA9S,KAAA8T,EAAAf,EAAA/S,KAAAkG,EAAAlG,KAAA8M,GAEAge,EAAAtiB,IAAA,SAAArE,GACA,OAAAnE,KAAAwO,EAAA4c,aAAA,GAAAjnB,IAAAya,QAAA,IAEAkM,EAAAnb,SAAA,WACA,OAAA5D,EAAAiK,IACA,WAAAhW,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,IAAAlG,OAAA,KACAtC,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,QAAAlG,QAEAwoB,EAAAO,SAAA,WACA,sDAAArrB,KAAAwI,IAAA,GACA,SAAAxI,KAAAwI,IAAA,YAAAxI,KAAAwI,IAAA,YAAAxI,KAAAwI,IAAA,GACA,QAAAxI,KAAAwI,IAAA,WAAAxI,KAAAwI,IAAA,oCAEAsiB,EAAAjD,OAAA,WACA,OAAA7nB,KAAA6B,EAAA+c,QAAA,GAAA5e,KAAA8M,EAAA8R,QAAA,KAwBAkM,EAAA/mB,MAAA,WACA,IAAAmnB,KAEAA,EAAAlC,GAAAhpB,KAAA6B,EACAqpB,EAAAjC,GAAAjpB,KAAA8M,EAGA,IAAAwe,IAAAtrB,KAAAQ,EAAAR,KAAA0L,IAAA1L,KAAA8T,EAAA9T,KAAAkG,IACAglB,EAAAK,OAAAtc,EAAAqP,KAAAyM,EAAAO,EAAA,KACAN,EAAAM,EAAA,IAEAJ,EAAAM,MAAAF,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,MACAA,EAAA,IAAAA,EAAA,MAAAA,EAAA,MAAAJ,EAAAM,MAAAF,EAAA,MAAAA,EAAA,MAAAJ,EAAAM,OAEAN,EAAAO,OAAAxc,EAAAqP,KAAAyM,EAAAO,EAAA,KACAN,EAAAM,EAAA,IACAJ,EAAAM,OAAAN,EAAAO,OAGA,IAAA7G,GAAA0G,EAAA,MACA3G,EAAA2G,EAAA,MAaA,OAZA3G,EAAA,GACAuG,EAAAxG,OAAA3Y,EAAAiL,IAAA/H,EAAAyc,KAAA/G,IACAC,EAAA,IACAsG,EAAAxG,OAAA,IAAAwG,EAAAxG,SAGAwG,EAAAxG,OAAA3Y,EAAAiL,IAAA/H,EAAAgW,KAAAL,IAGAsG,EAAAS,YAAAT,EAAAM,MAAA5M,QAAA,IAAAsM,EAAAK,OAAA3M,QAAA,IAAAsM,EAAAO,OAAA7M,QAAA,IAAAsM,EAAAxG,QACAwG,EAAAU,gBAAAV,EAAAM,MAAA5M,QAAA,IAAAsM,EAAAK,OAAA3M,QAAA,IAAAsM,EAAAO,OAAA7M,QAAA,KAAAsM,EAAAxG,OACAwG,EAAAW,aAAAX,EAAAM,MAAA5M,QAAA,KAAAsM,EAAAxG,OACAwG,GASAJ,EAAAgB,kBAAA,SAAAC,GACA,IAAA/S,EAAA+S,GAAA/rB,KAAA+D,KACA,OAAAiV,EAAA2S,UACA3S,EAAAuS,QAAAvS,EAAAuS,OAAA3M,QAAA,GACA5F,EAAAyS,QAAAzS,EAAAyS,OAAA7M,QAAA,GACA5F,EAAA0L,QAAA1L,EAAA0L,OAAA9F,QAAA,IACA5F,EAAAgQ,IAAAhQ,EAAAiQ,GAAA,KAAAjQ,EAAAgQ,GAAAhQ,EAAAiQ,IAAA3a,IACA,GAAA0K,EAAAuS,QAAA,GAAAvS,EAAAyS,OAAA,KAAAzS,EAAAuS,OAAAvS,EAAAyS,OAAA,KAAAnd,IACA0K,EAAA0L,OAAA,KAAA1L,EAAA0L,OAAA,KAAApW,IAEA,KAAAtO,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,GAAAxI,KAAAwI,IAAA,KApOA,CAuOM6gB,GAAAzc,WAqWN,IAnWA,IAAA5K,GAAA,WACAhC,KAAAgsB,aAAA,GAEAC,GAAA,WACA,OAAAjsB,KAAAksB,cAAAlqB,kBAEAmqB,GAAA,WACAnsB,KAAAosB,cAAA,GAEAC,GAAA,WACA,OAAArsB,KAAAksB,cAAAC,mBAEAG,GAAA,SAAAzqB,GACA,IAAA0qB,EAAA5e,EAAAC,IAAA4e,gBAAAC,WAAA9e,EAAAC,IAAAyK,KAAAoU,UACAC,EAAA/e,EAAAC,IAAA4e,gBAAAG,YAAAhf,EAAAC,IAAAyK,KAAAsU,WAEA,OACA7Z,EAAAjR,EAAA+qB,QAAAF,EACA3Z,EAAAlR,EAAAgrB,QAAAN,IAGAO,GACAnf,EAAAC,IAAA7C,iBACA,SAAAf,EAAAmL,EAAAgB,EAAA4W,GACA,IAAAjgB,EAAA,SAAAjL,GACA,IAAAmrB,EAAAV,GAAAzqB,GACA,OAAAsU,EAAA7V,KAAAysB,EAAAlrB,EAAAmrB,EAAAla,EAAAka,EAAAja,IAIA,GAFA/I,EAAAe,iBAAAoK,EAAArI,GAAA,GAEAsB,GAAAO,EAAAwG,GAAA,CACA,IAAA8X,EAAA,SAAAprB,GAIA,IAHA,IAAAmrB,EAAAV,GAAAzqB,GACAqrB,EAAArrB,EAEAsC,EAAA,EAAA2Q,EAAAjT,EAAAsrB,eAAAtrB,EAAAsrB,cAAAxmB,OAAwFxC,EAAA2Q,EAAQ3Q,IAChG,GAAAtC,EAAAsrB,cAAAhpB,GAAAsO,QAAAzI,EAAA,EACAnI,IAAAsrB,cAAAhpB,IACA+nB,cAAAgB,EACArrB,EAAAG,eAAAiqB,GACApqB,EAAAsqB,gBAAAE,GACA,MAIA,OAAAlW,EAAA7V,KAAAysB,EAAAlrB,EAAAmrB,EAAAla,EAAAka,EAAAja,IAEA/I,EAAAe,iBAAA4D,EAAAwG,GAAA8X,GAAA,GAGA,kBAMA,OALAjjB,EAAAojB,oBAAAjY,EAAArI,GAAA,GAEAsB,GAAAO,EAAAwG,IACAnL,EAAAojB,oBAAAze,EAAAwG,GAAA8X,GAAA,IAEA,IAGUtf,EAAAC,IAAAyf,YACV,SAAArjB,EAAAmL,EAAAgB,EAAA4W,GACA,IAAAjgB,EAAA,SAAAjL,GACAA,KAAA8L,EAAAE,IAAArL,MACA,IAAA+pB,EAAA5e,EAAAC,IAAA4e,gBAAAC,WAAA9e,EAAAC,IAAAyK,KAAAoU,UACAC,EAAA/e,EAAAC,IAAA4e,gBAAAG,YAAAhf,EAAAC,IAAAyK,KAAAsU,WACA7Z,EAAAjR,EAAA+qB,QAAAF,EACA3Z,EAAAlR,EAAAgrB,QAAAN,EAGA,OAFA1qB,EAAAG,eAAAH,EAAAG,mBACAH,EAAAsqB,gBAAAtqB,EAAAsqB,oBACAhW,EAAA7V,KAAAysB,EAAAlrB,EAAAiR,EAAAC,IAOA,OALA/I,EAAAqjB,YAAA,KAAAlY,EAAArI,GACA,WAEA,OADA9C,EAAAsjB,YAAA,KAAAnY,EAAArI,IACA,SAfU,EAqBVygB,MACAC,GAAA,SAAA3rB,GAOA,IANA,IAIA4rB,EAJA3a,EAAAjR,EAAA+qB,QACA7Z,EAAAlR,EAAAgrB,QACAN,EAAA5e,EAAAC,IAAA4e,gBAAAC,WAAA9e,EAAAC,IAAAyK,KAAAoU,UACAC,EAAA/e,EAAAC,IAAA4e,gBAAAG,YAAAhf,EAAAC,IAAAyK,KAAAsU,WAEA9X,EAAA0Y,GAAA5mB,OACAkO,KAAA,CAEA,GADA4Y,EAAAF,GAAA1Y,GACAzG,GAAAvM,EAAA6rB,SAGA,IAFA,IACAC,EADAxpB,EAAAtC,EAAA6rB,QAAA/mB,OAEAxC,KAEA,IADAwpB,EAAA9rB,EAAA6rB,QAAAvpB,IACAypB,YAAAH,EAAAlZ,GAAAsZ,MAAAjoB,GAAA,CACAkN,EAAA6a,EAAAf,QACA7Z,EAAA4a,EAAAd,SACAhrB,EAAAqqB,cAAArqB,EAAAqqB,cAAArqB,GAAAG,iBACA,YAIAH,EAAAG,iBAEA,IACAqU,EADAyX,EAAAL,EAAAlZ,GAAAuZ,KAEA3F,EAAA2F,EAAAC,YACAC,EAAAF,EAAAG,WACAtV,EAAAmV,EAAArY,MAAAkD,QACAhL,EAAAE,IAAAqgB,OAAAF,EAAA5S,YAAA0S,GACAA,EAAArY,MAAAkD,QAAA,OACAtC,EAAAoX,EAAAlZ,GAAAwT,MAAAoG,kBAAArb,EAAAC,GACA+a,EAAArY,MAAAkD,UACAhL,EAAAE,IAAAqgB,QAAA/F,EAAA6F,EAAAI,aAAAN,EAAA3F,GAAA6F,EAAAjkB,YAAA+jB,IACAzX,GAAApK,EAAA,qBAAAwhB,EAAAlZ,GAAA3O,GAAA6nB,EAAAlZ,GAAA8B,GACAvD,GAAA4Z,EACA3Z,GAAAwZ,EACAtgB,EAAA,qBAAAwhB,EAAAlZ,GAAA3O,GAAA6nB,EAAAY,YAAAZ,EAAAlZ,GAAAzB,EAAA2a,EAAAlZ,GAAAsZ,MAAA/a,EAAAC,EAAA0a,EAAAlZ,GAAAsZ,MAAA9a,EAAAD,EAAAC,EAAAlR,KAGAysB,GAAA,SAAAzsB,GACAkK,EAAAwiB,YAAAf,IAAAgB,UAAAF,IAGA,IAFA,IACAb,EADAtpB,EAAAopB,GAAA5mB,OAEAxC,MACAspB,EAAAF,GAAAppB,IACAoQ,GAAAsZ,SACA5hB,EAAA,oBAAAwhB,EAAAlZ,GAAA3O,GAAA6nB,EAAAgB,WAAAhB,EAAAiB,aAAAjB,EAAAY,YAAAZ,EAAAlZ,GAAA1S,GAEA0rB,OAgBAoB,GAAA5iB,EAAAwI,MAiNApQ,GAAAuK,EAAA/H,OAAgCxC,OAChC,SAAAyqB,GACA7iB,EAAA6iB,GAAAD,GAAAC,GAAA,SAAAzY,EAAAuD,GAKA,OAJA3N,EAAAI,GAAAgK,EAAA,cACAnW,KAAA0O,OAAA1O,KAAA0O,WACA1O,KAAA0O,OAAA9N,MAAuCqC,KAAA2rB,EAAA9hB,EAAAqJ,EAAA0Y,OAAA/B,GAAA9sB,KAAA8uB,OAAA9uB,KAAA8tB,MAAAngB,EAAAC,IAAAghB,EAAAzY,EAAAuD,GAAA1Z,SAEvCA,MAEA+L,EAAA,KAAA6iB,GAAAD,GAAA,KAAAC,GAAA,SAAAzY,GAGA,IAFA,IAAAzH,EAAA1O,KAAA0O,WACAwK,EAAAxK,EAAA/H,OACAuS,KACAxK,EAAAwK,GAAAjW,MAAA2rB,IAAA7iB,EAAAI,GAAAgK,EAAA,cAAAzH,EAAAwK,GAAApM,GAAAqJ,IACAzH,EAAAwK,GAAA2V,SACAngB,EAAAnC,OAAA2M,EAAA,IACAxK,EAAA/H,eAAA3G,KAAA0O,QAGA,OAAA1O,MAlBA,CAoBU0O,EAAAvK,KA4BVwqB,GAAAvtB,KAAA,SAAA2U,EAAAoB,GACA,IAAA/V,EAAAuS,EAAA3T,KAAA4F,IAAA+N,EAAA3T,KAAA4F,QACA,MAAAiH,UAAAlG,OACA,OAAAvF,EAEA,MAAAyL,UAAAlG,OAAA,CACA,GAAAoF,EAAAI,GAAA4J,EAAA,WACA,QAAA5R,KAAA4R,IAAArI,GAAAvJ,IACAnE,KAAAoB,KAAA+C,EAAA4R,EAAA5R,IAEA,OAAAnE,KAGA,OADAiM,EAAA,oBAAAjM,KAAA4F,GAAA5F,KAAAoB,EAAA2U,MACA3U,EAAA2U,GAIA,OAFA3U,EAAA2U,GAAAoB,EACAlL,EAAA,oBAAAjM,KAAA4F,GAAA5F,KAAAmX,EAAApB,GACA/V,MAYA2uB,GAAAI,WAAA,SAAAhZ,GAMA,OALA,MAAAA,EACApC,EAAA3T,KAAA4F,OAEA+N,EAAA3T,KAAA4F,YAAA+N,EAAA3T,KAAA4F,IAAAmQ,GAEA/V,MASA2uB,GAAAK,QAAA,WACA,OAAApZ,GAAAjC,EAAA3T,KAAA4F,UAcA+oB,GAAAM,MAAA,SAAAC,EAAAC,EAAAC,EAAAC,GACA,OAAArvB,KAAAsvB,UAAAJ,EAAAE,GAAAG,SAAAJ,EAAAE,GAAAD,IAYAT,GAAAa,QAAA,SAAAN,EAAAC,GACA,OAAAnvB,KAAAyvB,YAAAP,GAAAQ,WAAAP,IAEA,IAAAQ,MA+BAhB,GAAApB,KAAA,SAAAqC,EAAAC,EAAAC,EAAAzB,EAAAK,EAAAD,GACA,SAAAlS,EAAA1a,IACAA,EAAAqqB,eAAArqB,GAAAG,iBACA,IAAA8Q,EAAAjR,EAAA+qB,QACA7Z,EAAAlR,EAAAgrB,QACAN,EAAA5e,EAAAC,IAAA4e,gBAAAC,WAAA9e,EAAAC,IAAAyK,KAAAoU,UACAC,EAAA/e,EAAAC,IAAA4e,gBAAAG,YAAAhf,EAAAC,IAAAyK,KAAAsU,WAEA,GADA3sB,KAAA6tB,MAAAjoB,GAAA/D,EAAA+rB,WACAxf,GAAAvM,EAAA6rB,QAEA,IADA,IAAAC,EAAAxpB,EAAAtC,EAAA6rB,QAAA/mB,OACAxC,KAGA,GAFAwpB,EAAA9rB,EAAA6rB,QAAAvpB,GACAnE,KAAA6tB,MAAAjoB,GAAA+nB,EAAAC,WACAD,EAAAC,YAAA5tB,KAAA6tB,MAAAjoB,GAAA,CACAkN,EAAA6a,EAAAf,QACA7Z,EAAA4a,EAAAd,QACA,MAIA7sB,KAAA6tB,MAAA/a,IAAA4Z,EACA1sB,KAAA6tB,MAAA9a,IAAAwZ,GACAgB,GAAA5mB,QAAAoF,EAAA8C,UAAA2e,IAAA1e,QAAAwf,IACAf,GAAA3sB,MAAwB2T,GAAAvU,KAAAquB,aAAAK,cAAAD,cACxBoB,GAAA5jB,EAAArK,GAAA,sBAAA5B,KAAA4F,GAAAiqB,GACAD,GAAA3jB,EAAArK,GAAA,qBAAA5B,KAAA4F,GAAAgqB,GACAE,GAAA7jB,EAAArK,GAAA,oBAAA5B,KAAA4F,GAAAkqB,GACA7jB,EAAA,sBAAAjM,KAAA4F,GAAA8oB,GAAAL,GAAAruB,KAAA6B,EAAA+qB,QAAAF,EAAA7qB,EAAAgrB,QAAAN,EAAA1qB,GAKA,OAHA7B,KAAA6tB,SACA8B,GAAA/uB,MAAyB2T,GAAAvU,KAAAuc,UACzBvc,KAAA4O,UAAA2N,GACAvc,MAUA2uB,GAAAoB,WAAA,SAAAjjB,GACAA,EAAAb,EAAArK,GAAA,qBAAA5B,KAAA4F,GAAAkH,GAAAb,EAAA4iB,OAAA,qBAAA7uB,KAAA4F,KAQA+oB,GAAAqB,OAAA,WAEA,IADA,IAAA7rB,EAAAwrB,GAAAhpB,OACAxC,KAAAwrB,GAAAxrB,GAAAoQ,IAAAvU,OACAA,KAAAiwB,YAAAN,GAAAxrB,GAAAoY,OACAoT,GAAApjB,OAAApI,EAAA,GACA8H,EAAA4iB,OAAA,kBAAA7uB,KAAA4F,MAEA+pB,GAAAhpB,QAAAoF,EAAAwiB,YAAAf,IAAAgB,UAAAF,IACAf,OAkBAtgB,EAAAG,OAAA,SAAA0F,EAAAC,EAAAjB,GACA,IAAAoZ,EAAAnf,EAAAM,QAAAe,OAAApN,KAAA8S,GAAA,EAAAC,GAAA,EAAAjB,GAAA,GAEA,OADA9R,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,GAuBAje,EAAAI,KAAA,SAAAyF,EAAAC,EAAAmB,EAAAC,EAAArC,GACA,IAAAoZ,EAAAnf,EAAAM,QAAAgB,KAAArN,KAAA8S,GAAA,EAAAC,GAAA,EAAAmB,GAAA,EAAAC,GAAA,EAAArC,GAAA,GAEA,OADA9R,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,GAmBAje,EAAAM,QAAA,SAAAuF,EAAAC,EAAAhB,EAAAC,GACA,IAAAkZ,EAAAnf,EAAAM,QAAAkB,QAAAvN,KAAA8S,GAAA,EAAAC,GAAA,EAAAhB,GAAA,EAAAC,GAAA,GAEA,OADAhS,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,GAkCAje,EAAAK,KAAA,SAAAoP,GACAA,IAAA3Q,EAAAI,GAAAuQ,EAjpGA,YAipGA3Q,EAAAI,GAAAuQ,EAAA,GAAAtQ,KAAAsQ,GAAApO,GACA,IAAA4c,EAAAnf,EAAAM,QAAAiB,KAAAvB,EAAAokB,OAAAnkB,GAAAD,EAAAc,WAAA7M,MAEA,OADAA,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,GAoBAje,EAAAO,MAAA,SAAAyE,EAAAa,EAAAC,EAAAmB,EAAAC,GACA,IAAA+W,EAAAnf,EAAAM,QAAAmB,MAAAxN,KAAAiS,GAAA,cAAAa,GAAA,EAAAC,GAAA,EAAAmB,GAAA,EAAAC,GAAA,GAEA,OADAnU,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,GAkBAje,EAAA1J,KAAA,SAAAuP,EAAAC,EAAAxP,GACA,IAAA2nB,EAAAnf,EAAAM,QAAA9I,KAAAvD,KAAA8S,GAAA,EAAAC,GAAA,EAAAvE,EAAAjL,IAEA,OADAvD,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,GAmBAje,EAAAzF,IAAA,SAAA4oB,IACArkB,EAAAI,GAAAikB,EAAA,WAAAA,EAAAzjB,MAAAC,UAAAL,OAAAjM,KAAAuM,UAAA,EAAAA,UAAAlG,SACA,IAAAukB,EAAA,IAAAmF,GAAAD,GAIA,OAHApwB,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,EAAA,MAAAlrB,KACAkrB,EAAA,WACAA,GAgBAje,EAAAqjB,SAAA,SAAA9oB,GACAxH,KAAAkwB,QAAA1oB,GAAAxH,KAAAwH,OAUAyF,EAAAsjB,UAAA,SAAA/oB,GACA,IAAA0jB,EAAAlrB,KAAAkwB,QAEA,cADAlwB,KAAAkwB,QACAhF,GAUAje,EAAAujB,QAAA,WACA,IAAAjG,EAAAvqB,KAAAywB,OAAAxC,WACA,OACApb,MAAA0X,EAAAI,YACAhZ,OAAA4Y,EAAAM,eAcA5d,EAAAyjB,QAAA,SAAA7d,EAAAlB,GACA,OAAA5F,EAAAM,QAAAqkB,QAAApwB,KAAAN,KAAA6S,EAAAlB,IAiBA1E,EAAA0jB,WAAA,SAAA7d,EAAAC,EAAAmB,EAAAC,EAAAyc,GACA,OAAA7kB,EAAAM,QAAAskB,WAAArwB,KAAAN,KAAA8S,EAAAC,EAAAmB,EAAAC,EAAAyc,IAcA3jB,EAAA+a,IAAA/a,EAAAib,OAAA,KAOAjb,EAAA4jB,QAAA9kB,EAoJA,SAAA+kB,KACA,OAAA9wB,KAAA8S,EAAAvE,EAAAvO,KAAA+S,EAAAxE,EAAAvO,KAAA6S,MAAA,MAAA7S,KAAA2R,OAzHA1E,EAAAkhB,kBAAA,SAAArb,EAAAC,GACA,IA5BAge,EACAC,EACApjB,EACAyK,EACA4Y,EACAC,EAAAC,EAwBAnb,EADAhW,KACAywB,OACAhe,EAAA9E,EAAAC,IAAAwjB,iBAAAte,EAAAC,GACA,GAAApF,EAAAE,IAAAqgB,OAAA,OAAAzb,EAAAgY,QAAA,CACA,IAAA4G,GA/BAL,GADAD,EAgCA/a,GA/BAsb,wBACA1jB,EAAAmjB,EAAAQ,cACAlZ,EAAAzK,EAAAyK,KACA4Y,EAAArjB,EAAA4e,gBACA0E,EAAAD,EAAAC,WAAA7Y,EAAA6Y,WAAA,EAAAC,EAAAF,EAAAE,YAAA9Y,EAAA8Y,YAAA,GAIApe,EAHAie,EAAAhJ,KAAAra,EAAAE,IAAA2jB,aAAAP,EAAAxE,WAAApU,EAAAoU,WAAAyE,EAIApe,EAHAke,EAAAS,MAAA9jB,EAAAE,IAAA6jB,aAAAT,EAAAtE,YAAAtU,EAAAsU,YAAAwE,IA0BAQ,EAAA3b,EAAA4b,gBACAD,EAAA7e,IAAAue,EAAAve,EACA6e,EAAA5e,IAAAse,EAAAte,EACA4e,EAAA9e,MAAA8e,EAAAhgB,OAAA,EACA,IAAAkgB,EAAA7b,EAAA8b,oBAAAH,EAAA,MACAE,EAAAlrB,SACA8L,EAAAof,IAAAlrB,OAAA,IAGA,IAAA8L,EACA,YAEA,KAAAA,EAAAwb,YAAAxb,GAAAuD,EAAAiY,aAAAxb,EAAAoe,SACApe,IAAAwb,WAIA,OAFAxb,GApBAzS,KAoBAywB,OAAAxC,aAAAxb,EAAAuD,GACAvD,OAAAoe,QArBA7wB,KAqBA+xB,QAAAtf,EAAAuf,WAAA,MAeA/kB,EAAAglB,kBAAA,SAAAxd,GACA,IAAAjN,EAAAxH,KAAAwH,MAMA,OALAxH,KAAAkyB,QAAA,SAAA3d,GACAxI,EAAAsT,gBAAA9K,EAAAoU,UAAAlU,IACAjN,EAAA5G,KAAA2T,KAGA/M,GAcAyF,EAAA8kB,QAAA,SAAAnsB,GAEA,IADA,IAAAusB,EAAAnyB,KAAAkoB,OACAiK,GAAA,CACA,GAAAA,EAAAvsB,MACA,OAAAusB,EAEAA,IAAAhK,KAEA,aAoBAlb,EAAAilB,QAAA,SAAAjtB,EAAAmtB,GAEA,IADA,IAAAD,EAAAnyB,KAAAkoB,OACAiK,GAAA,CACA,QAAAltB,EAAA3E,KAAA8xB,EAAAD,GACA,OAAAnyB,KAEAmyB,IAAAhK,KAEA,OAAAnoB,MAcAiN,EAAAolB,mBAAA,SAAAvf,EAAAC,GACA,IAAAvL,EAAAxH,KAAAwH,MAMA,OALAxH,KAAAkyB,QAAA,SAAA3d,GACAA,EAAA+d,cAAAxf,EAAAC,IACAvL,EAAA5G,KAAA2T,KAGA/M,GAoBAmnB,GAAA2D,cAAA,SAAAxf,EAAAC,GACA,IAAAwf,EAAAvyB,KAAAwyB,SAAAne,EAAArU,KAAAmV,MAAAnV,MAIA,OAHAA,KAAAsD,KAAA,cAAAtD,KAAAsD,KAAA,aAAAqD,SACA4rB,EAAAxmB,EAAA8c,cAAA0J,EAAAvyB,KAAAsD,KAAA,eAEAyI,EAAA8W,kBAAA0P,EAAAzf,EAAAC,IAqBA4b,GAAAhG,QAAA,SAAA8J,GACA,GAAAzyB,KAAA0yB,QACA,SAEA,IAAAhK,EAAA1oB,KAAA0oB,EACA,OAAA+J,IACA/J,EAAAiK,OAAAjK,EAAAkK,SACA5yB,KAAAwyB,SAAAne,EAAArU,KAAAmV,MAAAnV,MACA0oB,EAAAkK,OAAA3P,GAAAjjB,KAAAwyB,UACA9J,EAAAkK,OAAAjjB,SAAAmhB,GACApI,EAAAiK,MAAA,GAEAjK,EAAAkK,UAEAlK,EAAAiK,OAAAjK,EAAAmB,SAAAnB,EAAAjU,SACAiU,EAAAiK,OAAA3yB,KAAAwyB,WACA9J,EAAAkK,OAAA,EACA5yB,KAAAwyB,SAAAne,EAAArU,KAAAmV,MAAAnV,OAEA0oB,EAAAjU,KAAAwO,GAAAtO,EAAA3U,KAAAwyB,SAAAxyB,KAAA4U,SACA8T,EAAAjU,KAAA9E,SAAAmhB,GACApI,EAAAiK,MAAAjK,EAAAmB,OAAA,GAEAnB,EAAAjU,OASAka,GAAA/Y,MAAA,WACA,GAAA5V,KAAA0yB,QACA,YAEA,IAAAxH,EAAAlrB,KAAA+nB,MAAA/nB,KAAAmV,QAAA7R,KAAAtD,KAAAsD,QAEA,OADAtD,KAAAkwB,SAAAlwB,KAAAkwB,QAAAtvB,KAAAsqB,GACAA,GAuBAyD,GAAAkE,KAAA,SAAAA,GACA,WAAA7yB,KAAAmV,KACA,YAGA,IAAA6D,GACAnG,QAFAggB,SAEAhgB,OAAA,MAAA7S,KAAAsD,KAAA,oBACA6N,KAAA0hB,EAAA1hB,OAAA,EACAU,QAAA,MAAAghB,EAAAhhB,QAAA,GAAAghB,EAAAhhB,QACAihB,QAAAD,EAAAC,SAAA,EACAC,QAAAF,EAAAE,SAAA,EACAhb,MAAA8a,EAAA9a,OAAA,QAEArM,EAAAsN,EAAAnG,MAAA,EACAf,EAAA9R,KAAA+nB,MACAmD,EAAApZ,EAAAtK,MACA8F,EAAAtN,KAAAwyB,UAAAne,EAAArU,KAAAmV,MAAAnV,MACAsN,EAAAtN,KAAA4U,OAAAD,EAAArH,EAAAtN,KAAA4U,QAAAtH,EACA,QAAAnJ,EAAA,EAAwBA,EAAAuH,EAAA,EAAWvH,IACnC+mB,EAAAtqB,KAAAkR,EAAAxE,QAAAhK,MACA4O,OAAA8G,EAAAjB,MACA5G,KAAA6H,EAAA7H,KAAA6H,EAAAjB,MAAA,OACA1F,kBAAA,QACAD,iBAAA,QACAI,iBAAAwG,EAAAnG,MAAAnH,EAAAvH,GAAAya,QAAA,GACA/M,UAAAmH,EAAAnH,QAAAnG,GAAAkT,QAAA,MAGA,OAAAsM,EAAAkD,aAAApuB,MAAA2pB,UAAA3Q,EAAA8Z,QAAA9Z,EAAA+Z,UAEA,IACAC,GAAA,SAAA3R,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAjb,GACA,aAAAA,EACAgX,GAAA0D,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAEA7V,EAAA8T,kBAAAwB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAh7EA,SAAApL,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA+G,EAAAC,EAAAoV,GACA,KAAAA,EAAA,GAAAtV,GAAAnH,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA+G,EAAAC,GAAAoV,GAAA,CAGA,IAGA/Z,EAFAga,EAAAhX,GACAmE,EAFA,EAEA6S,EAIA,IADAha,EAAAyE,GAAAnH,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA+G,EAAAC,EAAAwC,GACA9Q,EAAA2J,EAAA+Z,GAFA,KAGAC,GAAA,EAEAha,EAAAyE,GAAAnH,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA+G,EAAAC,EADAwC,IAAAnH,EAAA+Z,EAAA,MAAAC,GAGA,OAAA7S,GAi6EA8S,CAAA9R,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAjb,KAGAysB,GAAA,SAAAC,EAAAC,GACA,gBAAAhmB,EAAA3G,EAAA4sB,GAIA,IAFA,IAAAzgB,EAAAC,EAAApH,EAAAuN,EAAmDsa,EAAnDC,EAAA,GAAAC,KACA5P,EAAA,EACA3f,EAAA,EAAA2Q,GAHAxH,EAAA2H,GAAA3H,IAGA3G,OAA8CxC,EAAA2Q,EAAQ3Q,IAAA,CAEtD,SADAwH,EAAA2B,EAAAnJ,IACA,GACA2O,GAAAnH,EAAA,GACAoH,GAAApH,EAAA,OACkB,CAElB,GAAAmY,GADA5K,EAAA8Z,GAAAlgB,EAAAC,EAAApH,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KACAhF,EAAA,CACA,GAAA2sB,IAAAI,EAAAnX,MAAA,CAGA,GADAkX,IAAA,KADAD,EAAAR,GAAAlgB,EAAAC,EAAApH,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAhF,EAAAmd,IACAvH,MAAAzJ,EAAA0gB,EAAAjX,MAAAxJ,EAAAygB,EAAA/nB,EAAAqH,EAAA0gB,EAAA/nB,EAAAsH,EAAAygB,EAAA1gB,EAAA0gB,EAAAzgB,GACAwgB,EAA6C,OAAAE,EAC7CC,EAAAnX,MAAAkX,EACAA,GAAA,IAAAD,EAAA1gB,EAAA0gB,EAAAzgB,EAAA,IAAAygB,EAAAjR,EAAAzP,EAAA0gB,EAAAjR,EAAAxP,EAAAygB,EAAAhR,IAAA1P,EAAA0gB,EAAAhR,IAAAzP,EAAApH,EAAA,GAAAA,EAAA,IAAArJ,OACAwhB,GAAA5K,EACApG,GAAAnH,EAAA,GACAoH,GAAApH,EAAA,GACA,SAEA,IAAA0nB,IAAAC,EAEA,OAAqCxgB,GADrC0gB,EAAAR,GAAAlgB,EAAAC,EAAApH,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAhF,EAAAmd,IACqChR,EAAAC,EAAAygB,EAAAzgB,EAAAuP,MAAAkR,EAAAlR,OAGrCwB,GAAA5K,EACApG,GAAAnH,EAAA,GACAoH,GAAApH,EAAA,GAEA8nB,GAAA9nB,EAAAuO,QAAAvO,EAKA,OAHA+nB,EAAAlR,IAAAiR,GACAD,EAAAH,EAAAvP,EAAAwP,EAAAI,EAAA3nB,EAAA8T,kBAAA/M,EAAAC,EAAApH,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,OACA2W,QAAAkR,GAAsC1gB,EAAA0gB,EAAA1gB,EAAAC,EAAAygB,EAAAzgB,EAAAuP,MAAAkR,EAAAlR,QACtCkR,IAGAG,GAAAP,GAAA,GACAQ,GAAAR,KACAS,GAAAT,GAAA,KAaArnB,EAAA4nB,kBAmBA5nB,EAAA6nB,oBAeA7nB,EAAA+nB,WAAA,SAAAxmB,EAAA8c,EAAAC,GACA,GAAArqB,KAAA2zB,eAAArmB,GAAA+c,EAAA,KACA,OAAAwJ,GAAAvmB,EAAA8c,GAAA5H,IAEA,IAAAhiB,EAAAqzB,GAAAvmB,EAAA+c,EAAA,GACA,OAAAD,EAAAyJ,GAAArzB,EAAA4pB,GAAA5H,IAAAhiB,GASAmuB,GAAAgF,eAAA,WACA,IAAArmB,EAAAtN,KAAAqU,UACA,GAAA/G,EAIA,OAAAtN,KAAA8tB,KAAA6F,eACA3zB,KAAA8tB,KAAA6F,iBAGAA,GAAArmB,IAmBAqhB,GAAAiF,iBAAA,SAAAjtB,GACA,IAAA2G,EAAAtN,KAAAqU,UACA,GAAA/G,EAIA,OAAAsmB,GAAAtmB,EAAA3G,IAUAgoB,GAAAta,QAAA,WACA,IAAA/G,EACA+G,EAAAtI,EAAAuI,SAAAtU,KAAAmV,MAEA,WAAAnV,KAAAmV,MAAA,OAAAnV,KAAAmV,KAQA,OAJAd,IACA/G,EAAA+G,EAAArU,OAGAsN,GAeAqhB,GAAAmF,WAAA,SAAA1J,EAAAC,GACA,IAAA/c,EAAAtN,KAAAqU,UACA,GAAA/G,EAIA,OAAAvB,EAAA+nB,WAAAxmB,EAAA8c,EAAAC,IAmBA,IAAA0J,GAAAhoB,EAAAioB,iBACAC,OAAA,SAAA1R,GACA,OAAAA,GAEA2R,IAAA,SAAA3R,GACA,OAAA/S,EAAA+S,EAAA,MAEA4R,IAAA,SAAA5R,GACA,OAAA/S,EAAA+S,EAAA,MAEA6R,KAAA,SAAA7R,GACA,IAAAvF,EAAA,IAAAuF,EAAA,KACAsE,EAAA5X,EAAAqP,KAAA,MAAAtB,KACAlK,EAAA+T,EAAA7J,EAEAjK,GAAA8T,EAAA7J,EAEAd,EAHA1M,EAAAD,EAAAuD,GAAA,MAAAA,EAAA,QAEAtD,EAAAD,EAAAwD,GAAA,MAAAA,EAAA,QACA,GACA,YAAAmJ,cAEAmY,OAAA,SAAA9R,GACA,IAAAvJ,EAAA,QACA,OAAAuJ,MAAAvJ,EAAA,GAAAuJ,EAAAvJ,IAEAsb,QAAA,SAAA/R,GAEA,IAAAvJ,EAAA,QACA,OAFAuJ,GAAA,GAEAA,IAAAvJ,EAAA,GAAAuJ,EAAAvJ,GAAA,GAEAub,QAAA,SAAAhS,GACA,OAAAA,OACAA,EAEA/S,EAAA,MAAA+S,GAAAtT,EAAA2V,IAAA,EAAAnV,GAAA8S,EAAA,aAEAiS,OAAA,SAAAjS,GACA,IAAAvJ,EAAA,OACArN,EAAA,KAkBA,OAhBA4W,EAAA,EAAA5W,EACAqN,EAAAuJ,IAEAA,EAAA,EAAA5W,EAEAqN,GADAuJ,GAAA,IAAA5W,GACA4W,EAAA,IAEAA,EAAA,IAAA5W,EAEAqN,GADAuJ,GAAA,KAAA5W,GACA4W,EAAA,MAGAvJ,GADAuJ,GAAA,MAAA5W,GACA4W,EAAA,UAOAwR,GAAAU,OAAAV,GAAA,WAAAA,GAAA,KACAA,GAAAW,QAAAX,GAAA,YAAAA,GAAA,KACAA,GAAAY,UAAAZ,GAAA,eAAAA,GAAA,MACAA,GAAA,WAAAA,GAAAM,OACAN,GAAA,YAAAA,GAAAO,QAEA,IAAAM,MACAC,GAAAhtB,OAAAitB,uBACAjtB,OAAAktB,6BACAltB,OAAAmtB,0BACAntB,OAAAotB,wBACAptB,OAAAqtB,yBACA,SAAAjwB,GACAoY,WAAApY,EAAA,KAEAkwB,GAAA,WAGA,IAFA,IAAAC,GAAA,IAAAC,KACAnc,EAAA,EACmBA,EAAA0b,GAAAjuB,OAA8BuS,IAAA,CACjD,IAAArX,EAAA+yB,GAAA1b,GACA,IAAArX,EAAA0S,GAAAme,UAAA7wB,EAAAyzB,OAAA,CAGA,IASAC,EAEAxf,EAXAyf,EAAAJ,EAAAvzB,EAAA0a,MACAkZ,EAAA5zB,EAAA4zB,GACAC,EAAA7zB,EAAA6zB,OACAtL,EAAAvoB,EAAAuoB,KACAuL,EAAA9zB,EAAA8zB,KACAtL,EAAAxoB,EAAAwoB,GAEAuL,GADA/zB,EAAAqa,EACAra,EAAA0S,IACA/M,KAEAquB,KAUA,GARAh0B,EAAAi0B,YACAN,GAAA3zB,EAAAi0B,WAAAj0B,EAAAk0B,KAAA/N,IAAAnmB,EAAAomB,OAAApmB,EAAAm0B,QAAAn0B,EAAAomB,MAAAwN,EACA5zB,EAAAo0B,OAAAp0B,EAAAi0B,kBACAj0B,EAAAi0B,WACAj0B,EAAAq0B,MAAAtB,GAAAroB,OAAA2M,IAAA,IAEArX,EAAAo0B,QAAAp0B,EAAAomB,MAAApmB,EAAAm0B,QAAAn0B,EAAAomB,OAAAuN,EAAAC,IAAA5zB,EAAAk0B,KAAA/N,MAEAwN,EAAA,GAGA,GAAAA,EAAAC,EAAA,CACA,IAAAzI,EAAA0I,EAAAF,EAAAC,GACA,QAAAnyB,KAAA8mB,EAAA,GAAAA,EAAA1c,GAAApK,GAAA,CACA,OAAA2P,EAAA3P,IACA,KAAAkJ,EACA+oB,GAAAnL,EAAA9mB,GAAA0pB,EAAAyI,EAAAE,EAAAryB,GACA,MACA,aACAiyB,EAAA,QACAY,GAAAhmB,EAAAia,EAAA9mB,GAAAwO,EAAAkb,EAAAyI,EAAAE,EAAAryB,GAAAwO,IACAqkB,GAAAhmB,EAAAia,EAAA9mB,GAAAqK,EAAAqf,EAAAyI,EAAAE,EAAAryB,GAAAqK,IACAwoB,GAAAhmB,EAAAia,EAAA9mB,GAAAwQ,EAAAkZ,EAAAyI,EAAAE,EAAAryB,GAAAwQ,KACAxR,KAAA,SACA,MACA,WACAizB,KACA,QAAApxB,EAAA,EAAA2Q,EAAAsV,EAAA9mB,GAAAqD,OAAwExC,EAAA2Q,EAAQ3Q,IAAA,CAChFoxB,EAAApxB,IAAAimB,EAAA9mB,GAAAa,GAAA,IACA,QAAA0Q,EAAA,EAAAE,EAAAqV,EAAA9mB,GAAAa,GAAAwC,OAA+EkO,EAAAE,EAAQF,IACvF0gB,EAAApxB,GAAA0Q,IAAAuV,EAAA9mB,GAAAa,GAAA0Q,GAAAmY,EAAAyI,EAAAE,EAAAryB,GAAAa,GAAA0Q,GAEA0gB,EAAApxB,GAAAoxB,EAAApxB,GAAA7B,KAAAiM,GAEAgnB,IAAAjzB,KAAAiM,GACA,MACA,gBACA,GAAAonB,EAAAryB,GAAA8yB,KAEA,IADAb,KACApxB,EAAA,EAAA2Q,EAAAsV,EAAA9mB,GAAAqD,OAAwExC,EAAA2Q,EAAQ3Q,IAEhF,IADAoxB,EAAApxB,IAAAimB,EAAA9mB,GAAAa,GAAA,IACA0Q,EAAA,EAAAE,EAAAqV,EAAA9mB,GAAAa,GAAAwC,OAA+EkO,EAAAE,EAAQF,IACvF0gB,EAAApxB,GAAA0Q,GAAAuV,EAAA9mB,GAAAa,GAAA0Q,GAAAmY,EAAAyI,EAAAE,EAAAryB,GAAAa,GAAA0Q,OAGkC,CAClC,IAAArM,EAAA,SAAArE,GACA,OAAAimB,EAAA9mB,GAAAa,GAAA6oB,EAAAyI,EAAAE,EAAAryB,GAAAa,IAGAoxB,IAAA,IAAA/sB,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAEA,MACA,UACA,gBAAAlF,EAGA,IAFAiyB,KACApxB,EAAA,EACAA,KACAoxB,EAAApxB,IAAAimB,EAAA9mB,GAAAa,GAAA6oB,EAAAyI,EAAAE,EAAAryB,GAAAa,GAGA,MACA,QACA,IAAAkyB,KAAAjxB,GAAAglB,EAAA9mB,IAGA,IAFAiyB,KACApxB,EAAAyxB,EAAA7N,MAAA5Z,iBAAA7K,GAAAqD,OACAxC,KACAoxB,EAAApxB,IAAAkyB,EAAAlyB,GAAA6oB,EAAAyI,EAAAE,EAAAryB,GAAAa,GAIAqD,EAAAlE,GAAAiyB,EAEAK,EAAAtyB,KAAAkE,GACA,SAAA5B,EAAAgwB,EAAAG,GACA1Y,WAAA,WACApR,EAAA,sBAAArG,EAAAgwB,EAAAG,KAFA,CAIsBH,EAAAhwB,GAAAgwB,EAAA/zB,EAAAk0B,UACJ,CAUlB,GATA,SAAAjpB,EAAAyH,EAAA/T,GACA6c,WAAA,WACApR,EAAA,sBAAAsI,EAAA3O,GAAA2O,EAAA/T,GACAyL,EAAA,uBAAAsI,EAAA3O,GAAA2O,EAAA/T,GACAuL,EAAAI,GAAAW,EAAA,aAAAA,EAAAxM,KAAAiU,KAJA,CAMsB1S,EAAAoD,SAAA2wB,EAAA/zB,EAAAk0B,MACtBH,EAAAtyB,KAAA+mB,GACAuK,GAAAroB,OAAA2M,IAAA,GACArX,EAAAy0B,OAAA,IAAAz0B,EAAAsmB,KAAA,CACA,IAAApS,KAAAsU,IAAA3c,GAAAqI,KACA8f,EAAA9f,GAAAlU,EAAA00B,YAAAxgB,IAEAlU,EAAA0S,GAAAjR,KAAAuyB,GACAW,GAAA30B,EAAAk0B,KAAAl0B,EAAA0S,GAAA1S,EAAAk0B,KAAAU,SAAA,QAAA50B,EAAA00B,YAAA10B,EAAAy0B,OAAA,GAEAz0B,EAAAsmB,OAAAtmB,EAAAq0B,MACAM,GAAA30B,EAAAk0B,KAAAl0B,EAAA0S,GAAA1S,EAAAsmB,KAAA,KAAAtmB,EAAA00B,YAAA10B,EAAAy0B,UAIA1B,GAAAjuB,QAAAkuB,GAAAM,KAEAgB,GAAA,SAAApe,GACA,OAAAA,EAAA,QAAAA,EAAA,IAAAA,GA6CA,SAAA2e,GAAAxa,EAAAmF,EAAAC,EAAAK,EAAAC,EAAA+U,GACA,IAAA1lB,EAAA,EAAAoQ,EACAgF,EAAA,GAAA1E,EAAAN,GAAApQ,EACAmR,EAAA,EAAAnR,EAAAoV,EACAnV,EAAA,EAAAoQ,EACAgF,EAAA,GAAA1E,EAAAN,GAAApQ,EACAmR,EAAA,EAAAnR,EAAAoV,EACA,SAAAsQ,EAAA1a,GACA,QAAAkG,EAAAlG,EAAAmK,GAAAnK,EAAAjL,GAAAiL,EA0CA,OAxCA,SAAApJ,EAAA+jB,GACA,IAAA3a,EAGA,SAAApJ,EAAA+jB,GACA,IAAAC,EAAA1W,EAAAC,EAAA3J,EAAAqgB,EAAA5yB,EACA,IAAAkc,EAAAvN,EAAA3O,EAAA,EAA+BA,EAAA,EAAOA,IAAA,CAEtC,GADAuS,EAAAkgB,EAAAvW,GAAAvN,EACAvD,EAAAmH,GAAAmgB,EACA,OAAAxW,EAGA,GAAA9Q,EADAwnB,GAAA,EAAA3U,EAAA/B,EAAA,EAAAgG,GAAAhG,EAAApP,GACA,KACA,MAEAoP,GAAA3J,EAAAqgB,EAKA,GAFA3W,EAAA,GACAC,EAAAvN,IAFAgkB,EAAA,GAIA,OAAAA,EAEA,GAAAzW,EAAAD,EACA,OAAAA,EAEA,KAAA0W,EAAA1W,GAAA,CAEA,GADA1J,EAAAkgB,EAAAvW,GACA9Q,EAAAmH,EAAA5D,GAAA+jB,EACA,OAAAxW,EAEAvN,EAAA4D,EACAogB,EAAAzW,EAEAD,EAAAC,EAEAA,GAAAD,EAAA0W,GAAA,EAAAA,EAEA,OAAAzW,EArCA2W,CAAAlkB,EAAA+jB,GACA,QAAAxU,EAAAnG,EAAAoK,GAAApK,EAAAhL,GAAAgL,EAsCA+a,CAAA/a,EAAA,OAAAya,IAMA,SAAAO,GAAAnB,EAAAN,GACA,IAAAgB,KACAU,KAGA,GAFAn3B,KAAAy1B,KACAz1B,KAAAo3B,MAAA,EACArB,EAAA,CACA,QAAAzyB,KAAAyyB,IAAAroB,GAAApK,KACA6zB,EAAA/mB,EAAA9M,IAAAyyB,EAAAzyB,GACAmzB,EAAA71B,KAAAwP,EAAA9M,KAEAmzB,EAAAY,KAAAxjB,GAEA7T,KAAA+1B,KAAAoB,EACAn3B,KAAAgoB,IAAAyO,IAAA9vB,OAAA,GACA3G,KAAAy2B,WAyCA,SAAAD,GAAAT,EAAAhJ,EAAAiJ,EAAAC,EAAAM,EAAAa,GACApB,EAAA5lB,EAAA4lB,GACA,IAAAvtB,EACA6uB,EACAC,EAEApP,EACAF,EACAuP,EACA/B,EAAAM,EAAAN,GACArL,KACAC,KACAsL,KACA,GAAAM,EACA,IAAA9xB,EAAA,EAAA2Q,EAAA8f,GAAAjuB,OAAuDxC,EAAA2Q,EAAQ3Q,IAAA,CAC/D,IAAAtC,EAAA+yB,GAAAzwB,GACA,GAAAtC,EAAA0S,GAAA3O,IAAAmnB,EAAAnnB,IAAA/D,EAAAk0B,QAAA,CACAl0B,EAAAm0B,YACApB,GAAAroB,OAAApI,EAAA,GACAozB,EAAA,GAEAD,EAAAz1B,EAEAkrB,EAAAzpB,KAAAzB,EAAA00B,aACA,YAIAN,GAAA5L,EAEA,QAAAlmB,EAAA,EAAA2Q,EAAAihB,EAAAU,SAAA9vB,OAAmDxC,EAAA2Q,EAAQ3Q,IAAA,CAC3D,GAAA4xB,EAAAU,SAAAtyB,IAAA6xB,GAAAD,EAAAU,SAAAtyB,GAAA8xB,EAAAF,EAAA/N,IAAA,CACAgO,EAAAD,EAAAU,SAAAtyB,GACA8jB,EAAA8N,EAAAU,SAAAtyB,EAAA,MACAsxB,IAAAM,EAAA/N,KAAAgO,EAAA/N,GACAE,EAAA4N,EAAAU,SAAAtyB,EAAA,GACAsE,EAAAstB,OAAAC,GACA,MACcC,GACdlJ,EAAAzpB,KAAAyyB,SAAAU,SAAAtyB,KAGA,GAAAsE,EAAA,CAGA,GAAA6uB,EA4JAA,EAAAxB,WAAAG,EACAqB,EAAA/a,MAAA,IAAA8Y,KAAAiC,EAAA7B,GAAAQ,MA7JA,CACA,QAAA3yB,KAAAmF,EAAA,GAAAA,EAAAiF,GAAApK,KACA2P,EAAAvF,GAAApK,IAAAypB,EAAAhF,MAAA5Z,iBAAAT,GAAApK,IAIA,OAHA8mB,EAAA9mB,GAAAypB,EAAAzpB,QACA,MAAA8mB,EAAA9mB,KAAA8mB,EAAA9mB,GAAAoN,EAAApN,IACA+mB,EAAA/mB,GAAAmF,EAAAnF,GACA2P,EAAA3P,IACA,KAAAkJ,EACAmpB,EAAAryB,IAAA+mB,EAAA/mB,GAAA8mB,EAAA9mB,IAAAmyB,EACA,MACA,aACArL,EAAA9mB,GAAAyI,EAAAwN,OAAA6Q,EAAA9mB,IACA,IAAAm0B,EAAA1rB,EAAAwN,OAAA8Q,EAAA/mB,IACAqyB,EAAAryB,IACAwO,GAAA2lB,EAAA3lB,EAAAsY,EAAA9mB,GAAAwO,GAAA2jB,EACA9nB,GAAA8pB,EAAA9pB,EAAAyc,EAAA9mB,GAAAqK,GAAA8nB,EACA3hB,GAAA2jB,EAAA3jB,EAAAsW,EAAA9mB,GAAAwQ,GAAA2hB,GAEA,MACA,WACA,IAAAiC,EAAAziB,GAAAmV,EAAA9mB,GAAA+mB,EAAA/mB,IACAq0B,EAAAD,EAAA,GAGA,IAFAtN,EAAA9mB,GAAAo0B,EAAA,GACA/B,EAAAryB,MACAa,EAAA,EAAA2Q,EAAAsV,EAAA9mB,GAAAqD,OAAgExC,EAAA2Q,EAAQ3Q,IAAA,CACxEwxB,EAAAryB,GAAAa,IAAA,GACA,QAAA0Q,EAAA,EAAAE,EAAAqV,EAAA9mB,GAAAa,GAAAwC,OAA2EkO,EAAAE,EAAQF,IACnF8gB,EAAAryB,GAAAa,GAAA0Q,IAAA8iB,EAAAxzB,GAAA0Q,GAAAuV,EAAA9mB,GAAAa,GAAA0Q,IAAA4gB,EAGA,MACA,gBACA,IAAA/M,EAAAqE,EAAArE,EACAkP,EAAA7N,GAAArB,EAAAplB,GAAA+mB,EAAA/mB,IACA,GAAAs0B,EAKA,IAJAxN,EAAA9mB,GAAAs0B,EAAAxN,KACAC,EAAA/mB,GAAAs0B,EAAAvN,GACAsL,EAAAryB,MACAqyB,EAAAryB,GAAA8yB,MAAA,EACAjyB,EAAA,EAAA2Q,EAAAsV,EAAA9mB,GAAAqD,OAAoExC,EAAA2Q,EAAQ3Q,IAE5E,IADAwxB,EAAAryB,GAAAa,IAAAimB,EAAA9mB,GAAAa,GAAA,IACA0Q,EAAA,EAAAE,EAAAqV,EAAA9mB,GAAAa,GAAAwC,OAA2EkO,EAAAE,EAAQF,IACnF8gB,EAAAryB,GAAAa,GAAA0Q,IAAAwV,EAAA/mB,GAAAa,GAAA0Q,GAAAuV,EAAA9mB,GAAAa,GAAA0Q,IAAA4gB,MAG8B,CAC9B,IAAAhqB,EAAAshB,EAAAnY,QAAA,IAAAyU,GACAwO,GACAnP,GAA6C9V,UAAA8V,EAAA9V,WAC7C+V,QAAA,WACA,OAAAoE,EAAApE,QAAA,KAGAyB,EAAA9mB,IACAmI,EAAAjL,EACAiL,EAAAqI,EACArI,EAAAC,EACAD,EAAAvF,EACAuF,EAAA5J,EACA4J,EAAAqB,GAEA8b,GAAAiP,EAAAxN,EAAA/mB,IACA+mB,EAAA/mB,GAAAu0B,EAAAnP,EAAA9V,UACA+iB,EAAAryB,KACAu0B,EAAAjjB,OAAApU,EAAAiL,EAAAjL,GAAAi1B,GACAoC,EAAAjjB,OAAAd,EAAArI,EAAAqI,GAAA2hB,GACAoC,EAAAjjB,OAAAlJ,EAAAD,EAAAC,GAAA+pB,GACAoC,EAAAjjB,OAAA1O,EAAAuF,EAAAvF,GAAAuvB,GACAoC,EAAAjjB,OAAA/S,EAAA4J,EAAA5J,GAAA4zB,GACAoC,EAAAjjB,OAAA9H,EAAArB,EAAAqB,GAAA2oB,GAaA,MACA,UACA,IAAAve,EAAA1I,EAAA/F,EAAAnF,IAAAS,GAAAmJ,GACAmpB,EAAA7nB,EAAA4b,EAAA9mB,IAAAS,GAAAmJ,GACA,gBAAA5J,EAIA,IAHA8mB,EAAA9mB,GAAA+yB,EACAV,EAAAryB,MACAa,EAAAkyB,EAAA1vB,OACAxC,KACAwxB,EAAAryB,GAAAa,IAAA+S,EAAA/S,GAAAimB,EAAA9mB,GAAAa,IAAAsxB,EAGApL,EAAA/mB,GAAA4T,EACA,MACA,QAKA,IAJAA,KAAA9R,GAAAqD,EAAAnF,IACA+yB,KAAAjxB,GAAAglB,EAAA9mB,IACAqyB,EAAAryB,MACAa,EAAA4oB,EAAAhF,MAAA5Z,iBAAA7K,GAAAqD,OACAxC,KACAwxB,EAAAryB,GAAAa,KAAA+S,EAAA/S,IAAA,IAAAkyB,EAAAlyB,IAAA,IAAAsxB,EAMA,IAAAC,EAAAjtB,EAAAitB,OACAoC,EAAA/rB,EAAAioB,gBAAA0B,GACA,IAAAoC,EAEA,IADAA,EAAAtpB,EAAAknB,GAAAvZ,MAAAjM,KACA,GAAA4nB,EAAAnxB,OAAA,CACA,IAAAyf,EAAA0R,EACAA,EAAA,SAAA5b,GACA,OAAAwa,GAAAxa,GAAAkK,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,GAAAqP,SAGAqC,EAAA/jB,EA0BA,GAtBAlS,GACAk0B,OACAC,UACAwB,UAJAA,EAAA/uB,EAAA8T,OAAAwZ,EAAAxZ,QAAA,IAAA8Y,KAKA9Y,MAAAib,GAAAzB,EAAAgC,KAAA,GACA9B,OAAA,EACAH,WAAAG,GAAA,EACAC,MAAA,EACAT,KACAC,OAAAoC,EACA1N,OACAuL,OACAtL,KACA9V,GAAAwY,EACA9nB,SAAAwD,EAAAxD,SACAgjB,OACAE,OACAmO,OAAAc,GAAArB,EAAAqB,MACAY,OAAAjL,EAAAzpB,OACAizB,eAEA3B,GAAAh0B,KAAAiB,GACAo0B,IAAAqB,IAAAC,IACA11B,EAAAq0B,MAAA,EACAr0B,EAAA0a,MAAA,IAAA8Y,KAAAI,EAAAQ,EACA,GAAArB,GAAAjuB,QACA,OAAAwuB,KAGAoC,IACA11B,EAAA0a,MAAA,IAAA8Y,KAAAxzB,EAAA4zB,GAAAQ,GAEA,GAAArB,GAAAjuB,QAAAkuB,GAAAM,IAKAlpB,EAAA,sBAAA8gB,EAAAnnB,GAAAmnB,EAAAgJ,IAyNA,SAAAkC,GAAAlQ,GACA,QAAA5jB,EAAA,EAAwBA,EAAAywB,GAAAjuB,OAA8BxC,IAAAywB,GAAAzwB,GAAAoQ,GAAAwT,UACtD6M,GAAAroB,OAAApI,IAAA,GA5iBAwqB,GAAAuJ,YAAA,SAAA3jB,EAAAwhB,EAAAttB,EAAAgtB,EAAAC,EAAAzwB,GAEA,GADAjF,KACA0yB,QAEA,OADAztB,KAAA3E,KAFAN,WAKA,IAAAQ,EAAAiI,aAAAyuB,GAAAzuB,EAAAsD,EAAAopB,UAAA1sB,EAAAgtB,EAAAC,EAAAzwB,GAEAuxB,GAAAh2B,EAPAR,KAOAQ,EAAAi2B,SAAA,QAPAz2B,KAOAsD,QACA,QAAAa,EAAA,EAAA2Q,EAAA8f,GAAAjuB,OAAuDxC,EAAA2Q,EAAQ3Q,IAC/D,GAAAywB,GAAAzwB,GAAA4xB,SAAAnB,GAAAzwB,GAAAoQ,MAAA,CACAqgB,GAAA9f,EAAA,GAAAyH,MAAAqY,GAAAzwB,GAAAoY,MACA,MAGA,OAdAvc,MAyEA2uB,GAAAwJ,YAAA,SAAArrB,GAEA,OADAA,EAAAb,EAAArK,GAAA,sBAAA5B,KAAA4F,GAAAkH,GAAAb,EAAA4iB,OAAA,sBAAA7uB,KAAA4F,IACA5F,MAiCAk3B,GAAAtqB,UAAAwrB,MAAA,SAAAA,GACA,IAAA53B,EAAA,IAAA02B,GAAAl3B,KAAA+1B,KAAA/1B,KAAAy1B,IAGA,OAFAj1B,EAAA42B,MAAAp3B,KAAAo3B,MACA52B,EAAAu3B,KAAAK,GAAA,EACA53B,GAcA02B,GAAAtqB,UAAA0pB,OAAA,SAAAc,GACA,IAAA52B,EAAA,IAAA02B,GAAAl3B,KAAA+1B,KAAA/1B,KAAAy1B,IAGA,OAFAj1B,EAAAu3B,IAAA/3B,KAAA+3B,IACAv3B,EAAA42B,MAAAnoB,EAAAopB,MAAAlpB,EAAAioB,EAAA,OACA52B,GAgOAuL,EAAAopB,UAAA,SAAA1sB,EAAAgtB,EAAAC,EAAAzwB,GACA,GAAAwD,aAAAyuB,GACA,OAAAzuB,GAEAsD,EAAAI,GAAAupB,EAAA,aAAAA,IACAzwB,KAAAywB,GAAA,KACAA,EAAA,MAEAjtB,EAAArI,OAAAqI,GACAgtB,MAAA,EACA,IACA6C,EACAh1B,EAFAqI,KAGA,IAAArI,KAAAmF,IAAAiF,GAAApK,IAAA8M,EAAA9M,OAAA8M,EAAA9M,GAAA,KAAAA,IACAg1B,GAAA,EACA3sB,EAAArI,GAAAmF,EAAAnF,IAEA,GAAAg1B,EAmBA,OAFA5C,IAAA/pB,EAAA+pB,UACAzwB,IAAA0G,EAAA1G,YACA,IAAAiyB,IAAmCqB,IAAA5sB,GAAO8pB,GAjB1C,GAAAxwB,EAAA,CAEA,IAAAuzB,EAAA,EACA,QAAAr0B,KAAAsE,EAAA,CACA,IAAAutB,EAAA1lB,EAAAnM,GACAsE,EAAAiF,GAAAvJ,IAAA6xB,EAAAwC,IACAA,EAAAxC,IAKAvtB,EAFA+vB,GAAA,KAEAvzB,WAAAwD,EAAA+vB,GAAAvzB,YAEA,WAAAiyB,GAAAzuB,EAAAgtB,IAwBA9G,GAAA8J,QAAA,SAAAhwB,EAAAgtB,EAAAC,EAAAzwB,GAEA,GADAjF,KACA0yB,QAEA,OADAztB,KAAA3E,KAFAN,WAKA,IAAA+1B,EAAAttB,aAAAyuB,GAAAzuB,EAAAsD,EAAAopB,UAAA1sB,EAAAgtB,EAAAC,EAAAzwB,GAEA,OADAuxB,GAAAT,EANA/1B,KAMA+1B,EAAAU,SAAA,QANAz2B,KAMAsD,QANAtD,MAyBA2uB,GAAA+J,QAAA,SAAA3C,EAAA5e,GAIA,OAHA4e,GAAA,MAAA5e,GACAnX,KAAAi2B,OAAAF,EAAA1mB,EAAA8H,EAAA4e,EAAAN,IAAAM,EAAAN,IAEAz1B,MAuBA2uB,GAAAsH,OAAA,SAAAF,EAAA5e,GACA,IAEA2M,EACAjiB,EAHAqpB,KACA/mB,EAAA,EAGA,SAAAgT,EAEA,OADAqf,GAAAT,EAAA/1B,MAAA,EAAAqP,EAAA8H,EAAA,IACAnX,KAGA,IADA8jB,EAAA8Q,GAAAjuB,OACmBxC,EAAA2f,EAAS3f,IAE5B,IADAtC,EAAA+yB,GAAAzwB,IACAoQ,GAAA3O,IAAA5F,KAAA4F,MAAAmwB,GAAAl0B,EAAAk0B,SAAA,CACA,GAAAA,EACA,OAAAl0B,EAAAo0B,OAEA/K,EAAAtqB,MACAm1B,KAAAl0B,EAAAk0B,KACAE,OAAAp0B,EAAAo0B,SAIA,OAAAF,EACA,EAEA7K,GAeAyD,GAAAgK,MAAA,SAAA5C,GACA,QAAA5xB,EAAA,EAAwBA,EAAAywB,GAAAjuB,OAA8BxC,IAAAywB,GAAAzwB,GAAAoQ,GAAA3O,IAAA5F,KAAA4F,IAAAmwB,GAAAnB,GAAAzwB,GAAA4xB,UACtD,IAAA9pB,EAAA,sBAAAjM,KAAA4F,GAAA5F,KAAA40B,GAAAzwB,GAAA4xB,QACAnB,GAAAzwB,GAAAmxB,QAAA,GAGA,OAAAt1B,MAcA2uB,GAAAiK,OAAA,SAAA7C,GACA,QAAA5xB,EAAA,EAAwBA,EAAAywB,GAAAjuB,OAA8BxC,IAAA,GAAAywB,GAAAzwB,GAAAoQ,GAAA3O,IAAA5F,KAAA4F,MAAAmwB,GAAAnB,GAAAzwB,GAAA4xB,SAAA,CACtD,IAAAl0B,EAAA+yB,GAAAzwB,IACA,IAAA8H,EAAA,uBAAAjM,KAAA4F,GAAA5F,KAAA6B,EAAAk0B,eACAl0B,EAAAyzB,OACAt1B,KAAAi2B,OAAAp0B,EAAAk0B,KAAAl0B,EAAAo0B,SAGA,OAAAj2B,MAcA2uB,GAAAuH,KAAA,SAAAH,GACA,QAAA5xB,EAAA,EAAwBA,EAAAywB,GAAAjuB,OAA8BxC,IAAAywB,GAAAzwB,GAAAoQ,GAAA3O,IAAA5F,KAAA4F,IAAAmwB,GAAAnB,GAAAzwB,GAAA4xB,UACtD,IAAA9pB,EAAA,qBAAAjM,KAAA4F,GAAA5F,KAAA40B,GAAAzwB,GAAA4xB,OACAnB,GAAAroB,OAAApI,IAAA,GAGA,OAAAnE,MAOAiM,EAAArK,GAAA,iBAAAq2B,IACAhsB,EAAArK,GAAA,gBAAAq2B,IACAtJ,GAAAhf,SAAA,WACA,0BAIA,IA6fAkpB,GACAC,GA9fAzI,GAAA,SAAA0I,GAIA,GAHA/4B,KAAA+4B,SACA/4B,KAAA2G,OAAA,EACA3G,KAAAmV,KAAA,MACA4jB,EACA,QAAA50B,EAAA,EAAA2Q,EAAAikB,EAAApyB,OAA+CxC,EAAA2Q,EAAQ3Q,KACvD40B,EAAA50B,IAAA40B,EAAA50B,GAAA2R,aAAA6Y,GAAA7Y,aAAAijB,EAAA50B,GAAA2R,aAAAua,KACArwB,UAAA+4B,MAAApyB,QAAA3G,KAAA+4B,MAAA/4B,KAAA+4B,MAAApyB,QAAAoyB,EAAA50B,GACAnE,KAAA2G,WAKAqyB,GAAA3I,GAAAzjB,UAsDA,QAAAqsB,MA9CAD,GAAAp4B,KAAA,WAGA,IAFA,IAAAoZ,EACA8J,EACA3f,EAAA,EAAA2Q,EAAAjI,UAAAlG,OAA+CxC,EAAA2Q,EAAQ3Q,MACvD6V,EAAAnN,UAAA1I,KACA6V,EAAAlE,aAAA6Y,GAAA7Y,aAAAkE,EAAAlE,aAAAua,KAEArwB,KADA8jB,EAAA9jB,KAAA+4B,MAAApyB,QACA3G,KAAA+4B,MAAAjV,GAAA9J,EACAha,KAAA2G,UAGA,OAAA3G,MASAg5B,GAAAjsB,IAAA,WAEA,OADA/M,KAAA2G,eAAA3G,UAAA2G,UACA3G,KAAA+4B,MAAAhsB,OAgBAisB,GAAA9G,QAAA,SAAAjtB,EAAAmtB,GACA,QAAAjuB,EAAA,EAAA2Q,EAAA9U,KAAA+4B,MAAApyB,OAAgDxC,EAAA2Q,EAAQ3Q,IACxD,QAAAc,EAAA3E,KAAA8xB,EAAApyB,KAAA+4B,MAAA50B,MACA,OAAAnE,KAGA,OAAAA,MAEA2uB,MAAAjhB,GAAAurB,MACAD,GAAAC,IAAA,SAAAjW,GACA,kBACA,IAAAnJ,EAAAhN,UACA,OAAA7M,KAAAkyB,QAAA,SAAA3d,GACAA,EAAAyO,GAAAhX,GAAAuI,EAAAsF,MAJA,CAOUof,KA2gBV,OAzgBAD,GAAA11B,KAAA,SAAAL,EAAAkU,GACA,GAAAlU,GAAA8I,EAAAI,GAAAlJ,EAAAmJ,IAAAL,EAAAI,GAAAlJ,EAAA,aACA,QAAA4R,EAAA,EAAAE,EAAA9R,EAAA0D,OAA8CkO,EAAAE,EAAQF,IACtD7U,KAAA+4B,MAAAlkB,GAAAvR,KAAAL,EAAA4R,SAGA,QAAA1Q,EAAA,EAAA2Q,EAAA9U,KAAA+4B,MAAApyB,OAAoDxC,EAAA2Q,EAAQ3Q,IAC5DnE,KAAA+4B,MAAA50B,GAAAb,KAAAL,EAAAkU,GAGA,OAAAnX,MAQAg5B,GAAAE,MAAA,WACA,KAAAl5B,KAAA2G,QACA3G,KAAA+M,OAgBAisB,GAAAzsB,OAAA,SAAA4sB,EAAApf,EAAAqf,GACAD,IAAA,EAAAhqB,EAAAnP,KAAA2G,OAAAwyB,EAAA,GAAAA,EACApf,EAAA5K,EAAA,EAAAE,EAAArP,KAAA2G,OAAAwyB,EAAApf,IACA,IAGA5V,EAHAk1B,KACAC,KACA5sB,KAEA,IAAAvI,EAAA,EAAoBA,EAAA0I,UAAAlG,OAAsBxC,IAC1CuI,EAAA9L,KAAAiM,UAAA1I,IAEA,IAAAA,EAAA,EAAoBA,EAAA4V,EAAW5V,IAC/Bm1B,EAAA14B,KAAAZ,KAAAm5B,EAAAh1B,IAEA,KAAeA,EAAAnE,KAAA2G,OAAAwyB,EAAyBh1B,IACxCk1B,EAAAz4B,KAAAZ,KAAAm5B,EAAAh1B,IAEA,IAAAo1B,EAAA7sB,EAAA/F,OACA,IAAAxC,EAAA,EAAoBA,EAAAo1B,EAAAF,EAAA1yB,OAA0BxC,IAC9CnE,KAAA+4B,MAAAI,EAAAh1B,GAAAnE,KAAAm5B,EAAAh1B,KAAAo1B,EAAA7sB,EAAAvI,GAAAk1B,EAAAl1B,EAAAo1B,GAGA,IADAp1B,EAAAnE,KAAA+4B,MAAApyB,OAAA3G,KAAA2G,QAAAoT,EAAAwf,EACAv5B,KAAAmE,WACAnE,KAAAmE,KAEA,WAAAksB,GAAAiJ,IAaAN,GAAAQ,QAAA,SAAAjlB,GACA,QAAApQ,EAAA,EAAA2Q,EAAA9U,KAAA2G,OAA0CxC,EAAA2Q,EAAQ3Q,IAAA,GAAAnE,KAAAmE,IAAAoQ,EAElD,OADAvU,KAAAuM,OAAApI,EAAA,IACA,GAGA60B,GAAAP,QAAA,SAAAhwB,EAAAgtB,EAAAC,EAAAzwB,IACA8G,EAAAI,GAAAupB,EAAA,cAAAA,KAAAzwB,EAAAywB,GAAA,MACA,IAEA1b,EAEAyf,EAJA3V,EAAA9jB,KAAA+4B,MAAApyB,OACAxC,EAAA2f,EAEAtc,EAAAxH,KAEA,IAAA8jB,EACA,OAAA9jB,KAEAiF,IAAAw0B,EAAA,cACA3V,GAAA7e,EAAA3E,KAAAkH,KAEAkuB,EAAA3pB,EAAAI,GAAAupB,EA/tJA,UA+tJAA,EAAA+D,EACA,IAAA1D,EAAAhqB,EAAAopB,UAAA1sB,EAAAgtB,EAAAC,EAAA+D,GAEA,IADAzf,EAAAha,KAAA+4B,QAAA50B,GAAAs0B,QAAA1C,GACA5xB,KACAnE,KAAA+4B,MAAA50B,KAAAnE,KAAA+4B,MAAA50B,GAAAuuB,SAAA1yB,KAAA+4B,MAAA50B,GAAA+zB,YAAAle,EAAA+b,KACA/1B,KAAA+4B,MAAA50B,KAAAnE,KAAA+4B,MAAA50B,GAAAuuB,SAAA5O,IAEA,OAAA9jB,MAEAg5B,GAAAU,YAAA,SAAAnlB,GAEA,IADA,IAAApQ,EAAAnE,KAAA+4B,MAAApyB,OACAxC,KACAnE,KAAA+4B,MAAA50B,GAAAu1B,YAAAnlB,GAEA,OAAAvU,MAEAg5B,GAAArQ,QAAA,WAKA,IAJA,IAAA7V,KACAC,KACA2D,KACAC,KACAxS,EAAAnE,KAAA+4B,MAAApyB,OAAwCxC,KAAK,IAAAnE,KAAA+4B,MAAA50B,GAAAuuB,QAAA,CAC7C,IAAA1B,EAAAhxB,KAAA+4B,MAAA50B,GAAAwkB,UACA7V,EAAAlS,KAAAowB,EAAAle,GACAC,EAAAnS,KAAAowB,EAAAje,GACA2D,EAAA9V,KAAAowB,EAAAle,EAAAke,EAAAne,OACA8D,EAAA/V,KAAAowB,EAAAje,EAAAie,EAAArf,QAMA,OACAmB,EALAA,EAAAzD,EAAArD,GAAA,EAAA8G,GAMAC,EALAA,EAAA1D,EAAArD,GAAA,EAAA+G,GAMA2D,GALAA,EAAAvH,EAAAnD,GAAA,EAAA0K,GAMAC,GALAA,EAAAxH,EAAAnD,GAAA,EAAA2K,GAMA9D,MAAA6D,EAAA5D,EACAnB,OAAAgF,EAAA5D,IAGAimB,GAAApjB,MAAA,SAAAoD,GACAA,EAAAhZ,KAAA+nB,MAAAvgB,MACA,QAAArD,EAAA,EAAA2Q,EAAA9U,KAAA+4B,MAAApyB,OAAgDxC,EAAA2Q,EAAQ3Q,IACxD6U,EAAApY,KAAAZ,KAAA+4B,MAAA50B,GAAAyR,SAEA,OAAAoD,GAEAggB,GAAArpB,SAAA,WACA,uBAGAqpB,GAAAnG,KAAA,SAAA8G,GACA,IAAAC,EAAA55B,KAAA+nB,MAAAvgB,MASA,OARAxH,KAAAkyB,QAAA,SAAApD,EAAAqK,GACA,IAAAxrB,EAAAmhB,EAAA+D,KAAA8G,GACA,MAAAhsB,GACAA,EAAAukB,QAAA,SAAA2H,EAAAC,GACAF,EAAAh5B,KAAAi5B,OAIAD,GAgBAZ,GAAA1G,cAAA,SAAAxf,EAAAC,GACA,IAAAuf,GAAA,EAOA,OANAtyB,KAAAkyB,QAAA,SAAA3d,GACA,GAAAA,EAAA+d,cAAAxf,EAAAC,GAEA,OADAuf,GAAA,GACA,IAGAA,GAkBAvmB,EAAAguB,aAAA,SAAA1oB,GACA,IAAAA,EAAA2oB,KACA,OAAA3oB,EAEArR,KAAAi6B,MAAAj6B,KAAAi6B,UACA,IAAAC,GACAhmB,EAAA7C,EAAA6C,EACA8lB,QACAG,WAEAC,EAAA/oB,EAAA2oB,KAAA,eACA,QAAAK,KAAAhpB,EAAA2oB,KAAA3oB,EAAA2oB,KAAAtsB,GAAA2sB,KACAH,EAAAF,KAAAK,GAAAhpB,EAAA2oB,KAAAK,IAOA,GALAr6B,KAAAi6B,MAAAG,GACAp6B,KAAAi6B,MAAAG,GAAAx5B,KAAAs5B,GAEAl6B,KAAAi6B,MAAAG,IAAAF,IAEA7oB,EAAA2E,IAEA,QAAAskB,KADAJ,EAAAF,KAAA,gBAAA1pB,EAAAe,EAAA2oB,KAAA,oBACA3oB,EAAA8oB,OAAA,GAAA9oB,EAAA8oB,OAAAzsB,GAAA4sB,GAAA,CACA,IAAAhtB,EAAA+D,EAAA8oB,OAAAG,GAQA,GAPAJ,EAAAC,OAAAG,IACApmB,EAAA5G,EAAA4G,EACA+M,KACA/a,EAAAoH,EAAApH,GAAA,IAAAoH,EAAApH,EAAAwR,QAAA,sBAAA6R,GACA,OAAqCrQ,EAAA,IAAAxN,EAAA,IAAAoH,EAAA,IAAAoJ,EAAA,IAAApK,EAAA,IAAAyI,EAAA,KAA+CgP,IAAA,MAC1D,KAE1Bjc,EAAA2T,EACA,QAAAA,KAAA3T,EAAA2T,EAAA3T,EAAAI,GAAAuT,KACAiZ,EAAAC,OAAAG,GAAArZ,KAAA3T,EAAA2T,MAKA,OAAA5P,GAkBApE,EAAAstB,QAAA,SAAAH,EAAAI,EAAA/kB,EAAAglB,GAIA,GAHAA,KAAA,SACAhlB,KAAA,SACA+kB,OAA8BE,OAAA,IAAAC,KAAA,IAAAC,QAAA,IAAAC,OAAA,KAAkDL,IAAA,IAChFzuB,EAAAkuB,MAAA,CAGA,IAUAa,EAVAzpB,EAAAtF,EAAAkuB,MAAAG,GACA,IAAA/oB,EAAA,CACA,IAAApO,EAAA,IAAA83B,OAAA,UAAAX,EAAA1iB,QAAA,oBAAApJ,GAAA,eACA,QAAA0sB,KAAAjvB,EAAAkuB,MAAA,GAAAluB,EAAAkuB,MAAAvsB,GAAAstB,IACA/3B,EAAAg4B,KAAAD,GAAA,CACA3pB,EAAAtF,EAAAkuB,MAAAe,GACA,OAKA,GAAA3pB,EACA,QAAAlN,EAAA,EAAA2Q,EAAAzD,EAAA1K,OAA8CxC,EAAA2Q,KAC9CgmB,EAAAzpB,EAAAlN,IACA61B,KAAA,gBAAAQ,GAAAM,EAAAd,KAAA,eAAAvkB,GAAAqlB,EAAAd,KAAA,eAAAc,EAAAd,KAAA,iBAAAS,GAFsDt2B,KAOtD,OAAA22B,IAuBA7tB,EAAAiuB,MAAA,SAAApoB,EAAAC,EAAAooB,EAAA9pB,EAAA+pB,EAAApD,EAAAqD,EAAAC,GACAtD,KAAA,SACAqD,EAAAlsB,EAAAE,EAAAgsB,GAAA,SACAC,EAAAnsB,EAAAE,EAAAisB,GAAA,QACA,IAIA1R,EAJA2R,EAAA/sB,EAAA2sB,GAAAp3B,GAAAuK,GACA4L,EAAA,EACAshB,EAAA,EACAluB,EAAAgB,EAGA,GADAvC,EAAAI,GAAAkF,EAAA,YAAAA,EAAArR,KAAAu6B,QAAAlpB,IACAA,EAAA,CACAuY,GAAAwR,GAAA,IAAA/pB,EAAA2oB,KAAA,gBAMA,IALA,IAAAxW,EAAAnS,EAAA2oB,KAAAvlB,KAAA1Q,GAAAmJ,GACA8a,GAAAxE,EAAA,GACAiY,EAAAjY,EAAA,GAAAA,EAAA,GACAkY,EAAA,EACA/pB,GAAA6R,EAAA,gBAAAwU,EAAAyD,IAAApqB,EAAA2oB,KAAA2B,QAAAF,EAAA,GACAt3B,EAAA,EAAA2Q,EAAAymB,EAAA50B,OAAiDxC,EAAA2Q,EAAQ3Q,IAAA,CACzD,SAAAo3B,EAAAp3B,GACA+V,EAAA,EACA0hB,EAAA,EACAJ,EAAA,EACAE,GAAAD,EAAAH,MACkB,CAClB,IAAArT,EAAAuT,GAAAnqB,EAAA8oB,OAAAoB,EAAAp3B,EAAA,QACAy3B,EAAAvqB,EAAA8oB,OAAAoB,EAAAp3B,IACA+V,GAAAshB,GAAAvT,EAAA/T,GAAA7C,EAAA6C,IAAA+T,EAAAhH,GAAAgH,EAAAhH,EAAAsa,EAAAp3B,KAAA,GAAAkN,EAAA6C,EAAAmnB,EAAA,EACAG,EAAA,EAEAI,KAAA11B,IACAoH,GAAAvB,EAAA8c,cAAA+S,EAAA11B,GAAA,IAAAgU,EAAA0P,EAAA8R,EAAA9R,EAAA,IAAAA,IAAA5B,EAAArW,EAAA,KAAAmB,EAAAkV,GAAA4B,GAAA7W,EAAApB,GAAAiY,MAIA,OAAA5pB,KAAAsN,QAAAhK,MACA6N,KAAA,OACAe,OAAA,UAgCAjF,EAAAR,IAAA,SAAA6rB,GACA,GAAAvsB,EAAAI,GAAAmsB,EAAA,SAKA,IAJA,IAGAzjB,EAHAgB,EAAA7V,KAAAwH,MACArD,EAAA,EACA2Q,EAAAwjB,EAAA3xB,OAEmBxC,EAAA2Q,EAAQ3Q,IAC3B0Q,EAAAyjB,EAAAn0B,OACAgJ,EAAAO,GAAAmH,EAAAM,OAAAU,EAAAjV,KAAAZ,KAAA6U,EAAAM,QAAA7R,KAAAuR,IAGA,OAAAgB,GAsBA9J,EAAAokB,OAAA,SAAA0L,EAAApzB,GACA,IAAAiE,EAAAX,EAAAI,GAAA1D,EAAA2D,IAAA,GAAAhH,GAAAqD,GAAAoE,UAIA,OAHAgvB,GAAA9vB,EAAAI,GAAA0vB,EAthKA,WAshKAnvB,EAAA/F,OAAA,IAAAk1B,IAAAnkB,QAAAjK,EAAA,SAAAquB,EAAA33B,GACA,aAAAuI,IAAAvI,GAAAmK,EAAA5B,EAAAvI,MAEA03B,GAAAvtB,GAyBAvC,EAAAgwB,UACAlD,GAAA,gBACAC,GAAA,2DAeA,SAAAgD,EAAA9xB,GACA,OAAAyE,OAAAqtB,GAAApkB,QAAAmhB,GAAA,SAAAmD,EAAAjmB,GACA,OAhBA,SAAAimB,EAAAjmB,EAAA/L,GACA,IAAA6L,EAAA7L,EAWA,OAVA+L,EAAA2B,QAAAohB,GAAA,SAAAkD,EAAA/4B,EAAAg5B,EAAAC,EAAAC,GACAl5B,KAAAi5B,EACArmB,IACA5S,KAAA4S,IACAA,IAAA5S,IAEA,mBAAA4S,GAAAsmB,IAAAtmB,UAGAA,GAAA,MAAAA,MAAA7L,EAAAgyB,EAAAnmB,GAAA,GAKAumB,CAAAJ,EAAAjmB,EAAA/L,OAkBA+B,EAAAswB,MAAA,WACA,GAAAvuB,EAAAC,IACAJ,EAAAE,IAAAG,QAAAF,EAAA3B,OACU,CAEVtE,OAAAmG,aAAAlC,EACA,WACAjE,OAAAmG,QACc,MAAAnM,KAEd,OAAAkK,GAsBAA,EAAAuwB,GAAAtD,GAEA/sB,EAAArK,GAAA,6BACA4J,GAAA,IAIA,SAAAoC,EAAApC,EAAAsB,GACA,MAAAc,EAAA2uB,YAAA3uB,EAAA7C,mBACA6C,EAAA7C,iBAUM,mBAVN+B,EAAA,WACAc,EAAAwf,oBASM,mBATNtgB,GAAA,GACAc,EAAA2uB,WAAA,aACc,GACd3uB,EAAA2uB,WAAA,WAEA,SAAAC,IACA,KAAAvB,KAAArtB,EAAA2uB,YAAAlf,WAAAmf,EAAA,GAAAzwB,EAAAE,IAAA,mBAEAuwB,GAXA,CAYMx0B,UAEN+D,GACEC,MAAAV,EAAAM,MAAAL,EAAAD,QAAAO,IAKF,SAAAN,EAAAD,EAAArF,GAEA,IAAA4F,EA6BA4wB,EACAvG,EATAxoB,EACAR,EACAwvB,EAGAC,EAKAjuB,EACAkuB,EAOAC,EAQAC,EACAtuB,EACA8H,EA5BA5I,EAAA,iBACAR,EAAA,SACAwvB,EAAA,UAGAC,EAAA,SAAAn8B,EAAAsT,GACA,OAAAtT,EAAAsT,GAIApF,GAAmB6T,MACnBqa,EAAA,WACA,QAAAz4B,EAAA,EAAA2Q,EAAA9U,KAAA2G,OAA8CxC,EAAA2Q,EAAQ3Q,IACtD,YAAAnE,KAAAmE,GACA,OAAAnE,KAAAmE,IAIA04B,EAAA,WAEA,IADA,IAAA14B,EAAAnE,KAAA2G,SACAxC,GACA,YAAAnE,KAAAmE,GACA,OAAAnE,KAAAmE,IAIA24B,EAAA18B,OAAAwM,UAAA+C,SACAnB,EAAAC,OACA6H,EAAA3J,MAAA2J,SAAA,SAAAymB,GACA,OAAAA,aAAApwB,OAAA,kBAAAmwB,EAAAx8B,KAAAy8B,IAgBA9wB,IAAA,SAAAhJ,EAAAyW,GACA,IAMAR,EALA8jB,EAAA9G,EACAxpB,EAAAC,MAAAC,UAAA5I,MAAA1D,KAAAuM,UAAA,GACAowB,EAAAhxB,IAAAgxB,UAAAh6B,GACAwY,EAAA,EAGAyhB,KACAC,KACAjS,KACAkS,EAAAX,EAEAvR,EAAA0R,eACA1R,EAAA2R,cACAJ,EAAAx5B,EACAizB,EAAA,EACA,QAAA/xB,EAAA,EAAA2Q,EAAAmoB,EAAAt2B,OAAmDxC,EAAA2Q,EAAQ3Q,IAAA,WAAA84B,EAAA94B,KAC3D+4B,EAAAt8B,KAAAq8B,EAAA94B,GAAAk5B,QACAJ,EAAA94B,GAAAk5B,OAAA,IACAF,EAAAF,EAAA94B,GAAAk5B,QAAAJ,EAAA94B,KAIA,IADA+4B,EAAA7F,KAAAsF,GACAO,EAAAzhB,GAAA,GAGA,GAFAvC,EAAAikB,EAAAD,EAAAzhB,MACAyP,EAAAtqB,KAAAsY,EAAAlN,MAAA0N,EAAAhN,IACAwpB,EAEA,OADAA,EAAA8G,EACA9R,EAGA,IAAA/mB,EAAA,EAAwBA,EAAA2Q,EAAQ3Q,IAEhC,cADA+U,EAAA+jB,EAAA94B,IAEA,GAAA+U,EAAAmkB,QAAAH,EAAAzhB,GAAA,CAEA,GADAyP,EAAAtqB,KAAAsY,EAAAlN,MAAA0N,EAAAhN,IACAwpB,EACA,MAEA,GAIA,IAFAhd,EAAAikB,EAAAD,IADAzhB,MAEAyP,EAAAtqB,KAAAsY,EAAAlN,MAAA0N,EAAAhN,IACAwpB,EACA,YAE0Bhd,QAE1BikB,EAAAjkB,EAAAmkB,QAAAnkB,OAIA,GADAgS,EAAAtqB,KAAAsY,EAAAlN,MAAA0N,EAAAhN,IACAwpB,EACA,MAMA,OAFAA,EAAA8G,EACAP,EAAAW,EACAlS,GAGAjf,IAAAqxB,QAAA5uB,EAaAzC,IAAAgxB,UAAA,SAAAh6B,GACA,IAEA+W,EACA+e,EACA9X,EACA9c,EACA2Q,EACAD,EACAE,EACAwoB,EATAC,EAAAlnB,EAAArT,OAAAc,MAAAmJ,GACArL,EAAA6M,EASA+uB,GAAA57B,GACAqpB,KACA,IAAA/mB,EAAA,EAAA2Q,EAAA0oB,EAAA72B,OAAuCxC,EAAA2Q,EAAQ3Q,IAAA,CAE/C,IADAo5B,KACA1oB,EAAA,EAAAE,EAAA0oB,EAAA92B,OAAwCkO,EAAAE,EAAQF,IAIhD,IAFAkkB,IADAl3B,EAAA47B,EAAA5oB,GAAA0N,GACAib,EAAAr5B,IAAAtC,EAvIA,MAwIAof,EAAA,EACAA,MACAjH,EAAA+e,EAAA9X,MAEAsc,EAAA38B,KAAAoZ,GACAkR,IAAA9lB,OAAA4U,EAAAlN,QAIA2wB,EAAAF,EAEA,OAAArS,GAYAjf,IAAAiB,UAAA,SAAAwwB,GACAA,GAEAA,EAAA,KADAA,EAAAlvB,EAAAkvB,GAAAhmB,QAAA,2BACA,IACAxK,EAAA,IAAA6tB,OAAA2C,IAEAxwB,EAAA,UA4BAjB,IAAArK,GAAA,SAAAqB,EAAA6J,GACA,sBAAAA,EACA,oBAGA,IADA,IAAA0wB,EAAAlnB,EAAArT,GAAAqT,EAAArT,EAAA,IAAAA,MAAAuL,EAAAvL,GAAAc,MAAA24B,GACAv4B,EAAA,EAAA2Q,EAAA0oB,EAAA72B,OAA2CxC,EAAA2Q,EAAQ3Q,KACnD,SAAAlB,GAIA,IAHA,IAEA06B,EAFAH,EAAAlnB,EAAArT,KAAAuL,EAAAvL,GAAAc,MAAAmJ,GACArL,EAAA6M,EAEAvK,EAAA,EAAA2Q,EAAA0oB,EAAA72B,OAAmDxC,EAAA2Q,EAAQ3Q,IAE3DtC,GADAA,IAAA0gB,GACAqb,eAAAJ,EAAAr5B,KAAAtC,EAAA27B,EAAAr5B,MAAAtC,EAAA27B,EAAAr5B,KAAsFoe,OAGtF,IADA1gB,EAAAiL,EAAAjL,EAAAiL,MACA3I,EAAA,EAAA2Q,EAAAjT,EAAAiL,EAAAnG,OAA6CxC,EAAA2Q,EAAQ3Q,IAAA,GAAAtC,EAAAiL,EAAA3I,IAAA2I,EAAA,CACrD6wB,GAAA,EACA,OAEAA,GAAA97B,EAAAiL,EAAAlM,KAAAkM,GAbA,CAcc0wB,EAAAr5B,IAEd,gBAAAk5B,IACAA,QACAvwB,EAAAuwB,aAoBApxB,IAAAa,EAAA,SAAAtK,GACA,IAAAgS,KAAAxQ,MAAA1D,KAAAuM,UAAA,GACA,kBACAZ,IAAAD,MAAA,MAAAxJ,EAAA,MAAA4C,OAAAoP,GAAApP,UAAApB,MAAA1D,KAAAuM,UAAA,OASAZ,IAAAiqB,KAAA,WACAA,EAAA,GAgBAjqB,IAAA4xB,GAAA,SAAAC,GACA,IAAAC,EAAAznB,EAAAmmB,KAAAn6B,KAAA,KAAAm6B,EACA,OAAAqB,EACA,IAAA/C,OAAA,gBAAA+C,EAAA,iBAAA7C,KAAA8C,GAEAA,GAWA9xB,IAAA+xB,IAAA,WACA,OAAA1nB,EAAAmmB,OAAA14B,MAAAmJ,IAoBAjB,IAAAgyB,IAAAhyB,IAAA4iB,OAAA,SAAA5rB,EAAA6J,GACA,GAAA7J,EAAA,CAIA,IAAAu6B,EAAAlnB,EAAArT,GAAAqT,EAAArT,EAAA,IAAAA,MAAAuL,EAAAvL,GAAAc,MAAA24B,GACA,GAAAc,EAAA72B,OAAA,EACA,QAAAxC,EAAA,EAAA2Q,EAAA0oB,EAAA72B,OAA+CxC,EAAA2Q,EAAQ3Q,IACvD8H,IAAAgyB,IAAAT,EAAAr5B,GAAA2I,OAFA,CAMA0wB,EAAAlnB,EAAArT,KAAAuL,EAAAvL,GAAAc,MAAAmJ,GACA,IAAArL,EACAkU,EACAxJ,EACAsI,EAAAE,EACAgpB,GAAArvB,GACA,IAAAvK,EAAA,EAAA2Q,EAAA0oB,EAAA72B,OAAuCxC,EAAA2Q,EAAQ3Q,IAC/C,IAAA0Q,EAAA,EAAwBA,EAAAkpB,EAAAp3B,OAAgBkO,GAAAtI,EAAA5F,OAAA,GAGxC,GAFA4F,GAAAsI,EAAA,GACAhT,EAAAk8B,EAAAlpB,GAAA0N,EApUA,KAqUAib,EAAAr5B,GACAtC,EAAA27B,EAAAr5B,KACAoI,EAAA3L,KAAAiB,EAAA27B,EAAAr5B,UAGA,IAAA4R,KAAAlU,IAAA6L,GAAAqI,IACAxJ,EAAA3L,KAAAiB,EAAAkU,IAGAgoB,EAAAxxB,OAAAP,MAAA+xB,EAAAxxB,GAGA,IAAApI,EAAA,EAAA2Q,EAAAipB,EAAAp3B,OAAqCxC,EAAA2Q,EAAQ3Q,IAE7C,IADAtC,EAAAk8B,EAAA55B,GACAtC,EAAA0gB,GAAA,CACA,GAAAzV,EAAA,CACA,GAAAjL,EAAAiL,EAAA,CACA,IAAA+H,EAAA,EAAAE,EAAAlT,EAAAiL,EAAAnG,OAAqDkO,EAAAE,EAAQF,IAAA,GAAAhT,EAAAiL,EAAA+H,IAAA/H,EAAA,CAC7DjL,EAAAiL,EAAAP,OAAAsI,EAAA,GACA,OAEAhT,EAAAiL,EAAAnG,eAAA9E,EAAAiL,EAEA,IAAAiJ,KAAAlU,EAAA0gB,EAAA,GAAA1gB,EAAA0gB,EAAA7U,GAAAqI,IAAAlU,EAAA0gB,EAAAxM,GAAAjJ,EAAA,CACA,IAAAoxB,EAAAr8B,EAAA0gB,EAAAxM,GAAAjJ,EACA,IAAA+H,EAAA,EAAAE,EAAAmpB,EAAAv3B,OAAuDkO,EAAAE,EAAQF,IAAA,GAAAqpB,EAAArpB,IAAA/H,EAAA,CAC/DoxB,EAAA3xB,OAAAsI,EAAA,GACA,OAEAqpB,EAAAv3B,eAAA9E,EAAA0gB,EAAAxM,GAAAjJ,QAIA,IAAAiJ,YADAlU,EAAAiL,EACAjL,EAAA0gB,EAAA1gB,EAAA0gB,EAAA7U,GAAAqI,IAAAlU,EAAA0gB,EAAAxM,GAAAjJ,UACAjL,EAAA0gB,EAAAxM,GAAAjJ,EAGAjL,IAAA0gB,SAzDAtW,IAAAqxB,QAAA5uB,GAAqC6T,OA8ErCtW,IAAAkyB,KAAA,SAAAl7B,EAAA6J,GACA,IAAAgY,EAAA,WAEA,OADA7Y,IAAAgyB,IAAAh7B,EAAA6hB,GACAhY,EAAAd,MAAAhM,KAAA6M,YAEA,OAAAZ,IAAArK,GAAAqB,EAAA6hB,IAQA7Y,IAAAe,QAhZA,QAiZAf,IAAA0D,SAAA,WACA,wCAEA,IAAApE,KAAAD,QAAAC,EAAAD,QAAAW,SAA0LH,KAA1LD,EAAA,WAA4K,OAAAI,KAAcD,MAAAV,SAAAC,EAAAD,QAAAO,IAM1L,SAAAN,EAAAD,EAAArF,GAEA,IAAA2F,EAAAC,EAAiED,GAAA3F,EAAA,SA+4C/D6F,KA/4C+DD,EAAA,SAAAE,GACjE,IAAAA,KAAAiK,IAAA,CAIA,IAAAtI,EAAA,iBACAc,EAAAC,OACA2B,EAAAC,WACAC,EAAAC,SACAtB,EAAAC,KACAC,EAAAF,EAAAG,IACAG,EAAAN,EAAAM,IACAC,EAAAP,EAAAO,IACAtC,EAAA,QACAjB,EAAAF,EAAAE,IACAqC,EAAA,GACAC,EAAA,IACA6vB,EAAA,+BACAC,GACAC,MAAA,kBACAC,QAAA,8BACAC,QAAA,4BACAC,KAAA,iBACAC,KAAA,mDAEAC,KACA5yB,EAAA4D,SAAA,WACA,6DAAA3P,KAAAgN,SAEA,IAAApG,EAAA,SAAA2N,EAAAjR,GACA,GAAAA,EAIA,QAAAyS,IAHA,iBAAAxB,IACAA,EAAA3N,EAAA2N,IAEAjR,IAAAoK,GAAAqI,KACA,UAAAA,EAAA8F,UAAA,KACAtH,EAAAqqB,eAAAR,EAAAroB,EAAA8F,UAAA,GAAArN,EAAAlL,EAAAyS,KAEAxB,EAAAsqB,aAAA9oB,EAAAvH,EAAAlL,EAAAyS,WAIAxB,EAAAxI,EAAAmJ,GAAAtH,IAAAkxB,gBAAA,6BAAAvqB,IACAkB,QAAAlB,EAAAkB,MAAAspB,wBAAA,iBAEA,OAAAxqB,GAEAyqB,EAAA,SAAAjS,EAAArb,GACA,IAAAyD,EAAA,SACAvP,EAAAmnB,EAAAnnB,GAAA8L,EACAutB,EAAA,GAAAC,EAAA,GACA7oB,EAAA0W,EAAAe,KACAqR,EAAApS,EAAAhF,MACA/O,EAAA3C,EAAAZ,MACAlB,EAAAxI,EAAAmJ,GAAAtH,IAAA4c,eAAA5kB,GACA,IAAA2O,EAAA,CAeA,GADA7C,GAbAA,EAAAlD,EAAAkD,GAAAgG,QAAA3L,EAAA6H,iBAAA,SAAAooB,EAAAoD,EAAAC,GAEA,GADAlqB,EAAA,SACAiqB,GAAAC,EAAA,CACAJ,EAAA7uB,EAAAgvB,GAEA,IAAAE,EAAA,IADAJ,EAAA9uB,EAAAivB,IACA,MACA7vB,EAAAyvB,EAAA,MAAAzvB,EAAA0vB,EAAA,YACAA,EAAAjwB,EAAAqP,KAAA,IAAA9O,EAAAyvB,EAAA,OAAAK,EAAA,KACA,IAAAJ,IACAA,IAAAtgB,QAAA,QAAA0gB,GAEA,OAAAhxB,KAEAvK,MAAA,YACA,UAAAoR,EAAA,CACA,IAAAoB,EAAA7E,EAAAwI,QAEA,GADA3D,GAAAnG,EAAAmG,GACAgpB,MAAAhpB,GACA,YAEA,IAAAipB,GAAA,IAAAvwB,EAAA0V,IAAA5Y,EAAAgL,IAAAR,IAAAtH,EAAA2V,IAAA7Y,EAAAgL,IAAAR,KACAnH,EAAA,GAAAD,EAAAI,EAAAiwB,EAAA,IAAAjwB,EAAAiwB,EAAA,SACAA,EAAA,IAAApwB,EACAowB,EAAA,IAAApwB,EACAowB,EAAA,OACAA,EAAA,IAAAA,EAAA,GACAA,EAAA,MAEAA,EAAA,OACAA,EAAA,IAAAA,EAAA,GACAA,EAAA,MAGA,IAAAtb,EAAAnY,EAAA4b,WAAAjW,GACA,IAAAwS,EACA,YASA,GAPAte,IAAA8R,QAAA,uBAEAqV,EAAArb,UAAA9L,GAAAmnB,EAAArb,SAAA9L,KACAu5B,EAAAM,KAAArkB,YAAA2R,EAAArb,iBACAqb,EAAArb,WAGAqb,EAAArb,SAAA,CACA6C,EAAA3N,EAAAuO,EAAA,YAA4CvP,OAC5CmnB,EAAArb,SAAA6C,EACA3N,EAAA2N,EAAA,UAAAY,GACA8pB,KACAC,OAEA1oB,GAAAgpB,EAAA,GACA/oB,GAAA+oB,EAAA,GACA9oB,GAAA8oB,EAAA,GACA7oB,GAAA6oB,EAAA,GACAE,kBAAA3S,EAAAnY,OAAA8U,WAEAyV,EAAAM,KAAA11B,YAAAwK,GACA,QAAApQ,EAAA,EAAA2Q,EAAAoP,EAAAvd,OAAkDxC,EAAA2Q,EAAQ3Q,IAC1DoQ,EAAAxK,YAAAnD,EAAA,QACAihB,OAAA3D,EAAA/f,GAAA0jB,OAAA3D,EAAA/f,GAAA0jB,OAAA1jB,EAAA,YACAw7B,aAAAzb,EAAA/f,GAAA4T,OAAA,OACA6nB,eAAAC,SAAA3b,EAAA/f,GAAA0N,SAAAqS,EAAA/f,GAAA0N,QAAA,MAaA,OARAjL,EAAAyP,GACAlF,KAAA2uB,EAAAl6B,GACAiM,QAAA,EACAT,eAAA,IAEA4H,EAAA7H,KAAA7C,EACA0K,EAAAnH,QAAA,EACAmH,EAAA+mB,YAAA,EACA,GAMAD,EAAA,SAAAl6B,GACA,IAJAo6B,EAAAh4B,SAAAi4B,gBACA,IAAAD,GAAA,KAAAA,GAIA,eAAAp6B,EAAA,KANA,IACAo6B,EAOAl4B,EAAAE,SAAAF,SAOA,eALAA,EAAAo4B,SAAA,KACAp4B,EAAAq4B,KACAr4B,EAAAs4B,SACAt4B,EAAAa,QAEA,IAAA/C,EAAA,MAEAy6B,EAAA,SAAAhqB,GACA,IAAA5B,EAAA4B,EAAAsS,QAAA,GACA/hB,EAAAyP,EAAAiqB,SAAuBC,iBAAAlqB,EAAAzB,OAAA8U,SAAA,cAAAjV,EAAA3B,EAAA,IAAA2B,EAAA1B,EAAA,OAEvBytB,EAAA,SAAAnqB,EAAAc,EAAAspB,GACA,WAAApqB,EAAAlB,KAAA,CAiBA,IAhBA,IAQAiV,EACAC,EACArB,EACA0X,EACAp9B,EAZA4T,EAAA1I,EAAA2I,GAAAnI,cAAAjL,MAAA,KACA4H,EAAA0K,EAAA0R,MACA4Y,EAAAF,EAAA,cACA3S,EAAAzX,EAAAyX,KACAtZ,EAAA6B,EAAA7B,MACAtC,EAAAsC,EAAA,gBACArQ,EAAA+S,EAAAvQ,OACAwO,EAAA,UAMAjB,EAAA,EACAC,EAAA,EACA+H,EAAA,EACA/X,KACA,OAAA+S,EAAA/S,IACA,YACA,cACA,WACA,cACA,WACA,WACAgR,EAAA+B,EAAA/S,GACA,MACA,WAAAgQ,EAAA,EAAwC,MACxC,aAAAA,EAAA,EAA0C,MAC1C,WAAAD,EAAA,EAAwC,MACxC,YAAAA,EAAA,EA+BA,GA5BA,QAAAiB,GACAjB,GAAA,EACAC,GAAA,EACA+H,GAAA,EACA8M,EAAA,EACA0X,EAAAD,EAAA,IACAn9B,GACA6N,KAAA,OACAe,OAAAsC,EAAAtC,UAGAwuB,EAAA1X,EAAA9U,EAAA,EACA5Q,GACA6N,KAAAqD,EAAAtC,OACAA,OAAA,SAGAmE,EAAAqS,EAAAkY,OACAH,GACApqB,EAAAqS,EAAAkY,OAAAC,SAAAlC,EAAAtoB,EAAAqS,EAAAkY,OAAAC,WACAxqB,EAAAqS,EAAAkY,OAAAE,WAAAnC,EAAAtoB,EAAAqS,EAAAkY,OAAAE,eAEAzqB,EAAAqS,EAAAkY,OAAAG,WAAApC,EAAAtoB,EAAAqS,EAAAkY,OAAAG,aACA1qB,EAAAqS,EAAAkY,OAAAI,aAAArC,EAAAtoB,EAAAqS,EAAAkY,OAAAI,gBAGA3qB,EAAAqS,EAAAkY,UAEA,QAAAzrB,EAAA,CACA,IAAA8rB,EAAA,kBAAA9rB,EACA+rB,EAAA,kBAAAP,EAAAxrB,EAAAjB,EAAAC,EAAA,OAAAkC,EAAAzQ,GACAmG,EAAAmJ,GAAAtH,IAAA4c,eAAAyW,GAQAtC,EAAAsC,MAPAt1B,EAAA8zB,KAAA11B,YAAAnD,IAAA,SACAwL,iBAAA,QACAlM,EAAAm4B,EAAAlpB,GACAvP,GAAAq7B,KAEAtC,EAAAsC,GAAA,GAIA,IACAE,EADAC,EAAAr1B,EAAAmJ,GAAAtH,IAAA4c,eAAA0W,GAEAE,GAkBAzC,EAAAuC,KACAC,EAAAC,EAAAC,qBAAA,YAlBAD,EAAAx6B,IAAA,WACAhB,GAAAs7B,EACAI,aAAAntB,EACAotB,YAAArtB,EACAstB,OAAA,OACAd,OACAe,KAAAttB,EAAA,IAEAgtB,EAAAv6B,IAAA,QACA86B,aAAA,IAAAT,EACAruB,WAAA6tB,EAAA,cAAAvsB,EAAA,MAAAC,EAAA,OAAA7F,GAAA,SAAA4F,EAAAgI,EAAA,IAAA/H,EAAA+H,EAAA,IACA1J,gBAAA,IAAA0B,EAAAgI,EAAA/H,EAAA+H,GAAA,IAAA0C,QAAA,KAEAwiB,EAAAr3B,YAAAo3B,GACAx1B,EAAA8zB,KAAA11B,YAAAq3B,GACAzC,EAAAuC,GAAA,GAKAt6B,EAAAu6B,EAAA79B,GACA,IAAAq+B,EAAA3Y,GAAA,WAAA7T,GAAA,QAAAA,GACAsrB,GACArW,EAAA/T,EAAAqS,EAAAkY,OAAAgB,QAAA1vB,GAAA,EACAmY,EAAAte,EAAA4nB,eAAAnf,EAAAlH,MAAAq0B,EAAAzvB,IAEAkY,EAAAuX,EAAAzvB,EACAmY,EAAAte,EAAA4nB,eAAAnf,EAAAlH,OAAA+I,EAAAqS,EAAAkY,OAAAiB,MAAA3vB,GAAA,KAEA5O,MACA,UAAAq9B,GAAA,QAAAO,EAAA,KACA7W,GAAAD,KACA9mB,EAAA4C,EAAA6F,EAAA+nB,WAAAtf,EAAAlH,KAAA8c,EAAAC,IAEAzjB,EAAAknB,EAAAxqB,GACA+S,EAAAqS,EAAAkY,OAAAD,EAAA,QAAAM,EACA5qB,EAAAqS,EAAAkY,OAAAD,EAAA,UAAAO,EACA7qB,EAAAqS,EAAAkY,OAAAD,EAAA,MAAAgB,EACAtrB,EAAAqS,EAAAkY,OAAAD,EAAA,QAAAxrB,EACAkB,EAAAqS,EAAAkY,OAAAD,EAAA,UAAAxpB,OAEAspB,GACArW,EAAA/T,EAAAqS,EAAAkY,OAAAgB,QAAA1vB,GAAA,EACAmY,EAAAte,EAAA4nB,eAAAnf,EAAAlH,MAAA8c,IAEAA,EAAA,EACAC,EAAAte,EAAA4nB,eAAAnf,EAAAlH,OAAA+I,EAAAqS,EAAAkY,OAAAiB,MAAA3vB,GAAA,IAEAmE,EAAAqS,EAAAkY,OAAAD,EAAA,SAAA/5B,EAAAknB,GAAqD5nB,EAAA6F,EAAA+nB,WAAAtf,EAAAlH,KAAA8c,EAAAC,YACrDhU,EAAAqS,EAAAkY,OAAAD,EAAA,eACAtqB,EAAAqS,EAAAkY,OAAAD,EAAA,iBACAtqB,EAAAqS,EAAAkY,OAAAD,EAAA,aACAtqB,EAAAqS,EAAAkY,OAAAD,EAAA,eACAtqB,EAAAqS,EAAAkY,OAAAD,EAAA,UAEA,IAAAr9B,KAAAq7B,EAAA,GAAAA,EAAAjxB,GAAApK,KAAAq7B,EAAAr7B,GAAA,CACA,IAAA0W,EAAAjO,EAAAmJ,GAAAtH,IAAA4c,eAAAlnB,GACA0W,KAAAiU,WAAA7S,YAAApB,MAIA8nB,GACAC,KAAA,KACAC,KAAA,KACAC,MAAA,SACAC,OAAA,aACAC,MAAA,KACAC,MAAA,KACAC,MAAA,KACAC,OAAA,SACAC,OAAA,SACAC,QAAA,cAEAC,EAAA,SAAApsB,EAAAc,EAAA1O,GAEA,GADA0O,EAAA2qB,EAAAtzB,EAAA2I,GAAAnI,eACA,CAKA,IAJA,IAAA6D,EAAAwD,EAAA7B,MAAA,qBACAkuB,GAAyBvyB,MAAA0C,EAAA8vB,OAAA9vB,EAAA6vB,KAAA,GAAqCrsB,EAAA7B,MAAA,mBAAA/L,EAAA,sBAC9Dm6B,KACAz+B,EAAAgT,EAAAxQ,OACAxC,KACAy+B,EAAAz+B,GAAAgT,EAAAhT,GAAA0O,GAAA1O,EAAA,QAAAu+B,EAEA97B,EAAAyP,EAAAyX,MAAwB3b,mBAAAywB,EAAAtgC,KAAA,YAGxBsE,EAAAyP,EAAAyX,MAAsB3b,mBAAA,UAGtB0wB,EAAA,SAAAxsB,EAAA5N,GACA,IAAAqlB,EAAAzX,EAAAyX,KACAtZ,EAAA6B,EAAA7B,MACAsuB,EAAAhV,EAAArY,MAAAstB,WAEA,QAAAC,KADAlV,EAAArY,MAAAstB,WAAA,SACAt6B,EACA,GAAAA,EAAAiF,GAAAs1B,GAAA,CACA,IAAAj3B,EAAA4E,gBAAAjD,GAAAs1B,GACA,SAEA,IAAA7rB,EAAA1O,EAAAu6B,GAEA,OADAxuB,EAAAwuB,GAAA7rB,EACA6rB,GACA,WACA3sB,EAAAvF,KAAAqG,GACA,MACA,YACA,IAAAxE,EAAAmb,EAAAuT,qBAAA,SAGA,GAAA1uB,EAAAhM,SAAAgM,IAAA,IACAA,EAAA6C,WAAAytB,UAAA9rB,MAC0B,CAC1BxE,EAAA/L,EAAA,SACA,IAAA9D,EAAAiJ,EAAAmJ,GAAAtH,IAAAs1B,eAAA/rB,GACAxE,EAAA5I,YAAAjH,GACAgrB,EAAA/jB,YAAA4I,GAEA,MACA,WACA,aACA,IAAAwwB,EAAArV,EAAAG,WACA,QAAAkV,EAAA1Y,QAAAzb,cAAA,CACA,IAAAo0B,EAAAx8B,EAAA,KACAu8B,EAAA/U,aAAAgV,EAAAtV,GACAsV,EAAAr5B,YAAA+jB,GACAqV,EAAAC,EAEA,UAAAJ,EACAG,EAAAvE,eAAAR,EAAA,gBAAAjnB,EAAA,MAAAA,GAEAgsB,EAAAvE,eAAAR,EAAA4E,EAAA7rB,GAEA,MACA,aACA2W,EAAArY,MAAAzE,OAAAmG,EACA,MACA,gBACAd,EAAAzD,UAAAuE,GACA,MACA,kBACAqpB,EAAAnqB,EAAAc,GACA,MACA,gBACAqpB,EAAAnqB,EAAAc,EAAA,GACA,MACA,gBACA,IAAA9J,EAAAmB,EAAA2I,GAAApT,MAAAmJ,GACA,MAAAG,EAAA1G,OAAA,CACA0P,EAAAgtB,MAAAhtB,EAAAgtB,KAAApV,sBAAA7S,YAAA/E,EAAAgtB,KAAApV,YACA,IAAA1Z,EAAA3N,EAAA,YACA08B,EAAA18B,EAAA,QACA2N,EAAA3O,GAAAmG,EAAAyL,aACA5Q,EAAA08B,GACAxwB,EAAAzF,EAAA,GACA0F,EAAA1F,EAAA,GACAwF,MAAAxF,EAAA,GACAsE,OAAAtE,EAAA,KAEAkH,EAAAxK,YAAAu5B,GACAjtB,EAAA0R,MAAA0X,KAAA11B,YAAAwK,GACA3N,EAAAknB,GAAsCyV,YAAA,QAAAhvB,EAAA3O,GAAA,MACtCyQ,EAAAgtB,KAAAC,EAEA,IAAAnsB,EAAA,CACA,IAAA7J,EAAAwgB,EAAA0V,aAAA,aACA,GAAAl2B,EAAA,CACA,IAAA+1B,EAAAt3B,EAAAmJ,GAAAtH,IAAA4c,eAAAld,EAAAoK,QAAA,iBAAApJ,IACA+0B,KAAApV,WAAA7S,YAAAioB,GACAz8B,EAAAknB,GAA0CyV,YAAAj1B,WAC1C+H,EAAAgtB,MAGA,MACA,WACA,QAAAhtB,EAAAlB,OACAvO,EAAAknB,GAAsC5nB,EAAAiR,EAAA3C,EAAAlH,KAAAvB,EAAAiY,gBAAA7M,GAAA,SACtCd,EAAAqS,EAAAiK,MAAA,EACAtc,EAAAqS,EAAAkY,SACA,gBAAAvqB,EAAAqS,EAAAkY,QAAAJ,EAAAnqB,IAAAqS,EAAAkY,OAAA6C,aACA,cAAAptB,EAAAqS,EAAAkY,QAAAJ,EAAAnqB,IAAAqS,EAAAkY,OAAA8C,UAAA,KAGA,MACA,YAGA,GAFA5V,EAAA+Q,aAAAmE,EAAA7rB,GACAd,EAAAqS,EAAAiK,MAAA,GACAne,EAAAyqB,GAIA,MAHA+D,EAAA,IACA7rB,EAAA3C,EAAA1B,EAIA,QACA0B,EAAAyqB,KACA9nB,GAAA3C,EAAA1B,GAAA0B,EAAA3B,OAAA,IAEA,SACA,SAAAmwB,GAAA,QAAA3sB,EAAAlB,KACA,MAEA,SACA2Y,EAAA+Q,aAAAmE,EAAA7rB,GACAd,EAAAiqB,SAAAD,EAAAhqB,GACAA,EAAAqS,EAAAiK,MAAA,EACA,MACA,aAGA,GAFA7E,EAAA+Q,aAAAmE,EAAA7rB,GACAd,EAAAqS,EAAAiK,MAAA,GACAne,EAAA0qB,GAIA,MAHA8D,EAAA,IACA7rB,EAAA3C,EAAAzB,EAIA,QACAyB,EAAA0qB,KACA/nB,GAAA3C,EAAAzB,GAAAyB,EAAA7C,QAAA,IAEA,SACA,SAAAqxB,GAAA,QAAA3sB,EAAAlB,KACA,MAEA,SACA2Y,EAAA+Q,aAAAmE,EAAA7rB,GACAd,EAAAiqB,SAAAD,EAAAhqB,GACAA,EAAAqS,EAAAiK,MAAA,EACA,MACA,QACA,QAAAtc,EAAAlB,KACAvO,EAAAknB,GAAsC/b,GAAAoF,EAAAnF,GAAAmF,IAEtC2W,EAAA+Q,aAAAmE,EAAA7rB,GAEAd,EAAAqS,EAAAiK,MAAA,EACA,MACA,UACA,SAAAtc,EAAAlB,MACA2Y,EAAA8Q,eAAAR,EAAA,OAAAjnB,GAEA,MACA,mBACA,GAAAd,EAAAqS,EAAAS,IAAA,GAAA9S,EAAAqS,EAAAU,KACAjS,GAAAhI,EAAAI,EAAA8G,EAAAqS,EAAAS,IAAA5Z,EAAA8G,EAAAqS,EAAAU,MAAA,GAEA0E,EAAA+Q,aAAAmE,EAAA7rB,GACA3C,EAAA,qBACAiuB,EAAApsB,EAAA7B,EAAA,oBAAA/L,GAEA4N,EAAAqS,EAAAkY,SACA,gBAAAvqB,EAAAqS,EAAAkY,QAAAJ,EAAAnqB,IAAAqS,EAAAkY,OAAA6C,aACA,cAAAptB,EAAAqS,EAAAkY,QAAAJ,EAAAnqB,IAAAqS,EAAAkY,OAAA8C,UAAA,IAEA,MACA,uBACAjB,EAAApsB,EAAAc,EAAA1O,GACA,MACA,WACA,IAAAk7B,EAAAn1B,EAAA2I,GAAAgF,MAAApQ,EAAA8D,QACA,GAAA8zB,EAAA,CACApvB,EAAA3N,EAAA,WACA,IAAAg9B,EAAAh9B,EAAA,SACA2N,EAAA3O,GAAAmG,EAAAyL,aACA5Q,EAAA2N,GAAoCzB,EAAA,EAAAC,EAAA,EAAA8wB,aAAA,iBAAAlyB,OAAA,EAAAkB,MAAA,IACpCjM,EAAAg9B,GAAoC9wB,EAAA,EAAAC,EAAA,EAAA2uB,aAAAiC,EAAA,KACpCpvB,EAAAxK,YAAA65B,GAEA,SAAArvB,GACAxI,EAAAiP,SAAA2oB,EAAA,cACA,IAAAzvB,EAAAlU,KAAA2qB,YACAxW,EAAAnU,KAAA6qB,aACAjkB,EAAA2N,GAA4C1B,MAAAqB,EAAAvC,OAAAwC,IAC5CvN,EAAAg9B,GAA4C/wB,MAAAqB,EAAAvC,OAAAwC,MAL5C,CAO8BI,GAC9B8B,EAAA0R,MAAA0X,KAAA11B,YAAAwK,GACA3N,EAAAknB,GAAsC3c,KAAA,QAAAoD,EAAA3O,GAAA,MACtCyQ,EAAAiqB,QAAA/rB,EACA8B,EAAAiqB,SAAAD,EAAAhqB,GACA,MAEA,IAAAiD,EAAAvN,EAAAwN,OAAApC,GACA,GAAAmC,EAAAsC,OAS0B,cAAAvF,EAAAlB,MAAA,WAAAkB,EAAAlB,MAAA,KAAA3G,EAAA2I,GAAA2E,WAAAkjB,EAAA3oB,EAAAc,GAAA,CAC1B,eAAA3C,GAAA,iBAAAA,EAAA,CACA,IAAA9C,EAAA3F,EAAAmJ,GAAAtH,IAAA4c,eAAAsD,EAAA0V,aAAA,QAAA9rB,QAAA,eAAApJ,IACA,GAAAoD,EAAA,CACA,IAAAoyB,EAAApyB,EAAA2vB,qBAAA,QACAz6B,EAAAk9B,IAAAn9B,OAAA,IAAiEi5B,gBAAA,YAAAprB,IAAA3C,QAAA,qBAAA2C,IAAA,sBAGjEA,EAAA9C,SAAAyF,EACA3C,EAAArD,KAAA,OACA,mBAlBA1I,EAAAiJ,gBACA8C,EAAA9C,UACA3F,EAAAI,GAAAqI,EAAA3C,QAAA,cACA9F,EAAAI,GAAA1D,EAAAoJ,QAAA,cACAjL,EAAAknB,GAA0Cjc,QAAA2C,EAAA3C,WAC1C9F,EAAAI,GAAAqI,EAAA,8BACAzI,EAAAI,GAAA1D,EAAA,8BACA7B,EAAAknB,GAA0C1c,eAAAoD,EAAA,kBAa1C8E,EAAA5L,GAAA,YAAA9G,EAAAknB,GAAyD1c,eAAAkI,EAAAzH,QAAA,EAAAyH,EAAAzH,QAAA,IAAAyH,EAAAzH,UACzD,aACAyH,EAAAvN,EAAAwN,OAAApC,GACA2W,EAAA+Q,aAAAmE,EAAA1pB,EAAAF,KACA,UAAA4pB,GAAA1pB,EAAA5L,GAAA,YAAA9G,EAAAknB,GAA4Evb,iBAAA+G,EAAAzH,QAAA,EAAAyH,EAAAzH,QAAA,IAAAyH,EAAAzH,UAC5E,UAAAmxB,GAAA3sB,EAAAqS,EAAAkY,SACA,gBAAAvqB,EAAAqS,EAAAkY,QAAAJ,EAAAnqB,IAAAqS,EAAAkY,OAAA6C,aACA,cAAAptB,EAAAqS,EAAAkY,QAAAJ,EAAAnqB,IAAAqS,EAAAkY,OAAA8C,UAAA,IAEA,MACA,gBACA,UAAArtB,EAAAlB,MAAA,WAAAkB,EAAAlB,MAAA,KAAA3G,EAAA2I,GAAA2E,WAAAkjB,EAAA3oB,EAAAc,GACA,MACA,cACA3C,EAAA9C,WAAA8C,EAAA9G,GAAA,mBACA9G,EAAAknB,GAAsCvb,iBAAA4E,EAAA,EAAAA,EAAA,IAAAA,IAGtC,mBACA,GAAA3C,EAAA9C,SAAA,EACAA,EAAA3F,EAAAmJ,GAAAtH,IAAA4c,eAAAsD,EAAA0V,aAAA,QAAA9rB,QAAA,eAAApJ,OAEAw1B,EAAApyB,EAAA2vB,qBAAA,QACAz6B,EAAAk9B,IAAAn9B,OAAA,IAA6Di5B,eAAAzoB,KAE7D,MAEA,QACA,aAAA6rB,IAAA7rB,EAAA7G,EAAA6G,EAAA,UACA,IAAA4sB,EAAAf,EAAAtrB,QAAA,kBAAAxD,GACA,OAAAA,EAAA2H,UAAA,GAAApL,gBAEAqd,EAAArY,MAAAsuB,GAAA5sB,EACAd,EAAAqS,EAAAiK,MAAA,EACA7E,EAAA+Q,aAAAmE,EAAA7rB,IAMA6sB,EAAA3tB,EAAA5N,GACAqlB,EAAArY,MAAAstB,WAAAD,GAGAkB,EAAA,SAAAzvB,EAAA9L,GACA,WAAA8L,EAAAY,OAAA1M,EAAAiF,GAAA,SAAAjF,EAAAiF,GAAA,SAAAjF,EAAAiF,GAAA,cAAAjF,EAAAiF,GAAA,MAAAjF,EAAAiF,GAAA,OAGA,IAAAlN,EAAA+T,EAAAC,MACAsZ,EAAAvZ,EAAAuZ,KACAmW,EAAAnW,EAAAtY,WAAAlF,EAAAvE,EAAAmJ,GAAAtH,IAAAgL,YAAAC,iBAAAiV,EAAAtY,WAAAlH,GAAAwK,iBAAA,oBAEA,GAAArQ,EAAAiF,GAAA,SAEA,IADAlN,EAAA+C,KAAAkF,EAAAlF,KACAuqB,EAAAtY,YACAsY,EAAA1S,YAAA0S,EAAAtY,YAKA,IAHA,IAEA0uB,EAFAC,EAAA31B,EAAA/F,EAAAlF,MAAAQ,MAAA,MACAqgC,KAEAjgC,EAAA,EAAA2Q,EAAAqvB,EAAAx9B,OAA+CxC,EAAA2Q,EAAQ3Q,IACvD+/B,EAAAt9B,EAAA,SACAzC,GAAAyC,EAAAs9B,GAAgCjb,GAnBhC,IAmBgCgb,EAAAnxB,EAAAtS,EAAAsS,IAChCoxB,EAAAn6B,YAAAgC,EAAAmJ,GAAAtH,IAAAs1B,eAAAiB,EAAAhgC,KACA2pB,EAAA/jB,YAAAm6B,GACAE,EAAAjgC,GAAA+/B,OAIA,IAAA//B,EAAA,EAAA2Q,GADAsvB,EAAAtW,EAAAuT,qBAAA,UACA16B,OAA4CxC,EAAA2Q,EAAQ3Q,MACpDyC,EAAAw9B,EAAAjgC,IAA+B8kB,GA3B/B,IA2B+Bgb,EAAAnxB,EAAAtS,EAAAsS,IAE/BlM,EAAAw9B,EAAA,IAA+Bnb,GAAA,IAG/BriB,EAAAknB,GAAkBhb,EAAAtS,EAAAsS,EAAAC,EAAAvS,EAAAuS,IAClBwB,EAAAmU,EAAAiK,MAAA,EACA,IAAAnP,EAAAjP,EAAAG,WACA2vB,EAAA7jC,EAAAuS,GAAAyQ,EAAAzQ,EAAAyQ,EAAA7R,OAAA,GACA0yB,GAAAt4B,EAAAI,GAAAk4B,EAAA,WAAAz9B,EAAAw9B,EAAA,IAAqDnb,GAAAob,MAErDC,EAAA,SAAAxW,GACA,OAAAA,EAAAG,YAAA,MAAAH,EAAAG,WAAAxD,QAAAzb,cACA8e,EAAAG,WAEAH,GAGAyW,EAAA,SAAAzW,EAAA9X,GAiBAhW,KAAA,GAAAA,KAAA8tB,OAaAA,EAAA+C,SAAA,EAQA7wB,KAAA4F,IAQA,QAAAsJ,KAAAuI,SAAAvI,KAAAM,IAAA,UAAAG,SAAA,KAAA3L,OAAA,GAPA8pB,EAAAkE,UAAAhyB,KAAA4F,GAUA5F,KAAA4U,OAAA7I,EAAA6I,SACA5U,KAAAwyB,SAAA,KAaAxyB,KAAA+nB,MAAA/R,EACAhW,KAAAwU,MAAAxU,KAAAwU,UACAxU,KAAA0oB,GACA9V,aACAuW,GAAA,EACAC,GAAA,EACApS,IAAA,EACAgS,GAAA,EACAC,GAAA,EACA0J,MAAA,IAEA3c,EAAAkS,SAAAlS,EAAAkS,OAAAloB,MAOAA,KAAAioB,KAAAjS,EAAAgS,IACAhS,EAAAgS,MAAAhS,EAAAgS,IAAAG,KAAAnoB,MACAgW,EAAAgS,IAAAhoB,KAOAA,KAAAmoB,KAAA,MAEAwG,EAAA5iB,EAAAwI,GAEAgwB,EAAA33B,UAAA+hB,EACAA,EAAA7Y,YAAAyuB,EAEAx4B,EAAAM,QAAAiB,KAAA,SAAAoP,EAAAyiB,GACA,IAAA5qB,EAAA3N,EAAA,QACAu4B,EAAA1O,QAAA0O,EAAA1O,OAAA1mB,YAAAwK,GACA,IAAA5I,EAAA,IAAA44B,EAAAhwB,EAAA4qB,GAOA,OANAxzB,EAAAwJ,KAAA,OACA0tB,EAAAl3B,GACAwF,KAAA,OACAe,OAAA,OACA5E,KAAAoP,IAEA/Q,GAgBAgjB,EAAAjK,OAAA,SAAA1N,EAAA/F,EAAAC,GACA,GAAAlR,KAAA0yB,QACA,OAAA1yB,KASA,IAPAgX,EAAAxI,EAAAwI,GAAAjT,MAAAmJ,IACAvG,OAAA,IACAsK,EAAAb,EAAA4G,EAAA,IACA9F,EAAAd,EAAA4G,EAAA,KAEAA,EAAA5G,EAAA4G,EAAA,IACA,MAAA9F,IAAAD,EAAAC,GACA,MAAAD,GAAA,MAAAC,EAAA,CACA,IAAAuD,EAAAzU,KAAA2oB,QAAA,GACA1X,EAAAwD,EAAA3B,EAAA2B,EAAA5B,MAAA,EACA3B,EAAAuD,EAAA1B,EAAA0B,EAAA9C,OAAA,EAGA,OADA3R,KAAA4S,UAAA5S,KAAA0oB,EAAA9V,UAAAxN,SAAA,IAAA4R,EAAA/F,EAAAC,MACAlR,MAiBA2uB,EAAA/E,MAAA,SAAAT,EAAAC,EAAAnY,EAAAC,GACA,GAAAlR,KAAA0yB,QACA,OAAA1yB,KAWA,IATAmpB,EAAA3a,EAAA2a,GAAAplB,MAAAmJ,IACAvG,OAAA,IACAyiB,EAAAhZ,EAAA+Y,EAAA,IACAlY,EAAAb,EAAA+Y,EAAA,IACAjY,EAAAd,EAAA+Y,EAAA,KAEAA,EAAA/Y,EAAA+Y,EAAA,IACA,MAAAC,MAAAD,GACA,MAAAjY,IAAAD,EAAAC,GACA,MAAAD,GAAA,MAAAC,EACA,IAAAuD,EAAAzU,KAAA2oB,QAAA,GAKA,OAHA1X,EAAA,MAAAA,EAAAwD,EAAA3B,EAAA2B,EAAA5B,MAAA,EAAA5B,EACAC,EAAA,MAAAA,EAAAuD,EAAA1B,EAAA0B,EAAA9C,OAAA,EAAAT,EACAlR,KAAA4S,UAAA5S,KAAA0oB,EAAA9V,UAAAxN,SAAA,IAAA+jB,EAAAC,EAAAnY,EAAAC,MACAlR,MAaA2uB,EAAAhF,UAAA,SAAAX,EAAAC,GACA,OAAAjpB,KAAA0yB,QACA1yB,OAEAgpB,EAAAxa,EAAAwa,GAAAjlB,MAAAmJ,IACAvG,OAAA,IACAsiB,EAAA7Y,EAAA4Y,EAAA,KAEAA,EAAA5Y,EAAA4Y,EAAA,OACAC,MAAA,EACAjpB,KAAA4S,UAAA5S,KAAA0oB,EAAA9V,UAAAxN,SAAA,IAAA4jB,EAAAC,MACAjpB,OAuCA2uB,EAAA/b,UAAA,SAAAmW,GACA,IAAAL,EAAA1oB,KAAA0oB,EACA,SAAAK,EACA,OAAAL,EAAA9V,UAQA,GANA7G,EAAA+c,kBAAA9oB,KAAA+oB,GAEA/oB,KAAAqjC,MAAAz8B,EAAA5G,KAAAqjC,MAAoCzwB,UAAA5S,KAAA4U,OAAA8U,WACpC1pB,KAAAsgC,SAAAD,EAAArgC,MACAA,KAAA8tB,MAAAlnB,EAAA5G,KAAA8tB,MAAoClb,UAAA5S,KAAA4U,SAEpC,GAAA8T,EAAAS,IAAA,GAAAT,EAAAU,GAAA,CACA,IAAAob,EAAAxkC,KAAAwU,MAAA9G,GAAA,gBAAA1N,KAAAwU,MAAA,kBACAxU,KAAAsD,MAAwBkP,eAAAgyB,IAGxB,OAAAxkC,MASA2uB,EAAA8V,KAAA,WAEA,OADAzkC,KAAA0yB,UAAA1yB,KAAA8tB,KAAArY,MAAAkD,QAAA,QACA3Y,MASA2uB,EAAA+V,KAAA,WAEA,OADA1kC,KAAA0yB,UAAA1yB,KAAA8tB,KAAArY,MAAAkD,QAAA,IACA3Y,MAQA2uB,EAAAlnB,OAAA,WACA,IAAAqmB,EAAAwW,EAAAtkC,KAAA8tB,MACA,IAAA9tB,KAAA0yB,SAAA5E,EAAAG,WAAA,CAGA,IAAAlG,EAAA/nB,KAAA+nB,MAaA,QAAA5jB,KAZA4jB,EAAAmI,SAAAnI,EAAAmI,QAAAsJ,QAAAx5B,MACAiM,EAAA4iB,OAAA,eAAA7uB,KAAA4F,IACA5F,KAAA0R,UACAqW,EAAA0X,KAAArkB,YAAApb,KAAA0R,UAEA3F,EAAA+b,MAAA9nB,KAAA+nB,GAEA+F,EAAAG,WAAA7S,YAAA0S,GAGA9tB,KAAA+uB,aAEA/uB,KACAA,KAAAmE,GAAA,mBAAAnE,KAAAmE,GAAA4H,EAAAgX,gBAAA5e,GAAA,KAEAnE,KAAA0yB,SAAA,IAEA/D,EAAAja,SAAA,WACA,WAAA1U,KAAA8tB,KAAArY,MAAAkD,QAAA,CACA3Y,KAAA0kC,OACA,IAAAD,GAAA,EAEA,IACAE,EADAC,GAAA,EAEA5kC,KAAA+nB,MAAA0I,OAAAoU,cACAF,EAAA3kC,KAAA+nB,MAAA0I,OAAAoU,cAAApvB,MAEAzV,KAAA+nB,MAAA0I,OAAAxC,aACA0W,EAAA3kC,KAAA+nB,MAAA0I,OAAAxC,WAAAxY,OAGAkvB,GAAA,QAAAA,EAAAhsB,UACAisB,GAAA,EACAD,EAAAhsB,QAAA,IAEA,IAAAlE,KACA,IACAA,EAAAzU,KAAA8tB,KAAAnF,UACU,MAAA9mB,GAEV4S,GACA3B,EAAA9S,KAAA8tB,KAAAqD,WACApe,EAAA/S,KAAA8tB,KAAAoD,UACAre,MAAA7S,KAAA8tB,KAAAgX,YACAnzB,OAAA3R,KAAA8tB,KAAAiX,cAEU,QACVtwB,QACAmwB,IACAD,EAAAhsB,QAAA,QAIA,OADA8rB,GAAAzkC,KAAAykC,OACAhwB,GAmFAka,EAAArrB,KAAA,SAAAL,EAAAkU,GACA,GAAAnX,KAAA0yB,QACA,OAAA1yB,KAEA,SAAAiD,EAAA,CACA,IAAA4S,KACA,QAAArV,KAAAR,KAAAwU,MAAAxU,KAAAwU,MAAA9G,GAAAlN,KACAqV,EAAArV,GAAAR,KAAAwU,MAAAhU,IAIA,OAFAqV,EAAAnE,UAAA,QAAAmE,EAAA1E,OAAA0E,EAAA1E,KAAA0E,EAAAnE,kBAAAmE,EAAAnE,SACAmE,EAAAjD,UAAA5S,KAAA0oB,EAAA9V,UACAiD,EAEA,SAAAsB,GAAApL,EAAAI,GAAAlJ,EAAA,WACA,WAAAA,GAAA,QAAAjD,KAAAwU,MAAArD,MAAAnR,KAAAwU,MAAA9C,SACA,OAAA1R,KAAAwU,MAAA9C,SAEA,gBAAAzO,EACA,OAAAjD,KAAA0oB,EAAA9V,UAIA,IAFA,IAAA4qB,EAAAv6B,EAAAc,MAAAmJ,GACAge,KACA/mB,EAAA,EAAA2Q,EAAA0oB,EAAA72B,OAA+CxC,EAAA2Q,EAAQ3Q,KACvDlB,EAAAu6B,EAAAr5B,MACAnE,KAAAwU,MACA0W,EAAAjoB,GAAAjD,KAAAwU,MAAAvR,GACkB8I,EAAAI,GAAAnM,KAAA+nB,MAAA5Z,iBAAAlL,GAAA,YAClBioB,EAAAjoB,GAAAjD,KAAA+nB,MAAA5Z,iBAAAlL,GAAA+hC,IAEA9Z,EAAAjoB,GAAA8I,EAAA4E,gBAAA1N,GAGA,OAAA6R,EAAA,EAAAoW,IAAAsS,EAAA,IAEA,SAAArmB,GAAApL,EAAAI,GAAAlJ,EAAA,UAEA,IADAioB,KACA/mB,EAAA,EAAA2Q,EAAA7R,EAAA0D,OAA0CxC,EAAA2Q,EAAQ3Q,IAClD+mB,EAAAjoB,EAAAkB,IAAAnE,KAAAsD,KAAAL,EAAAkB,IAEA,OAAA+mB,EAEA,SAAA/T,EAAA,CACA,IAAA1O,KACAA,EAAAxF,GAAAkU,OACU,MAAAlU,GAAA8I,EAAAI,GAAAlJ,EAAA,YACVwF,EAAAxF,GAEA,QAAA8S,KAAAtN,EACAwD,EAAA,gBAAA8J,EAAA,IAAA/V,KAAA4F,GAAA5F,KAAAyI,EAAAsN,IAEA,IAAAA,KAAA/V,KAAA+nB,MAAA5Z,iBAAA,GAAAnO,KAAA+nB,MAAA5Z,iBAAAT,GAAAqI,IAAAtN,EAAAiF,GAAAqI,IAAAhK,EAAAI,GAAAnM,KAAA+nB,MAAA5Z,iBAAA4H,GAAA,aACA,IAAA6R,EAAA5nB,KAAA+nB,MAAA5Z,iBAAA4H,GAAA/J,MAAAhM,QAAAoF,OAAAqD,EAAAsN,KAEA,QAAAkvB,KADAjlC,KAAAwU,MAAAuB,GAAAtN,EAAAsN,GACA6R,IAAAla,GAAAu3B,KACAx8B,EAAAw8B,GAAArd,EAAAqd,IAIA,OADApC,EAAA7iC,KAAAyI,GACAzI,MASA2uB,EAAAuW,QAAA,WACA,GAAAllC,KAAA0yB,QACA,OAAA1yB,KAEA,IAAA8tB,EAAAwW,EAAAtkC,KAAA8tB,MACAA,EAAAG,WAAAlkB,YAAA+jB,GACA,IAAA9X,EAAAhW,KAAA+nB,MAEA,OADA/R,EAAAgS,KAAAhoB,MAAA+L,EAAAsc,SAAAroB,KAAAgW,GACAhW,MASA2uB,EAAAwW,OAAA,WACA,GAAAnlC,KAAA0yB,QACA,OAAA1yB,KAEA,IAAA8tB,EAAAwW,EAAAtkC,KAAA8tB,MACAG,EAAAH,EAAAG,WACAA,EAAAG,aAAAN,EAAAG,EAAAzY,YACAzJ,EAAAuc,QAAAtoB,UAAA+nB,OACA/nB,KAAA+nB,MACA,OAAA/nB,MASA2uB,EAAA+K,YAAA,SAAA3M,GACA,GAAA/sB,KAAA0yB,UAAA3F,EACA,OAAA/sB,KAGA,IAAA8tB,EAAAwW,EAAAtkC,KAAA8tB,MACAsX,EAAAd,EAAAvX,EAAAe,MAAAf,IAAApmB,OAAA,GAAAmnB,MAOA,OANAsX,EAAArX,YACAqX,EAAAnX,WAAAG,aAAAN,EAAAsX,EAAArX,aAEAqX,EAAAnX,WAAAlkB,YAAA+jB,GAEA/hB,EAAAwc,aAAAvoB,KAAA+sB,EAAA/sB,KAAA+nB,OACA/nB,MASA2uB,EAAAP,aAAA,SAAArB,GACA,GAAA/sB,KAAA0yB,UAAA3F,EACA,OAAA/sB,KAGA,IAAA8tB,EAAAwW,EAAAtkC,KAAA8tB,MACAuX,EAAAf,EAAAvX,EAAAe,MAAAf,EAAA,GAAAe,MAGA,OAFAuX,EAAApX,WAAAG,aAAAN,EAAAuX,GACAt5B,EAAA0c,cAAAzoB,KAAA+sB,EAAA/sB,KAAA+nB,OACA/nB,MAEA2uB,EAAA7d,KAAA,SAAAsqB,GAEA,IAAAlf,EAAAlc,KACA,OAAAo7B,EAAA,CACA,IAAAkK,EAAA1+B,EAAA,UACAkK,EAAAlK,EAAA,kBACAsV,EAAA1H,MAAA1D,KAAAsqB,EACAkK,EAAA1/B,GAAAmG,EAAAyL,aACA5Q,EAAAkK,GAAsBy0B,cAAAnK,GAAA,MACtBkK,EAAAv7B,YAAA+G,GACAoL,EAAA6L,MAAA0X,KAAA11B,YAAAu7B,GACAppB,EAAAspB,MAAAF,EACA1+B,EAAAsV,EAAA4R,MAAwB2X,OAAA,QAAAH,EAAA1/B,GAAA,WAExBsW,EAAAspB,QACAtpB,EAAAspB,MAAAvX,WAAA7S,YAAAc,EAAAspB,cACAtpB,EAAAspB,aACAtpB,EAAA1H,MAAA1D,MAEAoL,EAAA4R,KAAA4X,gBAAA,UAEA,OAAAxpB,GAEAnQ,EAAAM,QAAAe,OAAA,SAAA4I,EAAAlD,EAAAC,EAAAjB,GACA,IAAAyC,EAAA3N,EAAA,UACAoP,EAAAya,QAAAza,EAAAya,OAAA1mB,YAAAwK,GACA,IAAAsB,EAAA,IAAA0uB,EAAAhwB,EAAAyB,GAIA,OAHAH,EAAArB,OAAsBvD,GAAA6B,EAAA5B,GAAA6B,EAAAjB,IAAAX,KAAA,OAAAe,OAAA,QACtB2D,EAAAV,KAAA,SACAvO,EAAA2N,EAAAsB,EAAArB,OACAqB,GAEA9J,EAAAM,QAAAgB,KAAA,SAAA2I,EAAAlD,EAAAC,EAAAmB,EAAAC,EAAArC,GACA,IAAAyC,EAAA3N,EAAA,QACAoP,EAAAya,QAAAza,EAAAya,OAAA1mB,YAAAwK,GACA,IAAAsB,EAAA,IAAA0uB,EAAAhwB,EAAAyB,GAIA,OAHAH,EAAArB,OAAsB1B,IAAAC,IAAAF,MAAAqB,EAAAvC,OAAAwC,EAAApC,GAAAD,GAAA,EAAAE,GAAAF,GAAA,EAAAX,KAAA,OAAAe,OAAA,QACtB2D,EAAAV,KAAA,OACAvO,EAAA2N,EAAAsB,EAAArB,OACAqB,GAEA9J,EAAAM,QAAAkB,QAAA,SAAAyI,EAAAlD,EAAAC,EAAAhB,EAAAC,GACA,IAAAuC,EAAA3N,EAAA,WACAoP,EAAAya,QAAAza,EAAAya,OAAA1mB,YAAAwK,GACA,IAAAsB,EAAA,IAAA0uB,EAAAhwB,EAAAyB,GAIA,OAHAH,EAAArB,OAAsBvD,GAAA6B,EAAA5B,GAAA6B,EAAAhB,KAAAC,KAAAb,KAAA,OAAAe,OAAA,QACtB2D,EAAAV,KAAA,UACAvO,EAAA2N,EAAAsB,EAAArB,OACAqB,GAEA9J,EAAAM,QAAAmB,MAAA,SAAAwI,EAAA/D,EAAAa,EAAAC,EAAAmB,EAAAC,GACA,IAAAI,EAAA3N,EAAA,SACAA,EAAA2N,GAAgBzB,IAAAC,IAAAF,MAAAqB,EAAAvC,OAAAwC,EAAAwxB,oBAAA,SAChBpxB,EAAAqqB,eAAAR,EAAA,OAAAnsB,GACA+D,EAAAya,QAAAza,EAAAya,OAAA1mB,YAAAwK,GACA,IAAAsB,EAAA,IAAA0uB,EAAAhwB,EAAAyB,GAGA,OAFAH,EAAArB,OAAsB1B,IAAAC,IAAAF,MAAAqB,EAAAvC,OAAAwC,EAAAlC,OACtB4D,EAAAV,KAAA,QACAU,GAEA9J,EAAAM,QAAA9I,KAAA,SAAAyS,EAAAlD,EAAAC,EAAAxP,GACA,IAAAgR,EAAA3N,EAAA,QACAoP,EAAAya,QAAAza,EAAAya,OAAA1mB,YAAAwK,GACA,IAAAsB,EAAA,IAAA0uB,EAAAhwB,EAAAyB,GAaA,OAZAH,EAAArB,OACA1B,IACAC,IACAL,cAAA,SACAnP,OACA+N,cAAAvF,EAAA4E,gBAAA,eACAY,YAAAxF,EAAA4E,gBAAA,aACAuB,OAAA,OACAf,KAAA,QAEA0E,EAAAV,KAAA,OACA0tB,EAAAhtB,IAAArB,OACAqB,GAEA9J,EAAAM,QAAAqkB,QAAA,SAAA7d,EAAAlB,GAQA,OAPA3R,KAAA6S,SAAA7S,KAAA6S,MACA7S,KAAA2R,UAAA3R,KAAA2R,OACA3R,KAAAywB,OAAAoO,aAAA,QAAA7+B,KAAA6S,OACA7S,KAAAywB,OAAAoO,aAAA,SAAA7+B,KAAA2R,QACA3R,KAAA4lC,UACA5lC,KAAA2wB,WAAA3kB,MAAAhM,UAAA4lC,UAEA5lC,MAEA+L,EAAAM,QAAAC,OAAA,WACA,IAAAu5B,EAAA95B,EAAAue,cAAAte,MAAA,EAAAa,WACA0d,EAAAsb,KAAAtb,UACAzX,EAAA+yB,EAAA/yB,EACAC,EAAA8yB,EAAA9yB,EACAF,EAAAgzB,EAAAhzB,MACAlB,EAAAk0B,EAAAl0B,OACA,IAAA4Y,EACA,UAAAub,MAAA,4BAEA,IAEAC,EAFAC,EAAAp/B,EAAA,OACAq/B,EAAA,mBAiCA,OA/BAnzB,KAAA,EACAC,KAAA,EACAF,KAAA,IAEAjM,EAAAo/B,GACAr0B,OAFAA,KAAA,IAGA3E,QAAA,IACA6F,QACAqzB,MAAA,6BACAC,cAAA,iCAEA,GAAA5b,GACAyb,EAAAvwB,MAAAyF,QAAA+qB,EAAA,0BAA2DnzB,EAAA,UAAiBC,EAAA,KAC5EhH,EAAAmJ,GAAAtH,IAAAyK,KAAAtO,YAAAi8B,GACAD,EAAA,IAEAC,EAAAvwB,MAAAyF,QAAA+qB,EAAA,oBACA1b,EAAA/U,WACA+U,EAAA6D,aAAA4X,EAAAzb,EAAA/U,YAEA+U,EAAAxgB,YAAAi8B,KAGAzb,EAAA,IAAAxe,EAAAmK,QACArD,QACA0X,EAAA5Y,SACA4Y,EAAAkG,OAAAuV,EACAzb,EAAA2O,QACA3O,EAAA6b,MAAA7b,EAAA8b,KAAA,EACAN,IAAAxb,EAAA+b,UAAA,cACA/b,EAAA+b,YACA/b,GAEAxe,EAAAM,QAAAskB,WAAA,SAAA7d,EAAAC,EAAAmB,EAAAC,EAAAyc,GACA3kB,EAAA,qBAAAjM,UAAA4lC,UAAA9yB,EAAAC,EAAAmB,EAAAC,EAAAyc,IACA,IAIA2V,EACA/B,EALAgC,EAAAxmC,KAAAwwB,UACA4K,EAAAjsB,EAAA+E,EAAAsyB,EAAA3zB,MAAAsB,EAAAqyB,EAAA70B,QACAqW,EAAAhoB,KAAAgoB,IACAye,EAAA7V,EAAA,2BAiBA,IAdA,MAAA9d,GACA9S,KAAA0mC,UACAtL,EAAA,UAEAp7B,KAAA0mC,QACAH,EAAA,OAAAvmC,KAAA6S,MAAAtE,EAAAvO,KAAA2R,SAEA3R,KAAA0mC,QAAAtL,EACAmL,EAAAzzB,EAAAvE,EAAAwE,EAAAxE,EAAA2F,EAAA3F,EAAA4F,GAEAvN,EAAA5G,KAAAywB,QACAkW,QAAAJ,EACAZ,oBAAAc,IAEArL,GAAApT,GACAwc,EAAA,iBAAAxc,EAAAxT,MAAAwT,EAAAxT,MAAA,kBACAwT,EAAA1kB,MAAuBkP,eAAAgyB,IACvBxc,EAAAU,EAAAiK,MAAA,EACA3K,EAAAU,EAAAmB,OAAA,EACA7B,IAAAC,KAGA,OADAjoB,KAAA4lC,UAAA9yB,EAAAC,EAAAmB,EAAAC,IAAAyc,GACA5wB,MAYA+L,EAAAa,UAAA05B,UAAA,WACA,IAEAtZ,EAFAgZ,EAAAhmC,KAAAywB,OACAzX,EAAAgtB,EAAAvwB,MAEA,IACAuX,EAAAgZ,EAAAY,gBAAAZ,EAAAa,kBACU,MAAAhlC,GACVmrB,EAAAgZ,EAAAa,kBAEA,IAAApV,GAAAzE,EAAAnrB,EAAA,EACAmmB,GAAAgF,EAAAlgB,EAAA,GACA2kB,GAAAzJ,KACAyJ,IACAzxB,KAAAomC,OAAApmC,KAAAomC,MAAA3U,GAAA,EACAzY,EAAAyY,KAAAzxB,KAAAomC,MAAA,MAEApe,IACAhoB,KAAAqmC,MAAArmC,KAAAqmC,KAAAre,GAAA,EACAhP,EAAAgP,IAAAhoB,KAAAqmC,KAAA,QAUAt6B,EAAAa,UAAAssB,MAAA,WACAntB,EAAAE,IAAA,gBAAAjM,MAEA,IADA,IAAA0L,EAAA1L,KAAAywB,OACA/kB,EAAA8J,YACA9J,EAAA0P,YAAA1P,EAAA8J,YAEAxV,KAAAkoB,OAAAloB,KAAAgoB,IAAA,MACAhoB,KAAA8mC,KAAAlgC,EAAA,SAAAmD,YAAAgC,EAAAmJ,GAAAtH,IAAAs1B,eAAA,wBAAAn3B,EAAAiB,UACAtB,EAAA3B,YAAA/J,KAAA8mC,MACAp7B,EAAA3B,YAAA/J,KAAAy/B,KAAA74B,EAAA,UAQAmF,EAAAa,UAAAnF,OAAA,WAGA,QAAAtD,KAFA8H,EAAA,iBAAAjM,MACAA,KAAAywB,OAAAxC,YAAAjuB,KAAAywB,OAAAxC,WAAA7S,YAAApb,KAAAywB,QACAzwB,KACAA,KAAAmE,GAAA,mBAAAnE,KAAAmE,GAAA4H,EAAAgX,gBAAA5e,GAAA,MAGA,IAAA60B,EAAAjtB,EAAAuwB,GACA,QAAArD,KAAAtK,IAAAjhB,GAAAurB,KAAAD,EAAAtrB,GAAAurB,KACAD,EAAAC,GAAA,SAAAjW,GACA,kBACA,IAAAnJ,EAAAhN,UACA,OAAA7M,KAAAkyB,QAAA,SAAA3d,GACAA,EAAAyO,GAAAhX,MAAAuI,EAAAsF,MAJA,CAOUof,MAERjtB,MAAAV,EAAAM,MAAAL,EAAAD,QAAAO,IAKF,SAAAN,EAAAD,EAAArF,GAEA,IAAA2F,EAAAC,EAAiED,GAAA3F,EAAA,SAs+B/D6F,KAt+B+DD,EAAA,SAAAE,GACjE,IAAAA,KAAAkK,IAAA,CAIA,IAAAvI,EAAA,iBACAc,EAAAC,OACA2B,EAAAC,WACApB,EAAAC,KACAiB,EAAAlB,EAAAkB,MACAhB,EAAAF,EAAAG,IACAC,EAAAJ,EAAAK,IACAC,EAAAN,EAAAM,IAEArC,EAAA,QACAjB,EAAAF,EAAAE,IAEAsC,EAAA,IACAD,EAAA,GACAy4B,GAAgBjsB,EAAA,IAAAD,EAAA,IAAAF,EAAA,IAAAqsB,EAAA,IAAAv7B,EAAA,IAAAyN,EAAA,IAAAxN,EAAA,IAAA+P,EAAA,KAChBwrB,EAAA,yBACAC,EAAA,6BACApkC,EAAA,cACAqkC,EAAA,iFACAC,EAAA,MACAC,GAAsB/5B,KAAA,EAAAD,KAAA,EAAAG,MAAA,GACtB85B,GAAsBl6B,OAAA,EAAAG,QAAA,GAmCtBg6B,EAAA,SAAAvwB,EAAAgS,EAAAC,GACA,IAAAxd,EAAAM,EAAA6I,SAEA,OADAnJ,EAAAiZ,QAAA1N,EAAA,QAEAgS,GAAAvd,EAAAqH,EAAAkW,EAAAC,GACAA,GAAAxd,EAAAsH,EAAAiW,EAAAC,KAGAue,EAAA,SAAA77B,EAAAwd,EAAAC,EAAAJ,EAAAC,EAAAjS,GACA,IAAA0R,EAAA/c,EAAA+c,EACAjd,EAAAE,EAAAiJ,OACA6yB,EAAA/e,EAAA+e,QACApxB,EAAA1K,EAAAmiB,KACA9U,EAAA3C,EAAAZ,MACA1C,EAAA,EACA20B,EAAA,GAEAC,EAAAP,EAAAje,EACAye,EAAAR,EAAAhe,EAEA,GADApQ,EAAA+pB,WAAA,SACA5Z,GAAAC,EAAA,CAKA,GAFA/S,EAAAwxB,UAAAt4B,EAAAo4B,GAAAp5B,EAAAgB,EAAAq4B,GACA5uB,EAAA8uB,SAAA9wB,GAAAmS,EAAAC,EAAA,QACApS,EAAA,CACA,IAAAtL,EAAA67B,EAAAvwB,EAAAgS,EAAAC,GACAD,EAAAtd,EAAAsd,GACAC,EAAAvd,EAAAud,GAMA,GAJAE,EAAA,IAAAue,GAAA,KACAte,EAAA,IAAAse,GAAA,QAAA30B,GAAA,GACAiG,EAAA0uB,OACArxB,EAAA0xB,YAAA/e,GAAA2e,EAAAp5B,EAAA0a,GAAA2e,EACAH,GAAA/e,EAAAsf,SAAA,CACA,IAAA72B,EAAAkF,EAAAgrB,qBAnFA,QAoFAlwB,OAAA,GACAkF,EAAA+E,YAAAjK,GACAs2B,IACA/7B,EAAA67B,EAAAvwB,EAAAvL,EAAAqH,EAAA20B,EAAA,GAAAA,EAAA,IAAAh8B,EAAAsH,EAAA00B,EAAA,GAAAA,EAAA,KACAt2B,EAAA82B,SAAAv8B,EAAAsd,GAAAjW,EAAAxE,EAAA7C,EAAAud,GAAAlW,GAEA2V,EAAAsf,WACA72B,EAAAiqB,KAAA1S,EAAAsf,SAAA,GAAAz4B,EAAA4Z,GAAA5a,EAAAma,EAAAsf,SAAA,GAAAz4B,EAAA6Z,IAEA/S,EAAAtM,YAAAoH,GAEA6H,EAAA+pB,WAAA,YAEAh3B,EAAA4D,SAAA,WACA,yFAAA3P,KAAAgN,SAEA,IAwxBAk7B,EAxxBA1H,EAAA,SAAAnqB,EAAAc,EAAAspB,GAOA,IANA,IAAAvpB,EAAA1I,EAAA2I,GAAAnI,cAAAjL,MAAA,KACA48B,EAAAF,EAAA,cACAt8B,EAAA+S,EAAAvQ,OACAwO,EAAA,UACAjB,EAAA,SACAC,EAAA,SACAhQ,KACA,OAAA+S,EAAA/S,IACA,YACA,cACA,WACA,cACA,WACA,WACAgR,EAAA+B,EAAA/S,GACA,MACA,WACA,aAAAgQ,EAAA+C,EAAA/S,GAA8C,MAC9C,WACA,YAAA+P,EAAAgD,EAAA/S,GAGA,IAAA+N,EAAAmE,EAAAyX,KAAAuT,qBAAA,aACAnvB,EAAAyuB,EAAA,SAAAxrB,EACAjD,EAAAyuB,EAAA,eAAAzsB,EACAhC,EAAAyuB,EAAA,cAAAxsB,GAEA0uB,EAAA,SAAAxsB,EAAA5N,GAEA4N,EAAA7B,MAAA6B,EAAA7B,UACA,IAAAsZ,EAAAzX,EAAAyX,KACAttB,EAAA6V,EAAA7B,MACAwE,EAAA8U,EAAArY,MAEA0yB,EAAAd,EAAAhxB,EAAAlB,QAAA1M,EAAAqK,GAAAtS,EAAAsS,GAAArK,EAAAsK,GAAAvS,EAAAuS,GAAAtK,EAAAoK,OAAArS,EAAAqS,OAAApK,EAAAkJ,QAAAnR,EAAAmR,QAAAlJ,EAAAwI,IAAAzQ,EAAAyQ,IAAAxI,EAAAyI,IAAA1Q,EAAA0Q,IAAAzI,EAAAsJ,IAAAvR,EAAAuR,IAAAtJ,EAAAuJ,IAAAxR,EAAAwR,IAAAvJ,EAAAqJ,GAAAtR,EAAAsR,GACAs2B,EAAAd,EAAAjxB,EAAAlB,QAAA3U,EAAAyQ,IAAAxI,EAAAwI,IAAAzQ,EAAA0Q,IAAAzI,EAAAyI,IAAA1Q,EAAAsR,GAAArJ,EAAAqJ,GAAAtR,EAAAuR,IAAAtJ,EAAAsJ,IAAAvR,EAAAwR,IAAAvJ,EAAAuJ,IACA6D,EAAAQ,EAGA,QAAAuR,KAAAnf,IAAAiF,GAAAka,KACApnB,EAAAonB,GAAAnf,EAAAmf,IAqBA,GAnBAugB,IACA3nC,EAAA8M,KAAAvB,EAAAuI,SAAA+B,EAAAlB,MAAAkB,GACAA,EAAAqS,EAAAiK,MAAA,GAEAlqB,EAAAN,OAAA2lB,EAAA3lB,KAAAM,EAAAN,MACAM,EAAAkK,QAAAmb,EAAAnb,MAAAlK,EAAAkK,OACAlK,EAAAgK,SAAAqb,EAAArb,OAAAhK,EAAAgK,QACAhK,EAAAuI,SAAAgI,EAAAhI,OAAAvI,EAAAuI,QACA,SAAAvI,GAAA4N,EAAAvF,KAAArI,EAAAqI,OACArI,EAAA6E,MAAA,QAAA+I,EAAAlB,MAAAgzB,KACAra,EAAAxgB,KA3IA,SAAAA,GACA,IAAA+6B,EAAA,aACA9e,EAAAxd,EAAAiY,gBAGA,GAFAxV,EAAAlB,GAAA6O,MAAAksB,KAAA9e,EAAAxd,EAAA0U,aACA4nB,EAAA,UACA9e,GAAAxd,EAAAiY,kBAAAxV,EAAAlB,GAAA6O,MAAAksB,GAAA,CACA,IAAAxyB,EAAArH,EAAAlB,GAAAoK,QAAAuvB,EAAA,SAAAjL,EAAAzS,EAAA7c,GACA,IAAA47B,KACAC,EAAA,KAAAhf,EAAAva,cACA6G,EAAAkxB,EAAAxd,GAQA,OAPA7c,EAAAgL,QAAA5U,EAAA,SAAAqU,GACAoxB,GAAA,GAAAD,EAAA3hC,SACAkP,GAAAyyB,EAAAvB,EAAA,KAAAxd,EAAA,SACA+e,MAEAA,EAAA1nC,KAAAuP,EAAAgH,EAAAiwB,MAEAvxB,EAAAyyB,IAEA,OAAAzyB,EAEA,IAAAlK,EAAAmG,EAAA+R,EAAA0F,EAAAjc,GACAuI,KACA,QAAA1R,EAAA,EAAA2Q,EAAA+O,EAAAld,OAA4CxC,EAAA2Q,EAAQ3Q,IAAA,CACpDwH,EAAAkY,EAAA1f,GAEA,MADA2N,EAAA+R,EAAA1f,GAAA,GAAA6K,iBACA8C,EAAA,KACA,QAAA+C,EAAA,EAAAE,EAAApJ,EAAAhF,OAA+CkO,EAAAE,EAAQF,IACvD/C,GAAA3B,EAAAxE,EAAAkJ,GAAAuyB,IAAAvyB,GAAAE,EAAA,MAAAzG,GAEAuH,EAAAjV,KAAAkR,GAEA,OAAA+D,EAAAvT,KAAAiM,GA2GAi6B,EAAAh6B,EAAAhO,EAAA8M,MAAA0B,cAAArE,QAAA,KAAAoB,EAAAiY,gBAAAxjB,EAAA8M,MAAA9M,EAAA8M,MACA+I,EAAAqS,EAAAiK,MAAA,EACA,SAAAtc,EAAAlB,OACAkB,EAAAqS,EAAA+e,SAAAjnC,EAAAsS,EAAAtS,EAAAuS,GACAsD,EAAAqS,EAAAsf,UAAAxnC,EAAAqS,MAAArS,EAAAmR,QACA61B,EAAAnxB,EAAA,aAGA,cAAA5N,GAAA4N,EAAAzD,UAAAnK,EAAAmK,WACAw1B,EAAA,CACA,IAAAn3B,GAAAzQ,EAAAyQ,GACAC,GAAA1Q,EAAA0Q,GACAa,GAAAvR,EAAAuR,KAAAvR,EAAAsR,GAAA,EACAE,GAAAxR,EAAAwR,KAAAxR,EAAAsR,GAAA,EACAgc,EAAAxgB,KAAAvB,EAAAokB,OAAA,qCAAoEhgB,GAAAc,EAAAc,GAAAq1B,GAAAj3B,GAAAe,EAAAc,GAAAo1B,GAAAj3B,GAAAc,EAAAc,GAAAq1B,GAAAj3B,GAAAe,EAAAc,GAAAo1B,GAAAj3B,EAAAc,EAAAm2B,IACpE/wB,EAAAqS,EAAAiK,MAAA,EAEA,iBAAAlqB,EAAA,CACA,IAAA4E,EAAAmB,EAAA/F,EAAA,cAAA1E,MAAAmJ,GACA,MAAAG,EAAA1G,OAAA,CACA0G,EAAA,IAAAA,EAAA,KAAAA,EAAA,GACAA,EAAA,IAAAA,EAAA,KAAAA,EAAA,GACA,IAAAo7B,EAAA3a,EAAA4a,UAAA38B,EAAAmJ,GAAAtH,IAAA3F,cAAA,OACA0gC,EAAAF,EAAAhzB,MACAkzB,EAAAtF,KAAAt3B,EAAAokB,OAAA,gCAAmE9iB,GACnEygB,EAAA4a,WACAC,EAAAV,SAAA,WACAU,EAAA3gB,IAAA,EACA2gB,EAAAlX,KAAA,EACAkX,EAAA91B,MAAAwD,EAAA0R,MAAAlV,MAAA,KACA81B,EAAAh3B,OAAA0E,EAAA0R,MAAApW,OAAA,KACAmc,EAAAG,WAAAG,aAAAqa,EAAA3a,GACA2a,EAAA1+B,YAAA+jB,GACAA,EAAA4a,SAAAD,GAGAhgC,EAAA,cACAqlB,EAAA4a,WAAA5a,EAAA4a,SAAAjzB,MAAA4tB,KAAA,QAGA,GAAAhtB,EAAAuyB,SAAA,CACA,IAAAC,EAAAxyB,EAAAuyB,SAAAnzB,MACAhN,EAAA4I,OAAAw3B,EAAAx3B,KAAA5I,EAAA4I,MACA5I,EAAA,iBAAAogC,EAAAC,WAAA,IAAArgC,EAAA,eAAA1E,MAAA,QAAA2T,QAAA,iBAAApJ,GAAA,KACA7F,EAAA,eAAAogC,EAAA5E,SAAAx7B,EAAA,cACAA,EAAA,iBAAAogC,EAAAE,WAAAtgC,EAAA,gBACAA,EAAA,gBAAAogC,EAAAG,UAAAvgC,EAAA,eAQA,GANA,gBAAAA,GACA+3B,EAAA3qB,EAAApN,EAAA,gBAEA,cAAAA,GACA+3B,EAAA3qB,EAAApN,EAAA,gBAEA,MAAAA,EAAAoJ,SACA,MAAApJ,EAAA0I,MACA,MAAA1I,EAAAwJ,KACA,MAAAxJ,EAAAyJ,QACA,MAAAzJ,EAAA,iBACA,MAAAA,EAAA,mBACA,MAAAA,EAAA,iBACA,MAAAA,EAAA,qBACA,MAAAA,EAAA,sBACA,MAAAA,EAAA,oBACA,MAAAA,EAAA,mBACA,IAAA0I,EAAA2c,EAAAuT,qBA1NA,QAqOA,KATAlwB,OAAA,MACAA,EAAA+2B,EA7NA,SA8NA,SAAA7xB,EAAAlB,MAAA1M,EAAAwJ,MACAd,EAAAc,IAAAxJ,EAAAwJ,KAEAxJ,EAAA0I,SAAAvP,IAAA,GACA,MAAAuP,EAAAvP,IAAA,QAAA6G,EAAA0I,MAAA,OAAA1I,EAAA0I,OACAA,EAAAvP,IAAA,GAEAuP,EAAAvP,IAAA6G,EAAA0I,KAAA,CACA,IAAAwyB,EAAAn1B,EAAA/F,EAAA0I,MAAAgL,MAAApQ,EAAA8D,QACA,GAAA8zB,EAAA,CACAxyB,EAAA8c,YAAAH,KAAA1S,YAAAjK,GACAA,EAAAuT,QAAA,EACAvT,EAAAc,IAAA0xB,EAAA,GACAxyB,EAAAgE,KAAA,OACA,IAAAV,EAAA4B,EAAAsS,QAAA,GACAxX,EAAA82B,SAAAxzB,EAAA3B,EAAAvE,EAAAkG,EAAA1B,EACAsD,EAAAqS,EAAA+e,SAAAhzB,EAAA3B,EAAA2B,EAAA1B,GAEAhH,EAAAiP,SAAA2oB,EAAA,cACAttB,EAAAqS,EAAAsf,UAAAhoC,KAAA2qB,YAAA3qB,KAAA6qB,qBAGA1Z,EAAA4G,MAAAhM,EAAAwN,OAAA9Q,EAAA0I,MAAAiI,IACAjI,EAAAc,IAAA3D,EACA6C,EAAAgE,KAAA,QACApJ,EAAAwN,OAAA9Q,EAAA0I,MAAAyK,QAAA/F,EAAAV,QAAsE/H,OAAA,EAAAG,QAAA,IAAsB,KAAAiB,EAAA/F,EAAA0I,MAAA2K,WAAAkjB,EAAAnpB,EAAApN,EAAA0I,UAC5F3Q,EAAA2Q,KAAA,OACA3Q,EAAAkR,SAAAjJ,EAAA0I,KACAA,EAAAuT,QAAA,GAIA,oBAAAjc,GAAA,YAAAA,EAAA,CACA,IAAAoJ,KAAArR,EAAA,4BAAAA,EAAAqR,QAAA,YAAA9F,EAAAwN,OAAA9Q,EAAA0I,MAAAkF,EAAA,SACAxE,EAAAxC,EAAAF,EAAA0C,EAAA,MACAV,EAAAU,UACAV,EAAAc,MACAd,EAAA4G,MAAA,QAGA+V,EAAA/jB,YAAAoH,GACA,IAAAe,EAAA4b,EAAAuT,qBAAA,WAAAvT,EAAAuT,qBAAA,aACA4H,GAAA,GACA/2B,IAAA+2B,EAAA/2B,EAAAg2B,EAAA,YACAz/B,EAAAyJ,QAAA,QAAAzJ,EAAAyJ,QACAzJ,EAAA,iBACA,MAAAA,EAAA,mBACAA,EAAA,qBACAA,EAAA,sBACAA,EAAA,oBACAA,EAAA,qBACAyJ,EAAAtQ,IAAA,IAEA,QAAA6G,EAAAyJ,QAAA,OAAAzJ,EAAAyJ,QAAA,MAAAA,EAAAtQ,IAAA,GAAA6G,EAAAyJ,QAAA,GAAAzJ,EAAA,mBAAAyJ,EAAAtQ,IAAA,GACA,IAAAsnC,EAAAn9B,EAAAwN,OAAA9Q,EAAAyJ,QACAA,EAAAtQ,IAAA6G,EAAAyJ,WAAA6F,MAAAmxB,EAAA9vB,KACAvH,KAAArR,EAAA,8BAAAA,EAAAqR,QAAA,YAAAq3B,EAAA7yB,EAAA,SACA,IAAAxD,EAAA,KAAAzC,EAAA3H,EAAA,qBAUA,GATAoJ,EAAAxC,EAAAF,EAAA0C,EAAA,MACA,MAAApJ,EAAA,kBAAAoK,EAAArS,EAAA,iBACAiI,EAAA,kBAAAyJ,EAAAsoB,OAAA3nB,GACAA,KAAA,IAAAhB,GAAAgB,KAAAX,EAAAsoB,OAAA,GACAtoB,EAAAL,UAEApJ,EAAA,qBAAAyJ,EAAAi3B,UAAA1gC,EAAA,6BACAyJ,EAAAk3B,WAAA3gC,EAAA,wBACAA,EAAA,oBAAAyJ,EAAAm3B,OAAA,QAAA5gC,EAAA,mCAAAA,EAAA,oCACA,qBAAAA,EAAA,CACA,IAAAq5B,GACAC,IAAA,YACAC,IAAA,WACAC,KAAA,eACAC,MAAA,kBACAC,KAAA,MACAC,KAAA,OACAC,KAAA,WACAC,MAAA,UACAC,MAAA,cACAC,OAAA,kBAEAtwB,EAAAo3B,UAAAxH,EAAAp0B,GAAAjF,EAAA,qBAAAq5B,EAAAr5B,EAAA,qBAAA6F,EAEA26B,GAAAnb,EAAA/jB,YAAAmI,GAEA,WAAA2D,EAAAV,KAAA,CACAU,EAAAkS,MAAA0I,OAAAhb,MAAAkD,QAAArK,EACA,IAAAi7B,EAAA1zB,EAAAkS,MAAAwhB,KAEAtF,EAAAzjC,EAAA6Q,MAAA7Q,EAAA6Q,KAAA8K,MAAA,uBACAnD,EAAAuwB,EAAA9zB,MACAjV,EAAA6Q,OAAA2H,EAAA3H,KAAA7Q,EAAA6Q,MACA7Q,EAAA,iBAAAwY,EAAA8vB,WAAAtoC,EAAA,gBACAA,EAAA,iBAAAwY,EAAA+vB,WAAAvoC,EAAA,gBACAA,EAAA,gBAAAwY,EAAAgwB,UAAAxoC,EAAA,eACAyjC,EAAA7zB,EAAA5P,EAAA,cAAAyjC,KAAA,QACAjrB,EAAAirB,SARA,IAQAA,EAAA,KACApuB,EAAA+yB,SAAAzN,SAAAoO,EAAAh0B,UAAA/G,EAAAqH,EAAA+yB,SAAAzN,QAAAzjB,QAAA,cAAmGA,QAAA,cAAuBA,QAAA,eAC1H,IAAA8xB,EAAAD,EAAAjY,wBACAzb,EAAA4zB,EAAAjpC,EAAA0T,GAAAs1B,EAAAE,MAAAF,EAAA/X,MAXA,IAYA5b,EAAA8zB,EAAAnpC,EAAA2T,GAAAq1B,EAAAthB,OAAAshB,EAAAxhB,KAZA,IAcAnS,EAAA6E,EAAAla,EAAAsS,EACA+C,EAAAqN,EAAA1iB,EAAAuS,EAAA8C,EAAA8zB,EAAA,GAEA,MAAAlhC,GAAA,MAAAA,KAAAoN,EAAAvI,KAAAiN,EAAAxO,EAAAokB,OAAA,mBAAyFhgB,EAAA3P,EAAAsS,EAAAs0B,GAAAj3B,EAAA3P,EAAAuS,EAAAq0B,GAAAj3B,EAAA3P,EAAAsS,EAAAs0B,GAAA,IAEzF,IADA,IAAAwC,GAAA,4EACA1jC,EAAA,EAAA2jC,EAAAD,EAAAjjC,OAAoDT,EAAA2jC,EAAQ3jC,IAAA,GAAA0jC,EAAA1jC,KAAAuC,EAAA,CAC5DoN,EAAA6S,EAAAiK,MAAA,EACA,MAIA,OAAAnyB,EAAA,gBACA,YACAqV,EAAA+yB,SAAAnzB,MAAA,uBACAI,EAAAi0B,IAAAj0B,EAAA4zB,EAAA,EACA,MACA,UACA5zB,EAAA+yB,SAAAnzB,MAAA,wBACAI,EAAAi0B,KAAAj0B,EAAA4zB,EAAA,EACA,MACA,QACA5zB,EAAA+yB,SAAAnzB,MAAA,yBACAI,EAAAi0B,IAAA,EAGAj0B,EAAA+yB,SAAAnzB,MAAA,oBAIAupB,EAAA,SAAA3oB,EAAA3E,EAAAP,GACAkF,EAAA7B,MAAA6B,EAAA7B,UACA6B,EAAA7B,MAAA,IACAhF,EAAAN,KAAAM,IAGA2F,EAAA,SACA40B,EAAA,QAaA,GAZA1zB,EAAA7B,MAAA9C,WAWAA,GAVAA,EAAAlD,EAAAkD,GAAAgG,QAAA3L,EAAA6H,iBAAA,SAAAooB,EAAAiD,EAAAC,GAQA,OAPA/pB,EAAA,SACA8pB,GAAAC,IACAD,EAAA7uB,EAAA6uB,GACAC,EAAA9uB,EAAA8uB,GACA1vB,EAAAyvB,EAAA,MAAAzvB,EAAA0vB,EAAA,YAAAA,EAAAjwB,EAAAqP,KAAA,IAAA9O,EAAAyvB,EAAA,WAAAC,EAAA,WACA6K,EAAA9K,EAAA1wB,EAAA2wB,GAEA5wB,KAEAvK,MAAA,YACA,UAAAoR,EAAA,CACA,IAAAoB,EAAA7E,EAAAwI,QAEA,GADA3D,GAAAnG,EAAAmG,GACAgpB,MAAAhpB,GACA,YAGA,IAAA2N,EAAAnY,EAAA4b,WAAAjW,GACA,IAAAwS,EACA,YAGA,GADA7N,IAAAyY,OAAAzY,EAAAyX,KACA5J,EAAAvd,OAAA,CACA0P,EAAA+E,YAAAjK,GACAA,EAAAvP,IAAA,EACAuP,EAAA8nB,OAAA,OACA9nB,EAAA4G,MAAAmM,EAAA,GAAAnM,MACA5G,EAAA64B,OAAA9lB,IAAAvd,OAAA,GAAAoR,MAEA,IADA,IAAAkyB,KACA9lC,EAAA,EAAA2Q,EAAAoP,EAAAvd,OAA8CxC,EAAA2Q,EAAQ3Q,IACtD+f,EAAA/f,GAAA0jB,QAAAoiB,EAAArpC,KAAAsjB,EAAA/f,GAAA0jB,OAAAtZ,EAAA2V,EAAA/f,GAAA4T,OAEA5G,EAAA+4B,OAAAD,EAAAtjC,OAAAsjC,EAAA3nC,OAAA,MAAA6O,EAAA4G,MACA,UAAA5C,GACAhE,EAAAgE,KAAA,gBACAhE,EAAAg5B,MAAA,OACAh5B,EAAAi5B,UAAA,MACAj5B,EAAAk5B,cAAAN,EACA54B,EAAAoF,MAAA,IAGApF,EAAAgE,KAAA,WACAhE,EAAAoF,OAAA,IAAAA,GAAA,KAEAF,EAAAtM,YAAAoH,GAEA,UAEAozB,EAAA,SAAAzW,EAAA7X,GACAjW,KAAA,GAAAA,KAAA8tB,OACAA,EAAA+C,SAAA,EACA7wB,KAAA4F,GAAAmG,EAAAu+B,OACAxc,EAAAkE,UAAAhyB,KAAA4F,GACA5F,KAAA0a,EAAA,EACA1a,KAAAkjB,EAAA,EACAljB,KAAAwU,SACAxU,KAAA+nB,MAAA9R,EACAjW,KAAA4U,OAAA7I,EAAA6I,SACA5U,KAAA0oB,GACA9V,aACAuW,GAAA,EACAC,GAAA,EACAJ,GAAA,EACAC,GAAA,EACAjS,IAAA,EACA2b,MAAA,EACA9I,OAAA,IAEA5T,EAAAiS,SAAAjS,EAAAiS,OAAAloB,MACAA,KAAAioB,KAAAhS,EAAA+R,IACA/R,EAAA+R,MAAA/R,EAAA+R,IAAAG,KAAAnoB,MACAiW,EAAA+R,IAAAhoB,KACAA,KAAAmoB,KAAA,MAEAwG,EAAA5iB,EAAAwI,GAEAgwB,EAAA33B,UAAA+hB,EACAA,EAAA7Y,YAAAyuB,EACA5V,EAAA/b,UAAA,SAAAmW,GACA,SAAAA,EACA,OAAA/oB,KAAA0oB,EAAA9V,UAEA,IAEA23B,EAFAC,EAAAxqC,KAAA+nB,MAAA0iB,cACAC,EAAAF,EAAA,KAAAA,EAAA5gB,MAAA4gB,EAAA5gB,OAAA,SAAA4gB,EAAAxhB,GAAAwhB,EAAAvhB,IAAA3a,EAEAk8B,IACAD,EAAAxhB,EAAAva,EAAAua,GAAArR,QAAA,gBAAmD1X,KAAA0oB,EAAA9V,WAAAtE,IAEnDvC,EAAA+c,kBAAA9oB,KAAA0qC,EAAA3hB,GACA,IAGAhlB,EAHA6Q,EAAA5U,KAAA4U,OAAAgB,QACA+0B,EAAA3qC,KAAA2qC,KACAt0B,EAAArW,KAAA8tB,KAEA8c,GAAAp8B,EAAAxO,KAAAwU,MAAArD,MAAAxG,QAAA,KACAkgC,GAAAr8B,EAAAxO,KAAAwU,MAAArD,MAAAxG,QAAA,QAEA,GADAiK,EAAA+U,UAAA,KACAkhB,GAAAD,GAAA,SAAA5qC,KAAAmV,KAIA,GAHAw1B,EAAA/1B,OAAA,UACA+1B,EAAA9iB,OAAA,MACA9jB,EAAA6Q,EAAA7Q,QACA6mC,GAAA7mC,EAAA8nB,aAAA9nB,EAAA4nB,SAAA,CACAtV,EAAAZ,MAAAgwB,OAAA7wB,EAAAyW,WACA,IAAA7H,EAAAxjB,KAAA2oB,UACAmiB,EAAA9qC,KAAA2oB,QAAA,GACAK,EAAAxF,EAAA1Q,EAAAg4B,EAAAh4B,EACAmW,EAAAzF,EAAAzQ,EAAA+3B,EAAA/3B,EACAsD,EAAA0xB,YAAA/e,GAAAoe,EAAA74B,EAAA0a,GAAAme,EACAI,EAAAxnC,KAAA,IAAAgpB,EAAAC,EAAA,QAEA5S,EAAAZ,MAAAgwB,OAAAn3B,EACAk5B,EAAAxnC,KAAA+D,EAAAwnB,OAAAxnB,EAAA0nB,OAAA1nB,EAAAilB,GAAAjlB,EAAAklB,GAAAllB,EAAA2gB,aAGArO,EAAAZ,MAAAgwB,OAAAn3B,EACAq8B,EAAA/1B,OAAApG,EAAAoG,GACA+1B,EAAA9iB,OAAAjT,EAAAiT,SAMA,OAJA,OAAA0iB,IACAvqC,KAAA0oB,EAAA9V,UAAA23B,EACAx+B,EAAA+c,kBAAA9oB,KAAAuqC,IAEAvqC,MAEA2uB,EAAAjK,OAAA,SAAA1N,EAAA/F,EAAAC,GACA,GAAAlR,KAAA0yB,QACA,OAAA1yB,KAEA,SAAAgX,EAAA,CAUA,IAPAA,EAAAxI,EAAAwI,GAAAjT,MAAAmJ,IACAvG,OAAA,IACAsK,EAAAb,EAAA4G,EAAA,IACA9F,EAAAd,EAAA4G,EAAA,KAEAA,EAAA5G,EAAA4G,EAAA,IACA,MAAA9F,IAAAD,EAAAC,GACA,MAAAD,GAAA,MAAAC,EAAA,CACA,IAAAuD,EAAAzU,KAAA2oB,QAAA,GACA1X,EAAAwD,EAAA3B,EAAA2B,EAAA5B,MAAA,EACA3B,EAAAuD,EAAA1B,EAAA0B,EAAA9C,OAAA,EAIA,OAFA3R,KAAA0oB,EAAAmB,OAAA,EACA7pB,KAAA4S,UAAA5S,KAAA0oB,EAAA9V,UAAAxN,SAAA,IAAA4R,EAAA/F,EAAAC,MACAlR,OAEA2uB,EAAAhF,UAAA,SAAAX,EAAAC,GACA,OAAAjpB,KAAA0yB,QACA1yB,OAEAgpB,EAAAxa,EAAAwa,GAAAjlB,MAAAmJ,IACAvG,OAAA,IACAsiB,EAAA7Y,EAAA4Y,EAAA,KAEAA,EAAA5Y,EAAA4Y,EAAA,OACAC,MAAA,EACAjpB,KAAA0oB,EAAAjU,OACAzU,KAAA0oB,EAAAjU,KAAA3B,GAAAkW,EACAhpB,KAAA0oB,EAAAjU,KAAA1B,GAAAkW,GAEAjpB,KAAA4S,UAAA5S,KAAA0oB,EAAA9V,UAAAxN,SAAA,IAAA4jB,EAAAC,MACAjpB,OAEA2uB,EAAA/E,MAAA,SAAAT,EAAAC,EAAAnY,EAAAC,GACA,GAAAlR,KAAA0yB,QACA,OAAA1yB,KAaA,IAXAmpB,EAAA3a,EAAA2a,GAAAplB,MAAAmJ,IACAvG,OAAA,IACAyiB,EAAAhZ,EAAA+Y,EAAA,IACAlY,EAAAb,EAAA+Y,EAAA,IACAjY,EAAAd,EAAA+Y,EAAA,IACAoW,MAAAtuB,OAAA,MACAsuB,MAAAruB,OAAA,OAEAiY,EAAA/Y,EAAA+Y,EAAA,IACA,MAAAC,MAAAD,GACA,MAAAjY,IAAAD,EAAAC,GACA,MAAAD,GAAA,MAAAC,EACA,IAAAuD,EAAAzU,KAAA2oB,QAAA,GAOA,OALA1X,EAAA,MAAAA,EAAAwD,EAAA3B,EAAA2B,EAAA5B,MAAA,EAAA5B,EACAC,EAAA,MAAAA,EAAAuD,EAAA1B,EAAA0B,EAAA9C,OAAA,EAAAT,EAEAlR,KAAA4S,UAAA5S,KAAA0oB,EAAA9V,UAAAxN,SAAA,IAAA+jB,EAAAC,EAAAnY,EAAAC,MACAlR,KAAA0oB,EAAAmB,OAAA,EACA7pB,MAEA2uB,EAAA8V,KAAA,WAEA,OADAzkC,KAAA0yB,UAAA1yB,KAAA8tB,KAAArY,MAAAkD,QAAA,QACA3Y,MAEA2uB,EAAA+V,KAAA,WAEA,OADA1kC,KAAA0yB,UAAA1yB,KAAA8tB,KAAArY,MAAAkD,QAAArK,GACAtO,MAGA2uB,EAAAoc,WAAAh/B,EAAAwI,GAAAoU,QACAgG,EAAAhG,QAAA,WACA,IAAA7U,EAAA9T,KAAA+qC,aACA,GAAA/qC,KAAA+nB,OAAA/nB,KAAA+nB,MAAA0iB,cACA,CACA,IAAA/+B,KACA+P,EAAA,EAAAzb,KAAA+nB,MAAA0iB,cAAA7gB,MASA,OARAle,EAAAoH,EAAAgB,EAAAhB,EAAA9S,KAAA+nB,MAAA0iB,cAAAzhB,GACAtd,EAAAoH,GAAA2I,EACA/P,EAAAqH,EAAAe,EAAAf,EAAA/S,KAAA+nB,MAAA0iB,cAAAxhB,GACAvd,EAAAqH,GAAA0I,EACA/P,EAAAmH,MAAAiB,EAAAjB,MAAA4I,EACA/P,EAAAiG,OAAAmC,EAAAnC,OAAA8J,EACA/P,EAAAgL,GAAAhL,EAAAoH,EAAApH,EAAAmH,MACAnH,EAAAiL,GAAAjL,EAAAqH,EAAArH,EAAAiG,OACAjG,EAEA,OAAAoI,GAEA6a,EAAAja,SAAA,WACA,OAAA1U,KAAA0yB,YAIA5f,EAAA9S,KAAA0a,GAAA1a,KAAA8pC,KAAA,GAAA9pC,KAAAypC,EAAA,EACA12B,EAAA/S,KAAAkjB,EAAAljB,KAAA2pC,EACA92B,MAAA7S,KAAAypC,EACA93B,OAAA3R,KAAA2pC,IAGAhb,EAAAlnB,OAAA,WACA,IAAAzH,KAAA0yB,SAAA1yB,KAAA8tB,KAAAG,WAAA,CAQA,QAAA9pB,KALAnE,KAAA+nB,MAAAmI,SAAAlwB,KAAA+nB,MAAAmI,QAAAsJ,QAAAx5B,MACA+L,EAAAE,IAAA4iB,OAAA,eAAA7uB,KAAA4F,IACAmG,EAAA+b,MAAA9nB,UAAA+nB,OACA/nB,KAAA8tB,KAAAG,WAAA7S,YAAApb,KAAA8tB,MACA9tB,KAAA8uB,OAAA9uB,KAAA8uB,MAAAb,WAAA7S,YAAApb,KAAA8uB,OACA9uB,KACAA,KAAAmE,GAAA,mBAAAnE,KAAAmE,GAAA4H,EAAAgX,gBAAA5e,GAAA,KAEAnE,KAAA0yB,SAAA,IAEA/D,EAAArrB,KAAA,SAAAL,EAAAkU,GACA,GAAAnX,KAAA0yB,QACA,OAAA1yB,KAEA,SAAAiD,EAAA,CACA,IAAA4S,KACA,QAAArV,KAAAR,KAAAwU,MAAAxU,KAAAwU,MAAA9G,GAAAlN,KACAqV,EAAArV,GAAAR,KAAAwU,MAAAhU,IAIA,OAFAqV,EAAAnE,UAAA,QAAAmE,EAAA1E,OAAA0E,EAAA1E,KAAA0E,EAAAnE,kBAAAmE,EAAAnE,SACAmE,EAAAjD,UAAA5S,KAAA0oB,EAAA9V,UACAiD,EAEA,SAAAsB,GAAApL,EAAAI,GAAAlJ,EAAA,WACA,GAzmBA,QAymBAA,GAAA,QAAAjD,KAAAwU,MAAArD,MAAAnR,KAAAwU,MAAA9C,SACA,OAAA1R,KAAAwU,MAAA9C,SAIA,IAFA,IAAA8rB,EAAAv6B,EAAAc,MAAAmJ,GACAge,KACA/mB,EAAA,EAAA2Q,EAAA0oB,EAAA72B,OAA+CxC,EAAA2Q,EAAQ3Q,KACvDlB,EAAAu6B,EAAAr5B,MACAnE,KAAAwU,MACA0W,EAAAjoB,GAAAjD,KAAAwU,MAAAvR,GACkB8I,EAAAI,GAAAnM,KAAA+nB,MAAA5Z,iBAAAlL,GAAA,YAClBioB,EAAAjoB,GAAAjD,KAAA+nB,MAAA5Z,iBAAAlL,GAAA+hC,IAEA9Z,EAAAjoB,GAAA8I,EAAA4E,gBAAA1N,GAGA,OAAA6R,EAAA,EAAAoW,IAAAsS,EAAA,IAEA,GAAAx9B,KAAAwU,OAAA,MAAA2C,GAAApL,EAAAI,GAAAlJ,EAAA,UAEA,IADAioB,KACA/mB,EAAA,EAAA2Q,EAAA7R,EAAA0D,OAA0CxC,EAAA2Q,EAAQ3Q,IAClD+mB,EAAAjoB,EAAAkB,IAAAnE,KAAAsD,KAAAL,EAAAkB,IAEA,OAAA+mB,EAEA,IAAAziB,EAMA,QAAAsN,KALA,MAAAoB,KACA1O,MACAxF,GAAAkU,GAEA,MAAAA,GAAApL,EAAAI,GAAAlJ,EAAA,YAAAwF,EAAAxF,GACAwF,EACAwD,EAAA,gBAAA8J,EAAA,IAAA/V,KAAA4F,GAAA5F,KAAAyI,EAAAsN,IAEA,GAAAtN,EAAA,CACA,IAAAsN,KAAA/V,KAAA+nB,MAAA5Z,iBAAA,GAAAnO,KAAA+nB,MAAA5Z,iBAAAT,GAAAqI,IAAAtN,EAAAiF,GAAAqI,IAAAhK,EAAAI,GAAAnM,KAAA+nB,MAAA5Z,iBAAA4H,GAAA,aACA,IAAA6R,EAAA5nB,KAAA+nB,MAAA5Z,iBAAA4H,GAAA/J,MAAAhM,QAAAoF,OAAAqD,EAAAsN,KAEA,QAAAkvB,KADAjlC,KAAAwU,MAAAuB,GAAAtN,EAAAsN,GACA6R,IAAAla,GAAAu3B,KACAx8B,EAAAw8B,GAAArd,EAAAqd,IAIAx8B,EAAAlF,MAAA,QAAAvD,KAAAmV,OACAnV,KAAA4oC,SAAAzN,OAAA1yB,EAAAlF,MAEAs/B,EAAA7iC,KAAAyI,GAGA,OAAAzI,MAEA2uB,EAAAuW,QAAA,WAGA,OAFAllC,KAAA0yB,SAAA1yB,KAAA8tB,KAAAG,WAAAlkB,YAAA/J,KAAA8tB,MACA9tB,KAAA+nB,OAAA/nB,KAAA+nB,MAAAC,KAAAhoB,MAAA+L,EAAAsc,SAAAroB,UAAA+nB,OACA/nB,MAEA2uB,EAAAwW,OAAA,WACA,OAAAnlC,KAAA0yB,QACA1yB,MAEAA,KAAA8tB,KAAAG,WAAAzY,YAAAxV,KAAA8tB,OACA9tB,KAAA8tB,KAAAG,WAAAG,aAAApuB,KAAA8tB,KAAA9tB,KAAA8tB,KAAAG,WAAAzY,YACAzJ,EAAAuc,QAAAtoB,UAAA+nB,QAEA/nB,OAEA2uB,EAAA+K,YAAA,SAAA3M,GACA,OAAA/sB,KAAA0yB,QACA1yB,MAEA+sB,EAAAjX,aAAA/J,EAAAuwB,GAAAxmB,cACAiX,MAAApmB,OAAA,IAEAomB,EAAAe,KAAAC,YACAhB,EAAAe,KAAAG,WAAAG,aAAApuB,KAAA8tB,KAAAf,EAAAe,KAAAC,aAEAhB,EAAAe,KAAAG,WAAAlkB,YAAA/J,KAAA8tB,MAEA/hB,EAAAwc,aAAAvoB,KAAA+sB,EAAA/sB,KAAA+nB,OACA/nB,OAEA2uB,EAAAP,aAAA,SAAArB,GACA,OAAA/sB,KAAA0yB,QACA1yB,MAEA+sB,EAAAjX,aAAA/J,EAAAuwB,GAAAxmB,cACAiX,IAAA,IAEAA,EAAAe,KAAAG,WAAAG,aAAApuB,KAAA8tB,KAAAf,EAAAe,MACA/hB,EAAA0c,cAAAzoB,KAAA+sB,EAAA/sB,KAAA+nB,OACA/nB,OAEA2uB,EAAA7d,KAAA,SAAAsqB,GACA,IAAApiB,EAAAhZ,KAAA8tB,KAAAkd,aACAl+B,EAAAkM,EAAAysB,OAWA,OAVA34B,IAAA4K,QAAAwvB,EAAA54B,GACA,IAAA8sB,GACAp7B,KAAAwU,MAAA1D,KAAAsqB,EACApiB,EAAAysB,OAAA34B,EAAAyB,EAvsBA,yDAusBA6sB,GAAA,SACApiB,EAAAiyB,OAAAl/B,EAAAokB,OAAA,oBAAiDhgB,GAAAirB,GAAA,QAEjDpiB,EAAAysB,OAAA34B,EACAkM,EAAAiyB,OAAA,SACAjrC,KAAAwU,MAAA1D,MAEA9Q,MAGA+L,EAAAM,QAAAiB,KAAA,SAAAoP,EAAAzG,GACA,IAAA1B,EAAA2zB,EAAA,SACA3zB,EAAAkB,MAAAyF,QAAAisB,EACA5yB,EAAAszB,UAAAT,EAAA74B,EAAA64B,EACA7yB,EAAAwzB,YAAA9xB,EAAA8xB,YACA,IAAAp8B,EAAA,IAAA44B,EAAAhwB,EAAA0B,GACA3S,GAAqB6N,KAAA,OAAAe,OAAA,QACrBwK,IAAApZ,EAAAgK,KAAAoP,GACA/Q,EAAAwJ,KAAA,OACAxJ,EAAA2B,QACA3B,EAAAu/B,KAAA58B,EACAu0B,EAAAl3B,EAAArI,GACA2S,EAAAwa,QAAAxa,EAAAwa,OAAA1mB,YAAAwK,GACA,IAAAo2B,EAAAzC,EAAA,QAKA,OAJAyC,EAAA/oC,IAAA,EACA2S,EAAAxK,YAAA4gC,GACAh/B,EAAAg/B,OACAh/B,EAAAiH,UAAAtE,GACA3C,GAEAI,EAAAM,QAAAgB,KAAA,SAAA4I,EAAAnD,EAAAC,EAAAmB,EAAAC,EAAArC,GACA,IAAAxE,EAAAvB,EAAAkI,UAAAnB,EAAAC,EAAAmB,EAAAC,EAAArC,GACA+D,EAAAI,EAAA3I,QACA9M,EAAAqV,EAAArB,MAQA,OAPAqB,EAAA6E,EAAAla,EAAAsS,IACA+C,EAAAqN,EAAA1iB,EAAAuS,IACA8C,EAAA4zB,EAAAjpC,EAAAqS,MAAAqB,EACA2B,EAAA8zB,EAAAnpC,EAAAmR,OAAAwC,EACA3T,EAAAsR,IACAtR,EAAA8M,OACAuI,EAAAV,KAAA,OACAU,GAEA9J,EAAAM,QAAAkB,QAAA,SAAA0I,EAAAnD,EAAAC,EAAAhB,EAAAC,GACA,IAAA6D,EAAAI,EAAA3I,OACAuI,EAAArB,MAYA,OAXAqB,EAAA6E,EAAA5H,EAAAf,EACA8D,EAAAqN,EAAAnQ,EAAAf,EACA6D,EAAA4zB,EAAA,EAAA13B,EACA8D,EAAA8zB,EAAA,EAAA33B,EACA6D,EAAAV,KAAA,UACA0tB,EAAAhtB,GACA5E,GAAA6B,EACA5B,GAAA6B,EACAhB,KACAC,OAEA6D,GAEA9J,EAAAM,QAAAe,OAAA,SAAA6I,EAAAnD,EAAAC,EAAAjB,GACA,IAAA+D,EAAAI,EAAA3I,OACAuI,EAAArB,MAUA,OATAqB,EAAA6E,EAAA5H,EAAAhB,EACA+D,EAAAqN,EAAAnQ,EAAAjB,EACA+D,EAAA4zB,EAAA5zB,EAAA8zB,EAAA,EAAA73B,EACA+D,EAAAV,KAAA,SACA0tB,EAAAhtB,GACA5E,GAAA6B,EACA5B,GAAA6B,EACAjB,MAEA+D,GAEA9J,EAAAM,QAAAmB,MAAA,SAAAyI,EAAAhE,EAAAa,EAAAC,EAAAmB,EAAAC,GACA,IAAA7G,EAAAvB,EAAAkI,UAAAnB,EAAAC,EAAAmB,EAAAC,GACA0B,EAAAI,EAAA3I,QAAAhK,MAAwC4O,OAAA,SACxC1R,EAAAqV,EAAArB,MACAsZ,EAAAjY,EAAAiY,KACA3c,EAAA2c,EAAAuT,qBAxxBA,QAwxBA,GAgBA,OAfA7gC,EAAAyR,MACA4D,EAAA6E,EAAAla,EAAAsS,IACA+C,EAAAqN,EAAA1iB,EAAAuS,IACA8C,EAAA4zB,EAAAjpC,EAAAqS,MAAAqB,EACA2B,EAAA8zB,EAAAnpC,EAAAmR,OAAAwC,EACA3T,EAAA8M,OACAuI,EAAAV,KAAA,QACAhE,EAAA8c,YAAAH,KAAA1S,YAAAjK,GACAA,EAAAuT,QAAA,EACAvT,EAAAc,MACAd,EAAAgE,KAAA,OACAU,EAAA6S,EAAA+e,SAAA30B,EAAAC,GACA8C,EAAA6S,EAAAsf,UAAA9zB,EAAAC,GACA2Z,EAAA/jB,YAAAoH,GACAq2B,EAAA3xB,EAAA,WACAA,GAEA9J,EAAAM,QAAA9I,KAAA,SAAA0S,EAAAnD,EAAAC,EAAAxP,GACA,IAAAgR,EAAA2zB,EAAA,SACA56B,EAAA46B,EAAA,QACA7xB,EAAA6xB,EAAA,YACAp1B,KAAA,EACAC,KAAA,EACAxP,KAAA,GACA+J,EAAAiN,EAAAxO,EAAAokB,OAAA,mBAA4ChgB,EAAA2C,EAAAs0B,GAAAj3B,EAAA4C,EAAAq0B,GAAAj3B,EAAA2C,EAAAs0B,GAAA,GAC5C95B,EAAA69B,YAAA,EACA90B,EAAA8kB,OAAA3sB,EAAAjL,GACA8S,EAAAzU,IAAA,EACA2S,EAAAkB,MAAAyF,QAAAisB,EACA5yB,EAAAszB,UAAAT,EAAA74B,EAAA64B,EACA7yB,EAAAwzB,YAAA,MACA,IAAAp8B,EAAA,IAAA44B,EAAAhwB,EAAA0B,GACA3S,GACA6N,KAAA,OACAe,OAAA,OACAb,KAAAtF,EAAA4E,gBAAAU,KACA9N,QAEAoI,EAAAmjB,MAAAva,EACA5I,EAAA2B,OACA3B,EAAAi9B,SAAAvyB,EACA1K,EAAAwJ,KAAA,OACAxJ,EAAA6I,MAAAjR,KAAAiL,EAAAjL,GACAoI,EAAA6I,MAAA1B,IACAnH,EAAA6I,MAAAzB,IACApH,EAAA6I,MAAAN,EAAA,EACAvI,EAAA6I,MAAAL,EAAA,EACA0uB,EAAAl3B,EAAArI,GACAiR,EAAAxK,YAAAsM,GACA9B,EAAAxK,YAAAuD,GACA2I,EAAAwa,OAAA1mB,YAAAwK,GACA,IAAAo2B,EAAAzC,EAAA,QAKA,OAJAyC,EAAA/oC,IAAA,EACA2S,EAAAxK,YAAA4gC,GACAh/B,EAAAg/B,OACAh/B,EAAAiH,UAAAtE,GACA3C,GAEAI,EAAAM,QAAAqkB,QAAA,SAAA7d,EAAAlB,GACA,IAAAy5B,EAAAprC,KAAAywB,OAAAhb,MAWA,OAVAzV,KAAA6S,QACA7S,KAAA2R,SACAkB,WAAA,MACAlB,WAAA,MACAy5B,EAAAv4B,QACAu4B,EAAAz5B,SACAy5B,EAAA/H,KAAA,UAAAxwB,EAAA,IAAAlB,EAAA,MACA3R,KAAA4lC,UACA75B,EAAAM,QAAAskB,WAAA3kB,MAAAhM,UAAA4lC,UAEA5lC,MAEA+L,EAAAM,QAAAskB,WAAA,SAAA7d,EAAAC,EAAAmB,EAAAC,EAAAyc,GACA7kB,EAAAE,IAAA,qBAAAjM,UAAA4lC,UAAA9yB,EAAAC,EAAAmB,EAAAC,EAAAyc,IACA,IAGA+Y,EAAAF,EAHAjD,EAAAxmC,KAAAwwB,UACA3d,EAAA2zB,EAAA3zB,MACAlB,EAAA60B,EAAA70B,OAqBA,OAnBAif,IAEA6Y,EAAA52B,EAAAqB,EACAA,GAFAy1B,EAAAh4B,EAAAwC,GAEAtB,IACAC,IAAAD,EAAAqB,EAAAy1B,GAAA,EAAAA,GAEAx1B,EAAAs1B,EAAA93B,IACAoB,IAAApB,EAAAwC,EAAAs1B,GAAA,EAAAA,IAGAzpC,KAAA4lC,UAAA9yB,EAAAC,EAAAmB,EAAAC,IAAAyc,GACA5wB,KAAAyqC,eACAzhB,IAAAlW,EACAmW,IAAAlW,EACA6W,MAAA4c,GAEAxmC,KAAAkyB,QAAA,SAAA3d,GACAA,EAAA3B,UAAA,SAEA5S,MAGA+L,EAAAM,QAAAwL,QAAA,SAAAhK,GACA,IAAAD,EAAAC,EAAA7F,SACA4F,EAAAy9B,YAAA1kC,OAAA,GACAiH,EAAA09B,mBAAAC,QAAA,sCAIA39B,EAAAy9B,YAAA,GAAAE,QAAA,sCAEA,KACA39B,EAAA49B,WAAAC,MAAA79B,EAAA49B,WAAA/+B,IAAA,wCACAy7B,EAAA,SAAAzd,GACA,OAAA7c,EAAA3F,cAAA,SAAAwiB,EAAA,mBAEc,MAAA5oB,GACdqmC,EAAA,SAAAzd,GACA,OAAA7c,EAAA3F,cAAA,IAAAwiB,EAAA,2DAIA1e,EAAAM,QAAAwL,QAAA9L,EAAAmJ,GAAArH,KACA9B,EAAAM,QAAAC,OAAA,WACA,IAAAu5B,EAAA95B,EAAAue,cAAAte,MAAA,EAAAa,WACA0d,EAAAsb,EAAAtb,UACA5Y,EAAAk0B,EAAAl0B,OAEAkB,EAAAgzB,EAAAhzB,MACAC,EAAA+yB,EAAA/yB,EACAC,EAAA8yB,EAAA9yB,EACA,IAAAwX,EACA,UAAAub,MAAA,4BAEA,IAAAjwB,EAAA,IAAA9J,EAAAmK,OACAxK,EAAAmK,EAAA4a,OAAA1kB,EAAAmJ,GAAAtH,IAAA3F,cAAA,OACAmjC,EAAA1/B,EAAA+J,MA4BA,OA3BA3C,KAAA,EACAC,KAAA,EACAF,KAAA,IACAlB,KAAA,IACAkE,EAAAhD,QACAgD,EAAAlE,SACAkB,WAAA,MACAlB,WAAA,MACAkE,EAAAgyB,UAAAT,MAAA74B,EAAA64B,MACAvxB,EAAAkyB,YAAA,MACAlyB,EAAA0zB,KAAAx9B,EAAAmJ,GAAAtH,IAAA3F,cAAA,QACA4N,EAAA0zB,KAAA9zB,MAAAyF,QAAA,+EACAxP,EAAA3B,YAAA8L,EAAA0zB,MACA6B,EAAAlwB,QAAAnP,EAAAokB,OAAA,kHAAgItd,EAAAlB,GAChI,GAAA4Y,GACAxe,EAAAmJ,GAAAtH,IAAAyK,KAAAtO,YAAA2B,GACA0/B,EAAA3Z,KAAA3e,EAAA,KACAs4B,EAAApjB,IAAAjV,EAAA,KACAq4B,EAAAnD,SAAA,YAEA1d,EAAA/U,WACA+U,EAAA6D,aAAA1iB,EAAA6e,EAAA/U,YAEA+U,EAAAxgB,YAAA2B,GAGAmK,EAAAywB,UAAA,aACAzwB,GAEA9J,EAAAa,UAAAssB,MAAA,WACAntB,EAAAE,IAAA,gBAAAjM,MACAA,KAAAywB,OAAAlb,UAAAjH,EACAtO,KAAAupC,KAAAx9B,EAAAmJ,GAAAtH,IAAA3F,cAAA,QACAjI,KAAAupC,KAAA9zB,MAAAyF,QAAA,8FACAlb,KAAAywB,OAAA1mB,YAAA/J,KAAAupC,MACAvpC,KAAAkoB,OAAAloB,KAAAgoB,IAAA,MAEAjc,EAAAa,UAAAnF,OAAA,WAGA,QAAAtD,KAFA4H,EAAAE,IAAA,iBAAAjM,MACAA,KAAAywB,OAAAxC,WAAA7S,YAAApb,KAAAywB,QACAzwB,KACAA,KAAAmE,GAAA,mBAAAnE,KAAAmE,GAAA4H,EAAAgX,gBAAA5e,GAAA,KAEA,UAGA,IAAA60B,EAAAjtB,EAAAuwB,GACA,QAAArD,KAAAtK,IAAAjhB,GAAAurB,KAAAD,EAAAtrB,GAAAurB,KACAD,EAAAC,GAAA,SAAAjW,GACA,kBACA,IAAAnJ,EAAAhN,UACA,OAAA7M,KAAAkyB,QAAA,SAAA3d,GACAA,EAAAyO,GAAAhX,MAAAuI,EAAAsF,MAJA,CAOUof,MAERjtB,MAAAV,EAAAM,MAAAL,EAAAD,QAAAO,OA/oQFN,EAAAD,QAAAJ,2GCPE,SAAAwgC,EAAYC,gGAAO5rC,CAAAC,KAAA0rC,GAAA,IAAAzrC,mKAAAC,CAAAF,MAAA0rC,EAAAvrC,WAAAC,OAAAC,eAAAqrC,IAAAprC,KAAAN,OAAA,OAGjB4rC,EAAAprC,EAAUC,MAAM,OAAQ,KAAMkrC,EAAMhf,YACpCif,EAAAprC,EAAUC,MAAM,QAAS,KAAMkrC,EAAME,aACrCD,EAAAprC,EAAUC,MAAM,KAAM,KAAMkrC,EAAMG,UAClCF,EAAAprC,EAAUC,MAAM,OAAQ,KAAMkrC,EAAMI,YACpCH,EAAAprC,EAAUC,MAAM,WAAY,WAAYkrC,EAAMlf,WAC9Cmf,EAAAprC,EAAUC,MAAM,aAAc,WAAYkrC,EAAMK,cAEhD/rC,EAAKU,YAAYC,KAAK,4BAVLX,qUADyBgsC,EAAA,kDCD9CC,EAAA1rC,EAAQoM,UAAUu/B,cAAgB,SAAuBr5B,EAAGC,EAAGq5B,GAC7D,IACMC,EAAOrsC,KAAKwN,MAAM8+B,IAAIC,kBAAoBH,EAAOI,OAAOH,KAAMv5B,EAAGC,EAAG,GAAI,IACxE05B,EAAWzsC,KAAKuD,KAAKuP,EAAI,GAAIC,EAAI,GAAIq5B,EAAOI,OAAOvpC,MACnDypC,EAAS1sC,KAAKuD,KAAKuP,EAAGC,EAAI,GAAIq5B,EAAOxmC,IACrC+mC,EAAc3sC,KAAKuD,KAAKuP,EAAGC,EAAI,GAAIq5B,EAAOQ,QAAQl1B,QAAQ,SAAU,SACpEm1B,EAAU7sC,KAAKwH,IAAI6kC,EAAMI,EAAUC,EAAQC,GAAarpC,MAC5DoP,cAAe,QACfrB,KAAM,2BAERo7B,EAASnpC,MACP+N,KAAM,aACNI,cAAe,SAEjBi7B,EAAOppC,MACL6N,KAAM,SAERw7B,EAAY7e,KAAKrY,MAAM,eAAiB,MACxCzV,KAAK8sC,SAASH,EAAaI,KAC3B,IAAM1/B,EAAOrN,KAAKqN,KAAKyF,EAAI,GAAIC,EAAI,GAlBlB,IAkBgC,IAAK,GAAGzP,MACvD6N,KAAM,OACNe,OAAQ,OACRE,iBAAkB,QAClBI,eAAgB,IAEZw6B,EAAUhtC,KAAKwH,IAAI6F,EAAMw/B,GAM/B,OALAx/B,EAAK/J,MACHqO,OAAQq7B,EAAQrkB,UAAUhX,OAAS,GACnCkB,MAAOm6B,EAAQrkB,UAAU9V,MAAQ,KAEnCm6B,EAAQp6B,WAAW,IAAK,GAAI,KACrBo6B,GAGTd,EAAA1rC,EAAQoM,UAAUkgC,SAAW,SAAkB5wB,EAAGrJ,GAChD,IAAMo6B,EAAU/wB,EAAE5Y,KAAK,QACjB4pC,EAAM,uDACZhxB,EAAE5Y,MACAC,KAAM2pC,IAER,IAAMC,EAAcjxB,EAAEyM,UAAU9V,MAAQq6B,EAAIvmC,OAC5CuV,EAAE5Y,MACAC,KAAM0pC,IAKR,IAHA,IAAMG,EAAQH,EAAQlpC,MAAM,KACxB+O,EAAI,EACFkG,KACGnE,EAAI,EAAGiP,EAAMspB,EAAMzmC,OAAQkO,EAAIiP,EAAKjP,GAAK,EAAG,CACnD,IAAMw4B,EAAOD,EAAMv4B,GACf/B,EAAKu6B,EAAK1mC,OAASwmC,EAAet6B,IACpCmG,EAAEpY,KAAK,MACPkS,EAAI,GAEO,OAATu6B,GACFr0B,EAAEpY,KAAK,MACPkS,EAAI,IAEJkG,EAAEpY,KAAQysC,EAAV,KACAv6B,GAAKu6B,EAAK1mC,OAASwmC,GAGvBjxB,EAAE5Y,MACAC,KAAMyV,EAAE1W,KAAK,IAAIoE,SAEnB,IAAMoN,EAAIoI,EAAEyM,UACNxU,EAAIjF,KAAKK,IAAIuE,EAAE6C,IAAM,EAC3B,OAAOuF,EAAE5Y,MACPyP,EAAGoB,KAIP,IAAAm5B,EAAepB,EAAf,ICjEe,WACb,SAASqB,EAAYC,EAAUC,GAC7BztC,KAAK+sB,QAAUygB,EACfxtC,KAAKoK,QAAUqjC,EACfztC,KAAKysB,UAAYzsB,KAAKysB,UAAUhsB,KAAKT,MACrCA,KAAKgsC,aAAehsC,KAAKgsC,aAAavrC,KAAKT,MAC3CA,KAAK6rC,YAAc7rC,KAAK6rC,YAAYprC,KAAKT,MACzCA,KAAK2sB,WAAa3sB,KAAK2sB,WAAWlsB,KAAKT,MACvCA,KAAK8rC,SAAW9rC,KAAK8rC,SAASrrC,KAAKT,MACnCA,KAAK+rC,WAAa/rC,KAAK+rC,WAAWtrC,KAAKT,MACvCA,KAAK0tC,mBACL1tC,KAAK2tC,MAAQ,EACb3tC,KAAK4tC,OAAS,EACd5tC,KAAKqH,WACLrH,KAAKkqC,QAAU,QACflqC,KAAK6tC,QAAU,IACf7tC,KAAK8tC,QAAU,GACf9tC,KAAK+tC,SAAW,GAChB/tC,KAAKguC,UAAY,GACjBhuC,KAAKiuC,YAAc,EACnBjuC,KAAKkuC,OA8TP,OA3TAX,EAAY3gC,UAAUshC,KAAO,WAAW,IAAAC,EAAAnuC,KACtCouC,EAAA,EAAM5lC,IAAIxI,KAAKoK,QAAQpH,KACpB4F,KAAK,SAAAC,GAAc,IAAXzH,EAAWyH,EAAXzH,KACPH,IAAE,WAAYktC,EAAKphB,SAAS0X,OAC5B0J,EAAKE,YAAYjtC,EAAKktC,KAAMltC,EAAKmtC,SACjCJ,EAAKK,eAEN1lC,MAAM,kBAAM1I,OAAAquC,EAAA,EAAAruC,CAAG,oCAGpBmtC,EAAY3gC,UAAUyhC,YAAc,SAASC,EAAMC,GACjD,IAAI7iC,EAAGgjC,EAAIC,EAAI95B,EAAGiP,EAAKpb,EAYvB,IAXA1I,KAAKsuC,KAAOA,EACZtuC,KAAKuuC,QAAUA,EACfvuC,KAAK4uC,iBACL5uC,KAAK6uC,YAAc5tC,IAAEjB,KAAK+sB,SAASpb,SACnC3R,KAAK8uC,WAAa7tC,IAAEjB,KAAK+sB,SAASla,QAClC67B,EAAKx/B,KAAKE,IAAIpP,KAAK6uC,YAAa7uC,KAAK8tC,QAAU9tC,KAAK+tC,SAAW/tC,KAAK2tC,MAAQ,KAC5EgB,EAAKz/B,KAAKE,IAAIpP,KAAK8uC,WAAY9uC,KAAK6tC,QAAU7tC,KAAKguC,UAAYhuC,KAAK4tC,OAAS,KAC7E5tC,KAAK8R,EAAIw7B,EAAQttC,KAAK+sB,QAAQvkB,IAAI,GAAImmC,EAAID,GAC1C1uC,KAAKgoB,IAAMhoB,KAAK8R,EAAEtK,MAClBxH,KAAK+uC,UAAY7/B,KAAKE,IAAIpP,KAAK6uC,YAAa7uC,KAAK+tC,SAAW/tC,KAAKsuC,KAAK3nC,OAAS,KAE1EkO,EAAI,EAAGiP,GADZpb,EAAM1I,KAAKuuC,SACW5nC,OAAQkO,EAAIiP,EAAKjP,GAAK,GAC1CnJ,EAAIhD,EAAImM,IACFjP,MAAM5F,KAAKqH,UACfqE,EAAEsjC,UAAW,GAEfhvC,KAAK0tC,gBAAgBhiC,EAAE9F,IAAM8F,EAC7B1L,KAAKivC,WAAWvjC,GAElB,OAAO1L,KAAKkvC,iBAGd3B,EAAY3gC,UAAUgiC,eAAiB,WACrC,IAAIljC,EAAGmJ,EAAGiP,EAAKnY,EAAGjD,EAAK1D,EAGvB,IADAA,KACK6P,EAAI,EAAGiP,GAFZpb,EAAM1I,KAAKuuC,SAEW5nC,OAAQkO,EAAIiP,EAAKjP,GAAK,EAC1CnJ,EAAIhD,EAAImM,GACR7U,KAAK2tC,MAAQz+B,KAAKE,IAAIpP,KAAK2tC,MAAOjiC,EAAE8pB,MACpCx1B,KAAK4tC,OAAS1+B,KAAKE,IAAIpP,KAAK4tC,OAAQliC,EAAEyjC,OACtCnqC,EAAQpE,KAAM,WACZ,IAAIsY,EAAGk2B,EAAMC,EAAMC,EAGnB,IADAA,KACKp2B,EAAI,EAAGk2B,GAFZC,EAAO3jC,EAAErE,SAEeV,OAAQuS,EAAIk2B,EAAMl2B,GAAK,EAC7CvN,EAAI0jC,EAAKn2B,GACTlZ,KAAKqH,QAAQsE,EAAE,KAAM,EACrB2jC,EAAS1uC,KAAKZ,KAAK4tC,OAAS1+B,KAAKE,IAAIpP,KAAK4tC,OAAQjiC,EAAE,KAEtD,OAAO2jC,GACNhvC,KAAKN,OAEV,OAAOgF,GAGTuoC,EAAY3gC,UAAUsiC,cAAgB,WACpC,IAAIjuB,EAAGjc,EAGP,IAFAic,EAAI,EACJjc,KACOic,EAAIjhB,KAAK4tC,QACd5tC,KAAKkqC,OAAOtpC,KAAK0sC,EAAQhxB,SAAS,KAElCgxB,EAAQhxB,WACRgxB,EAAQhxB,WACRtX,EAAQpE,KAAKqgB,GAAK,GAEpB,OAAOjc,GAGTuoC,EAAY3gC,UAAU4hC,WAAa,WACjC,IAAIe,EAAOC,EAASC,EAAK56B,EAAGiP,EAAK4rB,EAAI59B,EAAGpJ,EAWxC,IATA6mC,EAAQ,EACRC,EAAU,IAFV19B,EAAI9R,KAAK8R,GAGPzE,KAAK,EAAG,EAAG,GAAIrN,KAAK+uC,WAAWzrC,MAC/B6N,KAAM,SAERW,EAAEzE,KAAK,GAAI,EAAG,GAAIrN,KAAK+uC,WAAWzrC,MAChC6N,KAAM,SAGHu+B,EAAK76B,EAAI,EAAGiP,GADjBpb,EAAM1I,KAAKsuC,MACgB3nC,OAAQkO,EAAIiP,EAAK4rB,EAAM76B,GAAK,EAEjD06B,KADJE,EAAM/mC,EAAIgnC,IACQ,IAAMF,IAAYC,EAAI,KAEtC39B,EAAEvO,KAAK,GAAIvD,KAAK8tC,QAAU9tC,KAAK+tC,SAAW2B,EAAID,EAAI,IAAInsC,MACpD+N,KAAM,yBACNF,KAAM,SAERo+B,EAAQE,EAAI,IAEVD,IAAYC,EAAI,KAElB39B,EAAEvO,KAAK,GAAIvD,KAAK8tC,QAAU9tC,KAAK+tC,SAAW2B,EAAID,EAAI,IAAInsC,MACpD+N,KAAM,yBACNF,KAAM,SAERq+B,EAAUC,EAAI,IAIlB,OADAzvC,KAAK2vC,qBACE3vC,KAAKyB,cAGd8rC,EAAY3gC,UAAU+iC,mBAAqB,WACzC,IAAIvD,EAAQ5pB,EAAKre,EAAGyrC,EAAarzB,EAAOzJ,EAAGC,EAW3C,IAVAwJ,EAAQrN,KAAKmpB,OAAOr4B,KAAK+sB,QAAQN,YAAczsB,KAAK8tC,SAAW9tC,KAAK+tC,UAAY,IACpE,IACV6B,GAAc,EACdrzB,EAAQ,GAEViG,EAAMjG,EAAQ,GACVvc,KAAKuuC,QAAQ5nC,OAAS6b,IACxBotB,GAAc,EACdptB,EAAMxiB,KAAKuuC,QAAQ5nC,SAEI,IAArB3G,KAAKiuC,YAAqB/+B,KAAKK,IAAIvP,KAAKiuC,WAAa1xB,GAAS,IAAMqzB,EAAa,CAGnF,IAFAzrC,EAAIoY,EACJvc,KAAKiuC,WAAa1xB,EACXpY,EAAIqe,GACT4pB,EAASpsC,KAAKuuC,QAAQpqC,GACtBA,GAAK,GACmB,IAApBioC,EAAOyD,WACT/8B,EAAI9S,KAAK6tC,QAAU7tC,KAAKguC,WAAahuC,KAAK4tC,OAASxB,EAAO+C,OAC1Dp8B,EAAI/S,KAAK8tC,QAAU9tC,KAAK+tC,SAAW3B,EAAO5W,KAC1Cx1B,KAAK8vC,QAAQh9B,EAAGC,EAAGq5B,GACnBpsC,KAAK+vC,UAAUj9B,EAAGC,EAAGq5B,GACrBpsC,KAAKgwC,YAAYl9B,EAAGC,EAAGq5B,GACvBpsC,KAAKiwC,aAAan9B,EAAGC,EAAGq5B,GACxBA,EAAOyD,UAAW,GAGtB,OAAO7vC,KAAKgoB,IAAIkd,YAIpBqI,EAAY3gC,UAAUnL,WAAa,WACjC,IAAIsrB,EAE+B9sB,EAAnC,OADA8sB,EAAU/sB,KAAK+sB,QACR9rB,IAAE8rB,GAASmjB,QAAiBjwC,EAIhCD,KAHM,SAASwC,GACd,OAAOvC,EAAM0vC,yBAKnBpC,EAAY3gC,UAAUm/B,WAAa,WAEjC,OADA/rC,KAAK+sB,QAAQN,UAAUzsB,KAAK+sB,QAAQN,YAAc,IAC3CzsB,KAAK2vC,sBAGdpC,EAAY3gC,UAAUk/B,SAAW,WAE/B,OADA9rC,KAAK+sB,QAAQN,UAAUzsB,KAAK+sB,QAAQN,YAAc,IAC3CzsB,KAAK2vC,sBAGdpC,EAAY3gC,UAAU+f,WAAa,WAEjC,OADA3sB,KAAK+sB,QAAQJ,WAAW3sB,KAAK+sB,QAAQJ,aAAe,IAC7C3sB,KAAK2vC,sBAGdpC,EAAY3gC,UAAUi/B,YAAc,WAElC,OADA7rC,KAAK+sB,QAAQJ,WAAW3sB,KAAK+sB,QAAQJ,aAAe,IAC7C3sB,KAAK2vC,sBAGdpC,EAAY3gC,UAAUo/B,aAAe,WACnC,OAAOhsC,KAAK+sB,QAAQN,UAAUzsB,KAAK+sB,QAAQ/lB,KAAK,OAAO2K,WAGzD47B,EAAY3gC,UAAU6f,UAAY,WAChC,OAAOzsB,KAAK+sB,QAAQN,UAAU,IAGhC8gB,EAAY3gC,UAAUojC,YAAc,SAASl9B,EAAGC,EAAGq5B,GACjD,IAAWt6B,EAAGzE,EAAM8iC,EAAW5sC,EAAM6sC,EACrC,GAAKhE,EAAOiE,KA8BZ,OA3BAv+B,EAAI9R,KAAK8R,GACTq+B,EAAY/D,EAAOiE,MAEL1pC,OAAS,KACrBwpC,EAAYA,EAAUG,OAAO,EAAG,IAAM,KAQxCF,GANA7sC,EAAOuO,EAAEvO,KAAKuP,EAAI,EAAGC,EAAGo9B,GAAW7sC,MACjCoP,cAAe,QACfrB,KAAM,yBACNF,KAAM,OACNwB,MAAOy5B,EAAOiE,QAED1nB,UAEftb,EAAOyE,EAAEzE,KAAKyF,EAAGC,EAAI,EAAGq9B,EAAQv9B,MAAQ,EAAGu9B,EAAQz+B,OAAS,EAAG,GAAGrO,MAChE6N,KAAM,OACNC,eAAgB,GAChBc,OAAQ,SAECJ,EAAExE,MAAM,IAAKwF,EAAI,EAAGC,EAAG,IAAKD,EAAI,GAAIC,EAAI,EAAG,IAAKD,EAAI,GAAIC,EAAI,EAAG,MAAMzP,MAC9E6N,KAAM,OACNC,eAAgB,GAChBc,OAAQ,SAEFJ,EAAEtK,IAAI6F,EAAM9J,GACdqP,WAAW,KAAMvF,EAAKsb,UAAU9V,MAAQ,GAAI,IAE3CtP,EAAK2hC,WAGdqI,EAAY3gC,UAAUqjC,aAAe,SAASn9B,EAAGC,EAAGq5B,GAClD,IAAImE,EAAQnmC,EAAS0H,EAAGkW,EAgBxB,OAfAlW,EAAI9R,KAAK8R,EACTkW,EAAMhoB,KAAKgoB,IACX5d,EAAUpK,KAAKoK,QACfmmC,EAASz+B,EAAE1E,OAAO0F,EAAGC,EAAG,IAAIzP,MAC1B6N,KAAM,OACNU,QAAS,EACTb,OAAQ,YACPw/B,MAAM,WACP,OAAO3oC,OAAO42B,KAAKr0B,EAAQqmC,WAAW/4B,QAAQ,KAAM00B,EAAOxmC,IAAK,YAC/DqpB,MAAM,WAEP,OADAjvB,KAAKgtC,QAAUl7B,EAAEq6B,cAAcr5B,EAAI,EAAGC,EAAGq5B,GAClCpkB,EAAIpnB,KAAKZ,KAAKgtC,QAAQ5e,aAAapuB,QACzC,WACD,OAAOA,KAAKgtC,SAAWhtC,KAAKgtC,QAAQvlC,iBAAmBzH,KAAKgtC,UAEvDhlB,EAAIpnB,KAAK2vC,IAGlBhD,EAAY3gC,UAAUkjC,QAAU,SAASh9B,EAAGC,EAAGq5B,GAC7C,IAAIsE,EAAcC,EAAc7+B,EAahC,OAZAA,EAAI9R,KAAK8R,GACP1E,OAAO0F,EAAGC,EAAG,GAAGzP,MAChB6N,KAAMnR,KAAKkqC,OAAOkC,EAAO+C,OACzBj9B,OAAQ,SAEVw+B,EAAe1wC,KAAK6tC,QAAU7tC,KAAKguC,UAAYhuC,KAAK4tC,OAAS,GAC7D+C,EAAe59B,EAAI,GACnBjB,EAAEzE,KAAKqjC,EAAcC,EAAc,GAAI,IAAIrtC,MACzC4O,OAAQlS,KAAKkqC,OAAOkC,EAAO+C,OAC3B38B,eAAgB,IAElBV,EAAEtE,MAAM4+B,EAAOI,OAAOH,KAAMqE,EAAcC,EAAc,GAAI,IACrD7+B,EAAEvO,KAAKvD,KAAK6tC,QAAU7tC,KAAKguC,UAAYhuC,KAAK4tC,OAAS,GAAI76B,EAAGq5B,EAAOQ,QAAQ7oC,MAAM,MAAM,IAAIT,MAChGoP,cAAe,QACfrB,KAAM,4BAIVk8B,EAAY3gC,UAAUmjC,UAAY,SAASj9B,EAAGC,EAAGq5B,GAC/C,IAAIwE,EAAO74B,EAAO5T,EAAG0Q,EAAGiP,EAAK+D,EAAQmG,EAAQ6iB,EAAcC,EAAUC,EAAUC,EAASl/B,EAAGpJ,EAAK1D,EAASisC,EAIzG,IAHAn/B,EAAI9R,KAAK8R,EAET9M,KACKb,EAAI0Q,EAAI,EAAGiP,GAFhBpb,EAAM0jC,EAAO/kC,SAEaV,OAAQkO,EAAIiP,EAAK3f,EAAK0Q,GAAK,EACnDmZ,EAAStlB,EAAIvE,GACb0sC,EAAe7wC,KAAK0tC,gBAAgB1f,EAAO,IAC3CgjB,EAAUhxC,KAAK8tC,QAAU9tC,KAAK+tC,SAAW8C,EAAarb,KACtDsb,EAAW9wC,KAAK6tC,QAAU7tC,KAAKguC,WAAahuC,KAAK4tC,OAASiD,EAAa1B,OACvE4B,EAAW/wC,KAAK6tC,QAAU7tC,KAAKguC,WAAahuC,KAAK4tC,OAAS5f,EAAO,IAG/DjW,EADE84B,EAAa1B,OAAS/C,EAAO+C,MACvBnvC,KAAKkqC,OAAOkC,EAAO+C,OAEnBnvC,KAAKkqC,OAAO2G,EAAa1B,OAG/BnhB,EAAO,KAAOoe,EAAO+C,OACvBtnB,GAAU,EAAG,GACb+oB,EAAQ,uBACC5iB,EAAO,GAAKoe,EAAO+C,OAC5BtnB,GAAU,EAAG,GACb+oB,EAAQ,wBAER/oB,IAAW,EAAG,GACd+oB,EAAQ,uBAGVK,GAAS,IAAKn+B,EAAI+U,EAAO,GAAI9U,EAAI8U,EAAO,IAEpC1jB,EAAI,GACN8sC,EAAMrwC,KAAKgwC,GAGTxE,EAAO+C,QAAU0B,EAAa1B,OAAS/C,EAAO+C,QAAUnhB,EAAO,IACjEijB,EAAMrwC,KAAK,IAAKmwC,EAAUh+B,EAAI,GAAI,IAAKg+B,EAAUC,EAAU,GAG7DC,EAAMrwC,KAAK,IAAKkwC,EAAUE,GAC1BhsC,EAAQpE,KAAKkR,EAAExE,KAAK2jC,GAAO3tC,MACzB4O,OAAQ6F,EACRvF,eAAgB,KAGpB,OAAOxN,GAGTuoC,EAAY3gC,UAAUqiC,WAAa,SAAS7C,GAC1C,IAAIt6B,EAAGgB,EAAGC,EACV,GAAIq5B,EAAOxmC,KAAO5F,KAAKoK,QAAQ8mC,UAU7B,OATAp/B,EAAI9R,KAAK8R,EACTgB,EAAI9S,KAAK6tC,QAAU7tC,KAAKguC,WAAahuC,KAAK4tC,OAASxB,EAAO+C,OAC1Dp8B,EAAI/S,KAAK8tC,QAAU9tC,KAAK+tC,SAAW3B,EAAO5W,KAC1C1jB,EAAExE,MAAM,IAAKwF,EAAI,EAAGC,EAAG,IAAKD,EAAI,GAAIC,EAAI,EAAG,IAAKD,EAAI,GAAIC,EAAI,EAAG,MAAMzP,MACnE6N,KAAM,OACNC,eAAgB,GAChBc,OAAQ,SAGHlS,KAAK+sB,QAAQN,UAAU1Z,EAAI/S,KAAK6uC,YAAc,IAIlDtB,KCrVT4D,EAAe,WAab,OAZA,SAAiBC,GACf,IAAIC,EACJpwC,IAAE,eAAeuvC,MAAM,WACrB,OAAOvvC,IAAEjB,MAAMsK,QAAQ,QAAQhD,WAEjCtH,KAAKsxC,aAAe,IAAIA,EAAYrwC,IAAE,kBAAmBmwC,GACzDC,EAAMpwC,IAAE4G,QAAQ8J,SAAW,IAC3B1Q,IAAE,kBAAkBglC,KAClBt0B,OAAU0/B,EAAM,QATtB,GCDArpC,SAAS+C,iBAAiB,mBAAoB,WAC5C,GAAK9J,IAAE,kBAAkB0F,OAAzB,CAEA,IAAM4qC,EAAe,IAAIJ,GACvBnuC,IAAK/B,IAAE,kBAAkBqC,KAAK,YAC9BmtC,WAAYxvC,IAAE,kBAAkBqC,KAAK,mBACrCoF,IAAKzH,IAAE,kBAAkBqC,KAAK,YAC9B4tC,UAAWjwC,IAAE,kBAAkBqC,KAAK,oBAItC,IAAIkuC,EAAiBD,EAAaD","file":"pages.projects.network.show.c3c0c071.chunk.js","sourcesContent":["import Mousetrap from 'mousetrap';\nimport findAndFollowLink from './shortcuts_dashboard_navigation';\nimport Shortcuts from './shortcuts';\n\nexport default class ShortcutsNavigation extends Shortcuts {\n constructor() {\n super();\n\n Mousetrap.bind('g p', () => findAndFollowLink('.shortcuts-project'));\n Mousetrap.bind('g v', () => findAndFollowLink('.shortcuts-project-activity'));\n Mousetrap.bind('g f', () => findAndFollowLink('.shortcuts-tree'));\n Mousetrap.bind('g c', () => findAndFollowLink('.shortcuts-commits'));\n Mousetrap.bind('g j', () => findAndFollowLink('.shortcuts-builds'));\n Mousetrap.bind('g n', () => findAndFollowLink('.shortcuts-network'));\n Mousetrap.bind('g d', () => findAndFollowLink('.shortcuts-repository-charts'));\n Mousetrap.bind('g i', () => findAndFollowLink('.shortcuts-issues'));\n Mousetrap.bind('g b', () => findAndFollowLink('.shortcuts-issue-boards'));\n Mousetrap.bind('g m', () => findAndFollowLink('.shortcuts-merge_requests'));\n Mousetrap.bind('g w', () => findAndFollowLink('.shortcuts-wiki'));\n Mousetrap.bind('g s', () => findAndFollowLink('.shortcuts-snippets'));\n Mousetrap.bind('g k', () => findAndFollowLink('.shortcuts-kubernetes'));\n Mousetrap.bind('g e', () => findAndFollowLink('.shortcuts-environments'));\n Mousetrap.bind('i', () => findAndFollowLink('.shortcuts-new-issue'));\n\n this.enabledHelp.push('.hidden-shortcut.project');\n }\n}\n","import $ from 'jquery';\nimport AccessorUtilities from './lib/utils/accessor';\n\nexport default class ProjectSelectComboButton {\n constructor(select) {\n this.projectSelectInput = $(select);\n this.newItemBtn = $('.new-project-item-link');\n this.resourceType = this.newItemBtn.data('type');\n this.resourceLabel = this.newItemBtn.data('label');\n this.formattedText = this.deriveTextVariants();\n this.groupId = this.projectSelectInput.data('groupId');\n this.bindEvents();\n this.initLocalStorage();\n }\n\n bindEvents() {\n this.projectSelectInput.siblings('.new-project-item-select-button')\n .on('click', e => this.openDropdown(e));\n\n this.newItemBtn.on('click', (e) => {\n if (!this.getProjectFromLocalStorage()) {\n e.preventDefault();\n this.openDropdown(e);\n }\n });\n\n this.projectSelectInput.on('change', () => this.selectProject());\n }\n\n initLocalStorage() {\n const localStorageIsSafe = AccessorUtilities.isLocalStorageAccessSafe();\n\n if (localStorageIsSafe) {\n this.localStorageKey = ['group', this.groupId, this.formattedText.localStorageItemType, 'recent-project'].join('-');\n this.setBtnTextFromLocalStorage();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n openDropdown(event) {\n $(event.currentTarget).siblings('.project-item-select').select2('open');\n }\n\n selectProject() {\n const selectedProjectData = JSON.parse(this.projectSelectInput.val());\n const projectUrl = `${selectedProjectData.url}/${this.projectSelectInput.data('relativePath')}`;\n const projectName = selectedProjectData.name;\n\n const projectMeta = {\n url: projectUrl,\n name: projectName,\n };\n\n this.setNewItemBtnAttributes(projectMeta);\n this.setProjectInLocalStorage(projectMeta);\n }\n\n setBtnTextFromLocalStorage() {\n const cachedProjectData = this.getProjectFromLocalStorage();\n\n this.setNewItemBtnAttributes(cachedProjectData);\n }\n\n setNewItemBtnAttributes(project) {\n if (project) {\n this.newItemBtn.attr('href', project.url);\n this.newItemBtn.text(`${this.formattedText.defaultTextPrefix} in ${project.name}`);\n } else {\n this.newItemBtn.text(`Select project to create ${this.formattedText.presetTextSuffix}`);\n }\n }\n\n getProjectFromLocalStorage() {\n const projectString = localStorage.getItem(this.localStorageKey);\n\n return JSON.parse(projectString);\n }\n\n setProjectInLocalStorage(projectMeta) {\n const projectString = JSON.stringify(projectMeta);\n\n localStorage.setItem(this.localStorageKey, projectString);\n }\n\n deriveTextVariants() {\n const defaultTextPrefix = this.resourceLabel;\n\n // the trailing slice call depluralizes each of these strings (e.g. new-issues -> new-issue)\n const localStorageItemType = `new-${this.resourceType.split('_').join('-').slice(0, -1)}`;\n const presetTextSuffix = this.resourceType.split('_').join(' ').slice(0, -1);\n\n return {\n localStorageItemType, // new-issue / new-merge-request\n defaultTextPrefix, // New issue / New merge request\n presetTextSuffix, // issue / merge request\n };\n }\n}\n\n","/* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-var, comma-dangle, object-shorthand, one-var, one-var-declaration-per-line, no-else-return, quotes, max-len */\n\nimport $ from 'jquery';\nimport Api from './api';\nimport ProjectSelectComboButton from './project_select_combo_button';\n\nexport default function projectSelect() {\n $('.ajax-project-select').each(function(i, select) {\n var placeholder;\n const simpleFilter = $(select).data('simpleFilter') || false;\n this.groupId = $(select).data('groupId');\n this.includeGroups = $(select).data('includeGroups');\n this.allProjects = $(select).data('allProjects') || false;\n this.orderBy = $(select).data('orderBy') || 'id';\n this.withIssuesEnabled = $(select).data('withIssuesEnabled');\n this.withMergeRequestsEnabled = $(select).data('withMergeRequestsEnabled');\n\n placeholder = \"Search for project\";\n if (this.includeGroups) {\n placeholder += \" or group\";\n }\n\n $(select).select2({\n placeholder: placeholder,\n minimumInputLength: 0,\n query: (function (_this) {\n return function (query) {\n var finalCallback, projectsCallback;\n finalCallback = function (projects) {\n var data;\n data = {\n results: projects\n };\n return query.callback(data);\n };\n if (_this.includeGroups) {\n projectsCallback = function (projects) {\n var groupsCallback;\n groupsCallback = function (groups) {\n var data;\n data = groups.concat(projects);\n return finalCallback(data);\n };\n return Api.groups(query.term, {}, groupsCallback);\n };\n } else {\n projectsCallback = finalCallback;\n }\n if (_this.groupId) {\n return Api.groupProjects(_this.groupId, query.term, projectsCallback);\n } else {\n return Api.projects(query.term, {\n order_by: _this.orderBy,\n with_issues_enabled: _this.withIssuesEnabled,\n with_merge_requests_enabled: _this.withMergeRequestsEnabled,\n membership: !_this.allProjects,\n }, projectsCallback);\n }\n };\n })(this),\n id: function(project) {\n if (simpleFilter) return project.id;\n return JSON.stringify({\n name: project.name,\n url: project.web_url,\n });\n },\n text: function (project) {\n return project.name_with_namespace || project.name;\n },\n dropdownCssClass: \"ajax-project-dropdown\"\n });\n if (simpleFilter) return select;\n return new ProjectSelectComboButton(select);\n });\n}\n","/* eslint-disable func-names, space-before-function-paren, no-var, consistent-return, no-new, prefer-arrow-callback, no-return-assign, one-var, one-var-declaration-per-line, object-shorthand, no-else-return, newline-per-chained-call, no-shadow, vars-on-top, prefer-template, max-len */\n\nimport $ from 'jquery';\nimport Cookies from 'js-cookie';\nimport { __ } from '~/locale';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport axios from '~/lib/utils/axios_utils';\nimport flash from '~/flash';\nimport projectSelect from '../../project_select';\n\nexport default class Project {\n constructor() {\n const $cloneOptions = $('ul.clone-options-dropdown');\n const $projectCloneField = $('#project_clone');\n const $cloneBtnText = $('a.clone-dropdown-btn span');\n\n const selectedCloneOption = $cloneBtnText.text().trim();\n if (selectedCloneOption.length > 0) {\n $(`a:contains('${selectedCloneOption}')`, $cloneOptions).addClass('is-active');\n }\n\n $('a', $cloneOptions).on('click', (e) => {\n const $this = $(e.currentTarget);\n const url = $this.attr('href');\n const activeText = $this.find('.dropdown-menu-inner-title').text();\n\n e.preventDefault();\n\n $('.is-active', $cloneOptions).not($this).removeClass('is-active');\n $this.toggleClass('is-active');\n $projectCloneField.val(url);\n $cloneBtnText.text(activeText);\n\n return $('.clone').text(url);\n });\n // Ref switcher\n Project.initRefSwitcher();\n $('.project-refs-select').on('change', function() {\n return $(this).parents('form').submit();\n });\n $('.hide-no-ssh-message').on('click', function(e) {\n Cookies.set('hide_no_ssh_message', 'false');\n $(this).parents('.no-ssh-key-message').remove();\n return e.preventDefault();\n });\n $('.hide-no-password-message').on('click', function(e) {\n Cookies.set('hide_no_password_message', 'false');\n $(this).parents('.no-password-message').remove();\n return e.preventDefault();\n });\n Project.projectSelectDropdown();\n }\n\n static projectSelectDropdown() {\n projectSelect();\n $('.project-item-select').on('click', e => Project.changeProject($(e.currentTarget).val()));\n }\n\n static changeProject(url) {\n return window.location = url;\n }\n\n static initRefSwitcher() {\n var refListItem = document.createElement('li');\n var refLink = document.createElement('a');\n\n refLink.href = '#';\n\n return $('.js-project-refs-dropdown').each(function() {\n var $dropdown, selected;\n $dropdown = $(this);\n selected = $dropdown.data('selected');\n return $dropdown.glDropdown({\n data(term, callback) {\n axios.get($dropdown.data('refsUrl'), {\n params: {\n ref: $dropdown.data('ref'),\n search: term,\n },\n })\n .then(({ data }) => callback(data))\n .catch(() => flash(__('An error occurred while getting projects')));\n },\n selectable: true,\n filterable: true,\n filterRemote: true,\n filterByText: true,\n inputFieldName: $dropdown.data('inputFieldName'),\n fieldName: $dropdown.data('fieldName'),\n renderRow: function(ref) {\n var li = refListItem.cloneNode(false);\n\n if (ref.header != null) {\n li.className = 'dropdown-header';\n li.textContent = ref.header;\n } else {\n var link = refLink.cloneNode(false);\n\n if (ref === selected) {\n link.className = 'is-active';\n }\n\n link.textContent = ref;\n link.dataset.ref = ref;\n\n li.appendChild(link);\n }\n\n return li;\n },\n id: function(obj, $el) {\n return $el.attr('data-ref');\n },\n toggleLabel: function(obj, $el) {\n return $el.text().trim();\n },\n clicked: function(options) {\n const { e } = options;\n e.preventDefault();\n if ($('input[name=\"ref\"]').length) {\n var $form = $dropdown.closest('form');\n\n var $visit = $dropdown.data('visit');\n var shouldVisit = $visit ? true : $visit;\n var action = $form.attr('action');\n var divider = action.indexOf('?') === -1 ? '?' : '&';\n if (shouldVisit) {\n visitUrl(`${action}${divider}${$form.serialize()}`);\n }\n }\n },\n });\n });\n }\n}\n","import Project from './project';\nimport ShortcutsNavigation from '../../shortcuts_navigation';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new Project(); // eslint-disable-line no-new\n new ShortcutsNavigation(); // eslint-disable-line no-new\n});\n","// ┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐ \\\\\n// │ Raphaël 2.2.0 - JavaScript Vector Library │ \\\\\n// ├───────────────────────────────────────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Copyright © 2008-2016 Dmitry Baranovskiy (http://raphaeljs.com) │ \\\\\n// │ Copyright © 2008-2016 Sencha Labs (http://sencha.com) │ \\\\\n// ├───────────────────────────────────────────────────────────────────────────────────────────────────────┤ \\\\\n// │ Licensed under the MIT (https://github.com/DmitryBaranovskiy/raphael/blob/master/license.txt) license.│ \\\\\n// └───────────────────────────────────────────────────────────────────────────────────────────────────────┘ \\\\\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Raphael\"] = factory();\n\telse\n\t\troot[\"Raphael\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(3), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function(R) {\n\n\t return R;\n\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function(eve) {\n\n\t /*\\\n\t * Raphael\n\t [ method ]\n\t **\n\t * Creates a canvas object on which to draw.\n\t * You must do this first, as all future calls to drawing methods\n\t * from this instance will be bound to this canvas.\n\t > Parameters\n\t **\n\t - container (HTMLElement|string) DOM element or its ID which is going to be a parent for drawing surface\n\t - width (number)\n\t - height (number)\n\t - callback (function) #optional callback function which is going to be executed in the context of newly created paper\n\t * or\n\t - x (number)\n\t - y (number)\n\t - width (number)\n\t - height (number)\n\t - callback (function) #optional callback function which is going to be executed in the context of newly created paper\n\t * or\n\t - all (array) (first 3 or 4 elements in the array are equal to [containerID, width, height] or [x, y, width, height]. The rest are element descriptions in format {type: type, }). See @Paper.add.\n\t - callback (function) #optional callback function which is going to be executed in the context of newly created paper\n\t * or\n\t - onReadyCallback (function) function that is going to be called on DOM ready event. You can also subscribe to this event via Eve’s “DOMLoad” event. In this case method returns `undefined`.\n\t = (object) @Paper\n\t > Usage\n\t | // Each of the following examples create a canvas\n\t | // that is 320px wide by 200px high.\n\t | // Canvas is created at the viewport’s 10,50 coordinate.\n\t | var paper = Raphael(10, 50, 320, 200);\n\t | // Canvas is created at the top left corner of the #notepad element\n\t | // (or its top right corner in dir=\"rtl\" elements)\n\t | var paper = Raphael(document.getElementById(\"notepad\"), 320, 200);\n\t | // Same as above\n\t | var paper = Raphael(\"notepad\", 320, 200);\n\t | // Image dump\n\t | var set = Raphael([\"notepad\", 320, 200, {\n\t | type: \"rect\",\n\t | x: 10,\n\t | y: 10,\n\t | width: 25,\n\t | height: 25,\n\t | stroke: \"#f00\"\n\t | }, {\n\t | type: \"text\",\n\t | x: 30,\n\t | y: 40,\n\t | text: \"Dump\"\n\t | }]);\n\t \\*/\n\t function R(first) {\n\t if (R.is(first, \"function\")) {\n\t return loaded ? first() : eve.on(\"raphael.DOMload\", first);\n\t } else if (R.is(first, array)) {\n\t return R._engine.create[apply](R, first.splice(0, 3 + R.is(first[0], nu))).add(first);\n\t } else {\n\t var args = Array.prototype.slice.call(arguments, 0);\n\t if (R.is(args[args.length - 1], \"function\")) {\n\t var f = args.pop();\n\t return loaded ? f.call(R._engine.create[apply](R, args)) : eve.on(\"raphael.DOMload\", function () {\n\t f.call(R._engine.create[apply](R, args));\n\t });\n\t } else {\n\t return R._engine.create[apply](R, arguments);\n\t }\n\t }\n\t }\n\t R.version = \"2.2.0\";\n\t R.eve = eve;\n\t var loaded,\n\t separator = /[, ]+/,\n\t elements = {circle: 1, rect: 1, path: 1, ellipse: 1, text: 1, image: 1},\n\t formatrg = /\\{(\\d+)\\}/g,\n\t proto = \"prototype\",\n\t has = \"hasOwnProperty\",\n\t g = {\n\t doc: document,\n\t win: window\n\t },\n\t oldRaphael = {\n\t was: Object.prototype[has].call(g.win, \"Raphael\"),\n\t is: g.win.Raphael\n\t },\n\t Paper = function () {\n\t /*\\\n\t * Paper.ca\n\t [ property (object) ]\n\t **\n\t * Shortcut for @Paper.customAttributes\n\t \\*/\n\t /*\\\n\t * Paper.customAttributes\n\t [ property (object) ]\n\t **\n\t * If you have a set of attributes that you would like to represent\n\t * as a function of some number you can do it easily with custom attributes:\n\t > Usage\n\t | paper.customAttributes.hue = function (num) {\n\t | num = num % 1;\n\t | return {fill: \"hsb(\" + num + \", 0.75, 1)\"};\n\t | };\n\t | // Custom attribute “hue” will change fill\n\t | // to be given hue with fixed saturation and brightness.\n\t | // Now you can use it like this:\n\t | var c = paper.circle(10, 10, 10).attr({hue: .45});\n\t | // or even like this:\n\t | c.animate({hue: 1}, 1e3);\n\t |\n\t | // You could also create custom attribute\n\t | // with multiple parameters:\n\t | paper.customAttributes.hsb = function (h, s, b) {\n\t | return {fill: \"hsb(\" + [h, s, b].join(\",\") + \")\"};\n\t | };\n\t | c.attr({hsb: \"0.5 .8 1\"});\n\t | c.animate({hsb: [1, 0, 0.5]}, 1e3);\n\t \\*/\n\t this.ca = this.customAttributes = {};\n\t },\n\t paperproto,\n\t appendChild = \"appendChild\",\n\t apply = \"apply\",\n\t concat = \"concat\",\n\t supportsTouch = ('ontouchstart' in g.win) || g.win.DocumentTouch && g.doc instanceof DocumentTouch, //taken from Modernizr touch test\n\t E = \"\",\n\t S = \" \",\n\t Str = String,\n\t split = \"split\",\n\t events = \"click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel\"[split](S),\n\t touchMap = {\n\t mousedown: \"touchstart\",\n\t mousemove: \"touchmove\",\n\t mouseup: \"touchend\"\n\t },\n\t lowerCase = Str.prototype.toLowerCase,\n\t math = Math,\n\t mmax = math.max,\n\t mmin = math.min,\n\t abs = math.abs,\n\t pow = math.pow,\n\t PI = math.PI,\n\t nu = \"number\",\n\t string = \"string\",\n\t array = \"array\",\n\t toString = \"toString\",\n\t fillString = \"fill\",\n\t objectToString = Object.prototype.toString,\n\t paper = {},\n\t push = \"push\",\n\t ISURL = R._ISURL = /^url\\(['\"]?(.+?)['\"]?\\)$/i,\n\t colourRegExp = /^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?)%?\\s*\\))\\s*$/i,\n\t isnan = {\"NaN\": 1, \"Infinity\": 1, \"-Infinity\": 1},\n\t bezierrg = /^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,\n\t round = math.round,\n\t setAttribute = \"setAttribute\",\n\t toFloat = parseFloat,\n\t toInt = parseInt,\n\t upperCase = Str.prototype.toUpperCase,\n\t availableAttrs = R._availableAttrs = {\n\t \"arrow-end\": \"none\",\n\t \"arrow-start\": \"none\",\n\t blur: 0,\n\t \"clip-rect\": \"0 0 1e9 1e9\",\n\t cursor: \"default\",\n\t cx: 0,\n\t cy: 0,\n\t fill: \"#fff\",\n\t \"fill-opacity\": 1,\n\t font: '10px \"Arial\"',\n\t \"font-family\": '\"Arial\"',\n\t \"font-size\": \"10\",\n\t \"font-style\": \"normal\",\n\t \"font-weight\": 400,\n\t gradient: 0,\n\t height: 0,\n\t href: \"http://raphaeljs.com/\",\n\t \"letter-spacing\": 0,\n\t opacity: 1,\n\t path: \"M0,0\",\n\t r: 0,\n\t rx: 0,\n\t ry: 0,\n\t src: \"\",\n\t stroke: \"#000\",\n\t \"stroke-dasharray\": \"\",\n\t \"stroke-linecap\": \"butt\",\n\t \"stroke-linejoin\": \"butt\",\n\t \"stroke-miterlimit\": 0,\n\t \"stroke-opacity\": 1,\n\t \"stroke-width\": 1,\n\t target: \"_blank\",\n\t \"text-anchor\": \"middle\",\n\t title: \"Raphael\",\n\t transform: \"\",\n\t width: 0,\n\t x: 0,\n\t y: 0,\n\t \"class\": \"\"\n\t },\n\t availableAnimAttrs = R._availableAnimAttrs = {\n\t blur: nu,\n\t \"clip-rect\": \"csv\",\n\t cx: nu,\n\t cy: nu,\n\t fill: \"colour\",\n\t \"fill-opacity\": nu,\n\t \"font-size\": nu,\n\t height: nu,\n\t opacity: nu,\n\t path: \"path\",\n\t r: nu,\n\t rx: nu,\n\t ry: nu,\n\t stroke: \"colour\",\n\t \"stroke-opacity\": nu,\n\t \"stroke-width\": nu,\n\t transform: \"transform\",\n\t width: nu,\n\t x: nu,\n\t y: nu\n\t },\n\t whitespace = /[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]/g,\n\t commaSpaces = /[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*/,\n\t hsrg = {hs: 1, rg: 1},\n\t p2s = /,?([achlmqrstvxz]),?/gi,\n\t pathCommand = /([achlmrqstvz])[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)/ig,\n\t tCommand = /([rstm])[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*)+)/ig,\n\t pathValues = /(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,?[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*/ig,\n\t radial_gradient = R._radial_gradient = /^r(?:\\(([^,]+?)[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*,[\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029]*([^\\)]+?)\\))?/,\n\t eldata = {},\n\t sortByKey = function (a, b) {\n\t return a.key - b.key;\n\t },\n\t sortByNumber = function (a, b) {\n\t return toFloat(a) - toFloat(b);\n\t },\n\t fun = function () {},\n\t pipe = function (x) {\n\t return x;\n\t },\n\t rectPath = R._rectPath = function (x, y, w, h, r) {\n\t if (r) {\n\t return [[\"M\", x + r, y], [\"l\", w - r * 2, 0], [\"a\", r, r, 0, 0, 1, r, r], [\"l\", 0, h - r * 2], [\"a\", r, r, 0, 0, 1, -r, r], [\"l\", r * 2 - w, 0], [\"a\", r, r, 0, 0, 1, -r, -r], [\"l\", 0, r * 2 - h], [\"a\", r, r, 0, 0, 1, r, -r], [\"z\"]];\n\t }\n\t return [[\"M\", x, y], [\"l\", w, 0], [\"l\", 0, h], [\"l\", -w, 0], [\"z\"]];\n\t },\n\t ellipsePath = function (x, y, rx, ry) {\n\t if (ry == null) {\n\t ry = rx;\n\t }\n\t return [[\"M\", x, y], [\"m\", 0, -ry], [\"a\", rx, ry, 0, 1, 1, 0, 2 * ry], [\"a\", rx, ry, 0, 1, 1, 0, -2 * ry], [\"z\"]];\n\t },\n\t getPath = R._getPath = {\n\t path: function (el) {\n\t return el.attr(\"path\");\n\t },\n\t circle: function (el) {\n\t var a = el.attrs;\n\t return ellipsePath(a.cx, a.cy, a.r);\n\t },\n\t ellipse: function (el) {\n\t var a = el.attrs;\n\t return ellipsePath(a.cx, a.cy, a.rx, a.ry);\n\t },\n\t rect: function (el) {\n\t var a = el.attrs;\n\t return rectPath(a.x, a.y, a.width, a.height, a.r);\n\t },\n\t image: function (el) {\n\t var a = el.attrs;\n\t return rectPath(a.x, a.y, a.width, a.height);\n\t },\n\t text: function (el) {\n\t var bbox = el._getBBox();\n\t return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);\n\t },\n\t set : function(el) {\n\t var bbox = el._getBBox();\n\t return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);\n\t }\n\t },\n\t /*\\\n\t * Raphael.mapPath\n\t [ method ]\n\t **\n\t * Transform the path string with given matrix.\n\t > Parameters\n\t - path (string) path string\n\t - matrix (object) see @Matrix\n\t = (string) transformed path string\n\t \\*/\n\t mapPath = R.mapPath = function (path, matrix) {\n\t if (!matrix) {\n\t return path;\n\t }\n\t var x, y, i, j, ii, jj, pathi;\n\t path = path2curve(path);\n\t for (i = 0, ii = path.length; i < ii; i++) {\n\t pathi = path[i];\n\t for (j = 1, jj = pathi.length; j < jj; j += 2) {\n\t x = matrix.x(pathi[j], pathi[j + 1]);\n\t y = matrix.y(pathi[j], pathi[j + 1]);\n\t pathi[j] = x;\n\t pathi[j + 1] = y;\n\t }\n\t }\n\t return path;\n\t };\n\n\t R._g = g;\n\t /*\\\n\t * Raphael.type\n\t [ property (string) ]\n\t **\n\t * Can be “SVG”, “VML” or empty, depending on browser support.\n\t \\*/\n\t R.type = (g.win.SVGAngle || g.doc.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\") ? \"SVG\" : \"VML\");\n\t if (R.type == \"VML\") {\n\t var d = g.doc.createElement(\"div\"),\n\t b;\n\t d.innerHTML = '';\n\t b = d.firstChild;\n\t b.style.behavior = \"url(#default#VML)\";\n\t if (!(b && typeof b.adj == \"object\")) {\n\t return (R.type = E);\n\t }\n\t d = null;\n\t }\n\t /*\\\n\t * Raphael.svg\n\t [ property (boolean) ]\n\t **\n\t * `true` if browser supports SVG.\n\t \\*/\n\t /*\\\n\t * Raphael.vml\n\t [ property (boolean) ]\n\t **\n\t * `true` if browser supports VML.\n\t \\*/\n\t R.svg = !(R.vml = R.type == \"VML\");\n\t R._Paper = Paper;\n\t /*\\\n\t * Raphael.fn\n\t [ property (object) ]\n\t **\n\t * You can add your own method to the canvas. For example if you want to draw a pie chart,\n\t * you can create your own pie chart function and ship it as a Raphaël plugin. To do this\n\t * you need to extend the `Raphael.fn` object. You should modify the `fn` object before a\n\t * Raphaël instance is created, otherwise it will take no effect. Please note that the\n\t * ability for namespaced plugins was removed in Raphael 2.0. It is up to the plugin to\n\t * ensure any namespacing ensures proper context.\n\t > Usage\n\t | Raphael.fn.arrow = function (x1, y1, x2, y2, size) {\n\t | return this.path( ... );\n\t | };\n\t | // or create namespace\n\t | Raphael.fn.mystuff = {\n\t | arrow: function () {…},\n\t | star: function () {…},\n\t | // etc…\n\t | };\n\t | var paper = Raphael(10, 10, 630, 480);\n\t | // then use it\n\t | paper.arrow(10, 10, 30, 30, 5).attr({fill: \"#f00\"});\n\t | paper.mystuff.arrow();\n\t | paper.mystuff.star();\n\t \\*/\n\t R.fn = paperproto = Paper.prototype = R.prototype;\n\t R._id = 0;\n\t /*\\\n\t * Raphael.is\n\t [ method ]\n\t **\n\t * Handful of replacements for `typeof` operator.\n\t > Parameters\n\t - o (…) any object or primitive\n\t - type (string) name of the type, i.e. “string”, “function”, “number”, etc.\n\t = (boolean) is given value is of given type\n\t \\*/\n\t R.is = function (o, type) {\n\t type = lowerCase.call(type);\n\t if (type == \"finite\") {\n\t return !isnan[has](+o);\n\t }\n\t if (type == \"array\") {\n\t return o instanceof Array;\n\t }\n\t return (type == \"null\" && o === null) ||\n\t (type == typeof o && o !== null) ||\n\t (type == \"object\" && o === Object(o)) ||\n\t (type == \"array\" && Array.isArray && Array.isArray(o)) ||\n\t objectToString.call(o).slice(8, -1).toLowerCase() == type;\n\t };\n\n\t function clone(obj) {\n\t if (typeof obj == \"function\" || Object(obj) !== obj) {\n\t return obj;\n\t }\n\t var res = new obj.constructor;\n\t for (var key in obj) if (obj[has](key)) {\n\t res[key] = clone(obj[key]);\n\t }\n\t return res;\n\t }\n\n\t /*\\\n\t * Raphael.angle\n\t [ method ]\n\t **\n\t * Returns angle between two or three points\n\t > Parameters\n\t - x1 (number) x coord of first point\n\t - y1 (number) y coord of first point\n\t - x2 (number) x coord of second point\n\t - y2 (number) y coord of second point\n\t - x3 (number) #optional x coord of third point\n\t - y3 (number) #optional y coord of third point\n\t = (number) angle in degrees.\n\t \\*/\n\t R.angle = function (x1, y1, x2, y2, x3, y3) {\n\t if (x3 == null) {\n\t var x = x1 - x2,\n\t y = y1 - y2;\n\t if (!x && !y) {\n\t return 0;\n\t }\n\t return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;\n\t } else {\n\t return R.angle(x1, y1, x3, y3) - R.angle(x2, y2, x3, y3);\n\t }\n\t };\n\t /*\\\n\t * Raphael.rad\n\t [ method ]\n\t **\n\t * Transform angle to radians\n\t > Parameters\n\t - deg (number) angle in degrees\n\t = (number) angle in radians.\n\t \\*/\n\t R.rad = function (deg) {\n\t return deg % 360 * PI / 180;\n\t };\n\t /*\\\n\t * Raphael.deg\n\t [ method ]\n\t **\n\t * Transform angle to degrees\n\t > Parameters\n\t - rad (number) angle in radians\n\t = (number) angle in degrees.\n\t \\*/\n\t R.deg = function (rad) {\n\t return Math.round ((rad * 180 / PI% 360)* 1000) / 1000;\n\t };\n\t /*\\\n\t * Raphael.snapTo\n\t [ method ]\n\t **\n\t * Snaps given value to given grid.\n\t > Parameters\n\t - values (array|number) given array of values or step of the grid\n\t - value (number) value to adjust\n\t - tolerance (number) #optional tolerance for snapping. Default is `10`.\n\t = (number) adjusted value.\n\t \\*/\n\t R.snapTo = function (values, value, tolerance) {\n\t tolerance = R.is(tolerance, \"finite\") ? tolerance : 10;\n\t if (R.is(values, array)) {\n\t var i = values.length;\n\t while (i--) if (abs(values[i] - value) <= tolerance) {\n\t return values[i];\n\t }\n\t } else {\n\t values = +values;\n\t var rem = value % values;\n\t if (rem < tolerance) {\n\t return value - rem;\n\t }\n\t if (rem > values - tolerance) {\n\t return value - rem + values;\n\t }\n\t }\n\t return value;\n\t };\n\n\t /*\\\n\t * Raphael.createUUID\n\t [ method ]\n\t **\n\t * Returns RFC4122, version 4 ID\n\t \\*/\n\t var createUUID = R.createUUID = (function (uuidRegEx, uuidReplacer) {\n\t return function () {\n\t return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(uuidRegEx, uuidReplacer).toUpperCase();\n\t };\n\t })(/[xy]/g, function (c) {\n\t var r = math.random() * 16 | 0,\n\t v = c == \"x\" ? r : (r & 3 | 8);\n\t return v.toString(16);\n\t });\n\n\t /*\\\n\t * Raphael.setWindow\n\t [ method ]\n\t **\n\t * Used when you need to draw in `<iframe>`. Switched window to the iframe one.\n\t > Parameters\n\t - newwin (window) new window object\n\t \\*/\n\t R.setWindow = function (newwin) {\n\t eve(\"raphael.setWindow\", R, g.win, newwin);\n\t g.win = newwin;\n\t g.doc = g.win.document;\n\t if (R._engine.initWin) {\n\t R._engine.initWin(g.win);\n\t }\n\t };\n\t var toHex = function (color) {\n\t if (R.vml) {\n\t // http://dean.edwards.name/weblog/2009/10/convert-any-colour-value-to-hex-in-msie/\n\t var trim = /^\\s+|\\s+$/g;\n\t var bod;\n\t try {\n\t var docum = new ActiveXObject(\"htmlfile\");\n\t docum.write(\"\");\n\t docum.close();\n\t bod = docum.body;\n\t } catch(e) {\n\t bod = createPopup().document.body;\n\t }\n\t var range = bod.createTextRange();\n\t toHex = cacher(function (color) {\n\t try {\n\t bod.style.color = Str(color).replace(trim, E);\n\t var value = range.queryCommandValue(\"ForeColor\");\n\t value = ((value & 255) << 16) | (value & 65280) | ((value & 16711680) >>> 16);\n\t return \"#\" + (\"000000\" + value.toString(16)).slice(-6);\n\t } catch(e) {\n\t return \"none\";\n\t }\n\t });\n\t } else {\n\t var i = g.doc.createElement(\"i\");\n\t i.title = \"Rapha\\xebl Colour Picker\";\n\t i.style.display = \"none\";\n\t g.doc.body.appendChild(i);\n\t toHex = cacher(function (color) {\n\t i.style.color = color;\n\t return g.doc.defaultView.getComputedStyle(i, E).getPropertyValue(\"color\");\n\t });\n\t }\n\t return toHex(color);\n\t },\n\t hsbtoString = function () {\n\t return \"hsb(\" + [this.h, this.s, this.b] + \")\";\n\t },\n\t hsltoString = function () {\n\t return \"hsl(\" + [this.h, this.s, this.l] + \")\";\n\t },\n\t rgbtoString = function () {\n\t return this.hex;\n\t },\n\t prepareRGB = function (r, g, b) {\n\t if (g == null && R.is(r, \"object\") && \"r\" in r && \"g\" in r && \"b\" in r) {\n\t b = r.b;\n\t g = r.g;\n\t r = r.r;\n\t }\n\t if (g == null && R.is(r, string)) {\n\t var clr = R.getRGB(r);\n\t r = clr.r;\n\t g = clr.g;\n\t b = clr.b;\n\t }\n\t if (r > 1 || g > 1 || b > 1) {\n\t r /= 255;\n\t g /= 255;\n\t b /= 255;\n\t }\n\n\t return [r, g, b];\n\t },\n\t packageRGB = function (r, g, b, o) {\n\t r *= 255;\n\t g *= 255;\n\t b *= 255;\n\t var rgb = {\n\t r: r,\n\t g: g,\n\t b: b,\n\t hex: R.rgb(r, g, b),\n\t toString: rgbtoString\n\t };\n\t R.is(o, \"finite\") && (rgb.opacity = o);\n\t return rgb;\n\t };\n\n\t /*\\\n\t * Raphael.color\n\t [ method ]\n\t **\n\t * Parses the color string and returns object with all values for the given color.\n\t > Parameters\n\t - clr (string) color string in one of the supported formats (see @Raphael.getRGB)\n\t = (object) Combined RGB & HSB object in format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue,\n\t o hex (string) color in HTML/CSS format: #••••••,\n\t o error (boolean) `true` if string can’t be parsed,\n\t o h (number) hue,\n\t o s (number) saturation,\n\t o v (number) value (brightness),\n\t o l (number) lightness\n\t o }\n\t \\*/\n\t R.color = function (clr) {\n\t var rgb;\n\t if (R.is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"b\" in clr) {\n\t rgb = R.hsb2rgb(clr);\n\t clr.r = rgb.r;\n\t clr.g = rgb.g;\n\t clr.b = rgb.b;\n\t clr.hex = rgb.hex;\n\t } else if (R.is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"l\" in clr) {\n\t rgb = R.hsl2rgb(clr);\n\t clr.r = rgb.r;\n\t clr.g = rgb.g;\n\t clr.b = rgb.b;\n\t clr.hex = rgb.hex;\n\t } else {\n\t if (R.is(clr, \"string\")) {\n\t clr = R.getRGB(clr);\n\t }\n\t if (R.is(clr, \"object\") && \"r\" in clr && \"g\" in clr && \"b\" in clr) {\n\t rgb = R.rgb2hsl(clr);\n\t clr.h = rgb.h;\n\t clr.s = rgb.s;\n\t clr.l = rgb.l;\n\t rgb = R.rgb2hsb(clr);\n\t clr.v = rgb.b;\n\t } else {\n\t clr = {hex: \"none\"};\n\t clr.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;\n\t }\n\t }\n\t clr.toString = rgbtoString;\n\t return clr;\n\t };\n\t /*\\\n\t * Raphael.hsb2rgb\n\t [ method ]\n\t **\n\t * Converts HSB values to RGB object.\n\t > Parameters\n\t - h (number) hue\n\t - s (number) saturation\n\t - v (number) value or brightness\n\t = (object) RGB object in format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue,\n\t o hex (string) color in HTML/CSS format: #••••••\n\t o }\n\t \\*/\n\t R.hsb2rgb = function (h, s, v, o) {\n\t if (this.is(h, \"object\") && \"h\" in h && \"s\" in h && \"b\" in h) {\n\t v = h.b;\n\t s = h.s;\n\t o = h.o;\n\t h = h.h;\n\t }\n\t h *= 360;\n\t var R, G, B, X, C;\n\t h = (h % 360) / 60;\n\t C = v * s;\n\t X = C * (1 - abs(h % 2 - 1));\n\t R = G = B = v - C;\n\n\t h = ~~h;\n\t R += [C, X, 0, 0, X, C][h];\n\t G += [X, C, C, X, 0, 0][h];\n\t B += [0, 0, X, C, C, X][h];\n\t return packageRGB(R, G, B, o);\n\t };\n\t /*\\\n\t * Raphael.hsl2rgb\n\t [ method ]\n\t **\n\t * Converts HSL values to RGB object.\n\t > Parameters\n\t - h (number) hue\n\t - s (number) saturation\n\t - l (number) luminosity\n\t = (object) RGB object in format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue,\n\t o hex (string) color in HTML/CSS format: #••••••\n\t o }\n\t \\*/\n\t R.hsl2rgb = function (h, s, l, o) {\n\t if (this.is(h, \"object\") && \"h\" in h && \"s\" in h && \"l\" in h) {\n\t l = h.l;\n\t s = h.s;\n\t h = h.h;\n\t }\n\t if (h > 1 || s > 1 || l > 1) {\n\t h /= 360;\n\t s /= 100;\n\t l /= 100;\n\t }\n\t h *= 360;\n\t var R, G, B, X, C;\n\t h = (h % 360) / 60;\n\t C = 2 * s * (l < .5 ? l : 1 - l);\n\t X = C * (1 - abs(h % 2 - 1));\n\t R = G = B = l - C / 2;\n\n\t h = ~~h;\n\t R += [C, X, 0, 0, X, C][h];\n\t G += [X, C, C, X, 0, 0][h];\n\t B += [0, 0, X, C, C, X][h];\n\t return packageRGB(R, G, B, o);\n\t };\n\t /*\\\n\t * Raphael.rgb2hsb\n\t [ method ]\n\t **\n\t * Converts RGB values to HSB object.\n\t > Parameters\n\t - r (number) red\n\t - g (number) green\n\t - b (number) blue\n\t = (object) HSB object in format:\n\t o {\n\t o h (number) hue\n\t o s (number) saturation\n\t o b (number) brightness\n\t o }\n\t \\*/\n\t R.rgb2hsb = function (r, g, b) {\n\t b = prepareRGB(r, g, b);\n\t r = b[0];\n\t g = b[1];\n\t b = b[2];\n\n\t var H, S, V, C;\n\t V = mmax(r, g, b);\n\t C = V - mmin(r, g, b);\n\t H = (C == 0 ? null :\n\t V == r ? (g - b) / C :\n\t V == g ? (b - r) / C + 2 :\n\t (r - g) / C + 4\n\t );\n\t H = ((H + 360) % 6) * 60 / 360;\n\t S = C == 0 ? 0 : C / V;\n\t return {h: H, s: S, b: V, toString: hsbtoString};\n\t };\n\t /*\\\n\t * Raphael.rgb2hsl\n\t [ method ]\n\t **\n\t * Converts RGB values to HSL object.\n\t > Parameters\n\t - r (number) red\n\t - g (number) green\n\t - b (number) blue\n\t = (object) HSL object in format:\n\t o {\n\t o h (number) hue\n\t o s (number) saturation\n\t o l (number) luminosity\n\t o }\n\t \\*/\n\t R.rgb2hsl = function (r, g, b) {\n\t b = prepareRGB(r, g, b);\n\t r = b[0];\n\t g = b[1];\n\t b = b[2];\n\n\t var H, S, L, M, m, C;\n\t M = mmax(r, g, b);\n\t m = mmin(r, g, b);\n\t C = M - m;\n\t H = (C == 0 ? null :\n\t M == r ? (g - b) / C :\n\t M == g ? (b - r) / C + 2 :\n\t (r - g) / C + 4);\n\t H = ((H + 360) % 6) * 60 / 360;\n\t L = (M + m) / 2;\n\t S = (C == 0 ? 0 :\n\t L < .5 ? C / (2 * L) :\n\t C / (2 - 2 * L));\n\t return {h: H, s: S, l: L, toString: hsltoString};\n\t };\n\t R._path2string = function () {\n\t return this.join(\",\").replace(p2s, \"$1\");\n\t };\n\t function repush(array, item) {\n\t for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {\n\t return array.push(array.splice(i, 1)[0]);\n\t }\n\t }\n\t function cacher(f, scope, postprocessor) {\n\t function newf() {\n\t var arg = Array.prototype.slice.call(arguments, 0),\n\t args = arg.join(\"\\u2400\"),\n\t cache = newf.cache = newf.cache || {},\n\t count = newf.count = newf.count || [];\n\t if (cache[has](args)) {\n\t repush(count, args);\n\t return postprocessor ? postprocessor(cache[args]) : cache[args];\n\t }\n\t count.length >= 1e3 && delete cache[count.shift()];\n\t count.push(args);\n\t cache[args] = f[apply](scope, arg);\n\t return postprocessor ? postprocessor(cache[args]) : cache[args];\n\t }\n\t return newf;\n\t }\n\n\t var preload = R._preload = function (src, f) {\n\t var img = g.doc.createElement(\"img\");\n\t img.style.cssText = \"position:absolute;left:-9999em;top:-9999em\";\n\t img.onload = function () {\n\t f.call(this);\n\t this.onload = null;\n\t g.doc.body.removeChild(this);\n\t };\n\t img.onerror = function () {\n\t g.doc.body.removeChild(this);\n\t };\n\t g.doc.body.appendChild(img);\n\t img.src = src;\n\t };\n\n\t function clrToString() {\n\t return this.hex;\n\t }\n\n\t /*\\\n\t * Raphael.getRGB\n\t [ method ]\n\t **\n\t * Parses colour string as RGB object\n\t > Parameters\n\t - colour (string) colour string in one of formats:\n\t # \n\t = (object) RGB object in format:\n\t o {\n\t o r (number) red,\n\t o g (number) green,\n\t o b (number) blue\n\t o hex (string) color in HTML/CSS format: #••••••,\n\t o error (boolean) true if string can’t be parsed\n\t o }\n\t \\*/\n\t R.getRGB = cacher(function (colour) {\n\t if (!colour || !!((colour = Str(colour)).indexOf(\"-\") + 1)) {\n\t return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: clrToString};\n\t }\n\t if (colour == \"none\") {\n\t return {r: -1, g: -1, b: -1, hex: \"none\", toString: clrToString};\n\t }\n\t !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == \"#\") && (colour = toHex(colour));\n\t var res,\n\t red,\n\t green,\n\t blue,\n\t opacity,\n\t t,\n\t values,\n\t rgb = colour.match(colourRegExp);\n\t if (rgb) {\n\t if (rgb[2]) {\n\t blue = toInt(rgb[2].substring(5), 16);\n\t green = toInt(rgb[2].substring(3, 5), 16);\n\t red = toInt(rgb[2].substring(1, 3), 16);\n\t }\n\t if (rgb[3]) {\n\t blue = toInt((t = rgb[3].charAt(3)) + t, 16);\n\t green = toInt((t = rgb[3].charAt(2)) + t, 16);\n\t red = toInt((t = rgb[3].charAt(1)) + t, 16);\n\t }\n\t if (rgb[4]) {\n\t values = rgb[4][split](commaSpaces);\n\t red = toFloat(values[0]);\n\t values[0].slice(-1) == \"%\" && (red *= 2.55);\n\t green = toFloat(values[1]);\n\t values[1].slice(-1) == \"%\" && (green *= 2.55);\n\t blue = toFloat(values[2]);\n\t values[2].slice(-1) == \"%\" && (blue *= 2.55);\n\t rgb[1].toLowerCase().slice(0, 4) == \"rgba\" && (opacity = toFloat(values[3]));\n\t values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n\t }\n\t if (rgb[5]) {\n\t values = rgb[5][split](commaSpaces);\n\t red = toFloat(values[0]);\n\t values[0].slice(-1) == \"%\" && (red *= 2.55);\n\t green = toFloat(values[1]);\n\t values[1].slice(-1) == \"%\" && (green *= 2.55);\n\t blue = toFloat(values[2]);\n\t values[2].slice(-1) == \"%\" && (blue *= 2.55);\n\t (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n\t rgb[1].toLowerCase().slice(0, 4) == \"hsba\" && (opacity = toFloat(values[3]));\n\t values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n\t return R.hsb2rgb(red, green, blue, opacity);\n\t }\n\t if (rgb[6]) {\n\t values = rgb[6][split](commaSpaces);\n\t red = toFloat(values[0]);\n\t values[0].slice(-1) == \"%\" && (red *= 2.55);\n\t green = toFloat(values[1]);\n\t values[1].slice(-1) == \"%\" && (green *= 2.55);\n\t blue = toFloat(values[2]);\n\t values[2].slice(-1) == \"%\" && (blue *= 2.55);\n\t (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n\t rgb[1].toLowerCase().slice(0, 4) == \"hsla\" && (opacity = toFloat(values[3]));\n\t values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n\t return R.hsl2rgb(red, green, blue, opacity);\n\t }\n\t rgb = {r: red, g: green, b: blue, toString: clrToString};\n\t rgb.hex = \"#\" + (16777216 | blue | (green << 8) | (red << 16)).toString(16).slice(1);\n\t R.is(opacity, \"finite\") && (rgb.opacity = opacity);\n\t return rgb;\n\t }\n\t return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: clrToString};\n\t }, R);\n\t /*\\\n\t * Raphael.hsb\n\t [ method ]\n\t **\n\t * Converts HSB values to hex representation of the colour.\n\t > Parameters\n\t - h (number) hue\n\t - s (number) saturation\n\t - b (number) value or brightness\n\t = (string) hex representation of the colour.\n\t \\*/\n\t R.hsb = cacher(function (h, s, b) {\n\t return R.hsb2rgb(h, s, b).hex;\n\t });\n\t /*\\\n\t * Raphael.hsl\n\t [ method ]\n\t **\n\t * Converts HSL values to hex representation of the colour.\n\t > Parameters\n\t - h (number) hue\n\t - s (number) saturation\n\t - l (number) luminosity\n\t = (string) hex representation of the colour.\n\t \\*/\n\t R.hsl = cacher(function (h, s, l) {\n\t return R.hsl2rgb(h, s, l).hex;\n\t });\n\t /*\\\n\t * Raphael.rgb\n\t [ method ]\n\t **\n\t * Converts RGB values to hex representation of the colour.\n\t > Parameters\n\t - r (number) red\n\t - g (number) green\n\t - b (number) blue\n\t = (string) hex representation of the colour.\n\t \\*/\n\t R.rgb = cacher(function (r, g, b) {\n\t function round(x) { return (x + 0.5) | 0; }\n\t return \"#\" + (16777216 | round(b) | (round(g) << 8) | (round(r) << 16)).toString(16).slice(1);\n\t });\n\t /*\\\n\t * Raphael.getColor\n\t [ method ]\n\t **\n\t * On each call returns next colour in the spectrum. To reset it back to red call @Raphael.getColor.reset\n\t > Parameters\n\t - value (number) #optional brightness, default is `0.75`\n\t = (string) hex representation of the colour.\n\t \\*/\n\t R.getColor = function (value) {\n\t var start = this.getColor.start = this.getColor.start || {h: 0, s: 1, b: value || .75},\n\t rgb = this.hsb2rgb(start.h, start.s, start.b);\n\t start.h += .075;\n\t if (start.h > 1) {\n\t start.h = 0;\n\t start.s -= .2;\n\t start.s <= 0 && (this.getColor.start = {h: 0, s: 1, b: start.b});\n\t }\n\t return rgb.hex;\n\t };\n\t /*\\\n\t * Raphael.getColor.reset\n\t [ method ]\n\t **\n\t * Resets spectrum position for @Raphael.getColor back to red.\n\t \\*/\n\t R.getColor.reset = function () {\n\t delete this.start;\n\t };\n\n\t // http://schepers.cc/getting-to-the-point\n\t function catmullRom2bezier(crp, z) {\n\t var d = [];\n\t for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n\t var p = [\n\t {x: +crp[i - 2], y: +crp[i - 1]},\n\t {x: +crp[i], y: +crp[i + 1]},\n\t {x: +crp[i + 2], y: +crp[i + 3]},\n\t {x: +crp[i + 4], y: +crp[i + 5]}\n\t ];\n\t if (z) {\n\t if (!i) {\n\t p[0] = {x: +crp[iLen - 2], y: +crp[iLen - 1]};\n\t } else if (iLen - 4 == i) {\n\t p[3] = {x: +crp[0], y: +crp[1]};\n\t } else if (iLen - 2 == i) {\n\t p[2] = {x: +crp[0], y: +crp[1]};\n\t p[3] = {x: +crp[2], y: +crp[3]};\n\t }\n\t } else {\n\t if (iLen - 4 == i) {\n\t p[3] = p[2];\n\t } else if (!i) {\n\t p[0] = {x: +crp[i], y: +crp[i + 1]};\n\t }\n\t }\n\t d.push([\"C\",\n\t (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n\t (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n\t (p[1].x + 6 * p[2].x - p[3].x) / 6,\n\t (p[1].y + 6*p[2].y - p[3].y) / 6,\n\t p[2].x,\n\t p[2].y\n\t ]);\n\t }\n\n\t return d;\n\t }\n\t /*\\\n\t * Raphael.parsePathString\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Parses given path string into an array of arrays of path segments.\n\t > Parameters\n\t - pathString (string|array) path string or array of segments (in the last case it will be returned straight away)\n\t = (array) array of segments.\n\t \\*/\n\t R.parsePathString = function (pathString) {\n\t if (!pathString) {\n\t return null;\n\t }\n\t var pth = paths(pathString);\n\t if (pth.arr) {\n\t return pathClone(pth.arr);\n\t }\n\n\t var paramCounts = {a: 7, c: 6, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, z: 0},\n\t data = [];\n\t if (R.is(pathString, array) && R.is(pathString[0], array)) { // rough assumption\n\t data = pathClone(pathString);\n\t }\n\t if (!data.length) {\n\t Str(pathString).replace(pathCommand, function (a, b, c) {\n\t var params = [],\n\t name = b.toLowerCase();\n\t c.replace(pathValues, function (a, b) {\n\t b && params.push(+b);\n\t });\n\t if (name == \"m\" && params.length > 2) {\n\t data.push([b][concat](params.splice(0, 2)));\n\t name = \"l\";\n\t b = b == \"m\" ? \"l\" : \"L\";\n\t }\n\t if (name == \"r\") {\n\t data.push([b][concat](params));\n\t } else while (params.length >= paramCounts[name]) {\n\t data.push([b][concat](params.splice(0, paramCounts[name])));\n\t if (!paramCounts[name]) {\n\t break;\n\t }\n\t }\n\t });\n\t }\n\t data.toString = R._path2string;\n\t pth.arr = pathClone(data);\n\t return data;\n\t };\n\t /*\\\n\t * Raphael.parseTransformString\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Parses given path string into an array of transformations.\n\t > Parameters\n\t - TString (string|array) transform string or array of transformations (in the last case it will be returned straight away)\n\t = (array) array of transformations.\n\t \\*/\n\t R.parseTransformString = cacher(function (TString) {\n\t if (!TString) {\n\t return null;\n\t }\n\t var paramCounts = {r: 3, s: 4, t: 2, m: 6},\n\t data = [];\n\t if (R.is(TString, array) && R.is(TString[0], array)) { // rough assumption\n\t data = pathClone(TString);\n\t }\n\t if (!data.length) {\n\t Str(TString).replace(tCommand, function (a, b, c) {\n\t var params = [],\n\t name = lowerCase.call(b);\n\t c.replace(pathValues, function (a, b) {\n\t b && params.push(+b);\n\t });\n\t data.push([b][concat](params));\n\t });\n\t }\n\t data.toString = R._path2string;\n\t return data;\n\t });\n\t // PATHS\n\t var paths = function (ps) {\n\t var p = paths.ps = paths.ps || {};\n\t if (p[ps]) {\n\t p[ps].sleep = 100;\n\t } else {\n\t p[ps] = {\n\t sleep: 100\n\t };\n\t }\n\t setTimeout(function () {\n\t for (var key in p) if (p[has](key) && key != ps) {\n\t p[key].sleep--;\n\t !p[key].sleep && delete p[key];\n\t }\n\t });\n\t return p[ps];\n\t };\n\t /*\\\n\t * Raphael.findDotsAtSegment\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Find dot coordinates on the given cubic bezier curve at the given t.\n\t > Parameters\n\t - p1x (number) x of the first point of the curve\n\t - p1y (number) y of the first point of the curve\n\t - c1x (number) x of the first anchor of the curve\n\t - c1y (number) y of the first anchor of the curve\n\t - c2x (number) x of the second anchor of the curve\n\t - c2y (number) y of the second anchor of the curve\n\t - p2x (number) x of the second point of the curve\n\t - p2y (number) y of the second point of the curve\n\t - t (number) position on the curve (0..1)\n\t = (object) point information in format:\n\t o {\n\t o x: (number) x coordinate of the point\n\t o y: (number) y coordinate of the point\n\t o m: {\n\t o x: (number) x coordinate of the left anchor\n\t o y: (number) y coordinate of the left anchor\n\t o }\n\t o n: {\n\t o x: (number) x coordinate of the right anchor\n\t o y: (number) y coordinate of the right anchor\n\t o }\n\t o start: {\n\t o x: (number) x coordinate of the start of the curve\n\t o y: (number) y coordinate of the start of the curve\n\t o }\n\t o end: {\n\t o x: (number) x coordinate of the end of the curve\n\t o y: (number) y coordinate of the end of the curve\n\t o }\n\t o alpha: (number) angle of the curve derivative at the point\n\t o }\n\t \\*/\n\t R.findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n\t var t1 = 1 - t,\n\t t13 = pow(t1, 3),\n\t t12 = pow(t1, 2),\n\t t2 = t * t,\n\t t3 = t2 * t,\n\t x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,\n\t y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,\n\t mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),\n\t my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),\n\t nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),\n\t ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),\n\t ax = t1 * p1x + t * c1x,\n\t ay = t1 * p1y + t * c1y,\n\t cx = t1 * c2x + t * p2x,\n\t cy = t1 * c2y + t * p2y,\n\t alpha = (90 - math.atan2(mx - nx, my - ny) * 180 / PI);\n\t (mx > nx || my < ny) && (alpha += 180);\n\t return {\n\t x: x,\n\t y: y,\n\t m: {x: mx, y: my},\n\t n: {x: nx, y: ny},\n\t start: {x: ax, y: ay},\n\t end: {x: cx, y: cy},\n\t alpha: alpha\n\t };\n\t };\n\t /*\\\n\t * Raphael.bezierBBox\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Return bounding box of a given cubic bezier curve\n\t > Parameters\n\t - p1x (number) x of the first point of the curve\n\t - p1y (number) y of the first point of the curve\n\t - c1x (number) x of the first anchor of the curve\n\t - c1y (number) y of the first anchor of the curve\n\t - c2x (number) x of the second anchor of the curve\n\t - c2y (number) y of the second anchor of the curve\n\t - p2x (number) x of the second point of the curve\n\t - p2y (number) y of the second point of the curve\n\t * or\n\t - bez (array) array of six points for bezier curve\n\t = (object) point information in format:\n\t o {\n\t o min: {\n\t o x: (number) x coordinate of the left point\n\t o y: (number) y coordinate of the top point\n\t o }\n\t o max: {\n\t o x: (number) x coordinate of the right point\n\t o y: (number) y coordinate of the bottom point\n\t o }\n\t o }\n\t \\*/\n\t R.bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n\t if (!R.is(p1x, \"array\")) {\n\t p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n\t }\n\t var bbox = curveDim.apply(null, p1x);\n\t return {\n\t x: bbox.min.x,\n\t y: bbox.min.y,\n\t x2: bbox.max.x,\n\t y2: bbox.max.y,\n\t width: bbox.max.x - bbox.min.x,\n\t height: bbox.max.y - bbox.min.y\n\t };\n\t };\n\t /*\\\n\t * Raphael.isPointInsideBBox\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns `true` if given point is inside bounding boxes.\n\t > Parameters\n\t - bbox (string) bounding box\n\t - x (string) x coordinate of the point\n\t - y (string) y coordinate of the point\n\t = (boolean) `true` if point inside\n\t \\*/\n\t R.isPointInsideBBox = function (bbox, x, y) {\n\t return x >= bbox.x && x <= bbox.x2 && y >= bbox.y && y <= bbox.y2;\n\t };\n\t /*\\\n\t * Raphael.isBBoxIntersect\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns `true` if two bounding boxes intersect\n\t > Parameters\n\t - bbox1 (string) first bounding box\n\t - bbox2 (string) second bounding box\n\t = (boolean) `true` if they intersect\n\t \\*/\n\t R.isBBoxIntersect = function (bbox1, bbox2) {\n\t var i = R.isPointInsideBBox;\n\t return i(bbox2, bbox1.x, bbox1.y)\n\t || i(bbox2, bbox1.x2, bbox1.y)\n\t || i(bbox2, bbox1.x, bbox1.y2)\n\t || i(bbox2, bbox1.x2, bbox1.y2)\n\t || i(bbox1, bbox2.x, bbox2.y)\n\t || i(bbox1, bbox2.x2, bbox2.y)\n\t || i(bbox1, bbox2.x, bbox2.y2)\n\t || i(bbox1, bbox2.x2, bbox2.y2)\n\t || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)\n\t && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n\t };\n\t function base3(t, p1, p2, p3, p4) {\n\t var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4,\n\t t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n\t return t * t2 - 3 * p1 + 3 * p2;\n\t }\n\t function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {\n\t if (z == null) {\n\t z = 1;\n\t }\n\t z = z > 1 ? 1 : z < 0 ? 0 : z;\n\t var z2 = z / 2,\n\t n = 12,\n\t Tvalues = [-0.1252,0.1252,-0.3678,0.3678,-0.5873,0.5873,-0.7699,0.7699,-0.9041,0.9041,-0.9816,0.9816],\n\t Cvalues = [0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],\n\t sum = 0;\n\t for (var i = 0; i < n; i++) {\n\t var ct = z2 * Tvalues[i] + z2,\n\t xbase = base3(ct, x1, x2, x3, x4),\n\t ybase = base3(ct, y1, y2, y3, y4),\n\t comb = xbase * xbase + ybase * ybase;\n\t sum += Cvalues[i] * math.sqrt(comb);\n\t }\n\t return z2 * sum;\n\t }\n\t function getTatLen(x1, y1, x2, y2, x3, y3, x4, y4, ll) {\n\t if (ll < 0 || bezlen(x1, y1, x2, y2, x3, y3, x4, y4) < ll) {\n\t return;\n\t }\n\t var t = 1,\n\t step = t / 2,\n\t t2 = t - step,\n\t l,\n\t e = .01;\n\t l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n\t while (abs(l - ll) > e) {\n\t step /= 2;\n\t t2 += (l < ll ? 1 : -1) * step;\n\t l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n\t }\n\t return t2;\n\t }\n\t function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n\t if (\n\t mmax(x1, x2) < mmin(x3, x4) ||\n\t mmin(x1, x2) > mmax(x3, x4) ||\n\t mmax(y1, y2) < mmin(y3, y4) ||\n\t mmin(y1, y2) > mmax(y3, y4)\n\t ) {\n\t return;\n\t }\n\t var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4),\n\t ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4),\n\t denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n\n\t if (!denominator) {\n\t return;\n\t }\n\t var px = nx / denominator,\n\t py = ny / denominator,\n\t px2 = +px.toFixed(2),\n\t py2 = +py.toFixed(2);\n\t if (\n\t px2 < +mmin(x1, x2).toFixed(2) ||\n\t px2 > +mmax(x1, x2).toFixed(2) ||\n\t px2 < +mmin(x3, x4).toFixed(2) ||\n\t px2 > +mmax(x3, x4).toFixed(2) ||\n\t py2 < +mmin(y1, y2).toFixed(2) ||\n\t py2 > +mmax(y1, y2).toFixed(2) ||\n\t py2 < +mmin(y3, y4).toFixed(2) ||\n\t py2 > +mmax(y3, y4).toFixed(2)\n\t ) {\n\t return;\n\t }\n\t return {x: px, y: py};\n\t }\n\t function inter(bez1, bez2) {\n\t return interHelper(bez1, bez2);\n\t }\n\t function interCount(bez1, bez2) {\n\t return interHelper(bez1, bez2, 1);\n\t }\n\t function interHelper(bez1, bez2, justCount) {\n\t var bbox1 = R.bezierBBox(bez1),\n\t bbox2 = R.bezierBBox(bez2);\n\t if (!R.isBBoxIntersect(bbox1, bbox2)) {\n\t return justCount ? 0 : [];\n\t }\n\t var l1 = bezlen.apply(0, bez1),\n\t l2 = bezlen.apply(0, bez2),\n\t n1 = mmax(~~(l1 / 5), 1),\n\t n2 = mmax(~~(l2 / 5), 1),\n\t dots1 = [],\n\t dots2 = [],\n\t xy = {},\n\t res = justCount ? 0 : [];\n\t for (var i = 0; i < n1 + 1; i++) {\n\t var p = R.findDotsAtSegment.apply(R, bez1.concat(i / n1));\n\t dots1.push({x: p.x, y: p.y, t: i / n1});\n\t }\n\t for (i = 0; i < n2 + 1; i++) {\n\t p = R.findDotsAtSegment.apply(R, bez2.concat(i / n2));\n\t dots2.push({x: p.x, y: p.y, t: i / n2});\n\t }\n\t for (i = 0; i < n1; i++) {\n\t for (var j = 0; j < n2; j++) {\n\t var di = dots1[i],\n\t di1 = dots1[i + 1],\n\t dj = dots2[j],\n\t dj1 = dots2[j + 1],\n\t ci = abs(di1.x - di.x) < .001 ? \"y\" : \"x\",\n\t cj = abs(dj1.x - dj.x) < .001 ? \"y\" : \"x\",\n\t is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n\t if (is) {\n\t if (xy[is.x.toFixed(4)] == is.y.toFixed(4)) {\n\t continue;\n\t }\n\t xy[is.x.toFixed(4)] = is.y.toFixed(4);\n\t var t1 = di.t + abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t),\n\t t2 = dj.t + abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n\t if (t1 >= 0 && t1 <= 1.001 && t2 >= 0 && t2 <= 1.001) {\n\t if (justCount) {\n\t res++;\n\t } else {\n\t res.push({\n\t x: is.x,\n\t y: is.y,\n\t t1: mmin(t1, 1),\n\t t2: mmin(t2, 1)\n\t });\n\t }\n\t }\n\t }\n\t }\n\t }\n\t return res;\n\t }\n\t /*\\\n\t * Raphael.pathIntersection\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Finds intersections of two paths\n\t > Parameters\n\t - path1 (string) path string\n\t - path2 (string) path string\n\t = (array) dots of intersection\n\t o [\n\t o {\n\t o x: (number) x coordinate of the point\n\t o y: (number) y coordinate of the point\n\t o t1: (number) t value for segment of path1\n\t o t2: (number) t value for segment of path2\n\t o segment1: (number) order number for segment of path1\n\t o segment2: (number) order number for segment of path2\n\t o bez1: (array) eight coordinates representing beziér curve for the segment of path1\n\t o bez2: (array) eight coordinates representing beziér curve for the segment of path2\n\t o }\n\t o ]\n\t \\*/\n\t R.pathIntersection = function (path1, path2) {\n\t return interPathHelper(path1, path2);\n\t };\n\t R.pathIntersectionNumber = function (path1, path2) {\n\t return interPathHelper(path1, path2, 1);\n\t };\n\t function interPathHelper(path1, path2, justCount) {\n\t path1 = R._path2curve(path1);\n\t path2 = R._path2curve(path2);\n\t var x1, y1, x2, y2, x1m, y1m, x2m, y2m, bez1, bez2,\n\t res = justCount ? 0 : [];\n\t for (var i = 0, ii = path1.length; i < ii; i++) {\n\t var pi = path1[i];\n\t if (pi[0] == \"M\") {\n\t x1 = x1m = pi[1];\n\t y1 = y1m = pi[2];\n\t } else {\n\t if (pi[0] == \"C\") {\n\t bez1 = [x1, y1].concat(pi.slice(1));\n\t x1 = bez1[6];\n\t y1 = bez1[7];\n\t } else {\n\t bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n\t x1 = x1m;\n\t y1 = y1m;\n\t }\n\t for (var j = 0, jj = path2.length; j < jj; j++) {\n\t var pj = path2[j];\n\t if (pj[0] == \"M\") {\n\t x2 = x2m = pj[1];\n\t y2 = y2m = pj[2];\n\t } else {\n\t if (pj[0] == \"C\") {\n\t bez2 = [x2, y2].concat(pj.slice(1));\n\t x2 = bez2[6];\n\t y2 = bez2[7];\n\t } else {\n\t bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n\t x2 = x2m;\n\t y2 = y2m;\n\t }\n\t var intr = interHelper(bez1, bez2, justCount);\n\t if (justCount) {\n\t res += intr;\n\t } else {\n\t for (var k = 0, kk = intr.length; k < kk; k++) {\n\t intr[k].segment1 = i;\n\t intr[k].segment2 = j;\n\t intr[k].bez1 = bez1;\n\t intr[k].bez2 = bez2;\n\t }\n\t res = res.concat(intr);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t return res;\n\t }\n\t /*\\\n\t * Raphael.isPointInsidePath\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns `true` if given point is inside a given closed path.\n\t > Parameters\n\t - path (string) path string\n\t - x (number) x of the point\n\t - y (number) y of the point\n\t = (boolean) true, if point is inside the path\n\t \\*/\n\t R.isPointInsidePath = function (path, x, y) {\n\t var bbox = R.pathBBox(path);\n\t return R.isPointInsideBBox(bbox, x, y) &&\n\t interPathHelper(path, [[\"M\", x, y], [\"H\", bbox.x2 + 10]], 1) % 2 == 1;\n\t };\n\t R._removedFactory = function (methodname) {\n\t return function () {\n\t eve(\"raphael.log\", null, \"Rapha\\xebl: you are calling to method \\u201c\" + methodname + \"\\u201d of removed object\", methodname);\n\t };\n\t };\n\t /*\\\n\t * Raphael.pathBBox\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Return bounding box of a given path\n\t > Parameters\n\t - path (string) path string\n\t = (object) bounding box\n\t o {\n\t o x: (number) x coordinate of the left top point of the box\n\t o y: (number) y coordinate of the left top point of the box\n\t o x2: (number) x coordinate of the right bottom point of the box\n\t o y2: (number) y coordinate of the right bottom point of the box\n\t o width: (number) width of the box\n\t o height: (number) height of the box\n\t o cx: (number) x coordinate of the center of the box\n\t o cy: (number) y coordinate of the center of the box\n\t o }\n\t \\*/\n\t var pathDimensions = R.pathBBox = function (path) {\n\t var pth = paths(path);\n\t if (pth.bbox) {\n\t return clone(pth.bbox);\n\t }\n\t if (!path) {\n\t return {x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0};\n\t }\n\t path = path2curve(path);\n\t var x = 0,\n\t y = 0,\n\t X = [],\n\t Y = [],\n\t p;\n\t for (var i = 0, ii = path.length; i < ii; i++) {\n\t p = path[i];\n\t if (p[0] == \"M\") {\n\t x = p[1];\n\t y = p[2];\n\t X.push(x);\n\t Y.push(y);\n\t } else {\n\t var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n\t X = X[concat](dim.min.x, dim.max.x);\n\t Y = Y[concat](dim.min.y, dim.max.y);\n\t x = p[5];\n\t y = p[6];\n\t }\n\t }\n\t var xmin = mmin[apply](0, X),\n\t ymin = mmin[apply](0, Y),\n\t xmax = mmax[apply](0, X),\n\t ymax = mmax[apply](0, Y),\n\t width = xmax - xmin,\n\t height = ymax - ymin,\n\t bb = {\n\t x: xmin,\n\t y: ymin,\n\t x2: xmax,\n\t y2: ymax,\n\t width: width,\n\t height: height,\n\t cx: xmin + width / 2,\n\t cy: ymin + height / 2\n\t };\n\t pth.bbox = clone(bb);\n\t return bb;\n\t },\n\t pathClone = function (pathArray) {\n\t var res = clone(pathArray);\n\t res.toString = R._path2string;\n\t return res;\n\t },\n\t pathToRelative = R._pathToRelative = function (pathArray) {\n\t var pth = paths(pathArray);\n\t if (pth.rel) {\n\t return pathClone(pth.rel);\n\t }\n\t if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption\n\t pathArray = R.parsePathString(pathArray);\n\t }\n\t var res = [],\n\t x = 0,\n\t y = 0,\n\t mx = 0,\n\t my = 0,\n\t start = 0;\n\t if (pathArray[0][0] == \"M\") {\n\t x = pathArray[0][1];\n\t y = pathArray[0][2];\n\t mx = x;\n\t my = y;\n\t start++;\n\t res.push([\"M\", x, y]);\n\t }\n\t for (var i = start, ii = pathArray.length; i < ii; i++) {\n\t var r = res[i] = [],\n\t pa = pathArray[i];\n\t if (pa[0] != lowerCase.call(pa[0])) {\n\t r[0] = lowerCase.call(pa[0]);\n\t switch (r[0]) {\n\t case \"a\":\n\t r[1] = pa[1];\n\t r[2] = pa[2];\n\t r[3] = pa[3];\n\t r[4] = pa[4];\n\t r[5] = pa[5];\n\t r[6] = +(pa[6] - x).toFixed(3);\n\t r[7] = +(pa[7] - y).toFixed(3);\n\t break;\n\t case \"v\":\n\t r[1] = +(pa[1] - y).toFixed(3);\n\t break;\n\t case \"m\":\n\t mx = pa[1];\n\t my = pa[2];\n\t default:\n\t for (var j = 1, jj = pa.length; j < jj; j++) {\n\t r[j] = +(pa[j] - ((j % 2) ? x : y)).toFixed(3);\n\t }\n\t }\n\t } else {\n\t r = res[i] = [];\n\t if (pa[0] == \"m\") {\n\t mx = pa[1] + x;\n\t my = pa[2] + y;\n\t }\n\t for (var k = 0, kk = pa.length; k < kk; k++) {\n\t res[i][k] = pa[k];\n\t }\n\t }\n\t var len = res[i].length;\n\t switch (res[i][0]) {\n\t case \"z\":\n\t x = mx;\n\t y = my;\n\t break;\n\t case \"h\":\n\t x += +res[i][len - 1];\n\t break;\n\t case \"v\":\n\t y += +res[i][len - 1];\n\t break;\n\t default:\n\t x += +res[i][len - 2];\n\t y += +res[i][len - 1];\n\t }\n\t }\n\t res.toString = R._path2string;\n\t pth.rel = pathClone(res);\n\t return res;\n\t },\n\t pathToAbsolute = R._pathToAbsolute = function (pathArray) {\n\t var pth = paths(pathArray);\n\t if (pth.abs) {\n\t return pathClone(pth.abs);\n\t }\n\t if (!R.is(pathArray, array) || !R.is(pathArray && pathArray[0], array)) { // rough assumption\n\t pathArray = R.parsePathString(pathArray);\n\t }\n\t if (!pathArray || !pathArray.length) {\n\t return [[\"M\", 0, 0]];\n\t }\n\t var res = [],\n\t x = 0,\n\t y = 0,\n\t mx = 0,\n\t my = 0,\n\t start = 0;\n\t if (pathArray[0][0] == \"M\") {\n\t x = +pathArray[0][1];\n\t y = +pathArray[0][2];\n\t mx = x;\n\t my = y;\n\t start++;\n\t res[0] = [\"M\", x, y];\n\t }\n\t var crz = pathArray.length == 3 && pathArray[0][0] == \"M\" && pathArray[1][0].toUpperCase() == \"R\" && pathArray[2][0].toUpperCase() == \"Z\";\n\t for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {\n\t res.push(r = []);\n\t pa = pathArray[i];\n\t if (pa[0] != upperCase.call(pa[0])) {\n\t r[0] = upperCase.call(pa[0]);\n\t switch (r[0]) {\n\t case \"A\":\n\t r[1] = pa[1];\n\t r[2] = pa[2];\n\t r[3] = pa[3];\n\t r[4] = pa[4];\n\t r[5] = pa[5];\n\t r[6] = +(pa[6] + x);\n\t r[7] = +(pa[7] + y);\n\t break;\n\t case \"V\":\n\t r[1] = +pa[1] + y;\n\t break;\n\t case \"H\":\n\t r[1] = +pa[1] + x;\n\t break;\n\t case \"R\":\n\t var dots = [x, y][concat](pa.slice(1));\n\t for (var j = 2, jj = dots.length; j < jj; j++) {\n\t dots[j] = +dots[j] + x;\n\t dots[++j] = +dots[j] + y;\n\t }\n\t res.pop();\n\t res = res[concat](catmullRom2bezier(dots, crz));\n\t break;\n\t case \"M\":\n\t mx = +pa[1] + x;\n\t my = +pa[2] + y;\n\t default:\n\t for (j = 1, jj = pa.length; j < jj; j++) {\n\t r[j] = +pa[j] + ((j % 2) ? x : y);\n\t }\n\t }\n\t } else if (pa[0] == \"R\") {\n\t dots = [x, y][concat](pa.slice(1));\n\t res.pop();\n\t res = res[concat](catmullRom2bezier(dots, crz));\n\t r = [\"R\"][concat](pa.slice(-2));\n\t } else {\n\t for (var k = 0, kk = pa.length; k < kk; k++) {\n\t r[k] = pa[k];\n\t }\n\t }\n\t switch (r[0]) {\n\t case \"Z\":\n\t x = mx;\n\t y = my;\n\t break;\n\t case \"H\":\n\t x = r[1];\n\t break;\n\t case \"V\":\n\t y = r[1];\n\t break;\n\t case \"M\":\n\t mx = r[r.length - 2];\n\t my = r[r.length - 1];\n\t default:\n\t x = r[r.length - 2];\n\t y = r[r.length - 1];\n\t }\n\t }\n\t res.toString = R._path2string;\n\t pth.abs = pathClone(res);\n\t return res;\n\t },\n\t l2c = function (x1, y1, x2, y2) {\n\t return [x1, y1, x2, y2, x2, y2];\n\t },\n\t q2c = function (x1, y1, ax, ay, x2, y2) {\n\t var _13 = 1 / 3,\n\t _23 = 2 / 3;\n\t return [\n\t _13 * x1 + _23 * ax,\n\t _13 * y1 + _23 * ay,\n\t _13 * x2 + _23 * ax,\n\t _13 * y2 + _23 * ay,\n\t x2,\n\t y2\n\t ];\n\t },\n\t a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n\t // for more information of where this math came from visit:\n\t // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n\t var _120 = PI * 120 / 180,\n\t rad = PI / 180 * (+angle || 0),\n\t res = [],\n\t xy,\n\t rotate = cacher(function (x, y, rad) {\n\t var X = x * math.cos(rad) - y * math.sin(rad),\n\t Y = x * math.sin(rad) + y * math.cos(rad);\n\t return {x: X, y: Y};\n\t });\n\t if (!recursive) {\n\t xy = rotate(x1, y1, -rad);\n\t x1 = xy.x;\n\t y1 = xy.y;\n\t xy = rotate(x2, y2, -rad);\n\t x2 = xy.x;\n\t y2 = xy.y;\n\t var cos = math.cos(PI / 180 * angle),\n\t sin = math.sin(PI / 180 * angle),\n\t x = (x1 - x2) / 2,\n\t y = (y1 - y2) / 2;\n\t var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n\t if (h > 1) {\n\t h = math.sqrt(h);\n\t rx = h * rx;\n\t ry = h * ry;\n\t }\n\t var rx2 = rx * rx,\n\t ry2 = ry * ry,\n\t k = (large_arc_flag == sweep_flag ? -1 : 1) *\n\t math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),\n\t cx = k * rx * y / ry + (x1 + x2) / 2,\n\t cy = k * -ry * x / rx + (y1 + y2) / 2,\n\t f1 = math.asin(((y1 - cy) / ry).toFixed(9)),\n\t f2 = math.asin(((y2 - cy) / ry).toFixed(9));\n\n\t f1 = x1 < cx ? PI - f1 : f1;\n\t f2 = x2 < cx ? PI - f2 : f2;\n\t f1 < 0 && (f1 = PI * 2 + f1);\n\t f2 < 0 && (f2 = PI * 2 + f2);\n\t if (sweep_flag && f1 > f2) {\n\t f1 = f1 - PI * 2;\n\t }\n\t if (!sweep_flag && f2 > f1) {\n\t f2 = f2 - PI * 2;\n\t }\n\t } else {\n\t f1 = recursive[0];\n\t f2 = recursive[1];\n\t cx = recursive[2];\n\t cy = recursive[3];\n\t }\n\t var df = f2 - f1;\n\t if (abs(df) > _120) {\n\t var f2old = f2,\n\t x2old = x2,\n\t y2old = y2;\n\t f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n\t x2 = cx + rx * math.cos(f2);\n\t y2 = cy + ry * math.sin(f2);\n\t res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n\t }\n\t df = f2 - f1;\n\t var c1 = math.cos(f1),\n\t s1 = math.sin(f1),\n\t c2 = math.cos(f2),\n\t s2 = math.sin(f2),\n\t t = math.tan(df / 4),\n\t hx = 4 / 3 * rx * t,\n\t hy = 4 / 3 * ry * t,\n\t m1 = [x1, y1],\n\t m2 = [x1 + hx * s1, y1 - hy * c1],\n\t m3 = [x2 + hx * s2, y2 - hy * c2],\n\t m4 = [x2, y2];\n\t m2[0] = 2 * m1[0] - m2[0];\n\t m2[1] = 2 * m1[1] - m2[1];\n\t if (recursive) {\n\t return [m2, m3, m4][concat](res);\n\t } else {\n\t res = [m2, m3, m4][concat](res).join()[split](\",\");\n\t var newres = [];\n\t for (var i = 0, ii = res.length; i < ii; i++) {\n\t newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n\t }\n\t return newres;\n\t }\n\t },\n\t findDotAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n\t var t1 = 1 - t;\n\t return {\n\t x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,\n\t y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y\n\t };\n\t },\n\t curveDim = cacher(function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n\t var a = (c2x - 2 * c1x + p1x) - (p2x - 2 * c2x + c1x),\n\t b = 2 * (c1x - p1x) - 2 * (c2x - c1x),\n\t c = p1x - c1x,\n\t t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a,\n\t t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a,\n\t y = [p1y, p2y],\n\t x = [p1x, p2x],\n\t dot;\n\t abs(t1) > \"1e12\" && (t1 = .5);\n\t abs(t2) > \"1e12\" && (t2 = .5);\n\t if (t1 > 0 && t1 < 1) {\n\t dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);\n\t x.push(dot.x);\n\t y.push(dot.y);\n\t }\n\t if (t2 > 0 && t2 < 1) {\n\t dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);\n\t x.push(dot.x);\n\t y.push(dot.y);\n\t }\n\t a = (c2y - 2 * c1y + p1y) - (p2y - 2 * c2y + c1y);\n\t b = 2 * (c1y - p1y) - 2 * (c2y - c1y);\n\t c = p1y - c1y;\n\t t1 = (-b + math.sqrt(b * b - 4 * a * c)) / 2 / a;\n\t t2 = (-b - math.sqrt(b * b - 4 * a * c)) / 2 / a;\n\t abs(t1) > \"1e12\" && (t1 = .5);\n\t abs(t2) > \"1e12\" && (t2 = .5);\n\t if (t1 > 0 && t1 < 1) {\n\t dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t1);\n\t x.push(dot.x);\n\t y.push(dot.y);\n\t }\n\t if (t2 > 0 && t2 < 1) {\n\t dot = findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t2);\n\t x.push(dot.x);\n\t y.push(dot.y);\n\t }\n\t return {\n\t min: {x: mmin[apply](0, x), y: mmin[apply](0, y)},\n\t max: {x: mmax[apply](0, x), y: mmax[apply](0, y)}\n\t };\n\t }),\n\t path2curve = R._path2curve = cacher(function (path, path2) {\n\t var pth = !path2 && paths(path);\n\t if (!path2 && pth.curve) {\n\t return pathClone(pth.curve);\n\t }\n\t var p = pathToAbsolute(path),\n\t p2 = path2 && pathToAbsolute(path2),\n\t attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n\t attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n\t processPath = function (path, d, pcom) {\n\t var nx, ny, tq = {T:1, Q:1};\n\t if (!path) {\n\t return [\"C\", d.x, d.y, d.x, d.y, d.x, d.y];\n\t }\n\t !(path[0] in tq) && (d.qx = d.qy = null);\n\t switch (path[0]) {\n\t case \"M\":\n\t d.X = path[1];\n\t d.Y = path[2];\n\t break;\n\t case \"A\":\n\t path = [\"C\"][concat](a2c[apply](0, [d.x, d.y][concat](path.slice(1))));\n\t break;\n\t case \"S\":\n\t if (pcom == \"C\" || pcom == \"S\") { // In \"S\" case we have to take into account, if the previous command is C/S.\n\t nx = d.x * 2 - d.bx; // And reflect the previous\n\t ny = d.y * 2 - d.by; // command's control point relative to the current point.\n\t }\n\t else { // or some else or nothing\n\t nx = d.x;\n\t ny = d.y;\n\t }\n\t path = [\"C\", nx, ny][concat](path.slice(1));\n\t break;\n\t case \"T\":\n\t if (pcom == \"Q\" || pcom == \"T\") { // In \"T\" case we have to take into account, if the previous command is Q/T.\n\t d.qx = d.x * 2 - d.qx; // And make a reflection similar\n\t d.qy = d.y * 2 - d.qy; // to case \"S\".\n\t }\n\t else { // or something else or nothing\n\t d.qx = d.x;\n\t d.qy = d.y;\n\t }\n\t path = [\"C\"][concat](q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n\t break;\n\t case \"Q\":\n\t d.qx = path[1];\n\t d.qy = path[2];\n\t path = [\"C\"][concat](q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n\t break;\n\t case \"L\":\n\t path = [\"C\"][concat](l2c(d.x, d.y, path[1], path[2]));\n\t break;\n\t case \"H\":\n\t path = [\"C\"][concat](l2c(d.x, d.y, path[1], d.y));\n\t break;\n\t case \"V\":\n\t path = [\"C\"][concat](l2c(d.x, d.y, d.x, path[1]));\n\t break;\n\t case \"Z\":\n\t path = [\"C\"][concat](l2c(d.x, d.y, d.X, d.Y));\n\t break;\n\t }\n\t return path;\n\t },\n\t fixArc = function (pp, i) {\n\t if (pp[i].length > 7) {\n\t pp[i].shift();\n\t var pi = pp[i];\n\t while (pi.length) {\n\t pcoms1[i]=\"A\"; // if created multiple C:s, their original seg is saved\n\t p2 && (pcoms2[i]=\"A\"); // the same as above\n\t pp.splice(i++, 0, [\"C\"][concat](pi.splice(0, 6)));\n\t }\n\t pp.splice(i, 1);\n\t ii = mmax(p.length, p2 && p2.length || 0);\n\t }\n\t },\n\t fixM = function (path1, path2, a1, a2, i) {\n\t if (path1 && path2 && path1[i][0] == \"M\" && path2[i][0] != \"M\") {\n\t path2.splice(i, 0, [\"M\", a2.x, a2.y]);\n\t a1.bx = 0;\n\t a1.by = 0;\n\t a1.x = path1[i][1];\n\t a1.y = path1[i][2];\n\t ii = mmax(p.length, p2 && p2.length || 0);\n\t }\n\t },\n\t pcoms1 = [], // path commands of original path p\n\t pcoms2 = [], // path commands of original path p2\n\t pfirst = \"\", // temporary holder for original path command\n\t pcom = \"\"; // holder for previous path command of original path\n\t for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {\n\t p[i] && (pfirst = p[i][0]); // save current path command\n\n\t if (pfirst != \"C\") // C is not saved yet, because it may be result of conversion\n\t {\n\t pcoms1[i] = pfirst; // Save current path command\n\t i && ( pcom = pcoms1[i-1]); // Get previous path command pcom\n\t }\n\t p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n\n\t if (pcoms1[i] != \"A\" && pfirst == \"C\") pcoms1[i] = \"C\"; // A is the only command\n\t // which may produce multiple C:s\n\t // so we have to make sure that C is also C in original path\n\n\t fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n\n\t if (p2) { // the same procedures is done to p2\n\t p2[i] && (pfirst = p2[i][0]);\n\t if (pfirst != \"C\")\n\t {\n\t pcoms2[i] = pfirst;\n\t i && (pcom = pcoms2[i-1]);\n\t }\n\t p2[i] = processPath(p2[i], attrs2, pcom);\n\n\t if (pcoms2[i]!=\"A\" && pfirst==\"C\") pcoms2[i]=\"C\";\n\n\t fixArc(p2, i);\n\t }\n\t fixM(p, p2, attrs, attrs2, i);\n\t fixM(p2, p, attrs2, attrs, i);\n\t var seg = p[i],\n\t seg2 = p2 && p2[i],\n\t seglen = seg.length,\n\t seg2len = p2 && seg2.length;\n\t attrs.x = seg[seglen - 2];\n\t attrs.y = seg[seglen - 1];\n\t attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;\n\t attrs.by = toFloat(seg[seglen - 3]) || attrs.y;\n\t attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);\n\t attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);\n\t attrs2.x = p2 && seg2[seg2len - 2];\n\t attrs2.y = p2 && seg2[seg2len - 1];\n\t }\n\t if (!p2) {\n\t pth.curve = pathClone(p);\n\t }\n\t return p2 ? [p, p2] : p;\n\t }, null, pathClone),\n\t parseDots = R._parseDots = cacher(function (gradient) {\n\t var dots = [];\n\t for (var i = 0, ii = gradient.length; i < ii; i++) {\n\t var dot = {},\n\t par = gradient[i].match(/^([^:]*):?([\\d\\.]*)/);\n\t dot.color = R.getRGB(par[1]);\n\t if (dot.color.error) {\n\t return null;\n\t }\n\t dot.opacity = dot.color.opacity;\n\t dot.color = dot.color.hex;\n\t par[2] && (dot.offset = par[2] + \"%\");\n\t dots.push(dot);\n\t }\n\t for (i = 1, ii = dots.length - 1; i < ii; i++) {\n\t if (!dots[i].offset) {\n\t var start = toFloat(dots[i - 1].offset || 0),\n\t end = 0;\n\t for (var j = i + 1; j < ii; j++) {\n\t if (dots[j].offset) {\n\t end = dots[j].offset;\n\t break;\n\t }\n\t }\n\t if (!end) {\n\t end = 100;\n\t j = ii;\n\t }\n\t end = toFloat(end);\n\t var d = (end - start) / (j - i + 1);\n\t for (; i < j; i++) {\n\t start += d;\n\t dots[i].offset = start + \"%\";\n\t }\n\t }\n\t }\n\t return dots;\n\t }),\n\t tear = R._tear = function (el, paper) {\n\t el == paper.top && (paper.top = el.prev);\n\t el == paper.bottom && (paper.bottom = el.next);\n\t el.next && (el.next.prev = el.prev);\n\t el.prev && (el.prev.next = el.next);\n\t },\n\t tofront = R._tofront = function (el, paper) {\n\t if (paper.top === el) {\n\t return;\n\t }\n\t tear(el, paper);\n\t el.next = null;\n\t el.prev = paper.top;\n\t paper.top.next = el;\n\t paper.top = el;\n\t },\n\t toback = R._toback = function (el, paper) {\n\t if (paper.bottom === el) {\n\t return;\n\t }\n\t tear(el, paper);\n\t el.next = paper.bottom;\n\t el.prev = null;\n\t paper.bottom.prev = el;\n\t paper.bottom = el;\n\t },\n\t insertafter = R._insertafter = function (el, el2, paper) {\n\t tear(el, paper);\n\t el2 == paper.top && (paper.top = el);\n\t el2.next && (el2.next.prev = el);\n\t el.next = el2.next;\n\t el.prev = el2;\n\t el2.next = el;\n\t },\n\t insertbefore = R._insertbefore = function (el, el2, paper) {\n\t tear(el, paper);\n\t el2 == paper.bottom && (paper.bottom = el);\n\t el2.prev && (el2.prev.next = el);\n\t el.prev = el2.prev;\n\t el2.prev = el;\n\t el.next = el2;\n\t },\n\t /*\\\n\t * Raphael.toMatrix\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns matrix of transformations applied to a given path\n\t > Parameters\n\t - path (string) path string\n\t - transform (string|array) transformation string\n\t = (object) @Matrix\n\t \\*/\n\t toMatrix = R.toMatrix = function (path, transform) {\n\t var bb = pathDimensions(path),\n\t el = {\n\t _: {\n\t transform: E\n\t },\n\t getBBox: function () {\n\t return bb;\n\t }\n\t };\n\t extractTransform(el, transform);\n\t return el.matrix;\n\t },\n\t /*\\\n\t * Raphael.transformPath\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns path transformed by a given transformation\n\t > Parameters\n\t - path (string) path string\n\t - transform (string|array) transformation string\n\t = (string) path\n\t \\*/\n\t transformPath = R.transformPath = function (path, transform) {\n\t return mapPath(path, toMatrix(path, transform));\n\t },\n\t extractTransform = R._extractTransform = function (el, tstr) {\n\t if (tstr == null) {\n\t return el._.transform;\n\t }\n\t tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, el._.transform || E);\n\t var tdata = R.parseTransformString(tstr),\n\t deg = 0,\n\t dx = 0,\n\t dy = 0,\n\t sx = 1,\n\t sy = 1,\n\t _ = el._,\n\t m = new Matrix;\n\t _.transform = tdata || [];\n\t if (tdata) {\n\t for (var i = 0, ii = tdata.length; i < ii; i++) {\n\t var t = tdata[i],\n\t tlen = t.length,\n\t command = Str(t[0]).toLowerCase(),\n\t absolute = t[0] != command,\n\t inver = absolute ? m.invert() : 0,\n\t x1,\n\t y1,\n\t x2,\n\t y2,\n\t bb;\n\t if (command == \"t\" && tlen == 3) {\n\t if (absolute) {\n\t x1 = inver.x(0, 0);\n\t y1 = inver.y(0, 0);\n\t x2 = inver.x(t[1], t[2]);\n\t y2 = inver.y(t[1], t[2]);\n\t m.translate(x2 - x1, y2 - y1);\n\t } else {\n\t m.translate(t[1], t[2]);\n\t }\n\t } else if (command == \"r\") {\n\t if (tlen == 2) {\n\t bb = bb || el.getBBox(1);\n\t m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n\t deg += t[1];\n\t } else if (tlen == 4) {\n\t if (absolute) {\n\t x2 = inver.x(t[2], t[3]);\n\t y2 = inver.y(t[2], t[3]);\n\t m.rotate(t[1], x2, y2);\n\t } else {\n\t m.rotate(t[1], t[2], t[3]);\n\t }\n\t deg += t[1];\n\t }\n\t } else if (command == \"s\") {\n\t if (tlen == 2 || tlen == 3) {\n\t bb = bb || el.getBBox(1);\n\t m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n\t sx *= t[1];\n\t sy *= t[tlen - 1];\n\t } else if (tlen == 5) {\n\t if (absolute) {\n\t x2 = inver.x(t[3], t[4]);\n\t y2 = inver.y(t[3], t[4]);\n\t m.scale(t[1], t[2], x2, y2);\n\t } else {\n\t m.scale(t[1], t[2], t[3], t[4]);\n\t }\n\t sx *= t[1];\n\t sy *= t[2];\n\t }\n\t } else if (command == \"m\" && tlen == 7) {\n\t m.add(t[1], t[2], t[3], t[4], t[5], t[6]);\n\t }\n\t _.dirtyT = 1;\n\t el.matrix = m;\n\t }\n\t }\n\n\t /*\\\n\t * Element.matrix\n\t [ property (object) ]\n\t **\n\t * Keeps @Matrix object, which represents element transformation\n\t \\*/\n\t el.matrix = m;\n\n\t _.sx = sx;\n\t _.sy = sy;\n\t _.deg = deg;\n\t _.dx = dx = m.e;\n\t _.dy = dy = m.f;\n\n\t if (sx == 1 && sy == 1 && !deg && _.bbox) {\n\t _.bbox.x += +dx;\n\t _.bbox.y += +dy;\n\t } else {\n\t _.dirtyT = 1;\n\t }\n\t },\n\t getEmpty = function (item) {\n\t var l = item[0];\n\t switch (l.toLowerCase()) {\n\t case \"t\": return [l, 0, 0];\n\t case \"m\": return [l, 1, 0, 0, 1, 0, 0];\n\t case \"r\": if (item.length == 4) {\n\t return [l, 0, item[2], item[3]];\n\t } else {\n\t return [l, 0];\n\t }\n\t case \"s\": if (item.length == 5) {\n\t return [l, 1, 1, item[3], item[4]];\n\t } else if (item.length == 3) {\n\t return [l, 1, 1];\n\t } else {\n\t return [l, 1];\n\t }\n\t }\n\t },\n\t equaliseTransform = R._equaliseTransform = function (t1, t2) {\n\t t2 = Str(t2).replace(/\\.{3}|\\u2026/g, t1);\n\t t1 = R.parseTransformString(t1) || [];\n\t t2 = R.parseTransformString(t2) || [];\n\t var maxlength = mmax(t1.length, t2.length),\n\t from = [],\n\t to = [],\n\t i = 0, j, jj,\n\t tt1, tt2;\n\t for (; i < maxlength; i++) {\n\t tt1 = t1[i] || getEmpty(t2[i]);\n\t tt2 = t2[i] || getEmpty(tt1);\n\t if ((tt1[0] != tt2[0]) ||\n\t (tt1[0].toLowerCase() == \"r\" && (tt1[2] != tt2[2] || tt1[3] != tt2[3])) ||\n\t (tt1[0].toLowerCase() == \"s\" && (tt1[3] != tt2[3] || tt1[4] != tt2[4]))\n\t ) {\n\t return;\n\t }\n\t from[i] = [];\n\t to[i] = [];\n\t for (j = 0, jj = mmax(tt1.length, tt2.length); j < jj; j++) {\n\t j in tt1 && (from[i][j] = tt1[j]);\n\t j in tt2 && (to[i][j] = tt2[j]);\n\t }\n\t }\n\t return {\n\t from: from,\n\t to: to\n\t };\n\t };\n\t R._getContainer = function (x, y, w, h) {\n\t var container;\n\t container = h == null && !R.is(x, \"object\") ? g.doc.getElementById(x) : x;\n\t if (container == null) {\n\t return;\n\t }\n\t if (container.tagName) {\n\t if (y == null) {\n\t return {\n\t container: container,\n\t width: container.style.pixelWidth || container.offsetWidth,\n\t height: container.style.pixelHeight || container.offsetHeight\n\t };\n\t } else {\n\t return {\n\t container: container,\n\t width: y,\n\t height: w\n\t };\n\t }\n\t }\n\t return {\n\t container: 1,\n\t x: x,\n\t y: y,\n\t width: w,\n\t height: h\n\t };\n\t };\n\t /*\\\n\t * Raphael.pathToRelative\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Converts path to relative form\n\t > Parameters\n\t - pathString (string|array) path string or array of segments\n\t = (array) array of segments.\n\t \\*/\n\t R.pathToRelative = pathToRelative;\n\t R._engine = {};\n\t /*\\\n\t * Raphael.path2curve\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Converts path to a new path where all segments are cubic bezier curves.\n\t > Parameters\n\t - pathString (string|array) path string or array of segments\n\t = (array) array of segments.\n\t \\*/\n\t R.path2curve = path2curve;\n\t /*\\\n\t * Raphael.matrix\n\t [ method ]\n\t **\n\t * Utility method\n\t **\n\t * Returns matrix based on given parameters.\n\t > Parameters\n\t - a (number)\n\t - b (number)\n\t - c (number)\n\t - d (number)\n\t - e (number)\n\t - f (number)\n\t = (object) @Matrix\n\t \\*/\n\t R.matrix = function (a, b, c, d, e, f) {\n\t return new Matrix(a, b, c, d, e, f);\n\t };\n\t function Matrix(a, b, c, d, e, f) {\n\t if (a != null) {\n\t this.a = +a;\n\t this.b = +b;\n\t this.c = +c;\n\t this.d = +d;\n\t this.e = +e;\n\t this.f = +f;\n\t } else {\n\t this.a = 1;\n\t this.b = 0;\n\t this.c = 0;\n\t this.d = 1;\n\t this.e = 0;\n\t this.f = 0;\n\t }\n\t }\n\t (function (matrixproto) {\n\t /*\\\n\t * Matrix.add\n\t [ method ]\n\t **\n\t * Adds given matrix to existing one.\n\t > Parameters\n\t - a (number)\n\t - b (number)\n\t - c (number)\n\t - d (number)\n\t - e (number)\n\t - f (number)\n\t or\n\t - matrix (object) @Matrix\n\t \\*/\n\t matrixproto.add = function (a, b, c, d, e, f) {\n\t var out = [[], [], []],\n\t m = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]],\n\t matrix = [[a, c, e], [b, d, f], [0, 0, 1]],\n\t x, y, z, res;\n\n\t if (a && a instanceof Matrix) {\n\t matrix = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]];\n\t }\n\n\t for (x = 0; x < 3; x++) {\n\t for (y = 0; y < 3; y++) {\n\t res = 0;\n\t for (z = 0; z < 3; z++) {\n\t res += m[x][z] * matrix[z][y];\n\t }\n\t out[x][y] = res;\n\t }\n\t }\n\t this.a = out[0][0];\n\t this.b = out[1][0];\n\t this.c = out[0][1];\n\t this.d = out[1][1];\n\t this.e = out[0][2];\n\t this.f = out[1][2];\n\t };\n\t /*\\\n\t * Matrix.invert\n\t [ method ]\n\t **\n\t * Returns inverted version of the matrix\n\t = (object) @Matrix\n\t \\*/\n\t matrixproto.invert = function () {\n\t var me = this,\n\t x = me.a * me.d - me.b * me.c;\n\t return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);\n\t };\n\t /*\\\n\t * Matrix.clone\n\t [ method ]\n\t **\n\t * Returns copy of the matrix\n\t = (object) @Matrix\n\t \\*/\n\t matrixproto.clone = function () {\n\t return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n\t };\n\t /*\\\n\t * Matrix.translate\n\t [ method ]\n\t **\n\t * Translate the matrix\n\t > Parameters\n\t - x (number)\n\t - y (number)\n\t \\*/\n\t matrixproto.translate = function (x, y) {\n\t this.add(1, 0, 0, 1, x, y);\n\t };\n\t /*\\\n\t * Matrix.scale\n\t [ method ]\n\t **\n\t * Scales the matrix\n\t > Parameters\n\t - x (number)\n\t - y (number) #optional\n\t - cx (number) #optional\n\t - cy (number) #optional\n\t \\*/\n\t matrixproto.scale = function (x, y, cx, cy) {\n\t y == null && (y = x);\n\t (cx || cy) && this.add(1, 0, 0, 1, cx, cy);\n\t this.add(x, 0, 0, y, 0, 0);\n\t (cx || cy) && this.add(1, 0, 0, 1, -cx, -cy);\n\t };\n\t /*\\\n\t * Matrix.rotate\n\t [ method ]\n\t **\n\t * Rotates the matrix\n\t > Parameters\n\t - a (number)\n\t - x (number)\n\t - y (number)\n\t \\*/\n\t matrixproto.rotate = function (a, x, y) {\n\t a = R.rad(a);\n\t x = x || 0;\n\t y = y || 0;\n\t var cos = +math.cos(a).toFixed(9),\n\t sin = +math.sin(a).toFixed(9);\n\t this.add(cos, sin, -sin, cos, x, y);\n\t this.add(1, 0, 0, 1, -x, -y);\n\t };\n\t /*\\\n\t * Matrix.x\n\t [ method ]\n\t **\n\t * Return x coordinate for given point after transformation described by the matrix. See also @Matrix.y\n\t > Parameters\n\t - x (number)\n\t - y (number)\n\t = (number) x\n\t \\*/\n\t matrixproto.x = function (x, y) {\n\t return x * this.a + y * this.c + this.e;\n\t };\n\t /*\\\n\t * Matrix.y\n\t [ method ]\n\t **\n\t * Return y coordinate for given point after transformation described by the matrix. See also @Matrix.x\n\t > Parameters\n\t - x (number)\n\t - y (number)\n\t = (number) y\n\t \\*/\n\t matrixproto.y = function (x, y) {\n\t return x * this.b + y * this.d + this.f;\n\t };\n\t matrixproto.get = function (i) {\n\t return +this[Str.fromCharCode(97 + i)].toFixed(4);\n\t };\n\t matrixproto.toString = function () {\n\t return R.svg ?\n\t \"matrix(\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + \")\" :\n\t [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();\n\t };\n\t matrixproto.toFilter = function () {\n\t return \"progid:DXImageTransform.Microsoft.Matrix(M11=\" + this.get(0) +\n\t \", M12=\" + this.get(2) + \", M21=\" + this.get(1) + \", M22=\" + this.get(3) +\n\t \", Dx=\" + this.get(4) + \", Dy=\" + this.get(5) + \", sizingmethod='auto expand')\";\n\t };\n\t matrixproto.offset = function () {\n\t return [this.e.toFixed(4), this.f.toFixed(4)];\n\t };\n\t function norm(a) {\n\t return a[0] * a[0] + a[1] * a[1];\n\t }\n\t function normalize(a) {\n\t var mag = math.sqrt(norm(a));\n\t a[0] && (a[0] /= mag);\n\t a[1] && (a[1] /= mag);\n\t }\n\t /*\\\n\t * Matrix.split\n\t [ method ]\n\t **\n\t * Splits matrix into primitive transformations\n\t = (object) in format:\n\t o dx (number) translation by x\n\t o dy (number) translation by y\n\t o scalex (number) scale by x\n\t o scaley (number) scale by y\n\t o shear (number) shear\n\t o rotate (number) rotation in deg\n\t o isSimple (boolean) could it be represented via simple transformations\n\t \\*/\n\t matrixproto.split = function () {\n\t var out = {};\n\t // translation\n\t out.dx = this.e;\n\t out.dy = this.f;\n\n\t // scale and shear\n\t var row = [[this.a, this.c], [this.b, this.d]];\n\t out.scalex = math.sqrt(norm(row[0]));\n\t normalize(row[0]);\n\n\t out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];\n\t row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];\n\n\t out.scaley = math.sqrt(norm(row[1]));\n\t normalize(row[1]);\n\t out.shear /= out.scaley;\n\n\t // rotation\n\t var sin = -row[0][1],\n\t cos = row[1][1];\n\t if (cos < 0) {\n\t out.rotate = R.deg(math.acos(cos));\n\t if (sin < 0) {\n\t out.rotate = 360 - out.rotate;\n\t }\n\t } else {\n\t out.rotate = R.deg(math.asin(sin));\n\t }\n\n\t out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);\n\t out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;\n\t out.noRotation = !+out.shear.toFixed(9) && !out.rotate;\n\t return out;\n\t };\n\t /*\\\n\t * Matrix.toTransformString\n\t [ method ]\n\t **\n\t * Return transform string that represents given matrix\n\t = (string) transform string\n\t \\*/\n\t matrixproto.toTransformString = function (shorter) {\n\t var s = shorter || this[split]();\n\t if (s.isSimple) {\n\t s.scalex = +s.scalex.toFixed(4);\n\t s.scaley = +s.scaley.toFixed(4);\n\t s.rotate = +s.rotate.toFixed(4);\n\t return (s.dx || s.dy ? \"t\" + [s.dx, s.dy] : E) +\n\t (s.scalex != 1 || s.scaley != 1 ? \"s\" + [s.scalex, s.scaley, 0, 0] : E) +\n\t (s.rotate ? \"r\" + [s.rotate, 0, 0] : E);\n\t } else {\n\t return \"m\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];\n\t }\n\t };\n\t })(Matrix.prototype);\n\n\t var preventDefault = function () {\n\t this.returnValue = false;\n\t },\n\t preventTouch = function () {\n\t return this.originalEvent.preventDefault();\n\t },\n\t stopPropagation = function () {\n\t this.cancelBubble = true;\n\t },\n\t stopTouch = function () {\n\t return this.originalEvent.stopPropagation();\n\t },\n\t getEventPosition = function (e) {\n\t var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n\t scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;\n\n\t return {\n\t x: e.clientX + scrollX,\n\t y: e.clientY + scrollY\n\t };\n\t },\n\t addEvent = (function () {\n\t if (g.doc.addEventListener) {\n\t return function (obj, type, fn, element) {\n\t var f = function (e) {\n\t var pos = getEventPosition(e);\n\t return fn.call(element, e, pos.x, pos.y);\n\t };\n\t obj.addEventListener(type, f, false);\n\n\t if (supportsTouch && touchMap[type]) {\n\t var _f = function (e) {\n\t var pos = getEventPosition(e),\n\t olde = e;\n\n\t for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {\n\t if (e.targetTouches[i].target == obj) {\n\t e = e.targetTouches[i];\n\t e.originalEvent = olde;\n\t e.preventDefault = preventTouch;\n\t e.stopPropagation = stopTouch;\n\t break;\n\t }\n\t }\n\n\t return fn.call(element, e, pos.x, pos.y);\n\t };\n\t obj.addEventListener(touchMap[type], _f, false);\n\t }\n\n\t return function () {\n\t obj.removeEventListener(type, f, false);\n\n\t if (supportsTouch && touchMap[type])\n\t obj.removeEventListener(touchMap[type], _f, false);\n\n\t return true;\n\t };\n\t };\n\t } else if (g.doc.attachEvent) {\n\t return function (obj, type, fn, element) {\n\t var f = function (e) {\n\t e = e || g.win.event;\n\t var scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n\t scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,\n\t x = e.clientX + scrollX,\n\t y = e.clientY + scrollY;\n\t e.preventDefault = e.preventDefault || preventDefault;\n\t e.stopPropagation = e.stopPropagation || stopPropagation;\n\t return fn.call(element, e, x, y);\n\t };\n\t obj.attachEvent(\"on\" + type, f);\n\t var detacher = function () {\n\t obj.detachEvent(\"on\" + type, f);\n\t return true;\n\t };\n\t return detacher;\n\t };\n\t }\n\t })(),\n\t drag = [],\n\t dragMove = function (e) {\n\t var x = e.clientX,\n\t y = e.clientY,\n\t scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n\t scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft,\n\t dragi,\n\t j = drag.length;\n\t while (j--) {\n\t dragi = drag[j];\n\t if (supportsTouch && e.touches) {\n\t var i = e.touches.length,\n\t touch;\n\t while (i--) {\n\t touch = e.touches[i];\n\t if (touch.identifier == dragi.el._drag.id) {\n\t x = touch.clientX;\n\t y = touch.clientY;\n\t (e.originalEvent ? e.originalEvent : e).preventDefault();\n\t break;\n\t }\n\t }\n\t } else {\n\t e.preventDefault();\n\t }\n\t var node = dragi.el.node,\n\t o,\n\t next = node.nextSibling,\n\t parent = node.parentNode,\n\t display = node.style.display;\n\t g.win.opera && parent.removeChild(node);\n\t node.style.display = \"none\";\n\t o = dragi.el.paper.getElementByPoint(x, y);\n\t node.style.display = display;\n\t g.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));\n\t o && eve(\"raphael.drag.over.\" + dragi.el.id, dragi.el, o);\n\t x += scrollX;\n\t y += scrollY;\n\t eve(\"raphael.drag.move.\" + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);\n\t }\n\t },\n\t dragUp = function (e) {\n\t R.unmousemove(dragMove).unmouseup(dragUp);\n\t var i = drag.length,\n\t dragi;\n\t while (i--) {\n\t dragi = drag[i];\n\t dragi.el._drag = {};\n\t eve(\"raphael.drag.end.\" + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);\n\t }\n\t drag = [];\n\t },\n\t /*\\\n\t * Raphael.el\n\t [ property (object) ]\n\t **\n\t * You can add your own method to elements. This is useful when you want to hack default functionality or\n\t * want to wrap some common transformation or attributes in one method. In difference to canvas methods,\n\t * you can redefine element method at any time. Expending element methods wouldn’t affect set.\n\t > Usage\n\t | Raphael.el.red = function () {\n\t | this.attr({fill: \"#f00\"});\n\t | };\n\t | // then use it\n\t | paper.circle(100, 100, 20).red();\n\t \\*/\n\t elproto = R.el = {};\n\t /*\\\n\t * Element.click\n\t [ method ]\n\t **\n\t * Adds event handler for click for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.unclick\n\t [ method ]\n\t **\n\t * Removes event handler for click for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.dblclick\n\t [ method ]\n\t **\n\t * Adds event handler for double click for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.undblclick\n\t [ method ]\n\t **\n\t * Removes event handler for double click for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.mousedown\n\t [ method ]\n\t **\n\t * Adds event handler for mousedown for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.unmousedown\n\t [ method ]\n\t **\n\t * Removes event handler for mousedown for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.mousemove\n\t [ method ]\n\t **\n\t * Adds event handler for mousemove for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.unmousemove\n\t [ method ]\n\t **\n\t * Removes event handler for mousemove for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.mouseout\n\t [ method ]\n\t **\n\t * Adds event handler for mouseout for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.unmouseout\n\t [ method ]\n\t **\n\t * Removes event handler for mouseout for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.mouseover\n\t [ method ]\n\t **\n\t * Adds event handler for mouseover for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.unmouseover\n\t [ method ]\n\t **\n\t * Removes event handler for mouseover for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.mouseup\n\t [ method ]\n\t **\n\t * Adds event handler for mouseup for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.unmouseup\n\t [ method ]\n\t **\n\t * Removes event handler for mouseup for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.touchstart\n\t [ method ]\n\t **\n\t * Adds event handler for touchstart for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.untouchstart\n\t [ method ]\n\t **\n\t * Removes event handler for touchstart for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.touchmove\n\t [ method ]\n\t **\n\t * Adds event handler for touchmove for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.untouchmove\n\t [ method ]\n\t **\n\t * Removes event handler for touchmove for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.touchend\n\t [ method ]\n\t **\n\t * Adds event handler for touchend for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.untouchend\n\t [ method ]\n\t **\n\t * Removes event handler for touchend for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\n\t /*\\\n\t * Element.touchcancel\n\t [ method ]\n\t **\n\t * Adds event handler for touchcancel for the element.\n\t > Parameters\n\t - handler (function) handler for the event\n\t = (object) @Element\n\t \\*/\n\t /*\\\n\t * Element.untouchcancel\n\t [ method ]\n\t **\n\t * Removes event handler for touchcancel for the element.\n\t > Parameters\n\t - handler (function) #optional handler for the event\n\t = (object) @Element\n\t \\*/\n\t for (var i = events.length; i--;) {\n\t (function (eventName) {\n\t R[eventName] = elproto[eventName] = function (fn, scope) {\n\t if (R.is(fn, \"function\")) {\n\t this.events = this.events || [];\n\t this.events.push({name: eventName, f: fn, unbind: addEvent(this.shape || this.node || g.doc, eventName, fn, scope || this)});\n\t }\n\t return this;\n\t };\n\t R[\"un\" + eventName] = elproto[\"un\" + eventName] = function (fn) {\n\t var events = this.events || [],\n\t l = events.length;\n\t while (l--){\n\t if (events[l].name == eventName && (R.is(fn, \"undefined\") || events[l].f == fn)) {\n\t events[l].unbind();\n\t events.splice(l, 1);\n\t !events.length && delete this.events;\n\t }\n\t }\n\t return this;\n\t };\n\t })(events[i]);\n\t }\n\n\t /*\\\n\t * Element.data\n\t [ method ]\n\t **\n\t * Adds or retrieves given value associated with given key.\n\t **\n\t * See also @Element.removeData\n\t > Parameters\n\t - key (string) key to store data\n\t - value (any) #optional value to store\n\t = (object) @Element\n\t * or, if value is not specified:\n\t = (any) value\n\t * or, if key and value are not specified:\n\t = (object) Key/value pairs for all the data associated with the element.\n\t > Usage\n\t | for (var i = 0, i < 5, i++) {\n\t | paper.circle(10 + 15 * i, 10, 10)\n\t | .attr({fill: \"#000\"})\n\t | .data(\"i\", i)\n\t | .click(function () {\n\t | alert(this.data(\"i\"));\n\t | });\n\t | }\n\t \\*/\n\t elproto.data = function (key, value) {\n\t var data = eldata[this.id] = eldata[this.id] || {};\n\t if (arguments.length == 0) {\n\t return data;\n\t }\n\t if (arguments.length == 1) {\n\t if (R.is(key, \"object\")) {\n\t for (var i in key) if (key[has](i)) {\n\t this.data(i, key[i]);\n\t }\n\t return this;\n\t }\n\t eve(\"raphael.data.get.\" + this.id, this, data[key], key);\n\t return data[key];\n\t }\n\t data[key] = value;\n\t eve(\"raphael.data.set.\" + this.id, this, value, key);\n\t return this;\n\t };\n\t /*\\\n\t * Element.removeData\n\t [ method ]\n\t **\n\t * Removes value associated with an element by given key.\n\t * If key is not provided, removes all the data of the element.\n\t > Parameters\n\t - key (string) #optional key\n\t = (object) @Element\n\t \\*/\n\t elproto.removeData = function (key) {\n\t if (key == null) {\n\t eldata[this.id] = {};\n\t } else {\n\t eldata[this.id] && delete eldata[this.id][key];\n\t }\n\t return this;\n\t };\n\t /*\\\n\t * Element.getData\n\t [ method ]\n\t **\n\t * Retrieves the element data\n\t = (object) data\n\t \\*/\n\t elproto.getData = function () {\n\t return clone(eldata[this.id] || {});\n\t };\n\t /*\\\n\t * Element.hover\n\t [ method ]\n\t **\n\t * Adds event handlers for hover for the element.\n\t > Parameters\n\t - f_in (function) handler for hover in\n\t - f_out (function) handler for hover out\n\t - icontext (object) #optional context for hover in handler\n\t - ocontext (object) #optional context for hover out handler\n\t = (object) @Element\n\t \\*/\n\t elproto.hover = function (f_in, f_out, scope_in, scope_out) {\n\t return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);\n\t };\n\t /*\\\n\t * Element.unhover\n\t [ method ]\n\t **\n\t * Removes event handlers for hover for the element.\n\t > Parameters\n\t - f_in (function) handler for hover in\n\t - f_out (function) handler for hover out\n\t = (object) @Element\n\t \\*/\n\t elproto.unhover = function (f_in, f_out) {\n\t return this.unmouseover(f_in).unmouseout(f_out);\n\t };\n\t var draggable = [];\n\t /*\\\n\t * Element.drag\n\t [ method ]\n\t **\n\t * Adds event handlers for drag of the element.\n\t > Parameters\n\t - onmove (function) handler for moving\n\t - onstart (function) handler for drag start\n\t - onend (function) handler for drag end\n\t - mcontext (object) #optional context for moving handler\n\t - scontext (object) #optional context for drag start handler\n\t - econtext (object) #optional context for drag end handler\n\t * Additionally following `drag` events will be triggered: `drag.start.` on start,\n\t * `drag.end.` on end and `drag.move.` on every move. When element will be dragged over another element\n\t * `drag.over.` will be fired as well.\n\t *\n\t * Start event and start handler will be called in specified context or in context of the element with following parameters:\n\t o x (number) x position of the mouse\n\t o y (number) y position of the mouse\n\t o event (object) DOM event object\n\t * Move event and move handler will be called in specified context or in context of the element with following parameters:\n\t o dx (number) shift by x from the start point\n\t o dy (number) shift by y from the start point\n\t o x (number) x position of the mouse\n\t o y (number) y position of the mouse\n\t o event (object) DOM event object\n\t * End event and end handler will be called in specified context or in context of the element with following parameters:\n\t o event (object) DOM event object\n\t = (object) @Element\n\t \\*/\n\t elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {\n\t function start(e) {\n\t (e.originalEvent || e).preventDefault();\n\t var x = e.clientX,\n\t y = e.clientY,\n\t scrollY = g.doc.documentElement.scrollTop || g.doc.body.scrollTop,\n\t scrollX = g.doc.documentElement.scrollLeft || g.doc.body.scrollLeft;\n\t this._drag.id = e.identifier;\n\t if (supportsTouch && e.touches) {\n\t var i = e.touches.length, touch;\n\t while (i--) {\n\t touch = e.touches[i];\n\t this._drag.id = touch.identifier;\n\t if (touch.identifier == this._drag.id) {\n\t x = touch.clientX;\n\t y = touch.clientY;\n\t break;\n\t }\n\t }\n\t }\n\t this._drag.x = x + scrollX;\n\t this._drag.y = y + scrollY;\n\t !drag.length && R.mousemove(dragMove).mouseup(dragUp);\n\t drag.push({el: this, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});\n\t onstart && eve.on(\"raphael.drag.start.\" + this.id, onstart);\n\t onmove && eve.on(\"raphael.drag.move.\" + this.id, onmove);\n\t onend && eve.on(\"raphael.drag.end.\" + this.id, onend);\n\t eve(\"raphael.drag.start.\" + this.id, start_scope || move_scope || this, e.clientX + scrollX, e.clientY + scrollY, e);\n\t }\n\t this._drag = {};\n\t draggable.push({el: this, start: start});\n\t this.mousedown(start);\n\t return this;\n\t };\n\t /*\\\n\t * Element.onDragOver\n\t [ method ]\n\t **\n\t * Shortcut for assigning event handler for `drag.over.` event, where id is id of the element (see @Element.id).\n\t > Parameters\n\t - f (function) handler for event, first argument would be the element you are dragging over\n\t \\*/\n\t elproto.onDragOver = function (f) {\n\t f ? eve.on(\"raphael.drag.over.\" + this.id, f) : eve.unbind(\"raphael.drag.over.\" + this.id);\n\t };\n\t /*\\\n\t * Element.undrag\n\t [ method ]\n\t **\n\t * Removes all drag event handlers from given element.\n\t \\*/\n\t elproto.undrag = function () {\n\t var i = draggable.length;\n\t while (i--) if (draggable[i].el == this) {\n\t this.unmousedown(draggable[i].start);\n\t draggable.splice(i, 1);\n\t eve.unbind(\"raphael.drag.*.\" + this.id);\n\t }\n\t !draggable.length && R.unmousemove(dragMove).unmouseup(dragUp);\n\t drag = [];\n\t };\n\t /*\\\n\t * Paper.circle\n\t [ method ]\n\t **\n\t * Draws a circle.\n\t **\n\t > Parameters\n\t **\n\t - x (number) x coordinate of the centre\n\t - y (number) y coordinate of the centre\n\t - r (number) radius\n\t = (object) Raphaël element object with type “circle”\n\t **\n\t > Usage\n\t | var c = paper.circle(50, 50, 40);\n\t \\*/\n\t paperproto.circle = function (x, y, r) {\n\t var out = R._engine.circle(this, x || 0, y || 0, r || 0);\n\t this.__set__ && this.__set__.push(out);\n\t return out;\n\t };\n\t /*\\\n\t * Paper.rect\n\t [ method ]\n\t *\n\t * Draws a rectangle.\n\t **\n\t > Parameters\n\t **\n\t - x (number) x coordinate of the top left corner\n\t - y (number) y coordinate of the top left corner\n\t - width (number) width\n\t - height (number) height\n\t - r (number) #optional radius for rounded corners, default is 0\n\t = (object) Raphaël element object with type “rect”\n\t **\n\t > Usage\n\t | // regular rectangle\n\t | var c = paper.rect(10, 10, 50, 50);\n\t | // rectangle with rounded corners\n\t | var c = paper.rect(40, 40, 50, 50, 10);\n\t \\*/\n\t paperproto.rect = function (x, y, w, h, r) {\n\t var out = R._engine.rect(this, x || 0, y || 0, w || 0, h || 0, r || 0);\n\t this.__set__ && this.__set__.push(out);\n\t return out;\n\t };\n\t /*\\\n\t * Paper.ellipse\n\t [ method ]\n\t **\n\t * Draws an ellipse.\n\t **\n\t > Parameters\n\t **\n\t - x (number) x coordinate of the centre\n\t - y (number) y coordinate of the centre\n\t - rx (number) horizontal radius\n\t - ry (number) vertical radius\n\t = (object) Raphaël element object with type “ellipse”\n\t **\n\t > Usage\n\t | var c = paper.ellipse(50, 50, 40, 20);\n\t \\*/\n\t paperproto.ellipse = function (x, y, rx, ry) {\n\t var out = R._engine.ellipse(this, x || 0, y || 0, rx || 0, ry || 0);\n\t this.__set__ && this.__set__.push(out);\n\t return out;\n\t };\n\t /*\\\n\t * Paper.path\n\t [ method ]\n\t **\n\t * Creates a path element by given path data string.\n\t > Parameters\n\t - pathString (string) #optional path string in SVG format.\n\t * Path string consists of one-letter commands, followed by comma seprarated arguments in numercal form. Example:\n\t | \"M10,20L30,40\"\n\t * Here we can see two commands: “M”, with arguments `(10, 20)` and “L” with arguments `(30, 40)`. Upper case letter mean command is absolute, lower case—relative.\n\t *\n\t #

Here is short list of commands available, for more details see SVG path string format.

\n\t # \n\t # \n\t # \n\t # \n\t # \n\t # \n\t # \n\t # \n\t # \n\t # \n\t # \n\t #
CommandNameParameters
Mmoveto(x y)+
Zclosepath(none)
Llineto(x y)+
Hhorizontal linetox+
Vvertical linetoy+
Ccurveto(x1 y1 x2 y2 x y)+
Ssmooth curveto(x2 y2 x y)+
Qquadratic Bézier curveto(x1 y1 x y)+
Tsmooth quadratic Bézier curveto(x y)+
Aelliptical arc(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
RCatmull-Rom curveto*x1 y1 (x y)+
\n\t * * “Catmull-Rom curveto” is a not standard SVG command and added in 2.0 to make life easier.\n\t * Note: there is a special case when path consist of just three commands: “M10,10R…z”. In this case path will smoothly connects to its beginning.\n\t > Usage\n\t | var c = paper.path(\"M10 10L90 90\");\n\t | // draw a diagonal line:\n\t | // move to 10,10, line to 90,90\n\t * For example of path strings, check out these icons: http://raphaeljs.com/icons/\n\t \\*/\n\t paperproto.path = function (pathString) {\n\t pathString && !R.is(pathString, string) && !R.is(pathString[0], array) && (pathString += E);\n\t var out = R._engine.path(R.format[apply](R, arguments), this);\n\t this.__set__ && this.__set__.push(out);\n\t return out;\n\t };\n\t /*\\\n\t * Paper.image\n\t [ method ]\n\t **\n\t * Embeds an image into the surface.\n\t **\n\t > Parameters\n\t **\n\t - src (string) URI of the source image\n\t - x (number) x coordinate position\n\t - y (number) y coordinate position\n\t - width (number) width of the image\n\t - height (number) height of the image\n\t = (object) Raphaël element object with type “image”\n\t **\n\t > Usage\n\t | var c = paper.image(\"apple.png\", 10, 10, 80, 80);\n\t \\*/\n\t paperproto.image = function (src, x, y, w, h) {\n\t var out = R._engine.image(this, src || \"about:blank\", x || 0, y || 0, w || 0, h || 0);\n\t this.__set__ && this.__set__.push(out);\n\t return out;\n\t };\n\t /*\\\n\t * Paper.text\n\t [ method ]\n\t **\n\t * Draws a text string. If you need line breaks, put “\\n” in the string.\n\t **\n\t > Parameters\n\t **\n\t - x (number) x coordinate position\n\t - y (number) y coordinate position\n\t - text (string) The text string to draw\n\t = (object) Raphaël element object with type “text”\n\t **\n\t > Usage\n\t | var t = paper.text(50, 50, \"Raphaël\\nkicks\\nbutt!\");\n\t \\*/\n\t paperproto.text = function (x, y, text) {\n\t var out = R._engine.text(this, x || 0, y || 0, Str(text));\n\t this.__set__ && this.__set__.push(out);\n\t return out;\n\t };\n\t /*\\\n\t * Paper.set\n\t [ method ]\n\t **\n\t * Creates array-like object to keep and operate several elements at once.\n\t * Warning: it doesn’t create any elements for itself in the page, it just groups existing elements.\n\t * Sets act as pseudo elements — all methods available to an element can be used on a set.\n\t = (object) array-like object that represents set of elements\n\t **\n\t > Usage\n\t | var st = paper.set();\n\t | st.push(\n\t | paper.circle(10, 10, 5),\n\t | paper.circle(30, 10, 5)\n\t | );\n\t | st.attr({fill: \"red\"}); // changes the fill of both circles\n\t \\*/\n\t paperproto.set = function (itemsArray) {\n\t !R.is(itemsArray, \"array\") && (itemsArray = Array.prototype.splice.call(arguments, 0, arguments.length));\n\t var out = new Set(itemsArray);\n\t this.__set__ && this.__set__.push(out);\n\t out[\"paper\"] = this;\n\t out[\"type\"] = \"set\";\n\t return out;\n\t };\n\t /*\\\n\t * Paper.setStart\n\t [ method ]\n\t **\n\t * Creates @Paper.set. All elements that will be created after calling this method and before calling\n\t * @Paper.setFinish will be added to the set.\n\t **\n\t > Usage\n\t | paper.setStart();\n\t | paper.circle(10, 10, 5),\n\t | paper.circle(30, 10, 5)\n\t | var st = paper.setFinish();\n\t | st.attr({fill: \"red\"}); // changes the fill of both circles\n\t \\*/\n\t paperproto.setStart = function (set) {\n\t this.__set__ = set || this.set();\n\t };\n\t /*\\\n\t * Paper.setFinish\n\t [ method ]\n\t **\n\t * See @Paper.setStart. This method finishes catching and returns resulting set.\n\t **\n\t = (object) set\n\t \\*/\n\t paperproto.setFinish = function (set) {\n\t var out = this.__set__;\n\t delete this.__set__;\n\t return out;\n\t };\n\t /*\\\n\t * Paper.getSize\n\t [ method ]\n\t **\n\t * Obtains current paper actual size.\n\t **\n\t = (object)\n\t \\*/\n\t paperproto.getSize = function () {\n\t var container = this.canvas.parentNode;\n\t return {\n\t width: container.offsetWidth,\n\t height: container.offsetHeight\n\t };\n\t };\n\t /*\\\n\t * Paper.setSize\n\t [ method ]\n\t **\n\t * If you need to change dimensions of the canvas call this method\n\t **\n\t > Parameters\n\t **\n\t - width (number) new width of the canvas\n\t - height (number) new height of the canvas\n\t \\*/\n\t paperproto.setSize = function (width, height) {\n\t return R._engine.setSize.call(this, width, height);\n\t };\n\t /*\\\n\t * Paper.setViewBox\n\t [ method ]\n\t **\n\t * Sets the view box of the paper. Practically it gives you ability to zoom and pan whole paper surface by\n\t * specifying new boundaries.\n\t **\n\t > Parameters\n\t **\n\t - x (number) new x position, default is `0`\n\t - y (number) new y position, default is `0`\n\t - w (number) new width of the canvas\n\t - h (number) new height of the canvas\n\t - fit (boolean) `true` if you want graphics to fit into new boundary box\n\t \\*/\n\t paperproto.setViewBox = function (x, y, w, h, fit) {\n\t return R._engine.setViewBox.call(this, x, y, w, h, fit);\n\t };\n\t /*\\\n\t * Paper.top\n\t [ property ]\n\t **\n\t * Points to the topmost element on the paper\n\t \\*/\n\t /*\\\n\t * Paper.bottom\n\t [ property ]\n\t **\n\t * Points to the bottom element on the paper\n\t \\*/\n\t paperproto.top = paperproto.bottom = null;\n\t /*\\\n\t * Paper.raphael\n\t [ property ]\n\t **\n\t * Points to the @Raphael object/function\n\t \\*/\n\t paperproto.raphael = R;\n\t var getOffset = function (elem) {\n\t var box = elem.getBoundingClientRect(),\n\t doc = elem.ownerDocument,\n\t body = doc.body,\n\t docElem = doc.documentElement,\n\t clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n\t top = box.top + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,\n\t left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;\n\t return {\n\t y: top,\n\t x: left\n\t };\n\t };\n\t /*\\\n\t * Paper.getElementByPoint\n\t [ method ]\n\t **\n\t * Returns you topmost element under given point.\n\t **\n\t = (object) Raphaël element object\n\t > Parameters\n\t **\n\t - x (number) x coordinate from the top left corner of the window\n\t - y (number) y coordinate from the top left corner of the window\n\t > Usage\n\t | paper.getElementByPoint(mouseX, mouseY).attr({stroke: \"#f00\"});\n\t \\*/\n\t paperproto.getElementByPoint = function (x, y) {\n\t var paper = this,\n\t svg = paper.canvas,\n\t target = g.doc.elementFromPoint(x, y);\n\t if (g.win.opera && target.tagName == \"svg\") {\n\t var so = getOffset(svg),\n\t sr = svg.createSVGRect();\n\t sr.x = x - so.x;\n\t sr.y = y - so.y;\n\t sr.width = sr.height = 1;\n\t var hits = svg.getIntersectionList(sr, null);\n\t if (hits.length) {\n\t target = hits[hits.length - 1];\n\t }\n\t }\n\t if (!target) {\n\t return null;\n\t }\n\t while (target.parentNode && target != svg.parentNode && !target.raphael) {\n\t target = target.parentNode;\n\t }\n\t target == paper.canvas.parentNode && (target = svg);\n\t target = target && target.raphael ? paper.getById(target.raphaelid) : null;\n\t return target;\n\t };\n\n\t /*\\\n\t * Paper.getElementsByBBox\n\t [ method ]\n\t **\n\t * Returns set of elements that have an intersecting bounding box\n\t **\n\t > Parameters\n\t **\n\t - bbox (object) bbox to check with\n\t = (object) @Set\n\t \\*/\n\t paperproto.getElementsByBBox = function (bbox) {\n\t var set = this.set();\n\t this.forEach(function (el) {\n\t if (R.isBBoxIntersect(el.getBBox(), bbox)) {\n\t set.push(el);\n\t }\n\t });\n\t return set;\n\t };\n\n\t /*\\\n\t * Paper.getById\n\t [ method ]\n\t **\n\t * Returns you element by its internal ID.\n\t **\n\t > Parameters\n\t **\n\t - id (number) id\n\t = (object) Raphaël element object\n\t \\*/\n\t paperproto.getById = function (id) {\n\t var bot = this.bottom;\n\t while (bot) {\n\t if (bot.id == id) {\n\t return bot;\n\t }\n\t bot = bot.next;\n\t }\n\t return null;\n\t };\n\t /*\\\n\t * Paper.forEach\n\t [ method ]\n\t **\n\t * Executes given function for each element on the paper\n\t *\n\t * If callback function returns `false` it will stop loop running.\n\t **\n\t > Parameters\n\t **\n\t - callback (function) function to run\n\t - thisArg (object) context object for the callback\n\t = (object) Paper object\n\t > Usage\n\t | paper.forEach(function (el) {\n\t | el.attr({ stroke: \"blue\" });\n\t | });\n\t \\*/\n\t paperproto.forEach = function (callback, thisArg) {\n\t var bot = this.bottom;\n\t while (bot) {\n\t if (callback.call(thisArg, bot) === false) {\n\t return this;\n\t }\n\t bot = bot.next;\n\t }\n\t return this;\n\t };\n\t /*\\\n\t * Paper.getElementsByPoint\n\t [ method ]\n\t **\n\t * Returns set of elements that have common point inside\n\t **\n\t > Parameters\n\t **\n\t - x (number) x coordinate of the point\n\t - y (number) y coordinate of the point\n\t = (object) @Set\n\t \\*/\n\t paperproto.getElementsByPoint = function (x, y) {\n\t var set = this.set();\n\t this.forEach(function (el) {\n\t if (el.isPointInside(x, y)) {\n\t set.push(el);\n\t }\n\t });\n\t return set;\n\t };\n\t function x_y() {\n\t return this.x + S + this.y;\n\t }\n\t function x_y_w_h() {\n\t return this.x + S + this.y + S + this.width + \" \\xd7 \" + this.height;\n\t }\n\t /*\\\n\t * Element.isPointInside\n\t [ method ]\n\t **\n\t * Determine if given point is inside this element’s shape\n\t **\n\t > Parameters\n\t **\n\t - x (number) x coordinate of the point\n\t - y (number) y coordinate of the point\n\t = (boolean) `true` if point inside the shape\n\t \\*/\n\t elproto.isPointInside = function (x, y) {\n\t var rp = this.realPath = getPath[this.type](this);\n\t if (this.attr('transform') && this.attr('transform').length) {\n\t rp = R.transformPath(rp, this.attr('transform'));\n\t }\n\t return R.isPointInsidePath(rp, x, y);\n\t };\n\t /*\\\n\t * Element.getBBox\n\t [ method ]\n\t **\n\t * Return bounding box for a given element\n\t **\n\t > Parameters\n\t **\n\t - isWithoutTransform (boolean) flag, `true` if you want to have bounding box before transformations. Default is `false`.\n\t = (object) Bounding box object:\n\t o {\n\t o x: (number) top left corner x\n\t o y: (number) top left corner y\n\t o x2: (number) bottom right corner x\n\t o y2: (number) bottom right corner y\n\t o width: (number) width\n\t o height: (number) height\n\t o }\n\t \\*/\n\t elproto.getBBox = function (isWithoutTransform) {\n\t if (this.removed) {\n\t return {};\n\t }\n\t var _ = this._;\n\t if (isWithoutTransform) {\n\t if (_.dirty || !_.bboxwt) {\n\t this.realPath = getPath[this.type](this);\n\t _.bboxwt = pathDimensions(this.realPath);\n\t _.bboxwt.toString = x_y_w_h;\n\t _.dirty = 0;\n\t }\n\t return _.bboxwt;\n\t }\n\t if (_.dirty || _.dirtyT || !_.bbox) {\n\t if (_.dirty || !this.realPath) {\n\t _.bboxwt = 0;\n\t this.realPath = getPath[this.type](this);\n\t }\n\t _.bbox = pathDimensions(mapPath(this.realPath, this.matrix));\n\t _.bbox.toString = x_y_w_h;\n\t _.dirty = _.dirtyT = 0;\n\t }\n\t return _.bbox;\n\t };\n\t /*\\\n\t * Element.clone\n\t [ method ]\n\t **\n\t = (object) clone of a given element\n\t **\n\t \\*/\n\t elproto.clone = function () {\n\t if (this.removed) {\n\t return null;\n\t }\n\t var out = this.paper[this.type]().attr(this.attr());\n\t this.__set__ && this.__set__.push(out);\n\t return out;\n\t };\n\t /*\\\n\t * Element.glow\n\t [ method ]\n\t **\n\t * Return set of elements that create glow-like effect around given element. See @Paper.set.\n\t *\n\t * Note: Glow is not connected to the element. If you change element attributes it won’t adjust itself.\n\t **\n\t > Parameters\n\t **\n\t - glow (object) #optional parameters object with all properties optional:\n\t o {\n\t o width (number) size of the glow, default is `10`\n\t o fill (boolean) will it be filled, default is `false`\n\t o opacity (number) opacity, default is `0.5`\n\t o offsetx (number) horizontal offset, default is `0`\n\t o offsety (number) vertical offset, default is `0`\n\t o color (string) glow colour, default is `black`\n\t o }\n\t = (object) @Paper.set of elements that represents glow\n\t \\*/\n\t elproto.glow = function (glow) {\n\t if (this.type == \"text\") {\n\t return null;\n\t }\n\t glow = glow || {};\n\t var s = {\n\t width: (glow.width || 10) + (+this.attr(\"stroke-width\") || 1),\n\t fill: glow.fill || false,\n\t opacity: glow.opacity == null ? .5 : glow.opacity,\n\t offsetx: glow.offsetx || 0,\n\t offsety: glow.offsety || 0,\n\t color: glow.color || \"#000\"\n\t },\n\t c = s.width / 2,\n\t r = this.paper,\n\t out = r.set(),\n\t path = this.realPath || getPath[this.type](this);\n\t path = this.matrix ? mapPath(path, this.matrix) : path;\n\t for (var i = 1; i < c + 1; i++) {\n\t out.push(r.path(path).attr({\n\t stroke: s.color,\n\t fill: s.fill ? s.color : \"none\",\n\t \"stroke-linejoin\": \"round\",\n\t \"stroke-linecap\": \"round\",\n\t \"stroke-width\": +(s.width / c * i).toFixed(3),\n\t opacity: +(s.opacity / c).toFixed(3)\n\t }));\n\t }\n\t return out.insertBefore(this).translate(s.offsetx, s.offsety);\n\t };\n\t var curveslengths = {},\n\t getPointAtSegmentLength = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {\n\t if (length == null) {\n\t return bezlen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);\n\t } else {\n\t return R.findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, getTatLen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length));\n\t }\n\t },\n\t getLengthFactory = function (istotal, subpath) {\n\t return function (path, length, onlystart) {\n\t path = path2curve(path);\n\t var x, y, p, l, sp = \"\", subpaths = {}, point,\n\t len = 0;\n\t for (var i = 0, ii = path.length; i < ii; i++) {\n\t p = path[i];\n\t if (p[0] == \"M\") {\n\t x = +p[1];\n\t y = +p[2];\n\t } else {\n\t l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n\t if (len + l > length) {\n\t if (subpath && !subpaths.start) {\n\t point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n\t sp += [\"C\" + point.start.x, point.start.y, point.m.x, point.m.y, point.x, point.y];\n\t if (onlystart) {return sp;}\n\t subpaths.start = sp;\n\t sp = [\"M\" + point.x, point.y + \"C\" + point.n.x, point.n.y, point.end.x, point.end.y, p[5], p[6]].join();\n\t len += l;\n\t x = +p[5];\n\t y = +p[6];\n\t continue;\n\t }\n\t if (!istotal && !subpath) {\n\t point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n\t return {x: point.x, y: point.y, alpha: point.alpha};\n\t }\n\t }\n\t len += l;\n\t x = +p[5];\n\t y = +p[6];\n\t }\n\t sp += p.shift() + p;\n\t }\n\t subpaths.end = sp;\n\t point = istotal ? len : subpath ? subpaths : R.findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);\n\t point.alpha && (point = {x: point.x, y: point.y, alpha: point.alpha});\n\t return point;\n\t };\n\t };\n\t var getTotalLength = getLengthFactory(1),\n\t getPointAtLength = getLengthFactory(),\n\t getSubpathsAtLength = getLengthFactory(0, 1);\n\t /*\\\n\t * Raphael.getTotalLength\n\t [ method ]\n\t **\n\t * Returns length of the given path in pixels.\n\t **\n\t > Parameters\n\t **\n\t - path (string) SVG path string.\n\t **\n\t = (number) length.\n\t \\*/\n\t R.getTotalLength = getTotalLength;\n\t /*\\\n\t * Raphael.getPointAtLength\n\t [ method ]\n\t **\n\t * Return coordinates of the point located at the given length on the given path.\n\t **\n\t > Parameters\n\t **\n\t - path (string) SVG path string\n\t - length (number)\n\t **\n\t = (object) representation of the point:\n\t o {\n\t o x: (number) x coordinate\n\t o y: (number) y coordinate\n\t o alpha: (number) angle of derivative\n\t o }\n\t \\*/\n\t R.getPointAtLength = getPointAtLength;\n\t /*\\\n\t * Raphael.getSubpath\n\t [ method ]\n\t **\n\t * Return subpath of a given path from given length to given length.\n\t **\n\t > Parameters\n\t **\n\t - path (string) SVG path string\n\t - from (number) position of the start of the segment\n\t - to (number) position of the end of the segment\n\t **\n\t = (string) pathstring for the segment\n\t \\*/\n\t R.getSubpath = function (path, from, to) {\n\t if (this.getTotalLength(path) - to < 1e-6) {\n\t return getSubpathsAtLength(path, from).end;\n\t }\n\t var a = getSubpathsAtLength(path, to, 1);\n\t return from ? getSubpathsAtLength(a, from).end : a;\n\t };\n\t /*\\\n\t * Element.getTotalLength\n\t [ method ]\n\t **\n\t * Returns length of the path in pixels. Only works for element of “path” type.\n\t = (number) length.\n\t \\*/\n\t elproto.getTotalLength = function () {\n\t var path = this.getPath();\n\t if (!path) {\n\t return;\n\t }\n\n\t if (this.node.getTotalLength) {\n\t return this.node.getTotalLength();\n\t }\n\n\t return getTotalLength(path);\n\t };\n\t /*\\\n\t * Element.getPointAtLength\n\t [ method ]\n\t **\n\t * Return coordinates of the point located at the given length on the given path. Only works for element of “path” type.\n\t **\n\t > Parameters\n\t **\n\t - length (number)\n\t **\n\t = (object) representation of the point:\n\t o {\n\t o x: (number) x coordinate\n\t o y: (number) y coordinate\n\t o alpha: (number) angle of derivative\n\t o }\n\t \\*/\n\t elproto.getPointAtLength = function (length) {\n\t var path = this.getPath();\n\t if (!path) {\n\t return;\n\t }\n\n\t return getPointAtLength(path, length);\n\t };\n\t /*\\\n\t * Element.getPath\n\t [ method ]\n\t **\n\t * Returns path of the element. Only works for elements of “path” type and simple elements like circle.\n\t = (object) path\n\t **\n\t \\*/\n\t elproto.getPath = function () {\n\t var path,\n\t getPath = R._getPath[this.type];\n\n\t if (this.type == \"text\" || this.type == \"set\") {\n\t return;\n\t }\n\n\t if (getPath) {\n\t path = getPath(this);\n\t }\n\n\t return path;\n\t };\n\t /*\\\n\t * Element.getSubpath\n\t [ method ]\n\t **\n\t * Return subpath of a given element from given length to given length. Only works for element of “path” type.\n\t **\n\t > Parameters\n\t **\n\t - from (number) position of the start of the segment\n\t - to (number) position of the end of the segment\n\t **\n\t = (string) pathstring for the segment\n\t \\*/\n\t elproto.getSubpath = function (from, to) {\n\t var path = this.getPath();\n\t if (!path) {\n\t return;\n\t }\n\n\t return R.getSubpath(path, from, to);\n\t };\n\t /*\\\n\t * Raphael.easing_formulas\n\t [ property ]\n\t **\n\t * Object that contains easing formulas for animation. You could extend it with your own. By default it has following list of easing:\n\t #
    \n\t #
  • “linear”
  • \n\t #
  • “<” or “easeIn” or “ease-in”
  • \n\t #
  • “>” or “easeOut” or “ease-out”
  • \n\t #
  • “<>” or “easeInOut” or “ease-in-out”
  • \n\t #
  • “backIn” or “back-in”
  • \n\t #
  • “backOut” or “back-out”
  • \n\t #
  • “elastic”
  • \n\t #
  • “bounce”
  • \n\t #
\n\t #

See also Easing demo.

\n\t \\*/\n\t var ef = R.easing_formulas = {\n\t linear: function (n) {\n\t return n;\n\t },\n\t \"<\": function (n) {\n\t return pow(n, 1.7);\n\t },\n\t \">\": function (n) {\n\t return pow(n, .48);\n\t },\n\t \"<>\": function (n) {\n\t var q = .48 - n / 1.04,\n\t Q = math.sqrt(.1734 + q * q),\n\t x = Q - q,\n\t X = pow(abs(x), 1 / 3) * (x < 0 ? -1 : 1),\n\t y = -Q - q,\n\t Y = pow(abs(y), 1 / 3) * (y < 0 ? -1 : 1),\n\t t = X + Y + .5;\n\t return (1 - t) * 3 * t * t + t * t * t;\n\t },\n\t backIn: function (n) {\n\t var s = 1.70158;\n\t return n * n * ((s + 1) * n - s);\n\t },\n\t backOut: function (n) {\n\t n = n - 1;\n\t var s = 1.70158;\n\t return n * n * ((s + 1) * n + s) + 1;\n\t },\n\t elastic: function (n) {\n\t if (n == !!n) {\n\t return n;\n\t }\n\t return pow(2, -10 * n) * math.sin((n - .075) * (2 * PI) / .3) + 1;\n\t },\n\t bounce: function (n) {\n\t var s = 7.5625,\n\t p = 2.75,\n\t l;\n\t if (n < (1 / p)) {\n\t l = s * n * n;\n\t } else {\n\t if (n < (2 / p)) {\n\t n -= (1.5 / p);\n\t l = s * n * n + .75;\n\t } else {\n\t if (n < (2.5 / p)) {\n\t n -= (2.25 / p);\n\t l = s * n * n + .9375;\n\t } else {\n\t n -= (2.625 / p);\n\t l = s * n * n + .984375;\n\t }\n\t }\n\t }\n\t return l;\n\t }\n\t };\n\t ef.easeIn = ef[\"ease-in\"] = ef[\"<\"];\n\t ef.easeOut = ef[\"ease-out\"] = ef[\">\"];\n\t ef.easeInOut = ef[\"ease-in-out\"] = ef[\"<>\"];\n\t ef[\"back-in\"] = ef.backIn;\n\t ef[\"back-out\"] = ef.backOut;\n\n\t var animationElements = [],\n\t requestAnimFrame = window.requestAnimationFrame ||\n\t window.webkitRequestAnimationFrame ||\n\t window.mozRequestAnimationFrame ||\n\t window.oRequestAnimationFrame ||\n\t window.msRequestAnimationFrame ||\n\t function (callback) {\n\t setTimeout(callback, 16);\n\t },\n\t animation = function () {\n\t var Now = +new Date,\n\t l = 0;\n\t for (; l < animationElements.length; l++) {\n\t var e = animationElements[l];\n\t if (e.el.removed || e.paused) {\n\t continue;\n\t }\n\t var time = Now - e.start,\n\t ms = e.ms,\n\t easing = e.easing,\n\t from = e.from,\n\t diff = e.diff,\n\t to = e.to,\n\t t = e.t,\n\t that = e.el,\n\t set = {},\n\t now,\n\t init = {},\n\t key;\n\t if (e.initstatus) {\n\t time = (e.initstatus * e.anim.top - e.prev) / (e.percent - e.prev) * ms;\n\t e.status = e.initstatus;\n\t delete e.initstatus;\n\t e.stop && animationElements.splice(l--, 1);\n\t } else {\n\t e.status = (e.prev + (e.percent - e.prev) * (time / ms)) / e.anim.top;\n\t }\n\t if (time < 0) {\n\t continue;\n\t }\n\t if (time < ms) {\n\t var pos = easing(time / ms);\n\t for (var attr in from) if (from[has](attr)) {\n\t switch (availableAnimAttrs[attr]) {\n\t case nu:\n\t now = +from[attr] + pos * ms * diff[attr];\n\t break;\n\t case \"colour\":\n\t now = \"rgb(\" + [\n\t upto255(round(from[attr].r + pos * ms * diff[attr].r)),\n\t upto255(round(from[attr].g + pos * ms * diff[attr].g)),\n\t upto255(round(from[attr].b + pos * ms * diff[attr].b))\n\t ].join(\",\") + \")\";\n\t break;\n\t case \"path\":\n\t now = [];\n\t for (var i = 0, ii = from[attr].length; i < ii; i++) {\n\t now[i] = [from[attr][i][0]];\n\t for (var j = 1, jj = from[attr][i].length; j < jj; j++) {\n\t now[i][j] = +from[attr][i][j] + pos * ms * diff[attr][i][j];\n\t }\n\t now[i] = now[i].join(S);\n\t }\n\t now = now.join(S);\n\t break;\n\t case \"transform\":\n\t if (diff[attr].real) {\n\t now = [];\n\t for (i = 0, ii = from[attr].length; i < ii; i++) {\n\t now[i] = [from[attr][i][0]];\n\t for (j = 1, jj = from[attr][i].length; j < jj; j++) {\n\t now[i][j] = from[attr][i][j] + pos * ms * diff[attr][i][j];\n\t }\n\t }\n\t } else {\n\t var get = function (i) {\n\t return +from[attr][i] + pos * ms * diff[attr][i];\n\t };\n\t // now = [[\"r\", get(2), 0, 0], [\"t\", get(3), get(4)], [\"s\", get(0), get(1), 0, 0]];\n\t now = [[\"m\", get(0), get(1), get(2), get(3), get(4), get(5)]];\n\t }\n\t break;\n\t case \"csv\":\n\t if (attr == \"clip-rect\") {\n\t now = [];\n\t i = 4;\n\t while (i--) {\n\t now[i] = +from[attr][i] + pos * ms * diff[attr][i];\n\t }\n\t }\n\t break;\n\t default:\n\t var from2 = [][concat](from[attr]);\n\t now = [];\n\t i = that.paper.customAttributes[attr].length;\n\t while (i--) {\n\t now[i] = +from2[i] + pos * ms * diff[attr][i];\n\t }\n\t break;\n\t }\n\t set[attr] = now;\n\t }\n\t that.attr(set);\n\t (function (id, that, anim) {\n\t setTimeout(function () {\n\t eve(\"raphael.anim.frame.\" + id, that, anim);\n\t });\n\t })(that.id, that, e.anim);\n\t } else {\n\t (function(f, el, a) {\n\t setTimeout(function() {\n\t eve(\"raphael.anim.frame.\" + el.id, el, a);\n\t eve(\"raphael.anim.finish.\" + el.id, el, a);\n\t R.is(f, \"function\") && f.call(el);\n\t });\n\t })(e.callback, that, e.anim);\n\t that.attr(to);\n\t animationElements.splice(l--, 1);\n\t if (e.repeat > 1 && !e.next) {\n\t for (key in to) if (to[has](key)) {\n\t init[key] = e.totalOrigin[key];\n\t }\n\t e.el.attr(init);\n\t runAnimation(e.anim, e.el, e.anim.percents[0], null, e.totalOrigin, e.repeat - 1);\n\t }\n\t if (e.next && !e.stop) {\n\t runAnimation(e.anim, e.el, e.next, null, e.totalOrigin, e.repeat);\n\t }\n\t }\n\t }\n\t animationElements.length && requestAnimFrame(animation);\n\t },\n\t upto255 = function (color) {\n\t return color > 255 ? 255 : color < 0 ? 0 : color;\n\t };\n\t /*\\\n\t * Element.animateWith\n\t [ method ]\n\t **\n\t * Acts similar to @Element.animate, but ensure that given animation runs in sync with another given element.\n\t **\n\t > Parameters\n\t **\n\t - el (object) element to sync with\n\t - anim (object) animation to sync with\n\t - params (object) #optional final attributes for the element, see also @Element.attr\n\t - ms (number) #optional number of milliseconds for animation to run\n\t - easing (string) #optional easing type. Accept on of @Raphael.easing_formulas or CSS format: `cubic‐bezier(XX, XX, XX, XX)`\n\t - callback (function) #optional callback function. Will be called at the end of animation.\n\t * or\n\t - element (object) element to sync with\n\t - anim (object) animation to sync with\n\t - animation (object) #optional animation object, see @Raphael.animation\n\t **\n\t = (object) original element\n\t \\*/\n\t elproto.animateWith = function (el, anim, params, ms, easing, callback) {\n\t var element = this;\n\t if (element.removed) {\n\t callback && callback.call(element);\n\t return element;\n\t }\n\t var a = params instanceof Animation ? params : R.animation(params, ms, easing, callback),\n\t x, y;\n\t runAnimation(a, element, a.percents[0], null, element.attr());\n\t for (var i = 0, ii = animationElements.length; i < ii; i++) {\n\t if (animationElements[i].anim == anim && animationElements[i].el == el) {\n\t animationElements[ii - 1].start = animationElements[i].start;\n\t break;\n\t }\n\t }\n\t return element;\n\t //\n\t //\n\t // var a = params ? R.animation(params, ms, easing, callback) : anim,\n\t // status = element.status(anim);\n\t // return this.animate(a).status(a, status * anim.ms / a.ms);\n\t };\n\t function CubicBezierAtTime(t, p1x, p1y, p2x, p2y, duration) {\n\t var cx = 3 * p1x,\n\t bx = 3 * (p2x - p1x) - cx,\n\t ax = 1 - cx - bx,\n\t cy = 3 * p1y,\n\t by = 3 * (p2y - p1y) - cy,\n\t ay = 1 - cy - by;\n\t function sampleCurveX(t) {\n\t return ((ax * t + bx) * t + cx) * t;\n\t }\n\t function solve(x, epsilon) {\n\t var t = solveCurveX(x, epsilon);\n\t return ((ay * t + by) * t + cy) * t;\n\t }\n\t function solveCurveX(x, epsilon) {\n\t var t0, t1, t2, x2, d2, i;\n\t for(t2 = x, i = 0; i < 8; i++) {\n\t x2 = sampleCurveX(t2) - x;\n\t if (abs(x2) < epsilon) {\n\t return t2;\n\t }\n\t d2 = (3 * ax * t2 + 2 * bx) * t2 + cx;\n\t if (abs(d2) < 1e-6) {\n\t break;\n\t }\n\t t2 = t2 - x2 / d2;\n\t }\n\t t0 = 0;\n\t t1 = 1;\n\t t2 = x;\n\t if (t2 < t0) {\n\t return t0;\n\t }\n\t if (t2 > t1) {\n\t return t1;\n\t }\n\t while (t0 < t1) {\n\t x2 = sampleCurveX(t2);\n\t if (abs(x2 - x) < epsilon) {\n\t return t2;\n\t }\n\t if (x > x2) {\n\t t0 = t2;\n\t } else {\n\t t1 = t2;\n\t }\n\t t2 = (t1 - t0) / 2 + t0;\n\t }\n\t return t2;\n\t }\n\t return solve(t, 1 / (200 * duration));\n\t }\n\t elproto.onAnimation = function (f) {\n\t f ? eve.on(\"raphael.anim.frame.\" + this.id, f) : eve.unbind(\"raphael.anim.frame.\" + this.id);\n\t return this;\n\t };\n\t function Animation(anim, ms) {\n\t var percents = [],\n\t newAnim = {};\n\t this.ms = ms;\n\t this.times = 1;\n\t if (anim) {\n\t for (var attr in anim) if (anim[has](attr)) {\n\t newAnim[toFloat(attr)] = anim[attr];\n\t percents.push(toFloat(attr));\n\t }\n\t percents.sort(sortByNumber);\n\t }\n\t this.anim = newAnim;\n\t this.top = percents[percents.length - 1];\n\t this.percents = percents;\n\t }\n\t /*\\\n\t * Animation.delay\n\t [ method ]\n\t **\n\t * Creates a copy of existing animation object with given delay.\n\t **\n\t > Parameters\n\t **\n\t - delay (number) number of ms to pass between animation start and actual animation\n\t **\n\t = (object) new altered Animation object\n\t | var anim = Raphael.animation({cx: 10, cy: 20}, 2e3);\n\t | circle1.animate(anim); // run the given animation immediately\n\t | circle2.animate(anim.delay(500)); // run the given animation after 500 ms\n\t \\*/\n\t Animation.prototype.delay = function (delay) {\n\t var a = new Animation(this.anim, this.ms);\n\t a.times = this.times;\n\t a.del = +delay || 0;\n\t return a;\n\t };\n\t /*\\\n\t * Animation.repeat\n\t [ method ]\n\t **\n\t * Creates a copy of existing animation object with given repetition.\n\t **\n\t > Parameters\n\t **\n\t - repeat (number) number iterations of animation. For infinite animation pass `Infinity`\n\t **\n\t = (object) new altered Animation object\n\t \\*/\n\t Animation.prototype.repeat = function (times) {\n\t var a = new Animation(this.anim, this.ms);\n\t a.del = this.del;\n\t a.times = math.floor(mmax(times, 0)) || 1;\n\t return a;\n\t };\n\t function runAnimation(anim, element, percent, status, totalOrigin, times) {\n\t percent = toFloat(percent);\n\t var params,\n\t isInAnim,\n\t isInAnimSet,\n\t percents = [],\n\t next,\n\t prev,\n\t timestamp,\n\t ms = anim.ms,\n\t from = {},\n\t to = {},\n\t diff = {};\n\t if (status) {\n\t for (i = 0, ii = animationElements.length; i < ii; i++) {\n\t var e = animationElements[i];\n\t if (e.el.id == element.id && e.anim == anim) {\n\t if (e.percent != percent) {\n\t animationElements.splice(i, 1);\n\t isInAnimSet = 1;\n\t } else {\n\t isInAnim = e;\n\t }\n\t element.attr(e.totalOrigin);\n\t break;\n\t }\n\t }\n\t } else {\n\t status = +to; // NaN\n\t }\n\t for (var i = 0, ii = anim.percents.length; i < ii; i++) {\n\t if (anim.percents[i] == percent || anim.percents[i] > status * anim.top) {\n\t percent = anim.percents[i];\n\t prev = anim.percents[i - 1] || 0;\n\t ms = ms / anim.top * (percent - prev);\n\t next = anim.percents[i + 1];\n\t params = anim.anim[percent];\n\t break;\n\t } else if (status) {\n\t element.attr(anim.anim[anim.percents[i]]);\n\t }\n\t }\n\t if (!params) {\n\t return;\n\t }\n\t if (!isInAnim) {\n\t for (var attr in params) if (params[has](attr)) {\n\t if (availableAnimAttrs[has](attr) || element.paper.customAttributes[has](attr)) {\n\t from[attr] = element.attr(attr);\n\t (from[attr] == null) && (from[attr] = availableAttrs[attr]);\n\t to[attr] = params[attr];\n\t switch (availableAnimAttrs[attr]) {\n\t case nu:\n\t diff[attr] = (to[attr] - from[attr]) / ms;\n\t break;\n\t case \"colour\":\n\t from[attr] = R.getRGB(from[attr]);\n\t var toColour = R.getRGB(to[attr]);\n\t diff[attr] = {\n\t r: (toColour.r - from[attr].r) / ms,\n\t g: (toColour.g - from[attr].g) / ms,\n\t b: (toColour.b - from[attr].b) / ms\n\t };\n\t break;\n\t case \"path\":\n\t var pathes = path2curve(from[attr], to[attr]),\n\t toPath = pathes[1];\n\t from[attr] = pathes[0];\n\t diff[attr] = [];\n\t for (i = 0, ii = from[attr].length; i < ii; i++) {\n\t diff[attr][i] = [0];\n\t for (var j = 1, jj = from[attr][i].length; j < jj; j++) {\n\t diff[attr][i][j] = (toPath[i][j] - from[attr][i][j]) / ms;\n\t }\n\t }\n\t break;\n\t case \"transform\":\n\t var _ = element._,\n\t eq = equaliseTransform(_[attr], to[attr]);\n\t if (eq) {\n\t from[attr] = eq.from;\n\t to[attr] = eq.to;\n\t diff[attr] = [];\n\t diff[attr].real = true;\n\t for (i = 0, ii = from[attr].length; i < ii; i++) {\n\t diff[attr][i] = [from[attr][i][0]];\n\t for (j = 1, jj = from[attr][i].length; j < jj; j++) {\n\t diff[attr][i][j] = (to[attr][i][j] - from[attr][i][j]) / ms;\n\t }\n\t }\n\t } else {\n\t var m = (element.matrix || new Matrix),\n\t to2 = {\n\t _: {transform: _.transform},\n\t getBBox: function () {\n\t return element.getBBox(1);\n\t }\n\t };\n\t from[attr] = [\n\t m.a,\n\t m.b,\n\t m.c,\n\t m.d,\n\t m.e,\n\t m.f\n\t ];\n\t extractTransform(to2, to[attr]);\n\t to[attr] = to2._.transform;\n\t diff[attr] = [\n\t (to2.matrix.a - m.a) / ms,\n\t (to2.matrix.b - m.b) / ms,\n\t (to2.matrix.c - m.c) / ms,\n\t (to2.matrix.d - m.d) / ms,\n\t (to2.matrix.e - m.e) / ms,\n\t (to2.matrix.f - m.f) / ms\n\t ];\n\t // from[attr] = [_.sx, _.sy, _.deg, _.dx, _.dy];\n\t // var to2 = {_:{}, getBBox: function () { return element.getBBox(); }};\n\t // extractTransform(to2, to[attr]);\n\t // diff[attr] = [\n\t // (to2._.sx - _.sx) / ms,\n\t // (to2._.sy - _.sy) / ms,\n\t // (to2._.deg - _.deg) / ms,\n\t // (to2._.dx - _.dx) / ms,\n\t // (to2._.dy - _.dy) / ms\n\t // ];\n\t }\n\t break;\n\t case \"csv\":\n\t var values = Str(params[attr])[split](separator),\n\t from2 = Str(from[attr])[split](separator);\n\t if (attr == \"clip-rect\") {\n\t from[attr] = from2;\n\t diff[attr] = [];\n\t i = from2.length;\n\t while (i--) {\n\t diff[attr][i] = (values[i] - from[attr][i]) / ms;\n\t }\n\t }\n\t to[attr] = values;\n\t break;\n\t default:\n\t values = [][concat](params[attr]);\n\t from2 = [][concat](from[attr]);\n\t diff[attr] = [];\n\t i = element.paper.customAttributes[attr].length;\n\t while (i--) {\n\t diff[attr][i] = ((values[i] || 0) - (from2[i] || 0)) / ms;\n\t }\n\t break;\n\t }\n\t }\n\t }\n\t var easing = params.easing,\n\t easyeasy = R.easing_formulas[easing];\n\t if (!easyeasy) {\n\t easyeasy = Str(easing).match(bezierrg);\n\t if (easyeasy && easyeasy.length == 5) {\n\t var curve = easyeasy;\n\t easyeasy = function (t) {\n\t return CubicBezierAtTime(t, +curve[1], +curve[2], +curve[3], +curve[4], ms);\n\t };\n\t } else {\n\t easyeasy = pipe;\n\t }\n\t }\n\t timestamp = params.start || anim.start || +new Date;\n\t e = {\n\t anim: anim,\n\t percent: percent,\n\t timestamp: timestamp,\n\t start: timestamp + (anim.del || 0),\n\t status: 0,\n\t initstatus: status || 0,\n\t stop: false,\n\t ms: ms,\n\t easing: easyeasy,\n\t from: from,\n\t diff: diff,\n\t to: to,\n\t el: element,\n\t callback: params.callback,\n\t prev: prev,\n\t next: next,\n\t repeat: times || anim.times,\n\t origin: element.attr(),\n\t totalOrigin: totalOrigin\n\t };\n\t animationElements.push(e);\n\t if (status && !isInAnim && !isInAnimSet) {\n\t e.stop = true;\n\t e.start = new Date - ms * status;\n\t if (animationElements.length == 1) {\n\t return animation();\n\t }\n\t }\n\t if (isInAnimSet) {\n\t e.start = new Date - e.ms * status;\n\t }\n\t animationElements.length == 1 && requestAnimFrame(animation);\n\t } else {\n\t isInAnim.initstatus = status;\n\t isInAnim.start = new Date - isInAnim.ms * status;\n\t }\n\t eve(\"raphael.anim.start.\" + element.id, element, anim);\n\t }\n\t /*\\\n\t * Raphael.animation\n\t [ method ]\n\t **\n\t * Creates an animation object that can be passed to the @Element.animate or @Element.animateWith methods.\n\t * See also @Animation.delay and @Animation.repeat methods.\n\t **\n\t > Parameters\n\t **\n\t - params (object) final attributes for the element, see also @Element.attr\n\t - ms (number) number of milliseconds for animation to run\n\t - easing (string) #optional easing type. Accept one of @Raphael.easing_formulas or CSS format: `cubic‐bezier(XX, XX, XX, XX)`\n\t - callback (function) #optional callback function. Will be called at the end of animation.\n\t **\n\t = (object) @Animation\n\t \\*/\n\t R.animation = function (params, ms, easing, callback) {\n\t if (params instanceof Animation) {\n\t return params;\n\t }\n\t if (R.is(easing, \"function\") || !easing) {\n\t callback = callback || easing || null;\n\t easing = null;\n\t }\n\t params = Object(params);\n\t ms = +ms || 0;\n\t var p = {},\n\t json,\n\t attr;\n\t for (attr in params) if (params[has](attr) && toFloat(attr) != attr && toFloat(attr) + \"%\" != attr) {\n\t json = true;\n\t p[attr] = params[attr];\n\t }\n\t if (!json) {\n\t // if percent-like syntax is used and end-of-all animation callback used\n\t if(callback){\n\t // find the last one\n\t var lastKey = 0;\n\t for(var i in params){\n\t var percent = toInt(i);\n\t if(params[has](i) && percent > lastKey){\n\t lastKey = percent;\n\t }\n\t }\n\t lastKey += '%';\n\t // if already defined callback in the last keyframe, skip\n\t !params[lastKey].callback && (params[lastKey].callback = callback);\n\t }\n\t return new Animation(params, ms);\n\t } else {\n\t easing && (p.easing = easing);\n\t callback && (p.callback = callback);\n\t return new Animation({100: p}, ms);\n\t }\n\t };\n\t /*\\\n\t * Element.animate\n\t [ method ]\n\t **\n\t * Creates and starts animation for given element.\n\t **\n\t > Parameters\n\t **\n\t - params (object) final attributes for the element, see also @Element.attr\n\t - ms (number) number of milliseconds for animation to run\n\t - easing (string) #optional easing type. Accept one of @Raphael.easing_formulas or CSS format: `cubic‐bezier(XX, XX, XX, XX)`\n\t - callback (function) #optional callback function. Will be called at the end of animation.\n\t * or\n\t - animation (object) animation object, see @Raphael.animation\n\t **\n\t = (object) original element\n\t \\*/\n\t elproto.animate = function (params, ms, easing, callback) {\n\t var element = this;\n\t if (element.removed) {\n\t callback && callback.call(element);\n\t return element;\n\t }\n\t var anim = params instanceof Animation ? params : R.animation(params, ms, easing, callback);\n\t runAnimation(anim, element, anim.percents[0], null, element.attr());\n\t return element;\n\t };\n\t /*\\\n\t * Element.setTime\n\t [ method ]\n\t **\n\t * Sets the status of animation of the element in milliseconds. Similar to @Element.status method.\n\t **\n\t > Parameters\n\t **\n\t - anim (object) animation object\n\t - value (number) number of milliseconds from the beginning of the animation\n\t **\n\t = (object) original element if `value` is specified\n\t * Note, that during animation following events are triggered:\n\t *\n\t * On each animation frame event `anim.frame.`, on start `anim.start.` and on end `anim.finish.`.\n\t \\*/\n\t elproto.setTime = function (anim, value) {\n\t if (anim && value != null) {\n\t this.status(anim, mmin(value, anim.ms) / anim.ms);\n\t }\n\t return this;\n\t };\n\t /*\\\n\t * Element.status\n\t [ method ]\n\t **\n\t * Gets or sets the status of animation of the element.\n\t **\n\t > Parameters\n\t **\n\t - anim (object) #optional animation object\n\t - value (number) #optional 0 – 1. If specified, method works like a setter and sets the status of a given animation to the value. This will cause animation to jump to the given position.\n\t **\n\t = (number) status\n\t * or\n\t = (array) status if `anim` is not specified. Array of objects in format:\n\t o {\n\t o anim: (object) animation object\n\t o status: (number) status\n\t o }\n\t * or\n\t = (object) original element if `value` is specified\n\t \\*/\n\t elproto.status = function (anim, value) {\n\t var out = [],\n\t i = 0,\n\t len,\n\t e;\n\t if (value != null) {\n\t runAnimation(anim, this, -1, mmin(value, 1));\n\t return this;\n\t } else {\n\t len = animationElements.length;\n\t for (; i < len; i++) {\n\t e = animationElements[i];\n\t if (e.el.id == this.id && (!anim || e.anim == anim)) {\n\t if (anim) {\n\t return e.status;\n\t }\n\t out.push({\n\t anim: e.anim,\n\t status: e.status\n\t });\n\t }\n\t }\n\t if (anim) {\n\t return 0;\n\t }\n\t return out;\n\t }\n\t };\n\t /*\\\n\t * Element.pause\n\t [ method ]\n\t **\n\t * Stops animation of the element with ability to resume it later on.\n\t **\n\t > Parameters\n\t **\n\t - anim (object) #optional animation object\n\t **\n\t = (object) original element\n\t \\*/\n\t elproto.pause = function (anim) {\n\t for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n\t if (eve(\"raphael.anim.pause.\" + this.id, this, animationElements[i].anim) !== false) {\n\t animationElements[i].paused = true;\n\t }\n\t }\n\t return this;\n\t };\n\t /*\\\n\t * Element.resume\n\t [ method ]\n\t **\n\t * Resumes animation if it was paused with @Element.pause method.\n\t **\n\t > Parameters\n\t **\n\t - anim (object) #optional animation object\n\t **\n\t = (object) original element\n\t \\*/\n\t elproto.resume = function (anim) {\n\t for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n\t var e = animationElements[i];\n\t if (eve(\"raphael.anim.resume.\" + this.id, this, e.anim) !== false) {\n\t delete e.paused;\n\t this.status(e.anim, e.status);\n\t }\n\t }\n\t return this;\n\t };\n\t /*\\\n\t * Element.stop\n\t [ method ]\n\t **\n\t * Stops animation of the element.\n\t **\n\t > Parameters\n\t **\n\t - anim (object) #optional animation object\n\t **\n\t = (object) original element\n\t \\*/\n\t elproto.stop = function (anim) {\n\t for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.id == this.id && (!anim || animationElements[i].anim == anim)) {\n\t if (eve(\"raphael.anim.stop.\" + this.id, this, animationElements[i].anim) !== false) {\n\t animationElements.splice(i--, 1);\n\t }\n\t }\n\t return this;\n\t };\n\t function stopAnimation(paper) {\n\t for (var i = 0; i < animationElements.length; i++) if (animationElements[i].el.paper == paper) {\n\t animationElements.splice(i--, 1);\n\t }\n\t }\n\t eve.on(\"raphael.remove\", stopAnimation);\n\t eve.on(\"raphael.clear\", stopAnimation);\n\t elproto.toString = function () {\n\t return \"Rapha\\xebl\\u2019s object\";\n\t };\n\n\t // Set\n\t var Set = function (items) {\n\t this.items = [];\n\t this.length = 0;\n\t this.type = \"set\";\n\t if (items) {\n\t for (var i = 0, ii = items.length; i < ii; i++) {\n\t if (items[i] && (items[i].constructor == elproto.constructor || items[i].constructor == Set)) {\n\t this[this.items.length] = this.items[this.items.length] = items[i];\n\t this.length++;\n\t }\n\t }\n\t }\n\t },\n\t setproto = Set.prototype;\n\t /*\\\n\t * Set.push\n\t [ method ]\n\t **\n\t * Adds each argument to the current set.\n\t = (object) original element\n\t \\*/\n\t setproto.push = function () {\n\t var item,\n\t len;\n\t for (var i = 0, ii = arguments.length; i < ii; i++) {\n\t item = arguments[i];\n\t if (item && (item.constructor == elproto.constructor || item.constructor == Set)) {\n\t len = this.items.length;\n\t this[len] = this.items[len] = item;\n\t this.length++;\n\t }\n\t }\n\t return this;\n\t };\n\t /*\\\n\t * Set.pop\n\t [ method ]\n\t **\n\t * Removes last element and returns it.\n\t = (object) element\n\t \\*/\n\t setproto.pop = function () {\n\t this.length && delete this[this.length--];\n\t return this.items.pop();\n\t };\n\t /*\\\n\t * Set.forEach\n\t [ method ]\n\t **\n\t * Executes given function for each element in the set.\n\t *\n\t * If function returns `false` it will stop loop running.\n\t **\n\t > Parameters\n\t **\n\t - callback (function) function to run\n\t - thisArg (object) context object for the callback\n\t = (object) Set object\n\t \\*/\n\t setproto.forEach = function (callback, thisArg) {\n\t for (var i = 0, ii = this.items.length; i < ii; i++) {\n\t if (callback.call(thisArg, this.items[i], i) === false) {\n\t return this;\n\t }\n\t }\n\t return this;\n\t };\n\t for (var method in elproto) if (elproto[has](method)) {\n\t setproto[method] = (function (methodname) {\n\t return function () {\n\t var arg = arguments;\n\t return this.forEach(function (el) {\n\t el[methodname][apply](el, arg);\n\t });\n\t };\n\t })(method);\n\t }\n\t setproto.attr = function (name, value) {\n\t if (name && R.is(name, array) && R.is(name[0], \"object\")) {\n\t for (var j = 0, jj = name.length; j < jj; j++) {\n\t this.items[j].attr(name[j]);\n\t }\n\t } else {\n\t for (var i = 0, ii = this.items.length; i < ii; i++) {\n\t this.items[i].attr(name, value);\n\t }\n\t }\n\t return this;\n\t };\n\t /*\\\n\t * Set.clear\n\t [ method ]\n\t **\n\t * Removes all elements from the set\n\t \\*/\n\t setproto.clear = function () {\n\t while (this.length) {\n\t this.pop();\n\t }\n\t };\n\t /*\\\n\t * Set.splice\n\t [ method ]\n\t **\n\t * Removes given element from the set\n\t **\n\t > Parameters\n\t **\n\t - index (number) position of the deletion\n\t - count (number) number of element to remove\n\t - insertion… (object) #optional elements to insert\n\t = (object) set elements that were deleted\n\t \\*/\n\t setproto.splice = function (index, count, insertion) {\n\t index = index < 0 ? mmax(this.length + index, 0) : index;\n\t count = mmax(0, mmin(this.length - index, count));\n\t var tail = [],\n\t todel = [],\n\t args = [],\n\t i;\n\t for (i = 2; i < arguments.length; i++) {\n\t args.push(arguments[i]);\n\t }\n\t for (i = 0; i < count; i++) {\n\t todel.push(this[index + i]);\n\t }\n\t for (; i < this.length - index; i++) {\n\t tail.push(this[index + i]);\n\t }\n\t var arglen = args.length;\n\t for (i = 0; i < arglen + tail.length; i++) {\n\t this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];\n\t }\n\t i = this.items.length = this.length -= count - arglen;\n\t while (this[i]) {\n\t delete this[i++];\n\t }\n\t return new Set(todel);\n\t };\n\t /*\\\n\t * Set.exclude\n\t [ method ]\n\t **\n\t * Removes given element from the set\n\t **\n\t > Parameters\n\t **\n\t - element (object) element to remove\n\t = (boolean) `true` if object was found & removed from the set\n\t \\*/\n\t setproto.exclude = function (el) {\n\t for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {\n\t this.splice(i, 1);\n\t return true;\n\t }\n\t };\n\t setproto.animate = function (params, ms, easing, callback) {\n\t (R.is(easing, \"function\") || !easing) && (callback = easing || null);\n\t var len = this.items.length,\n\t i = len,\n\t item,\n\t set = this,\n\t collector;\n\t if (!len) {\n\t return this;\n\t }\n\t callback && (collector = function () {\n\t !--len && callback.call(set);\n\t });\n\t easing = R.is(easing, string) ? easing : collector;\n\t var anim = R.animation(params, ms, easing, collector);\n\t item = this.items[--i].animate(anim);\n\t while (i--) {\n\t this.items[i] && !this.items[i].removed && this.items[i].animateWith(item, anim, anim);\n\t (this.items[i] && !this.items[i].removed) || len--;\n\t }\n\t return this;\n\t };\n\t setproto.insertAfter = function (el) {\n\t var i = this.items.length;\n\t while (i--) {\n\t this.items[i].insertAfter(el);\n\t }\n\t return this;\n\t };\n\t setproto.getBBox = function () {\n\t var x = [],\n\t y = [],\n\t x2 = [],\n\t y2 = [];\n\t for (var i = this.items.length; i--;) if (!this.items[i].removed) {\n\t var box = this.items[i].getBBox();\n\t x.push(box.x);\n\t y.push(box.y);\n\t x2.push(box.x + box.width);\n\t y2.push(box.y + box.height);\n\t }\n\t x = mmin[apply](0, x);\n\t y = mmin[apply](0, y);\n\t x2 = mmax[apply](0, x2);\n\t y2 = mmax[apply](0, y2);\n\t return {\n\t x: x,\n\t y: y,\n\t x2: x2,\n\t y2: y2,\n\t width: x2 - x,\n\t height: y2 - y\n\t };\n\t };\n\t setproto.clone = function (s) {\n\t s = this.paper.set();\n\t for (var i = 0, ii = this.items.length; i < ii; i++) {\n\t s.push(this.items[i].clone());\n\t }\n\t return s;\n\t };\n\t setproto.toString = function () {\n\t return \"Rapha\\xebl\\u2018s set\";\n\t };\n\n\t setproto.glow = function(glowConfig) {\n\t var ret = this.paper.set();\n\t this.forEach(function(shape, index){\n\t var g = shape.glow(glowConfig);\n\t if(g != null){\n\t g.forEach(function(shape2, index2){\n\t ret.push(shape2);\n\t });\n\t }\n\t });\n\t return ret;\n\t };\n\n\n\t /*\\\n\t * Set.isPointInside\n\t [ method ]\n\t **\n\t * Determine if given point is inside this set’s elements\n\t **\n\t > Parameters\n\t **\n\t - x (number) x coordinate of the point\n\t - y (number) y coordinate of the point\n\t = (boolean) `true` if point is inside any of the set's elements\n\t \\*/\n\t setproto.isPointInside = function (x, y) {\n\t var isPointInside = false;\n\t this.forEach(function (el) {\n\t if (el.isPointInside(x, y)) {\n\t isPointInside = true;\n\t return false; // stop loop\n\t }\n\t });\n\t return isPointInside;\n\t };\n\n\t /*\\\n\t * Raphael.registerFont\n\t [ method ]\n\t **\n\t * Adds given font to the registered set of fonts for Raphaël. Should be used as an internal call from within Cufón’s font file.\n\t * Returns original parameter, so it could be used with chaining.\n\t # More about Cufón and how to convert your font form TTF, OTF, etc to JavaScript file.\n\t **\n\t > Parameters\n\t **\n\t - font (object) the font to register\n\t = (object) the font you passed in\n\t > Usage\n\t | Cufon.registerFont(Raphael.registerFont({…}));\n\t \\*/\n\t R.registerFont = function (font) {\n\t if (!font.face) {\n\t return font;\n\t }\n\t this.fonts = this.fonts || {};\n\t var fontcopy = {\n\t w: font.w,\n\t face: {},\n\t glyphs: {}\n\t },\n\t family = font.face[\"font-family\"];\n\t for (var prop in font.face) if (font.face[has](prop)) {\n\t fontcopy.face[prop] = font.face[prop];\n\t }\n\t if (this.fonts[family]) {\n\t this.fonts[family].push(fontcopy);\n\t } else {\n\t this.fonts[family] = [fontcopy];\n\t }\n\t if (!font.svg) {\n\t fontcopy.face[\"units-per-em\"] = toInt(font.face[\"units-per-em\"], 10);\n\t for (var glyph in font.glyphs) if (font.glyphs[has](glyph)) {\n\t var path = font.glyphs[glyph];\n\t fontcopy.glyphs[glyph] = {\n\t w: path.w,\n\t k: {},\n\t d: path.d && \"M\" + path.d.replace(/[mlcxtrv]/g, function (command) {\n\t return {l: \"L\", c: \"C\", x: \"z\", t: \"m\", r: \"l\", v: \"c\"}[command] || \"M\";\n\t }) + \"z\"\n\t };\n\t if (path.k) {\n\t for (var k in path.k) if (path[has](k)) {\n\t fontcopy.glyphs[glyph].k[k] = path.k[k];\n\t }\n\t }\n\t }\n\t }\n\t return font;\n\t };\n\t /*\\\n\t * Paper.getFont\n\t [ method ]\n\t **\n\t * Finds font object in the registered fonts by given parameters. You could specify only one word from the font name, like “Myriad” for “Myriad Pro”.\n\t **\n\t > Parameters\n\t **\n\t - family (string) font family name or any word from it\n\t - weight (string) #optional font weight\n\t - style (string) #optional font style\n\t - stretch (string) #optional font stretch\n\t = (object) the font object\n\t > Usage\n\t | paper.print(100, 100, \"Test string\", paper.getFont(\"Times\", 800), 30);\n\t \\*/\n\t paperproto.getFont = function (family, weight, style, stretch) {\n\t stretch = stretch || \"normal\";\n\t style = style || \"normal\";\n\t weight = +weight || {normal: 400, bold: 700, lighter: 300, bolder: 800}[weight] || 400;\n\t if (!R.fonts) {\n\t return;\n\t }\n\t var font = R.fonts[family];\n\t if (!font) {\n\t var name = new RegExp(\"(^|\\\\s)\" + family.replace(/[^\\w\\d\\s+!~.:_-]/g, E) + \"(\\\\s|$)\", \"i\");\n\t for (var fontName in R.fonts) if (R.fonts[has](fontName)) {\n\t if (name.test(fontName)) {\n\t font = R.fonts[fontName];\n\t break;\n\t }\n\t }\n\t }\n\t var thefont;\n\t if (font) {\n\t for (var i = 0, ii = font.length; i < ii; i++) {\n\t thefont = font[i];\n\t if (thefont.face[\"font-weight\"] == weight && (thefont.face[\"font-style\"] == style || !thefont.face[\"font-style\"]) && thefont.face[\"font-stretch\"] == stretch) {\n\t break;\n\t }\n\t }\n\t }\n\t return thefont;\n\t };\n\t /*\\\n\t * Paper.print\n\t [ method ]\n\t **\n\t * Creates path that represent given text written using given font at given position with given size.\n\t * Result of the method is path element that contains whole text as a separate path.\n\t **\n\t > Parameters\n\t **\n\t - x (number) x position of the text\n\t - y (number) y position of the text\n\t - string (string) text to print\n\t - font (object) font object, see @Paper.getFont\n\t - size (number) #optional size of the font, default is `16`\n\t - origin (string) #optional could be `\"baseline\"` or `\"middle\"`, default is `\"middle\"`\n\t - letter_spacing (number) #optional number in range `-1..1`, default is `0`\n\t - line_spacing (number) #optional number in range `1..3`, default is `1`\n\t = (object) resulting path element, which consist of all letters\n\t > Usage\n\t | var txt = r.print(10, 50, \"print\", r.getFont(\"Museo\"), 30).attr({fill: \"#fff\"});\n\t \\*/\n\t paperproto.print = function (x, y, string, font, size, origin, letter_spacing, line_spacing) {\n\t origin = origin || \"middle\"; // baseline|middle\n\t letter_spacing = mmax(mmin(letter_spacing || 0, 1), -1);\n\t line_spacing = mmax(mmin(line_spacing || 1, 3), 1);\n\t var letters = Str(string)[split](E),\n\t shift = 0,\n\t notfirst = 0,\n\t path = E,\n\t scale;\n\t R.is(font, \"string\") && (font = this.getFont(font));\n\t if (font) {\n\t scale = (size || 16) / font.face[\"units-per-em\"];\n\t var bb = font.face.bbox[split](separator),\n\t top = +bb[0],\n\t lineHeight = bb[3] - bb[1],\n\t shifty = 0,\n\t height = +bb[1] + (origin == \"baseline\" ? lineHeight + (+font.face.descent) : lineHeight / 2);\n\t for (var i = 0, ii = letters.length; i < ii; i++) {\n\t if (letters[i] == \"\\n\") {\n\t shift = 0;\n\t curr = 0;\n\t notfirst = 0;\n\t shifty += lineHeight * line_spacing;\n\t } else {\n\t var prev = notfirst && font.glyphs[letters[i - 1]] || {},\n\t curr = font.glyphs[letters[i]];\n\t shift += notfirst ? (prev.w || font.w) + (prev.k && prev.k[letters[i]] || 0) + (font.w * letter_spacing) : 0;\n\t notfirst = 1;\n\t }\n\t if (curr && curr.d) {\n\t path += R.transformPath(curr.d, [\"t\", shift * scale, shifty * scale, \"s\", scale, scale, top, height, \"t\", (x - top) / scale, (y - height) / scale]);\n\t }\n\t }\n\t }\n\t return this.path(path).attr({\n\t fill: \"#000\",\n\t stroke: \"none\"\n\t });\n\t };\n\n\t /*\\\n\t * Paper.add\n\t [ method ]\n\t **\n\t * Imports elements in JSON array in format `{type: type, }`\n\t **\n\t > Parameters\n\t **\n\t - json (array)\n\t = (object) resulting set of imported elements\n\t > Usage\n\t | paper.add([\n\t | {\n\t | type: \"circle\",\n\t | cx: 10,\n\t | cy: 10,\n\t | r: 5\n\t | },\n\t | {\n\t | type: \"rect\",\n\t | x: 10,\n\t | y: 10,\n\t | width: 10,\n\t | height: 10,\n\t | fill: \"#fc0\"\n\t | }\n\t | ]);\n\t \\*/\n\t paperproto.add = function (json) {\n\t if (R.is(json, \"array\")) {\n\t var res = this.set(),\n\t i = 0,\n\t ii = json.length,\n\t j;\n\t for (; i < ii; i++) {\n\t j = json[i] || {};\n\t elements[has](j.type) && res.push(this[j.type]().attr(j));\n\t }\n\t }\n\t return res;\n\t };\n\n\t /*\\\n\t * Raphael.format\n\t [ method ]\n\t **\n\t * Simple format function. Replaces construction of type “`{}`” to the corresponding argument.\n\t **\n\t > Parameters\n\t **\n\t - token (string) string to format\n\t - … (string) rest of arguments will be treated as parameters for replacement\n\t = (string) formated string\n\t > Usage\n\t | var x = 10,\n\t | y = 20,\n\t | width = 40,\n\t | height = 50;\n\t | // this will draw a rectangular shape equivalent to \"M10,20h40v50h-40z\"\n\t | paper.path(Raphael.format(\"M{0},{1}h{2}v{3}h{4}z\", x, y, width, height, -width));\n\t \\*/\n\t R.format = function (token, params) {\n\t var args = R.is(params, array) ? [0][concat](params) : arguments;\n\t token && R.is(token, string) && args.length - 1 && (token = token.replace(formatrg, function (str, i) {\n\t return args[++i] == null ? E : args[i];\n\t }));\n\t return token || E;\n\t };\n\t /*\\\n\t * Raphael.fullfill\n\t [ method ]\n\t **\n\t * A little bit more advanced format function than @Raphael.format. Replaces construction of type “`{}`” to the corresponding argument.\n\t **\n\t > Parameters\n\t **\n\t - token (string) string to format\n\t - json (object) object which properties will be used as a replacement\n\t = (string) formated string\n\t > Usage\n\t | // this will draw a rectangular shape equivalent to \"M10,20h40v50h-40z\"\n\t | paper.path(Raphael.fullfill(\"M{x},{y}h{dim.width}v{dim.height}h{dim['negative width']}z\", {\n\t | x: 10,\n\t | y: 20,\n\t | dim: {\n\t | width: 40,\n\t | height: 50,\n\t | \"negative width\": -40\n\t | }\n\t | }));\n\t \\*/\n\t R.fullfill = (function () {\n\t var tokenRegex = /\\{([^\\}]+)\\}/g,\n\t objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g, // matches .xxxxx or [\"xxxxx\"] to run over object properties\n\t replacer = function (all, key, obj) {\n\t var res = obj;\n\t key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {\n\t name = name || quotedName;\n\t if (res) {\n\t if (name in res) {\n\t res = res[name];\n\t }\n\t typeof res == \"function\" && isFunc && (res = res());\n\t }\n\t });\n\t res = (res == null || res == obj ? all : res) + \"\";\n\t return res;\n\t };\n\t return function (str, obj) {\n\t return String(str).replace(tokenRegex, function (all, key) {\n\t return replacer(all, key, obj);\n\t });\n\t };\n\t })();\n\t /*\\\n\t * Raphael.ninja\n\t [ method ]\n\t **\n\t * If you want to leave no trace of Raphaël (Well, Raphaël creates only one global variable `Raphael`, but anyway.) You can use `ninja` method.\n\t * Beware, that in this case plugins could stop working, because they are depending on global variable existence.\n\t **\n\t = (object) Raphael object\n\t > Usage\n\t | (function (local_raphael) {\n\t | var paper = local_raphael(10, 10, 320, 200);\n\t | …\n\t | })(Raphael.ninja());\n\t \\*/\n\t R.ninja = function () {\n\t if (oldRaphael.was) {\n\t g.win.Raphael = oldRaphael.is;\n\t } else {\n\t // IE8 raises an error when deleting window property\n\t window.Raphael = undefined;\n\t try {\n\t delete window.Raphael;\n\t } catch(e) {}\n\t }\n\t return R;\n\t };\n\t /*\\\n\t * Raphael.st\n\t [ property (object) ]\n\t **\n\t * You can add your own method to elements and sets. It is wise to add a set method for each element method\n\t * you added, so you will be able to call the same method on sets too.\n\t **\n\t * See also @Raphael.el.\n\t > Usage\n\t | Raphael.el.red = function () {\n\t | this.attr({fill: \"#f00\"});\n\t | };\n\t | Raphael.st.red = function () {\n\t | this.forEach(function (el) {\n\t | el.red();\n\t | });\n\t | };\n\t | // then use it\n\t | paper.set(paper.circle(100, 100, 20), paper.circle(110, 100, 20)).red();\n\t \\*/\n\t R.st = setproto;\n\n\t eve.on(\"raphael.DOMload\", function () {\n\t loaded = true;\n\t });\n\n\t // Firefox <3.6 fix: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html\n\t (function (doc, loaded, f) {\n\t if (doc.readyState == null && doc.addEventListener){\n\t doc.addEventListener(loaded, f = function () {\n\t doc.removeEventListener(loaded, f, false);\n\t doc.readyState = \"complete\";\n\t }, false);\n\t doc.readyState = \"loading\";\n\t }\n\t function isLoaded() {\n\t (/in/).test(doc.readyState) ? setTimeout(isLoaded, 9) : R.eve(\"raphael.DOMload\");\n\t }\n\t isLoaded();\n\t })(document, \"DOMContentLoaded\");\n\n\t return R;\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n\t// \n\t// Licensed under the Apache License, Version 2.0 (the \"License\");\n\t// you may not use this file except in compliance with the License.\n\t// You may obtain a copy of the License at\n\t// \n\t// http://www.apache.org/licenses/LICENSE-2.0\n\t// \n\t// Unless required by applicable law or agreed to in writing, software\n\t// distributed under the License is distributed on an \"AS IS\" BASIS,\n\t// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t// See the License for the specific language governing permissions and\n\t// limitations under the License.\n\t// ┌────────────────────────────────────────────────────────────┐ \\\\\n\t// │ Eve 0.5.0 - JavaScript Events Library │ \\\\\n\t// ├────────────────────────────────────────────────────────────┤ \\\\\n\t// │ Author Dmitry Baranovskiy (http://dmitry.baranovskiy.com/) │ \\\\\n\t// └────────────────────────────────────────────────────────────┘ \\\\\n\n\t(function (glob) {\n\t var version = \"0.5.0\",\n\t has = \"hasOwnProperty\",\n\t separator = /[\\.\\/]/,\n\t comaseparator = /\\s*,\\s*/,\n\t wildcard = \"*\",\n\t fun = function () {},\n\t numsort = function (a, b) {\n\t return a - b;\n\t },\n\t current_event,\n\t stop,\n\t events = {n: {}},\n\t firstDefined = function () {\n\t for (var i = 0, ii = this.length; i < ii; i++) {\n\t if (typeof this[i] != \"undefined\") {\n\t return this[i];\n\t }\n\t }\n\t },\n\t lastDefined = function () {\n\t var i = this.length;\n\t while (--i) {\n\t if (typeof this[i] != \"undefined\") {\n\t return this[i];\n\t }\n\t }\n\t },\n\t objtos = Object.prototype.toString,\n\t Str = String,\n\t isArray = Array.isArray || function (ar) {\n\t return ar instanceof Array || objtos.call(ar) == \"[object Array]\";\n\t };\n\t /*\\\n\t * eve\n\t [ method ]\n\n\t * Fires event with given `name`, given scope and other parameters.\n\n\t > Arguments\n\n\t - name (string) name of the *event*, dot (`.`) or slash (`/`) separated\n\t - scope (object) context for the event handlers\n\t - varargs (...) the rest of arguments will be sent to event handlers\n\n\t = (object) array of returned values from the listeners. Array has two methods `.firstDefined()` and `.lastDefined()` to get first or last not `undefined` value.\n\t \\*/\n\t eve = function (name, scope) {\n\t var e = events,\n\t oldstop = stop,\n\t args = Array.prototype.slice.call(arguments, 2),\n\t listeners = eve.listeners(name),\n\t z = 0,\n\t f = false,\n\t l,\n\t indexed = [],\n\t queue = {},\n\t out = [],\n\t ce = current_event,\n\t errors = [];\n\t out.firstDefined = firstDefined;\n\t out.lastDefined = lastDefined;\n\t current_event = name;\n\t stop = 0;\n\t for (var i = 0, ii = listeners.length; i < ii; i++) if (\"zIndex\" in listeners[i]) {\n\t indexed.push(listeners[i].zIndex);\n\t if (listeners[i].zIndex < 0) {\n\t queue[listeners[i].zIndex] = listeners[i];\n\t }\n\t }\n\t indexed.sort(numsort);\n\t while (indexed[z] < 0) {\n\t l = queue[indexed[z++]];\n\t out.push(l.apply(scope, args));\n\t if (stop) {\n\t stop = oldstop;\n\t return out;\n\t }\n\t }\n\t for (i = 0; i < ii; i++) {\n\t l = listeners[i];\n\t if (\"zIndex\" in l) {\n\t if (l.zIndex == indexed[z]) {\n\t out.push(l.apply(scope, args));\n\t if (stop) {\n\t break;\n\t }\n\t do {\n\t z++;\n\t l = queue[indexed[z]];\n\t l && out.push(l.apply(scope, args));\n\t if (stop) {\n\t break;\n\t }\n\t } while (l)\n\t } else {\n\t queue[l.zIndex] = l;\n\t }\n\t } else {\n\t out.push(l.apply(scope, args));\n\t if (stop) {\n\t break;\n\t }\n\t }\n\t }\n\t stop = oldstop;\n\t current_event = ce;\n\t return out;\n\t };\n\t // Undocumented. Debug only.\n\t eve._events = events;\n\t /*\\\n\t * eve.listeners\n\t [ method ]\n\n\t * Internal method which gives you array of all event handlers that will be triggered by the given `name`.\n\n\t > Arguments\n\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated\n\n\t = (array) array of event handlers\n\t \\*/\n\t eve.listeners = function (name) {\n\t var names = isArray(name) ? name : name.split(separator),\n\t e = events,\n\t item,\n\t items,\n\t k,\n\t i,\n\t ii,\n\t j,\n\t jj,\n\t nes,\n\t es = [e],\n\t out = [];\n\t for (i = 0, ii = names.length; i < ii; i++) {\n\t nes = [];\n\t for (j = 0, jj = es.length; j < jj; j++) {\n\t e = es[j].n;\n\t items = [e[names[i]], e[wildcard]];\n\t k = 2;\n\t while (k--) {\n\t item = items[k];\n\t if (item) {\n\t nes.push(item);\n\t out = out.concat(item.f || []);\n\t }\n\t }\n\t }\n\t es = nes;\n\t }\n\t return out;\n\t };\n\t /*\\\n\t * eve.separator\n\t [ method ]\n\n\t * If for some reasons you don’t like default separators (`.` or `/`) you can specify yours\n\t * here. Be aware that if you pass a string longer than one character it will be treated as\n\t * a list of characters.\n\n\t - separator (string) new separator. Empty string resets to default: `.` or `/`.\n\t \\*/\n\t eve.separator = function (sep) {\n\t if (sep) {\n\t sep = Str(sep).replace(/(?=[\\.\\^\\]\\[\\-])/g, \"\\\\\");\n\t sep = \"[\" + sep + \"]\";\n\t separator = new RegExp(sep);\n\t } else {\n\t separator = /[\\.\\/]/;\n\t }\n\t };\n\t /*\\\n\t * eve.on\n\t [ method ]\n\t **\n\t * Binds given event handler with a given name. You can use wildcards “`*`” for the names:\n\t | eve.on(\"*.under.*\", f);\n\t | eve(\"mouse.under.floor\"); // triggers f\n\t * Use @eve to trigger the listener.\n\t **\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n\t - f (function) event handler function\n\t **\n\t - name (array) if you don’t want to use separators, you can use array of strings\n\t - f (function) event handler function\n\t **\n\t = (function) returned function accepts a single numeric parameter that represents z-index of the handler. It is an optional feature and only used when you need to ensure that some subset of handlers will be invoked in a given order, despite of the order of assignment. \n\t > Example:\n\t | eve.on(\"mouse\", eatIt)(2);\n\t | eve.on(\"mouse\", scream);\n\t | eve.on(\"mouse\", catchIt)(1);\n\t * This will ensure that `catchIt` function will be called before `eatIt`.\n\t *\n\t * If you want to put your handler before non-indexed handlers, specify a negative value.\n\t * Note: I assume most of the time you don’t need to worry about z-index, but it’s nice to have this feature “just in case”.\n\t \\*/\n\t eve.on = function (name, f) {\n\t if (typeof f != \"function\") {\n\t return function () {};\n\t }\n\t var names = isArray(name) ? (isArray(name[0]) ? name : [name]) : Str(name).split(comaseparator);\n\t for (var i = 0, ii = names.length; i < ii; i++) {\n\t (function (name) {\n\t var names = isArray(name) ? name : Str(name).split(separator),\n\t e = events,\n\t exist;\n\t for (var i = 0, ii = names.length; i < ii; i++) {\n\t e = e.n;\n\t e = e.hasOwnProperty(names[i]) && e[names[i]] || (e[names[i]] = {n: {}});\n\t }\n\t e.f = e.f || [];\n\t for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {\n\t exist = true;\n\t break;\n\t }\n\t !exist && e.f.push(f);\n\t }(names[i]));\n\t }\n\t return function (zIndex) {\n\t if (+zIndex == +zIndex) {\n\t f.zIndex = +zIndex;\n\t }\n\t };\n\t };\n\t /*\\\n\t * eve.f\n\t [ method ]\n\t **\n\t * Returns function that will fire given event with optional arguments.\n\t * Arguments that will be passed to the result function will be also\n\t * concated to the list of final arguments.\n\t | el.onclick = eve.f(\"click\", 1, 2);\n\t | eve.on(\"click\", function (a, b, c) {\n\t | console.log(a, b, c); // 1, 2, [event object]\n\t | });\n\t > Arguments\n\t - event (string) event name\n\t - varargs (…) and any other arguments\n\t = (function) possible event handler function\n\t \\*/\n\t eve.f = function (event) {\n\t var attrs = [].slice.call(arguments, 1);\n\t return function () {\n\t eve.apply(null, [event, null].concat(attrs).concat([].slice.call(arguments, 0)));\n\t };\n\t };\n\t /*\\\n\t * eve.stop\n\t [ method ]\n\t **\n\t * Is used inside an event handler to stop the event, preventing any subsequent listeners from firing.\n\t \\*/\n\t eve.stop = function () {\n\t stop = 1;\n\t };\n\t /*\\\n\t * eve.nt\n\t [ method ]\n\t **\n\t * Could be used inside event handler to figure out actual name of the event.\n\t **\n\t > Arguments\n\t **\n\t - subname (string) #optional subname of the event\n\t **\n\t = (string) name of the event, if `subname` is not specified\n\t * or\n\t = (boolean) `true`, if current event’s name contains `subname`\n\t \\*/\n\t eve.nt = function (subname) {\n\t var cur = isArray(current_event) ? current_event.join(\".\") : current_event;\n\t if (subname) {\n\t return new RegExp(\"(?:\\\\.|\\\\/|^)\" + subname + \"(?:\\\\.|\\\\/|$)\").test(cur);\n\t }\n\t return cur;\n\t };\n\t /*\\\n\t * eve.nts\n\t [ method ]\n\t **\n\t * Could be used inside event handler to figure out actual name of the event.\n\t **\n\t **\n\t = (array) names of the event\n\t \\*/\n\t eve.nts = function () {\n\t return isArray(current_event) ? current_event : current_event.split(separator);\n\t };\n\t /*\\\n\t * eve.off\n\t [ method ]\n\t **\n\t * Removes given function from the list of event listeners assigned to given name.\n\t * If no arguments specified all the events will be cleared.\n\t **\n\t > Arguments\n\t **\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n\t - f (function) event handler function\n\t \\*/\n\t /*\\\n\t * eve.unbind\n\t [ method ]\n\t **\n\t * See @eve.off\n\t \\*/\n\t eve.off = eve.unbind = function (name, f) {\n\t if (!name) {\n\t eve._events = events = {n: {}};\n\t return;\n\t }\n\t var names = isArray(name) ? (isArray(name[0]) ? name : [name]) : Str(name).split(comaseparator);\n\t if (names.length > 1) {\n\t for (var i = 0, ii = names.length; i < ii; i++) {\n\t eve.off(names[i], f);\n\t }\n\t return;\n\t }\n\t names = isArray(name) ? name : Str(name).split(separator);\n\t var e,\n\t key,\n\t splice,\n\t i, ii, j, jj,\n\t cur = [events];\n\t for (i = 0, ii = names.length; i < ii; i++) {\n\t for (j = 0; j < cur.length; j += splice.length - 2) {\n\t splice = [j, 1];\n\t e = cur[j].n;\n\t if (names[i] != wildcard) {\n\t if (e[names[i]]) {\n\t splice.push(e[names[i]]);\n\t }\n\t } else {\n\t for (key in e) if (e[has](key)) {\n\t splice.push(e[key]);\n\t }\n\t }\n\t cur.splice.apply(cur, splice);\n\t }\n\t }\n\t for (i = 0, ii = cur.length; i < ii; i++) {\n\t e = cur[i];\n\t while (e.n) {\n\t if (f) {\n\t if (e.f) {\n\t for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {\n\t e.f.splice(j, 1);\n\t break;\n\t }\n\t !e.f.length && delete e.f;\n\t }\n\t for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n\t var funcs = e.n[key].f;\n\t for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {\n\t funcs.splice(j, 1);\n\t break;\n\t }\n\t !funcs.length && delete e.n[key].f;\n\t }\n\t } else {\n\t delete e.f;\n\t for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n\t delete e.n[key].f;\n\t }\n\t }\n\t e = e.n;\n\t }\n\t }\n\t };\n\t /*\\\n\t * eve.once\n\t [ method ]\n\t **\n\t * Binds given event handler with a given name to only run once then unbind itself.\n\t | eve.once(\"login\", f);\n\t | eve(\"login\"); // triggers f\n\t | eve(\"login\"); // no listeners\n\t * Use @eve to trigger the listener.\n\t **\n\t > Arguments\n\t **\n\t - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n\t - f (function) event handler function\n\t **\n\t = (function) same return function as @eve.on\n\t \\*/\n\t eve.once = function (name, f) {\n\t var f2 = function () {\n\t eve.off(name, f2);\n\t return f.apply(this, arguments);\n\t };\n\t return eve.on(name, f2);\n\t };\n\t /*\\\n\t * eve.version\n\t [ property (string) ]\n\t **\n\t * Current version of the library.\n\t \\*/\n\t eve.version = version;\n\t eve.toString = function () {\n\t return \"You are running Eve \" + version;\n\t };\n\t (typeof module != \"undefined\" && module.exports) ? (module.exports = eve) : ( true ? (!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { return eve; }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))) : (glob.eve = eve));\n\t})(this);\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1)], __WEBPACK_AMD_DEFINE_RESULT__ = function(R) {\n\t if (R && !R.svg) {\n\t return;\n\t }\n\n\t var has = \"hasOwnProperty\",\n\t Str = String,\n\t toFloat = parseFloat,\n\t toInt = parseInt,\n\t math = Math,\n\t mmax = math.max,\n\t abs = math.abs,\n\t pow = math.pow,\n\t separator = /[, ]+/,\n\t eve = R.eve,\n\t E = \"\",\n\t S = \" \";\n\t var xlink = \"http://www.w3.org/1999/xlink\",\n\t markers = {\n\t block: \"M5,0 0,2.5 5,5z\",\n\t classic: \"M5,0 0,2.5 5,5 3.5,3 3.5,2z\",\n\t diamond: \"M2.5,0 5,2.5 2.5,5 0,2.5z\",\n\t open: \"M6,1 1,3.5 6,6\",\n\t oval: \"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z\"\n\t },\n\t markerCounter = {};\n\t R.toString = function () {\n\t return \"Your browser supports SVG.\\nYou are running Rapha\\xebl \" + this.version;\n\t };\n\t var $ = function (el, attr) {\n\t if (attr) {\n\t if (typeof el == \"string\") {\n\t el = $(el);\n\t }\n\t for (var key in attr) if (attr[has](key)) {\n\t if (key.substring(0, 6) == \"xlink:\") {\n\t el.setAttributeNS(xlink, key.substring(6), Str(attr[key]));\n\t } else {\n\t el.setAttribute(key, Str(attr[key]));\n\t }\n\t }\n\t } else {\n\t el = R._g.doc.createElementNS(\"http://www.w3.org/2000/svg\", el);\n\t el.style && (el.style.webkitTapHighlightColor = \"rgba(0,0,0,0)\");\n\t }\n\t return el;\n\t },\n\t addGradientFill = function (element, gradient) {\n\t var type = \"linear\",\n\t id = element.id + gradient,\n\t fx = .5, fy = .5,\n\t o = element.node,\n\t SVG = element.paper,\n\t s = o.style,\n\t el = R._g.doc.getElementById(id);\n\t if (!el) {\n\t gradient = Str(gradient).replace(R._radial_gradient, function (all, _fx, _fy) {\n\t type = \"radial\";\n\t if (_fx && _fy) {\n\t fx = toFloat(_fx);\n\t fy = toFloat(_fy);\n\t var dir = ((fy > .5) * 2 - 1);\n\t pow(fx - .5, 2) + pow(fy - .5, 2) > .25 &&\n\t (fy = math.sqrt(.25 - pow(fx - .5, 2)) * dir + .5) &&\n\t fy != .5 &&\n\t (fy = fy.toFixed(5) - 1e-5 * dir);\n\t }\n\t return E;\n\t });\n\t gradient = gradient.split(/\\s*\\-\\s*/);\n\t if (type == \"linear\") {\n\t var angle = gradient.shift();\n\t angle = -toFloat(angle);\n\t if (isNaN(angle)) {\n\t return null;\n\t }\n\t var vector = [0, 0, math.cos(R.rad(angle)), math.sin(R.rad(angle))],\n\t max = 1 / (mmax(abs(vector[2]), abs(vector[3])) || 1);\n\t vector[2] *= max;\n\t vector[3] *= max;\n\t if (vector[2] < 0) {\n\t vector[0] = -vector[2];\n\t vector[2] = 0;\n\t }\n\t if (vector[3] < 0) {\n\t vector[1] = -vector[3];\n\t vector[3] = 0;\n\t }\n\t }\n\t var dots = R._parseDots(gradient);\n\t if (!dots) {\n\t return null;\n\t }\n\t id = id.replace(/[\\(\\)\\s,\\xb0#]/g, \"_\");\n\n\t if (element.gradient && id != element.gradient.id) {\n\t SVG.defs.removeChild(element.gradient);\n\t delete element.gradient;\n\t }\n\n\t if (!element.gradient) {\n\t el = $(type + \"Gradient\", {id: id});\n\t element.gradient = el;\n\t $(el, type == \"radial\" ? {\n\t fx: fx,\n\t fy: fy\n\t } : {\n\t x1: vector[0],\n\t y1: vector[1],\n\t x2: vector[2],\n\t y2: vector[3],\n\t gradientTransform: element.matrix.invert()\n\t });\n\t SVG.defs.appendChild(el);\n\t for (var i = 0, ii = dots.length; i < ii; i++) {\n\t el.appendChild($(\"stop\", {\n\t offset: dots[i].offset ? dots[i].offset : i ? \"100%\" : \"0%\",\n\t \"stop-color\": dots[i].color || \"#fff\",\n\t \"stop-opacity\": isFinite(dots[i].opacity) ? dots[i].opacity : 1\n\t }));\n\t }\n\t }\n\t }\n\t $(o, {\n\t fill: fillurl(id),\n\t opacity: 1,\n\t \"fill-opacity\": 1\n\t });\n\t s.fill = E;\n\t s.opacity = 1;\n\t s.fillOpacity = 1;\n\t return 1;\n\t },\n\t isIE9or10 = function () {\n\t var mode = document.documentMode;\n\t return mode && (mode === 9 || mode === 10);\n\t },\n\t fillurl = function (id) {\n\t if (isIE9or10()) {\n\t return \"url('#\" + id + \"')\";\n\t }\n\t var location = document.location;\n\t var locationString = (\n\t location.protocol + '//' +\n\t location.host +\n\t location.pathname +\n\t location.search\n\t );\n\t return \"url('\" + locationString + \"#\" + id + \"')\";\n\t },\n\t updatePosition = function (o) {\n\t var bbox = o.getBBox(1);\n\t $(o.pattern, {patternTransform: o.matrix.invert() + \" translate(\" + bbox.x + \",\" + bbox.y + \")\"});\n\t },\n\t addArrow = function (o, value, isEnd) {\n\t if (o.type == \"path\") {\n\t var values = Str(value).toLowerCase().split(\"-\"),\n\t p = o.paper,\n\t se = isEnd ? \"end\" : \"start\",\n\t node = o.node,\n\t attrs = o.attrs,\n\t stroke = attrs[\"stroke-width\"],\n\t i = values.length,\n\t type = \"classic\",\n\t from,\n\t to,\n\t dx,\n\t refX,\n\t attr,\n\t w = 3,\n\t h = 3,\n\t t = 5;\n\t while (i--) {\n\t switch (values[i]) {\n\t case \"block\":\n\t case \"classic\":\n\t case \"oval\":\n\t case \"diamond\":\n\t case \"open\":\n\t case \"none\":\n\t type = values[i];\n\t break;\n\t case \"wide\": h = 5; break;\n\t case \"narrow\": h = 2; break;\n\t case \"long\": w = 5; break;\n\t case \"short\": w = 2; break;\n\t }\n\t }\n\t if (type == \"open\") {\n\t w += 2;\n\t h += 2;\n\t t += 2;\n\t dx = 1;\n\t refX = isEnd ? 4 : 1;\n\t attr = {\n\t fill: \"none\",\n\t stroke: attrs.stroke\n\t };\n\t } else {\n\t refX = dx = w / 2;\n\t attr = {\n\t fill: attrs.stroke,\n\t stroke: \"none\"\n\t };\n\t }\n\t if (o._.arrows) {\n\t if (isEnd) {\n\t o._.arrows.endPath && markerCounter[o._.arrows.endPath]--;\n\t o._.arrows.endMarker && markerCounter[o._.arrows.endMarker]--;\n\t } else {\n\t o._.arrows.startPath && markerCounter[o._.arrows.startPath]--;\n\t o._.arrows.startMarker && markerCounter[o._.arrows.startMarker]--;\n\t }\n\t } else {\n\t o._.arrows = {};\n\t }\n\t if (type != \"none\") {\n\t var pathId = \"raphael-marker-\" + type,\n\t markerId = \"raphael-marker-\" + se + type + w + h + \"-obj\" + o.id;\n\t if (!R._g.doc.getElementById(pathId)) {\n\t p.defs.appendChild($($(\"path\"), {\n\t \"stroke-linecap\": \"round\",\n\t d: markers[type],\n\t id: pathId\n\t }));\n\t markerCounter[pathId] = 1;\n\t } else {\n\t markerCounter[pathId]++;\n\t }\n\t var marker = R._g.doc.getElementById(markerId),\n\t use;\n\t if (!marker) {\n\t marker = $($(\"marker\"), {\n\t id: markerId,\n\t markerHeight: h,\n\t markerWidth: w,\n\t orient: \"auto\",\n\t refX: refX,\n\t refY: h / 2\n\t });\n\t use = $($(\"use\"), {\n\t \"xlink:href\": \"#\" + pathId,\n\t transform: (isEnd ? \"rotate(180 \" + w / 2 + \" \" + h / 2 + \") \" : E) + \"scale(\" + w / t + \",\" + h / t + \")\",\n\t \"stroke-width\": (1 / ((w / t + h / t) / 2)).toFixed(4)\n\t });\n\t marker.appendChild(use);\n\t p.defs.appendChild(marker);\n\t markerCounter[markerId] = 1;\n\t } else {\n\t markerCounter[markerId]++;\n\t use = marker.getElementsByTagName(\"use\")[0];\n\t }\n\t $(use, attr);\n\t var delta = dx * (type != \"diamond\" && type != \"oval\");\n\t if (isEnd) {\n\t from = o._.arrows.startdx * stroke || 0;\n\t to = R.getTotalLength(attrs.path) - delta * stroke;\n\t } else {\n\t from = delta * stroke;\n\t to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);\n\t }\n\t attr = {};\n\t attr[\"marker-\" + se] = \"url(#\" + markerId + \")\";\n\t if (to || from) {\n\t attr.d = R.getSubpath(attrs.path, from, to);\n\t }\n\t $(node, attr);\n\t o._.arrows[se + \"Path\"] = pathId;\n\t o._.arrows[se + \"Marker\"] = markerId;\n\t o._.arrows[se + \"dx\"] = delta;\n\t o._.arrows[se + \"Type\"] = type;\n\t o._.arrows[se + \"String\"] = value;\n\t } else {\n\t if (isEnd) {\n\t from = o._.arrows.startdx * stroke || 0;\n\t to = R.getTotalLength(attrs.path) - from;\n\t } else {\n\t from = 0;\n\t to = R.getTotalLength(attrs.path) - (o._.arrows.enddx * stroke || 0);\n\t }\n\t o._.arrows[se + \"Path\"] && $(node, {d: R.getSubpath(attrs.path, from, to)});\n\t delete o._.arrows[se + \"Path\"];\n\t delete o._.arrows[se + \"Marker\"];\n\t delete o._.arrows[se + \"dx\"];\n\t delete o._.arrows[se + \"Type\"];\n\t delete o._.arrows[se + \"String\"];\n\t }\n\t for (attr in markerCounter) if (markerCounter[has](attr) && !markerCounter[attr]) {\n\t var item = R._g.doc.getElementById(attr);\n\t item && item.parentNode.removeChild(item);\n\t }\n\t }\n\t },\n\t dasharray = {\n\t \"-\": [3, 1],\n\t \".\": [1, 1],\n\t \"-.\": [3, 1, 1, 1],\n\t \"-..\": [3, 1, 1, 1, 1, 1],\n\t \". \": [1, 3],\n\t \"- \": [4, 3],\n\t \"--\": [8, 3],\n\t \"- .\": [4, 3, 1, 3],\n\t \"--.\": [8, 3, 1, 3],\n\t \"--..\": [8, 3, 1, 3, 1, 3]\n\t },\n\t addDashes = function (o, value, params) {\n\t value = dasharray[Str(value).toLowerCase()];\n\t if (value) {\n\t var width = o.attrs[\"stroke-width\"] || \"1\",\n\t butt = {round: width, square: width, butt: 0}[o.attrs[\"stroke-linecap\"] || params[\"stroke-linecap\"]] || 0,\n\t dashes = [],\n\t i = value.length;\n\t while (i--) {\n\t dashes[i] = value[i] * width + ((i % 2) ? 1 : -1) * butt;\n\t }\n\t $(o.node, {\"stroke-dasharray\": dashes.join(\",\")});\n\t }\n\t else {\n\t $(o.node, {\"stroke-dasharray\": \"none\"});\n\t }\n\t },\n\t setFillAndStroke = function (o, params) {\n\t var node = o.node,\n\t attrs = o.attrs,\n\t vis = node.style.visibility;\n\t node.style.visibility = \"hidden\";\n\t for (var att in params) {\n\t if (params[has](att)) {\n\t if (!R._availableAttrs[has](att)) {\n\t continue;\n\t }\n\t var value = params[att];\n\t attrs[att] = value;\n\t switch (att) {\n\t case \"blur\":\n\t o.blur(value);\n\t break;\n\t case \"title\":\n\t var title = node.getElementsByTagName(\"title\");\n\n\t // Use the existing .\n\t if (title.length && (title = title[0])) {\n\t title.firstChild.nodeValue = value;\n\t } else {\n\t title = $(\"title\");\n\t var val = R._g.doc.createTextNode(value);\n\t title.appendChild(val);\n\t node.appendChild(title);\n\t }\n\t break;\n\t case \"href\":\n\t case \"target\":\n\t var pn = node.parentNode;\n\t if (pn.tagName.toLowerCase() != \"a\") {\n\t var hl = $(\"a\");\n\t pn.insertBefore(hl, node);\n\t hl.appendChild(node);\n\t pn = hl;\n\t }\n\t if (att == \"target\") {\n\t pn.setAttributeNS(xlink, \"show\", value == \"blank\" ? \"new\" : value);\n\t } else {\n\t pn.setAttributeNS(xlink, att, value);\n\t }\n\t break;\n\t case \"cursor\":\n\t node.style.cursor = value;\n\t break;\n\t case \"transform\":\n\t o.transform(value);\n\t break;\n\t case \"arrow-start\":\n\t addArrow(o, value);\n\t break;\n\t case \"arrow-end\":\n\t addArrow(o, value, 1);\n\t break;\n\t case \"clip-rect\":\n\t var rect = Str(value).split(separator);\n\t if (rect.length == 4) {\n\t o.clip && o.clip.parentNode.parentNode.removeChild(o.clip.parentNode);\n\t var el = $(\"clipPath\"),\n\t rc = $(\"rect\");\n\t el.id = R.createUUID();\n\t $(rc, {\n\t x: rect[0],\n\t y: rect[1],\n\t width: rect[2],\n\t height: rect[3]\n\t });\n\t el.appendChild(rc);\n\t o.paper.defs.appendChild(el);\n\t $(node, {\"clip-path\": \"url(#\" + el.id + \")\"});\n\t o.clip = rc;\n\t }\n\t if (!value) {\n\t var path = node.getAttribute(\"clip-path\");\n\t if (path) {\n\t var clip = R._g.doc.getElementById(path.replace(/(^url\\(#|\\)$)/g, E));\n\t clip && clip.parentNode.removeChild(clip);\n\t $(node, {\"clip-path\": E});\n\t delete o.clip;\n\t }\n\t }\n\t break;\n\t case \"path\":\n\t if (o.type == \"path\") {\n\t $(node, {d: value ? attrs.path = R._pathToAbsolute(value) : \"M0,0\"});\n\t o._.dirty = 1;\n\t if (o._.arrows) {\n\t \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n\t \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n\t }\n\t }\n\t break;\n\t case \"width\":\n\t node.setAttribute(att, value);\n\t o._.dirty = 1;\n\t if (attrs.fx) {\n\t att = \"x\";\n\t value = attrs.x;\n\t } else {\n\t break;\n\t }\n\t case \"x\":\n\t if (attrs.fx) {\n\t value = -attrs.x - (attrs.width || 0);\n\t }\n\t case \"rx\":\n\t if (att == \"rx\" && o.type == \"rect\") {\n\t break;\n\t }\n\t case \"cx\":\n\t node.setAttribute(att, value);\n\t o.pattern && updatePosition(o);\n\t o._.dirty = 1;\n\t break;\n\t case \"height\":\n\t node.setAttribute(att, value);\n\t o._.dirty = 1;\n\t if (attrs.fy) {\n\t att = \"y\";\n\t value = attrs.y;\n\t } else {\n\t break;\n\t }\n\t case \"y\":\n\t if (attrs.fy) {\n\t value = -attrs.y - (attrs.height || 0);\n\t }\n\t case \"ry\":\n\t if (att == \"ry\" && o.type == \"rect\") {\n\t break;\n\t }\n\t case \"cy\":\n\t node.setAttribute(att, value);\n\t o.pattern && updatePosition(o);\n\t o._.dirty = 1;\n\t break;\n\t case \"r\":\n\t if (o.type == \"rect\") {\n\t $(node, {rx: value, ry: value});\n\t } else {\n\t node.setAttribute(att, value);\n\t }\n\t o._.dirty = 1;\n\t break;\n\t case \"src\":\n\t if (o.type == \"image\") {\n\t node.setAttributeNS(xlink, \"href\", value);\n\t }\n\t break;\n\t case \"stroke-width\":\n\t if (o._.sx != 1 || o._.sy != 1) {\n\t value /= mmax(abs(o._.sx), abs(o._.sy)) || 1;\n\t }\n\t node.setAttribute(att, value);\n\t if (attrs[\"stroke-dasharray\"]) {\n\t addDashes(o, attrs[\"stroke-dasharray\"], params);\n\t }\n\t if (o._.arrows) {\n\t \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n\t \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n\t }\n\t break;\n\t case \"stroke-dasharray\":\n\t addDashes(o, value, params);\n\t break;\n\t case \"fill\":\n\t var isURL = Str(value).match(R._ISURL);\n\t if (isURL) {\n\t el = $(\"pattern\");\n\t var ig = $(\"image\");\n\t el.id = R.createUUID();\n\t $(el, {x: 0, y: 0, patternUnits: \"userSpaceOnUse\", height: 1, width: 1});\n\t $(ig, {x: 0, y: 0, \"xlink:href\": isURL[1]});\n\t el.appendChild(ig);\n\n\t (function (el) {\n\t R._preload(isURL[1], function () {\n\t var w = this.offsetWidth,\n\t h = this.offsetHeight;\n\t $(el, {width: w, height: h});\n\t $(ig, {width: w, height: h});\n\t });\n\t })(el);\n\t o.paper.defs.appendChild(el);\n\t $(node, {fill: \"url(#\" + el.id + \")\"});\n\t o.pattern = el;\n\t o.pattern && updatePosition(o);\n\t break;\n\t }\n\t var clr = R.getRGB(value);\n\t if (!clr.error) {\n\t delete params.gradient;\n\t delete attrs.gradient;\n\t !R.is(attrs.opacity, \"undefined\") &&\n\t R.is(params.opacity, \"undefined\") &&\n\t $(node, {opacity: attrs.opacity});\n\t !R.is(attrs[\"fill-opacity\"], \"undefined\") &&\n\t R.is(params[\"fill-opacity\"], \"undefined\") &&\n\t $(node, {\"fill-opacity\": attrs[\"fill-opacity\"]});\n\t } else if ((o.type == \"circle\" || o.type == \"ellipse\" || Str(value).charAt() != \"r\") && addGradientFill(o, value)) {\n\t if (\"opacity\" in attrs || \"fill-opacity\" in attrs) {\n\t var gradient = R._g.doc.getElementById(node.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, E));\n\t if (gradient) {\n\t var stops = gradient.getElementsByTagName(\"stop\");\n\t $(stops[stops.length - 1], {\"stop-opacity\": (\"opacity\" in attrs ? attrs.opacity : 1) * (\"fill-opacity\" in attrs ? attrs[\"fill-opacity\"] : 1)});\n\t }\n\t }\n\t attrs.gradient = value;\n\t attrs.fill = \"none\";\n\t break;\n\t }\n\t clr[has](\"opacity\") && $(node, {\"fill-opacity\": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});\n\t case \"stroke\":\n\t clr = R.getRGB(value);\n\t node.setAttribute(att, clr.hex);\n\t att == \"stroke\" && clr[has](\"opacity\") && $(node, {\"stroke-opacity\": clr.opacity > 1 ? clr.opacity / 100 : clr.opacity});\n\t if (att == \"stroke\" && o._.arrows) {\n\t \"startString\" in o._.arrows && addArrow(o, o._.arrows.startString);\n\t \"endString\" in o._.arrows && addArrow(o, o._.arrows.endString, 1);\n\t }\n\t break;\n\t case \"gradient\":\n\t (o.type == \"circle\" || o.type == \"ellipse\" || Str(value).charAt() != \"r\") && addGradientFill(o, value);\n\t break;\n\t case \"opacity\":\n\t if (attrs.gradient && !attrs[has](\"stroke-opacity\")) {\n\t $(node, {\"stroke-opacity\": value > 1 ? value / 100 : value});\n\t }\n\t // fall\n\t case \"fill-opacity\":\n\t if (attrs.gradient) {\n\t gradient = R._g.doc.getElementById(node.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g, E));\n\t if (gradient) {\n\t stops = gradient.getElementsByTagName(\"stop\");\n\t $(stops[stops.length - 1], {\"stop-opacity\": value});\n\t }\n\t break;\n\t }\n\t default:\n\t att == \"font-size\" && (value = toInt(value, 10) + \"px\");\n\t var cssrule = att.replace(/(\\-.)/g, function (w) {\n\t return w.substring(1).toUpperCase();\n\t });\n\t node.style[cssrule] = value;\n\t o._.dirty = 1;\n\t node.setAttribute(att, value);\n\t break;\n\t }\n\t }\n\t }\n\n\t tuneText(o, params);\n\t node.style.visibility = vis;\n\t },\n\t leading = 1.2,\n\t tuneText = function (el, params) {\n\t if (el.type != \"text\" || !(params[has](\"text\") || params[has](\"font\") || params[has](\"font-size\") || params[has](\"x\") || params[has](\"y\"))) {\n\t return;\n\t }\n\t var a = el.attrs,\n\t node = el.node,\n\t fontSize = node.firstChild ? toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild, E).getPropertyValue(\"font-size\"), 10) : 10;\n\n\t if (params[has](\"text\")) {\n\t a.text = params.text;\n\t while (node.firstChild) {\n\t node.removeChild(node.firstChild);\n\t }\n\t var texts = Str(params.text).split(\"\\n\"),\n\t tspans = [],\n\t tspan;\n\t for (var i = 0, ii = texts.length; i < ii; i++) {\n\t tspan = $(\"tspan\");\n\t i && $(tspan, {dy: fontSize * leading, x: a.x});\n\t tspan.appendChild(R._g.doc.createTextNode(texts[i]));\n\t node.appendChild(tspan);\n\t tspans[i] = tspan;\n\t }\n\t } else {\n\t tspans = node.getElementsByTagName(\"tspan\");\n\t for (i = 0, ii = tspans.length; i < ii; i++) if (i) {\n\t $(tspans[i], {dy: fontSize * leading, x: a.x});\n\t } else {\n\t $(tspans[0], {dy: 0});\n\t }\n\t }\n\t $(node, {x: a.x, y: a.y});\n\t el._.dirty = 1;\n\t var bb = el._getBBox(),\n\t dif = a.y - (bb.y + bb.height / 2);\n\t dif && R.is(dif, \"finite\") && $(tspans[0], {dy: dif});\n\t },\n\t getRealNode = function (node) {\n\t if (node.parentNode && node.parentNode.tagName.toLowerCase() === \"a\") {\n\t return node.parentNode;\n\t } else {\n\t return node;\n\t }\n\t },\n\t Element = function (node, svg) {\n\t var X = 0,\n\t Y = 0;\n\t /*\\\n\t * Element.node\n\t [ property (object) ]\n\t **\n\t * Gives you a reference to the DOM object, so you can assign event handlers or just mess around.\n\t **\n\t * Note: Don’t mess with it.\n\t > Usage\n\t | // draw a circle at coordinate 10,10 with radius of 10\n\t | var c = paper.circle(10, 10, 10);\n\t | c.node.onclick = function () {\n\t | c.attr(\"fill\", \"red\");\n\t | };\n\t \\*/\n\t this[0] = this.node = node;\n\t /*\\\n\t * Element.raphael\n\t [ property (object) ]\n\t **\n\t * Internal reference to @Raphael object. In case it is not available.\n\t > Usage\n\t | Raphael.el.red = function () {\n\t | var hsb = this.paper.raphael.rgb2hsb(this.attr(\"fill\"));\n\t | hsb.h = 1;\n\t | this.attr({fill: this.paper.raphael.hsb2rgb(hsb).hex});\n\t | }\n\t \\*/\n\t node.raphael = true;\n\t /*\\\n\t * Element.id\n\t [ property (number) ]\n\t **\n\t * Unique id of the element. Especially useful when you want to listen to events of the element,\n\t * because all events are fired in format `<module>.<action>.<id>`. Also useful for @Paper.getById method.\n\t \\*/\n\t this.id = guid();\n\t node.raphaelid = this.id;\n\n\t /**\n\t * Method that returns a 5 letter/digit id, enough for 36^5 = 60466176 elements\n\t * @returns {string} id\n\t */\n\t function guid() {\n\t return (\"0000\" + (Math.random()*Math.pow(36,5) << 0).toString(36)).slice(-5);\n\t }\n\n\t this.matrix = R.matrix();\n\t this.realPath = null;\n\t /*\\\n\t * Element.paper\n\t [ property (object) ]\n\t **\n\t * Internal reference to “paper” where object drawn. Mainly for use in plugins and element extensions.\n\t > Usage\n\t | Raphael.el.cross = function () {\n\t | this.attr({fill: \"red\"});\n\t | this.paper.path(\"M10,10L50,50M50,10L10,50\")\n\t | .attr({stroke: \"red\"});\n\t | }\n\t \\*/\n\t this.paper = svg;\n\t this.attrs = this.attrs || {};\n\t this._ = {\n\t transform: [],\n\t sx: 1,\n\t sy: 1,\n\t deg: 0,\n\t dx: 0,\n\t dy: 0,\n\t dirty: 1\n\t };\n\t !svg.bottom && (svg.bottom = this);\n\t /*\\\n\t * Element.prev\n\t [ property (object) ]\n\t **\n\t * Reference to the previous element in the hierarchy.\n\t \\*/\n\t this.prev = svg.top;\n\t svg.top && (svg.top.next = this);\n\t svg.top = this;\n\t /*\\\n\t * Element.next\n\t [ property (object) ]\n\t **\n\t * Reference to the next element in the hierarchy.\n\t \\*/\n\t this.next = null;\n\t },\n\t elproto = R.el;\n\n\t Element.prototype = elproto;\n\t elproto.constructor = Element;\n\n\t R._engine.path = function (pathString, SVG) {\n\t var el = $(\"path\");\n\t SVG.canvas && SVG.canvas.appendChild(el);\n\t var p = new Element(el, SVG);\n\t p.type = \"path\";\n\t setFillAndStroke(p, {\n\t fill: \"none\",\n\t stroke: \"#000\",\n\t path: pathString\n\t });\n\t return p;\n\t };\n\t /*\\\n\t * Element.rotate\n\t [ method ]\n\t **\n\t * Deprecated! Use @Element.transform instead.\n\t * Adds rotation by given angle around given point to the list of\n\t * transformations of the element.\n\t > Parameters\n\t - deg (number) angle in degrees\n\t - cx (number) #optional x coordinate of the centre of rotation\n\t - cy (number) #optional y coordinate of the centre of rotation\n\t * If cx & cy aren’t specified centre of the shape is used as a point of rotation.\n\t = (object) @Element\n\t \\*/\n\t elproto.rotate = function (deg, cx, cy) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t deg = Str(deg).split(separator);\n\t if (deg.length - 1) {\n\t cx = toFloat(deg[1]);\n\t cy = toFloat(deg[2]);\n\t }\n\t deg = toFloat(deg[0]);\n\t (cy == null) && (cx = cy);\n\t if (cx == null || cy == null) {\n\t var bbox = this.getBBox(1);\n\t cx = bbox.x + bbox.width / 2;\n\t cy = bbox.y + bbox.height / 2;\n\t }\n\t this.transform(this._.transform.concat([[\"r\", deg, cx, cy]]));\n\t return this;\n\t };\n\t /*\\\n\t * Element.scale\n\t [ method ]\n\t **\n\t * Deprecated! Use @Element.transform instead.\n\t * Adds scale by given amount relative to given point to the list of\n\t * transformations of the element.\n\t > Parameters\n\t - sx (number) horisontal scale amount\n\t - sy (number) vertical scale amount\n\t - cx (number) #optional x coordinate of the centre of scale\n\t - cy (number) #optional y coordinate of the centre of scale\n\t * If cx & cy aren’t specified centre of the shape is used instead.\n\t = (object) @Element\n\t \\*/\n\t elproto.scale = function (sx, sy, cx, cy) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t sx = Str(sx).split(separator);\n\t if (sx.length - 1) {\n\t sy = toFloat(sx[1]);\n\t cx = toFloat(sx[2]);\n\t cy = toFloat(sx[3]);\n\t }\n\t sx = toFloat(sx[0]);\n\t (sy == null) && (sy = sx);\n\t (cy == null) && (cx = cy);\n\t if (cx == null || cy == null) {\n\t var bbox = this.getBBox(1);\n\t }\n\t cx = cx == null ? bbox.x + bbox.width / 2 : cx;\n\t cy = cy == null ? bbox.y + bbox.height / 2 : cy;\n\t this.transform(this._.transform.concat([[\"s\", sx, sy, cx, cy]]));\n\t return this;\n\t };\n\t /*\\\n\t * Element.translate\n\t [ method ]\n\t **\n\t * Deprecated! Use @Element.transform instead.\n\t * Adds translation by given amount to the list of transformations of the element.\n\t > Parameters\n\t - dx (number) horisontal shift\n\t - dy (number) vertical shift\n\t = (object) @Element\n\t \\*/\n\t elproto.translate = function (dx, dy) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t dx = Str(dx).split(separator);\n\t if (dx.length - 1) {\n\t dy = toFloat(dx[1]);\n\t }\n\t dx = toFloat(dx[0]) || 0;\n\t dy = +dy || 0;\n\t this.transform(this._.transform.concat([[\"t\", dx, dy]]));\n\t return this;\n\t };\n\t /*\\\n\t * Element.transform\n\t [ method ]\n\t **\n\t * Adds transformation to the element which is separate to other attributes,\n\t * i.e. translation doesn’t change `x` or `y` of the rectange. The format\n\t * of transformation string is similar to the path string syntax:\n\t | \"t100,100r30,100,100s2,2,100,100r45s1.5\"\n\t * Each letter is a command. There are four commands: `t` is for translate, `r` is for rotate, `s` is for\n\t * scale and `m` is for matrix.\n\t *\n\t * There are also alternative “absolute” translation, rotation and scale: `T`, `R` and `S`. They will not take previous transformation into account. For example, `...T100,0` will always move element 100 px horisontally, while `...t100,0` could move it vertically if there is `r90` before. Just compare results of `r90t100,0` and `r90T100,0`.\n\t *\n\t * So, the example line above could be read like “translate by 100, 100; rotate 30° around 100, 100; scale twice around 100, 100;\n\t * rotate 45° around centre; scale 1.5 times relative to centre”. As you can see rotate and scale commands have origin\n\t * coordinates as optional parameters, the default is the centre point of the element.\n\t * Matrix accepts six parameters.\n\t > Usage\n\t | var el = paper.rect(10, 20, 300, 200);\n\t | // translate 100, 100, rotate 45°, translate -100, 0\n\t | el.transform(\"t100,100r45t-100,0\");\n\t | // if you want you can append or prepend transformations\n\t | el.transform(\"...t50,50\");\n\t | el.transform(\"s2...\");\n\t | // or even wrap\n\t | el.transform(\"t50,50...t-50-50\");\n\t | // to reset transformation call method with empty string\n\t | el.transform(\"\");\n\t | // to get current value call it without parameters\n\t | console.log(el.transform());\n\t > Parameters\n\t - tstr (string) #optional transformation string\n\t * If tstr isn’t specified\n\t = (string) current transformation string\n\t * else\n\t = (object) @Element\n\t \\*/\n\t elproto.transform = function (tstr) {\n\t var _ = this._;\n\t if (tstr == null) {\n\t return _.transform;\n\t }\n\t R._extractTransform(this, tstr);\n\n\t this.clip && $(this.clip, {transform: this.matrix.invert()});\n\t this.pattern && updatePosition(this);\n\t this.node && $(this.node, {transform: this.matrix});\n\n\t if (_.sx != 1 || _.sy != 1) {\n\t var sw = this.attrs[has](\"stroke-width\") ? this.attrs[\"stroke-width\"] : 1;\n\t this.attr({\"stroke-width\": sw});\n\t }\n\n\t return this;\n\t };\n\t /*\\\n\t * Element.hide\n\t [ method ]\n\t **\n\t * Makes element invisible. See @Element.show.\n\t = (object) @Element\n\t \\*/\n\t elproto.hide = function () {\n\t if(!this.removed) this.node.style.display = \"none\";\n\t return this;\n\t };\n\t /*\\\n\t * Element.show\n\t [ method ]\n\t **\n\t * Makes element visible. See @Element.hide.\n\t = (object) @Element\n\t \\*/\n\t elproto.show = function () {\n\t if(!this.removed) this.node.style.display = \"\";\n\t return this;\n\t };\n\t /*\\\n\t * Element.remove\n\t [ method ]\n\t **\n\t * Removes element from the paper.\n\t \\*/\n\t elproto.remove = function () {\n\t var node = getRealNode(this.node);\n\t if (this.removed || !node.parentNode) {\n\t return;\n\t }\n\t var paper = this.paper;\n\t paper.__set__ && paper.__set__.exclude(this);\n\t eve.unbind(\"raphael.*.*.\" + this.id);\n\t if (this.gradient) {\n\t paper.defs.removeChild(this.gradient);\n\t }\n\t R._tear(this, paper);\n\n\t node.parentNode.removeChild(node);\n\n\t // Remove custom data for element\n\t this.removeData();\n\n\t for (var i in this) {\n\t this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n\t }\n\t this.removed = true;\n\t };\n\t elproto._getBBox = function () {\n\t if (this.node.style.display == \"none\") {\n\t this.show();\n\t var hide = true;\n\t }\n\t var canvasHidden = false,\n\t containerStyle;\n\t if (this.paper.canvas.parentElement) {\n\t containerStyle = this.paper.canvas.parentElement.style;\n\t } //IE10+ can't find parentElement\n\t else if (this.paper.canvas.parentNode) {\n\t containerStyle = this.paper.canvas.parentNode.style;\n\t }\n\n\t if(containerStyle && containerStyle.display == \"none\") {\n\t canvasHidden = true;\n\t containerStyle.display = \"\";\n\t }\n\t var bbox = {};\n\t try {\n\t bbox = this.node.getBBox();\n\t } catch(e) {\n\t // Firefox 3.0.x, 25.0.1 (probably more versions affected) play badly here - possible fix\n\t bbox = {\n\t x: this.node.clientLeft,\n\t y: this.node.clientTop,\n\t width: this.node.clientWidth,\n\t height: this.node.clientHeight\n\t }\n\t } finally {\n\t bbox = bbox || {};\n\t if(canvasHidden){\n\t containerStyle.display = \"none\";\n\t }\n\t }\n\t hide && this.hide();\n\t return bbox;\n\t };\n\t /*\\\n\t * Element.attr\n\t [ method ]\n\t **\n\t * Sets the attributes of the element.\n\t > Parameters\n\t - attrName (string) attribute’s name\n\t - value (string) value\n\t * or\n\t - params (object) object of name/value pairs\n\t * or\n\t - attrName (string) attribute’s name\n\t * or\n\t - attrNames (array) in this case method returns array of current values for given attribute names\n\t = (object) @Element if attrsName & value or params are passed in.\n\t = (...) value of the attribute if only attrsName is passed in.\n\t = (array) array of values of the attribute if attrsNames is passed in.\n\t = (object) object of attributes if nothing is passed in.\n\t > Possible parameters\n\t # <p>Please refer to the <a href=\"http://www.w3.org/TR/SVG/\" title=\"The W3C Recommendation for the SVG language describes these properties in detail.\">SVG specification</a> for an explanation of these parameters.</p>\n\t o arrow-end (string) arrowhead on the end of the path. The format for string is `<type>[-<width>[-<length>]]`. Possible types: `classic`, `block`, `open`, `oval`, `diamond`, `none`, width: `wide`, `narrow`, `medium`, length: `long`, `short`, `midium`.\n\t o clip-rect (string) comma or space separated values: x, y, width and height\n\t o cursor (string) CSS type of the cursor\n\t o cx (number) the x-axis coordinate of the center of the circle, or ellipse\n\t o cy (number) the y-axis coordinate of the center of the circle, or ellipse\n\t o fill (string) colour, gradient or image\n\t o fill-opacity (number)\n\t o font (string)\n\t o font-family (string)\n\t o font-size (number) font size in pixels\n\t o font-weight (string)\n\t o height (number)\n\t o href (string) URL, if specified element behaves as hyperlink\n\t o opacity (number)\n\t o path (string) SVG path string format\n\t o r (number) radius of the circle, ellipse or rounded corner on the rect\n\t o rx (number) horisontal radius of the ellipse\n\t o ry (number) vertical radius of the ellipse\n\t o src (string) image URL, only works for @Element.image element\n\t o stroke (string) stroke colour\n\t o stroke-dasharray (string) [“”, “none”, “`-`”, “`.`”, “`-.`”, “`-..`”, “`. `”, “`- `”, “`--`”, “`- .`”, “`--.`”, “`--..`”]\n\t o stroke-linecap (string) [“`butt`”, “`square`”, “`round`”]\n\t o stroke-linejoin (string) [“`bevel`”, “`round`”, “`miter`”]\n\t o stroke-miterlimit (number)\n\t o stroke-opacity (number)\n\t o stroke-width (number) stroke width in pixels, default is '1'\n\t o target (string) used with href\n\t o text (string) contents of the text element. Use `\\n` for multiline text\n\t o text-anchor (string) [“`start`”, “`middle`”, “`end`”], default is “`middle`”\n\t o title (string) will create tooltip with a given text\n\t o transform (string) see @Element.transform\n\t o width (number)\n\t o x (number)\n\t o y (number)\n\t > Gradients\n\t * Linear gradient format: “`‹angle›-‹colour›[-‹colour›[:‹offset›]]*-‹colour›`”, example: “`90-#fff-#000`” – 90°\n\t * gradient from white to black or “`0-#fff-#f00:20-#000`” – 0° gradient from white via red (at 20%) to black.\n\t *\n\t * radial gradient: “`r[(‹fx›, ‹fy›)]‹colour›[-‹colour›[:‹offset›]]*-‹colour›`”, example: “`r#fff-#000`” –\n\t * gradient from white to black or “`r(0.25, 0.75)#fff-#000`” – gradient from white to black with focus point\n\t * at 0.25, 0.75. Focus point coordinates are in 0..1 range. Radial gradients can only be applied to circles and ellipses.\n\t > Path String\n\t # <p>Please refer to <a href=\"http://www.w3.org/TR/SVG/paths.html#PathData\" title=\"Details of a path’s data attribute’s format are described in the SVG specification.\">SVG documentation regarding path string</a>. Raphaël fully supports it.</p>\n\t > Colour Parsing\n\t # <ul>\n\t # <li>Colour name (“<code>red</code>”, “<code>green</code>”, “<code>cornflowerblue</code>”, etc)</li>\n\t # <li>#••• — shortened HTML colour: (“<code>#000</code>”, “<code>#fc0</code>”, etc)</li>\n\t # <li>#•••••• — full length HTML colour: (“<code>#000000</code>”, “<code>#bd2300</code>”)</li>\n\t # <li>rgb(•••, •••, •••) — red, green and blue channels’ values: (“<code>rgb(200, 100, 0)</code>”)</li>\n\t # <li>rgb(•••%, •••%, •••%) — same as above, but in %: (“<code>rgb(100%, 175%, 0%)</code>”)</li>\n\t # <li>rgba(•••, •••, •••, •••) — red, green and blue channels’ values: (“<code>rgba(200, 100, 0, .5)</code>”)</li>\n\t # <li>rgba(•••%, •••%, •••%, •••%) — same as above, but in %: (“<code>rgba(100%, 175%, 0%, 50%)</code>”)</li>\n\t # <li>hsb(•••, •••, •••) — hue, saturation and brightness values: (“<code>hsb(0.5, 0.25, 1)</code>”)</li>\n\t # <li>hsb(•••%, •••%, •••%) — same as above, but in %</li>\n\t # <li>hsba(•••, •••, •••, •••) — same as above, but with opacity</li>\n\t # <li>hsl(•••, •••, •••) — almost the same as hsb, see <a href=\"http://en.wikipedia.org/wiki/HSL_and_HSV\" title=\"HSL and HSV - Wikipedia, the free encyclopedia\">Wikipedia page</a></li>\n\t # <li>hsl(•••%, •••%, •••%) — same as above, but in %</li>\n\t # <li>hsla(•••, •••, •••, •••) — same as above, but with opacity</li>\n\t # <li>Optionally for hsb and hsl you could specify hue as a degree: “<code>hsl(240deg, 1, .5)</code>” or, if you want to go fancy, “<code>hsl(240°, 1, .5)</code>”</li>\n\t # </ul>\n\t \\*/\n\t elproto.attr = function (name, value) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t if (name == null) {\n\t var res = {};\n\t for (var a in this.attrs) if (this.attrs[has](a)) {\n\t res[a] = this.attrs[a];\n\t }\n\t res.gradient && res.fill == \"none\" && (res.fill = res.gradient) && delete res.gradient;\n\t res.transform = this._.transform;\n\t return res;\n\t }\n\t if (value == null && R.is(name, \"string\")) {\n\t if (name == \"fill\" && this.attrs.fill == \"none\" && this.attrs.gradient) {\n\t return this.attrs.gradient;\n\t }\n\t if (name == \"transform\") {\n\t return this._.transform;\n\t }\n\t var names = name.split(separator),\n\t out = {};\n\t for (var i = 0, ii = names.length; i < ii; i++) {\n\t name = names[i];\n\t if (name in this.attrs) {\n\t out[name] = this.attrs[name];\n\t } else if (R.is(this.paper.customAttributes[name], \"function\")) {\n\t out[name] = this.paper.customAttributes[name].def;\n\t } else {\n\t out[name] = R._availableAttrs[name];\n\t }\n\t }\n\t return ii - 1 ? out : out[names[0]];\n\t }\n\t if (value == null && R.is(name, \"array\")) {\n\t out = {};\n\t for (i = 0, ii = name.length; i < ii; i++) {\n\t out[name[i]] = this.attr(name[i]);\n\t }\n\t return out;\n\t }\n\t if (value != null) {\n\t var params = {};\n\t params[name] = value;\n\t } else if (name != null && R.is(name, \"object\")) {\n\t params = name;\n\t }\n\t for (var key in params) {\n\t eve(\"raphael.attr.\" + key + \".\" + this.id, this, params[key]);\n\t }\n\t for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], \"function\")) {\n\t var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));\n\t this.attrs[key] = params[key];\n\t for (var subkey in par) if (par[has](subkey)) {\n\t params[subkey] = par[subkey];\n\t }\n\t }\n\t setFillAndStroke(this, params);\n\t return this;\n\t };\n\t /*\\\n\t * Element.toFront\n\t [ method ]\n\t **\n\t * Moves the element so it is the closest to the viewer’s eyes, on top of other elements.\n\t = (object) @Element\n\t \\*/\n\t elproto.toFront = function () {\n\t if (this.removed) {\n\t return this;\n\t }\n\t var node = getRealNode(this.node);\n\t node.parentNode.appendChild(node);\n\t var svg = this.paper;\n\t svg.top != this && R._tofront(this, svg);\n\t return this;\n\t };\n\t /*\\\n\t * Element.toBack\n\t [ method ]\n\t **\n\t * Moves the element so it is the furthest from the viewer’s eyes, behind other elements.\n\t = (object) @Element\n\t \\*/\n\t elproto.toBack = function () {\n\t if (this.removed) {\n\t return this;\n\t }\n\t var node = getRealNode(this.node);\n\t var parentNode = node.parentNode;\n\t parentNode.insertBefore(node, parentNode.firstChild);\n\t R._toback(this, this.paper);\n\t var svg = this.paper;\n\t return this;\n\t };\n\t /*\\\n\t * Element.insertAfter\n\t [ method ]\n\t **\n\t * Inserts current object after the given one.\n\t = (object) @Element\n\t \\*/\n\t elproto.insertAfter = function (element) {\n\t if (this.removed || !element) {\n\t return this;\n\t }\n\n\t var node = getRealNode(this.node);\n\t var afterNode = getRealNode(element.node || element[element.length - 1].node);\n\t if (afterNode.nextSibling) {\n\t afterNode.parentNode.insertBefore(node, afterNode.nextSibling);\n\t } else {\n\t afterNode.parentNode.appendChild(node);\n\t }\n\t R._insertafter(this, element, this.paper);\n\t return this;\n\t };\n\t /*\\\n\t * Element.insertBefore\n\t [ method ]\n\t **\n\t * Inserts current object before the given one.\n\t = (object) @Element\n\t \\*/\n\t elproto.insertBefore = function (element) {\n\t if (this.removed || !element) {\n\t return this;\n\t }\n\n\t var node = getRealNode(this.node);\n\t var beforeNode = getRealNode(element.node || element[0].node);\n\t beforeNode.parentNode.insertBefore(node, beforeNode);\n\t R._insertbefore(this, element, this.paper);\n\t return this;\n\t };\n\t elproto.blur = function (size) {\n\t // Experimental. No Safari support. Use it on your own risk.\n\t var t = this;\n\t if (+size !== 0) {\n\t var fltr = $(\"filter\"),\n\t blur = $(\"feGaussianBlur\");\n\t t.attrs.blur = size;\n\t fltr.id = R.createUUID();\n\t $(blur, {stdDeviation: +size || 1.5});\n\t fltr.appendChild(blur);\n\t t.paper.defs.appendChild(fltr);\n\t t._blur = fltr;\n\t $(t.node, {filter: \"url(#\" + fltr.id + \")\"});\n\t } else {\n\t if (t._blur) {\n\t t._blur.parentNode.removeChild(t._blur);\n\t delete t._blur;\n\t delete t.attrs.blur;\n\t }\n\t t.node.removeAttribute(\"filter\");\n\t }\n\t return t;\n\t };\n\t R._engine.circle = function (svg, x, y, r) {\n\t var el = $(\"circle\");\n\t svg.canvas && svg.canvas.appendChild(el);\n\t var res = new Element(el, svg);\n\t res.attrs = {cx: x, cy: y, r: r, fill: \"none\", stroke: \"#000\"};\n\t res.type = \"circle\";\n\t $(el, res.attrs);\n\t return res;\n\t };\n\t R._engine.rect = function (svg, x, y, w, h, r) {\n\t var el = $(\"rect\");\n\t svg.canvas && svg.canvas.appendChild(el);\n\t var res = new Element(el, svg);\n\t res.attrs = {x: x, y: y, width: w, height: h, rx: r || 0, ry: r || 0, fill: \"none\", stroke: \"#000\"};\n\t res.type = \"rect\";\n\t $(el, res.attrs);\n\t return res;\n\t };\n\t R._engine.ellipse = function (svg, x, y, rx, ry) {\n\t var el = $(\"ellipse\");\n\t svg.canvas && svg.canvas.appendChild(el);\n\t var res = new Element(el, svg);\n\t res.attrs = {cx: x, cy: y, rx: rx, ry: ry, fill: \"none\", stroke: \"#000\"};\n\t res.type = \"ellipse\";\n\t $(el, res.attrs);\n\t return res;\n\t };\n\t R._engine.image = function (svg, src, x, y, w, h) {\n\t var el = $(\"image\");\n\t $(el, {x: x, y: y, width: w, height: h, preserveAspectRatio: \"none\"});\n\t el.setAttributeNS(xlink, \"href\", src);\n\t svg.canvas && svg.canvas.appendChild(el);\n\t var res = new Element(el, svg);\n\t res.attrs = {x: x, y: y, width: w, height: h, src: src};\n\t res.type = \"image\";\n\t return res;\n\t };\n\t R._engine.text = function (svg, x, y, text) {\n\t var el = $(\"text\");\n\t svg.canvas && svg.canvas.appendChild(el);\n\t var res = new Element(el, svg);\n\t res.attrs = {\n\t x: x,\n\t y: y,\n\t \"text-anchor\": \"middle\",\n\t text: text,\n\t \"font-family\": R._availableAttrs[\"font-family\"],\n\t \"font-size\": R._availableAttrs[\"font-size\"],\n\t stroke: \"none\",\n\t fill: \"#000\"\n\t };\n\t res.type = \"text\";\n\t setFillAndStroke(res, res.attrs);\n\t return res;\n\t };\n\t R._engine.setSize = function (width, height) {\n\t this.width = width || this.width;\n\t this.height = height || this.height;\n\t this.canvas.setAttribute(\"width\", this.width);\n\t this.canvas.setAttribute(\"height\", this.height);\n\t if (this._viewBox) {\n\t this.setViewBox.apply(this, this._viewBox);\n\t }\n\t return this;\n\t };\n\t R._engine.create = function () {\n\t var con = R._getContainer.apply(0, arguments),\n\t container = con && con.container,\n\t x = con.x,\n\t y = con.y,\n\t width = con.width,\n\t height = con.height;\n\t if (!container) {\n\t throw new Error(\"SVG container not found.\");\n\t }\n\t var cnvs = $(\"svg\"),\n\t css = \"overflow:hidden;\",\n\t isFloating;\n\t x = x || 0;\n\t y = y || 0;\n\t width = width || 512;\n\t height = height || 342;\n\t $(cnvs, {\n\t height: height,\n\t version: 1.1,\n\t width: width,\n\t xmlns: \"http://www.w3.org/2000/svg\",\n\t \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\"\n\t });\n\t if (container == 1) {\n\t cnvs.style.cssText = css + \"position:absolute;left:\" + x + \"px;top:\" + y + \"px\";\n\t R._g.doc.body.appendChild(cnvs);\n\t isFloating = 1;\n\t } else {\n\t cnvs.style.cssText = css + \"position:relative\";\n\t if (container.firstChild) {\n\t container.insertBefore(cnvs, container.firstChild);\n\t } else {\n\t container.appendChild(cnvs);\n\t }\n\t }\n\t container = new R._Paper;\n\t container.width = width;\n\t container.height = height;\n\t container.canvas = cnvs;\n\t container.clear();\n\t container._left = container._top = 0;\n\t isFloating && (container.renderfix = function () {});\n\t container.renderfix();\n\t return container;\n\t };\n\t R._engine.setViewBox = function (x, y, w, h, fit) {\n\t eve(\"raphael.setViewBox\", this, this._viewBox, [x, y, w, h, fit]);\n\t var paperSize = this.getSize(),\n\t size = mmax(w / paperSize.width, h / paperSize.height),\n\t top = this.top,\n\t aspectRatio = fit ? \"xMidYMid meet\" : \"xMinYMin\",\n\t vb,\n\t sw;\n\t if (x == null) {\n\t if (this._vbSize) {\n\t size = 1;\n\t }\n\t delete this._vbSize;\n\t vb = \"0 0 \" + this.width + S + this.height;\n\t } else {\n\t this._vbSize = size;\n\t vb = x + S + y + S + w + S + h;\n\t }\n\t $(this.canvas, {\n\t viewBox: vb,\n\t preserveAspectRatio: aspectRatio\n\t });\n\t while (size && top) {\n\t sw = \"stroke-width\" in top.attrs ? top.attrs[\"stroke-width\"] : 1;\n\t top.attr({\"stroke-width\": sw});\n\t top._.dirty = 1;\n\t top._.dirtyT = 1;\n\t top = top.prev;\n\t }\n\t this._viewBox = [x, y, w, h, !!fit];\n\t return this;\n\t };\n\t /*\\\n\t * Paper.renderfix\n\t [ method ]\n\t **\n\t * Fixes the issue of Firefox and IE9 regarding subpixel rendering. If paper is dependent\n\t * on other elements after reflow it could shift half pixel which cause for lines to lost their crispness.\n\t * This method fixes the issue.\n\t **\n\t Special thanks to Mariusz Nowak (http://www.medikoo.com/) for this method.\n\t \\*/\n\t R.prototype.renderfix = function () {\n\t var cnvs = this.canvas,\n\t s = cnvs.style,\n\t pos;\n\t try {\n\t pos = cnvs.getScreenCTM() || cnvs.createSVGMatrix();\n\t } catch (e) {\n\t pos = cnvs.createSVGMatrix();\n\t }\n\t var left = -pos.e % 1,\n\t top = -pos.f % 1;\n\t if (left || top) {\n\t if (left) {\n\t this._left = (this._left + left) % 1;\n\t s.left = this._left + \"px\";\n\t }\n\t if (top) {\n\t this._top = (this._top + top) % 1;\n\t s.top = this._top + \"px\";\n\t }\n\t }\n\t };\n\t /*\\\n\t * Paper.clear\n\t [ method ]\n\t **\n\t * Clears the paper, i.e. removes all the elements.\n\t \\*/\n\t R.prototype.clear = function () {\n\t R.eve(\"raphael.clear\", this);\n\t var c = this.canvas;\n\t while (c.firstChild) {\n\t c.removeChild(c.firstChild);\n\t }\n\t this.bottom = this.top = null;\n\t (this.desc = $(\"desc\")).appendChild(R._g.doc.createTextNode(\"Created with Rapha\\xebl \" + R.version));\n\t c.appendChild(this.desc);\n\t c.appendChild(this.defs = $(\"defs\"));\n\t };\n\t /*\\\n\t * Paper.remove\n\t [ method ]\n\t **\n\t * Removes the paper from the DOM.\n\t \\*/\n\t R.prototype.remove = function () {\n\t eve(\"raphael.remove\", this);\n\t this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);\n\t for (var i in this) {\n\t this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n\t }\n\t };\n\t var setproto = R.st;\n\t for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {\n\t setproto[method] = (function (methodname) {\n\t return function () {\n\t var arg = arguments;\n\t return this.forEach(function (el) {\n\t el[methodname].apply(el, arg);\n\t });\n\t };\n\t })(method);\n\t }\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1)], __WEBPACK_AMD_DEFINE_RESULT__ = function(R) {\n\t if (R && !R.vml) {\n\t return;\n\t }\n\n\t var has = \"hasOwnProperty\",\n\t Str = String,\n\t toFloat = parseFloat,\n\t math = Math,\n\t round = math.round,\n\t mmax = math.max,\n\t mmin = math.min,\n\t abs = math.abs,\n\t fillString = \"fill\",\n\t separator = /[, ]+/,\n\t eve = R.eve,\n\t ms = \" progid:DXImageTransform.Microsoft\",\n\t S = \" \",\n\t E = \"\",\n\t map = {M: \"m\", L: \"l\", C: \"c\", Z: \"x\", m: \"t\", l: \"r\", c: \"v\", z: \"x\"},\n\t bites = /([clmz]),?([^clmz]*)/gi,\n\t blurregexp = / progid:\\S+Blur\\([^\\)]+\\)/g,\n\t val = /-?[^,\\s-]+/g,\n\t cssDot = \"position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)\",\n\t zoom = 21600,\n\t pathTypes = {path: 1, rect: 1, image: 1},\n\t ovalTypes = {circle: 1, ellipse: 1},\n\t path2vml = function (path) {\n\t var total = /[ahqstv]/ig,\n\t command = R._pathToAbsolute;\n\t Str(path).match(total) && (command = R._path2curve);\n\t total = /[clmz]/g;\n\t if (command == R._pathToAbsolute && !Str(path).match(total)) {\n\t var res = Str(path).replace(bites, function (all, command, args) {\n\t var vals = [],\n\t isMove = command.toLowerCase() == \"m\",\n\t res = map[command];\n\t args.replace(val, function (value) {\n\t if (isMove && vals.length == 2) {\n\t res += vals + map[command == \"m\" ? \"l\" : \"L\"];\n\t vals = [];\n\t }\n\t vals.push(round(value * zoom));\n\t });\n\t return res + vals;\n\t });\n\t return res;\n\t }\n\t var pa = command(path), p, r;\n\t res = [];\n\t for (var i = 0, ii = pa.length; i < ii; i++) {\n\t p = pa[i];\n\t r = pa[i][0].toLowerCase();\n\t r == \"z\" && (r = \"x\");\n\t for (var j = 1, jj = p.length; j < jj; j++) {\n\t r += round(p[j] * zoom) + (j != jj - 1 ? \",\" : E);\n\t }\n\t res.push(r);\n\t }\n\t return res.join(S);\n\t },\n\t compensation = function (deg, dx, dy) {\n\t var m = R.matrix();\n\t m.rotate(-deg, .5, .5);\n\t return {\n\t dx: m.x(dx, dy),\n\t dy: m.y(dx, dy)\n\t };\n\t },\n\t setCoords = function (p, sx, sy, dx, dy, deg) {\n\t var _ = p._,\n\t m = p.matrix,\n\t fillpos = _.fillpos,\n\t o = p.node,\n\t s = o.style,\n\t y = 1,\n\t flip = \"\",\n\t dxdy,\n\t kx = zoom / sx,\n\t ky = zoom / sy;\n\t s.visibility = \"hidden\";\n\t if (!sx || !sy) {\n\t return;\n\t }\n\t o.coordsize = abs(kx) + S + abs(ky);\n\t s.rotation = deg * (sx * sy < 0 ? -1 : 1);\n\t if (deg) {\n\t var c = compensation(deg, dx, dy);\n\t dx = c.dx;\n\t dy = c.dy;\n\t }\n\t sx < 0 && (flip += \"x\");\n\t sy < 0 && (flip += \" y\") && (y = -1);\n\t s.flip = flip;\n\t o.coordorigin = (dx * -kx) + S + (dy * -ky);\n\t if (fillpos || _.fillsize) {\n\t var fill = o.getElementsByTagName(fillString);\n\t fill = fill && fill[0];\n\t o.removeChild(fill);\n\t if (fillpos) {\n\t c = compensation(deg, m.x(fillpos[0], fillpos[1]), m.y(fillpos[0], fillpos[1]));\n\t fill.position = c.dx * y + S + c.dy * y;\n\t }\n\t if (_.fillsize) {\n\t fill.size = _.fillsize[0] * abs(sx) + S + _.fillsize[1] * abs(sy);\n\t }\n\t o.appendChild(fill);\n\t }\n\t s.visibility = \"visible\";\n\t };\n\t R.toString = function () {\n\t return \"Your browser doesn\\u2019t support SVG. Falling down to VML.\\nYou are running Rapha\\xebl \" + this.version;\n\t };\n\t var addArrow = function (o, value, isEnd) {\n\t var values = Str(value).toLowerCase().split(\"-\"),\n\t se = isEnd ? \"end\" : \"start\",\n\t i = values.length,\n\t type = \"classic\",\n\t w = \"medium\",\n\t h = \"medium\";\n\t while (i--) {\n\t switch (values[i]) {\n\t case \"block\":\n\t case \"classic\":\n\t case \"oval\":\n\t case \"diamond\":\n\t case \"open\":\n\t case \"none\":\n\t type = values[i];\n\t break;\n\t case \"wide\":\n\t case \"narrow\": h = values[i]; break;\n\t case \"long\":\n\t case \"short\": w = values[i]; break;\n\t }\n\t }\n\t var stroke = o.node.getElementsByTagName(\"stroke\")[0];\n\t stroke[se + \"arrow\"] = type;\n\t stroke[se + \"arrowlength\"] = w;\n\t stroke[se + \"arrowwidth\"] = h;\n\t },\n\t setFillAndStroke = function (o, params) {\n\t // o.paper.canvas.style.display = \"none\";\n\t o.attrs = o.attrs || {};\n\t var node = o.node,\n\t a = o.attrs,\n\t s = node.style,\n\t xy,\n\t newpath = pathTypes[o.type] && (params.x != a.x || params.y != a.y || params.width != a.width || params.height != a.height || params.cx != a.cx || params.cy != a.cy || params.rx != a.rx || params.ry != a.ry || params.r != a.r),\n\t isOval = ovalTypes[o.type] && (a.cx != params.cx || a.cy != params.cy || a.r != params.r || a.rx != params.rx || a.ry != params.ry),\n\t res = o;\n\n\n\t for (var par in params) if (params[has](par)) {\n\t a[par] = params[par];\n\t }\n\t if (newpath) {\n\t a.path = R._getPath[o.type](o);\n\t o._.dirty = 1;\n\t }\n\t params.href && (node.href = params.href);\n\t params.title && (node.title = params.title);\n\t params.target && (node.target = params.target);\n\t params.cursor && (s.cursor = params.cursor);\n\t \"blur\" in params && o.blur(params.blur);\n\t if (params.path && o.type == \"path\" || newpath) {\n\t node.path = path2vml(~Str(a.path).toLowerCase().indexOf(\"r\") ? R._pathToAbsolute(a.path) : a.path);\n\t o._.dirty = 1;\n\t if (o.type == \"image\") {\n\t o._.fillpos = [a.x, a.y];\n\t o._.fillsize = [a.width, a.height];\n\t setCoords(o, 1, 1, 0, 0, 0);\n\t }\n\t }\n\t \"transform\" in params && o.transform(params.transform);\n\t if (isOval) {\n\t var cx = +a.cx,\n\t cy = +a.cy,\n\t rx = +a.rx || +a.r || 0,\n\t ry = +a.ry || +a.r || 0;\n\t node.path = R.format(\"ar{0},{1},{2},{3},{4},{1},{4},{1}x\", round((cx - rx) * zoom), round((cy - ry) * zoom), round((cx + rx) * zoom), round((cy + ry) * zoom), round(cx * zoom));\n\t o._.dirty = 1;\n\t }\n\t if (\"clip-rect\" in params) {\n\t var rect = Str(params[\"clip-rect\"]).split(separator);\n\t if (rect.length == 4) {\n\t rect[2] = +rect[2] + (+rect[0]);\n\t rect[3] = +rect[3] + (+rect[1]);\n\t var div = node.clipRect || R._g.doc.createElement(\"div\"),\n\t dstyle = div.style;\n\t dstyle.clip = R.format(\"rect({1}px {2}px {3}px {0}px)\", rect);\n\t if (!node.clipRect) {\n\t dstyle.position = \"absolute\";\n\t dstyle.top = 0;\n\t dstyle.left = 0;\n\t dstyle.width = o.paper.width + \"px\";\n\t dstyle.height = o.paper.height + \"px\";\n\t node.parentNode.insertBefore(div, node);\n\t div.appendChild(node);\n\t node.clipRect = div;\n\t }\n\t }\n\t if (!params[\"clip-rect\"]) {\n\t node.clipRect && (node.clipRect.style.clip = \"auto\");\n\t }\n\t }\n\t if (o.textpath) {\n\t var textpathStyle = o.textpath.style;\n\t params.font && (textpathStyle.font = params.font);\n\t params[\"font-family\"] && (textpathStyle.fontFamily = '\"' + params[\"font-family\"].split(\",\")[0].replace(/^['\"]+|['\"]+$/g, E) + '\"');\n\t params[\"font-size\"] && (textpathStyle.fontSize = params[\"font-size\"]);\n\t params[\"font-weight\"] && (textpathStyle.fontWeight = params[\"font-weight\"]);\n\t params[\"font-style\"] && (textpathStyle.fontStyle = params[\"font-style\"]);\n\t }\n\t if (\"arrow-start\" in params) {\n\t addArrow(res, params[\"arrow-start\"]);\n\t }\n\t if (\"arrow-end\" in params) {\n\t addArrow(res, params[\"arrow-end\"], 1);\n\t }\n\t if (params.opacity != null ||\n\t params.fill != null ||\n\t params.src != null ||\n\t params.stroke != null ||\n\t params[\"stroke-width\"] != null ||\n\t params[\"stroke-opacity\"] != null ||\n\t params[\"fill-opacity\"] != null ||\n\t params[\"stroke-dasharray\"] != null ||\n\t params[\"stroke-miterlimit\"] != null ||\n\t params[\"stroke-linejoin\"] != null ||\n\t params[\"stroke-linecap\"] != null) {\n\t var fill = node.getElementsByTagName(fillString),\n\t newfill = false;\n\t fill = fill && fill[0];\n\t !fill && (newfill = fill = createNode(fillString));\n\t if (o.type == \"image\" && params.src) {\n\t fill.src = params.src;\n\t }\n\t params.fill && (fill.on = true);\n\t if (fill.on == null || params.fill == \"none\" || params.fill === null) {\n\t fill.on = false;\n\t }\n\t if (fill.on && params.fill) {\n\t var isURL = Str(params.fill).match(R._ISURL);\n\t if (isURL) {\n\t fill.parentNode == node && node.removeChild(fill);\n\t fill.rotate = true;\n\t fill.src = isURL[1];\n\t fill.type = \"tile\";\n\t var bbox = o.getBBox(1);\n\t fill.position = bbox.x + S + bbox.y;\n\t o._.fillpos = [bbox.x, bbox.y];\n\n\t R._preload(isURL[1], function () {\n\t o._.fillsize = [this.offsetWidth, this.offsetHeight];\n\t });\n\t } else {\n\t fill.color = R.getRGB(params.fill).hex;\n\t fill.src = E;\n\t fill.type = \"solid\";\n\t if (R.getRGB(params.fill).error && (res.type in {circle: 1, ellipse: 1} || Str(params.fill).charAt() != \"r\") && addGradientFill(res, params.fill, fill)) {\n\t a.fill = \"none\";\n\t a.gradient = params.fill;\n\t fill.rotate = false;\n\t }\n\t }\n\t }\n\t if (\"fill-opacity\" in params || \"opacity\" in params) {\n\t var opacity = ((+a[\"fill-opacity\"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+R.getRGB(params.fill).o + 1 || 2) - 1);\n\t opacity = mmin(mmax(opacity, 0), 1);\n\t fill.opacity = opacity;\n\t if (fill.src) {\n\t fill.color = \"none\";\n\t }\n\t }\n\t node.appendChild(fill);\n\t var stroke = (node.getElementsByTagName(\"stroke\") && node.getElementsByTagName(\"stroke\")[0]),\n\t newstroke = false;\n\t !stroke && (newstroke = stroke = createNode(\"stroke\"));\n\t if ((params.stroke && params.stroke != \"none\") ||\n\t params[\"stroke-width\"] ||\n\t params[\"stroke-opacity\"] != null ||\n\t params[\"stroke-dasharray\"] ||\n\t params[\"stroke-miterlimit\"] ||\n\t params[\"stroke-linejoin\"] ||\n\t params[\"stroke-linecap\"]) {\n\t stroke.on = true;\n\t }\n\t (params.stroke == \"none\" || params.stroke === null || stroke.on == null || params.stroke == 0 || params[\"stroke-width\"] == 0) && (stroke.on = false);\n\t var strokeColor = R.getRGB(params.stroke);\n\t stroke.on && params.stroke && (stroke.color = strokeColor.hex);\n\t opacity = ((+a[\"stroke-opacity\"] + 1 || 2) - 1) * ((+a.opacity + 1 || 2) - 1) * ((+strokeColor.o + 1 || 2) - 1);\n\t var width = (toFloat(params[\"stroke-width\"]) || 1) * .75;\n\t opacity = mmin(mmax(opacity, 0), 1);\n\t params[\"stroke-width\"] == null && (width = a[\"stroke-width\"]);\n\t params[\"stroke-width\"] && (stroke.weight = width);\n\t width && width < 1 && (opacity *= width) && (stroke.weight = 1);\n\t stroke.opacity = opacity;\n\n\t params[\"stroke-linejoin\"] && (stroke.joinstyle = params[\"stroke-linejoin\"] || \"miter\");\n\t stroke.miterlimit = params[\"stroke-miterlimit\"] || 8;\n\t params[\"stroke-linecap\"] && (stroke.endcap = params[\"stroke-linecap\"] == \"butt\" ? \"flat\" : params[\"stroke-linecap\"] == \"square\" ? \"square\" : \"round\");\n\t if (\"stroke-dasharray\" in params) {\n\t var dasharray = {\n\t \"-\": \"shortdash\",\n\t \".\": \"shortdot\",\n\t \"-.\": \"shortdashdot\",\n\t \"-..\": \"shortdashdotdot\",\n\t \". \": \"dot\",\n\t \"- \": \"dash\",\n\t \"--\": \"longdash\",\n\t \"- .\": \"dashdot\",\n\t \"--.\": \"longdashdot\",\n\t \"--..\": \"longdashdotdot\"\n\t };\n\t stroke.dashstyle = dasharray[has](params[\"stroke-dasharray\"]) ? dasharray[params[\"stroke-dasharray\"]] : E;\n\t }\n\t newstroke && node.appendChild(stroke);\n\t }\n\t if (res.type == \"text\") {\n\t res.paper.canvas.style.display = E;\n\t var span = res.paper.span,\n\t m = 100,\n\t fontSize = a.font && a.font.match(/\\d+(?:\\.\\d*)?(?=px)/);\n\t s = span.style;\n\t a.font && (s.font = a.font);\n\t a[\"font-family\"] && (s.fontFamily = a[\"font-family\"]);\n\t a[\"font-weight\"] && (s.fontWeight = a[\"font-weight\"]);\n\t a[\"font-style\"] && (s.fontStyle = a[\"font-style\"]);\n\t fontSize = toFloat(a[\"font-size\"] || fontSize && fontSize[0]) || 10;\n\t s.fontSize = fontSize * m + \"px\";\n\t res.textpath.string && (span.innerHTML = Str(res.textpath.string).replace(/</g, \"<\").replace(/&/g, \"&\").replace(/\\n/g, \"<br>\"));\n\t var brect = span.getBoundingClientRect();\n\t res.W = a.w = (brect.right - brect.left) / m;\n\t res.H = a.h = (brect.bottom - brect.top) / m;\n\t // res.paper.canvas.style.display = \"none\";\n\t res.X = a.x;\n\t res.Y = a.y + res.H / 2;\n\n\t (\"x\" in params || \"y\" in params) && (res.path.v = R.format(\"m{0},{1}l{2},{1}\", round(a.x * zoom), round(a.y * zoom), round(a.x * zoom) + 1));\n\t var dirtyattrs = [\"x\", \"y\", \"text\", \"font\", \"font-family\", \"font-weight\", \"font-style\", \"font-size\"];\n\t for (var d = 0, dd = dirtyattrs.length; d < dd; d++) if (dirtyattrs[d] in params) {\n\t res._.dirty = 1;\n\t break;\n\t }\n\n\t // text-anchor emulation\n\t switch (a[\"text-anchor\"]) {\n\t case \"start\":\n\t res.textpath.style[\"v-text-align\"] = \"left\";\n\t res.bbx = res.W / 2;\n\t break;\n\t case \"end\":\n\t res.textpath.style[\"v-text-align\"] = \"right\";\n\t res.bbx = -res.W / 2;\n\t break;\n\t default:\n\t res.textpath.style[\"v-text-align\"] = \"center\";\n\t res.bbx = 0;\n\t break;\n\t }\n\t res.textpath.style[\"v-text-kern\"] = true;\n\t }\n\t // res.paper.canvas.style.display = E;\n\t },\n\t addGradientFill = function (o, gradient, fill) {\n\t o.attrs = o.attrs || {};\n\t var attrs = o.attrs,\n\t pow = Math.pow,\n\t opacity,\n\t oindex,\n\t type = \"linear\",\n\t fxfy = \".5 .5\";\n\t o.attrs.gradient = gradient;\n\t gradient = Str(gradient).replace(R._radial_gradient, function (all, fx, fy) {\n\t type = \"radial\";\n\t if (fx && fy) {\n\t fx = toFloat(fx);\n\t fy = toFloat(fy);\n\t pow(fx - .5, 2) + pow(fy - .5, 2) > .25 && (fy = math.sqrt(.25 - pow(fx - .5, 2)) * ((fy > .5) * 2 - 1) + .5);\n\t fxfy = fx + S + fy;\n\t }\n\t return E;\n\t });\n\t gradient = gradient.split(/\\s*\\-\\s*/);\n\t if (type == \"linear\") {\n\t var angle = gradient.shift();\n\t angle = -toFloat(angle);\n\t if (isNaN(angle)) {\n\t return null;\n\t }\n\t }\n\t var dots = R._parseDots(gradient);\n\t if (!dots) {\n\t return null;\n\t }\n\t o = o.shape || o.node;\n\t if (dots.length) {\n\t o.removeChild(fill);\n\t fill.on = true;\n\t fill.method = \"none\";\n\t fill.color = dots[0].color;\n\t fill.color2 = dots[dots.length - 1].color;\n\t var clrs = [];\n\t for (var i = 0, ii = dots.length; i < ii; i++) {\n\t dots[i].offset && clrs.push(dots[i].offset + S + dots[i].color);\n\t }\n\t fill.colors = clrs.length ? clrs.join() : \"0% \" + fill.color;\n\t if (type == \"radial\") {\n\t fill.type = \"gradientTitle\";\n\t fill.focus = \"100%\";\n\t fill.focussize = \"0 0\";\n\t fill.focusposition = fxfy;\n\t fill.angle = 0;\n\t } else {\n\t // fill.rotate= true;\n\t fill.type = \"gradient\";\n\t fill.angle = (270 - angle) % 360;\n\t }\n\t o.appendChild(fill);\n\t }\n\t return 1;\n\t },\n\t Element = function (node, vml) {\n\t this[0] = this.node = node;\n\t node.raphael = true;\n\t this.id = R._oid++;\n\t node.raphaelid = this.id;\n\t this.X = 0;\n\t this.Y = 0;\n\t this.attrs = {};\n\t this.paper = vml;\n\t this.matrix = R.matrix();\n\t this._ = {\n\t transform: [],\n\t sx: 1,\n\t sy: 1,\n\t dx: 0,\n\t dy: 0,\n\t deg: 0,\n\t dirty: 1,\n\t dirtyT: 1\n\t };\n\t !vml.bottom && (vml.bottom = this);\n\t this.prev = vml.top;\n\t vml.top && (vml.top.next = this);\n\t vml.top = this;\n\t this.next = null;\n\t };\n\t var elproto = R.el;\n\n\t Element.prototype = elproto;\n\t elproto.constructor = Element;\n\t elproto.transform = function (tstr) {\n\t if (tstr == null) {\n\t return this._.transform;\n\t }\n\t var vbs = this.paper._viewBoxShift,\n\t vbt = vbs ? \"s\" + [vbs.scale, vbs.scale] + \"-1-1t\" + [vbs.dx, vbs.dy] : E,\n\t oldt;\n\t if (vbs) {\n\t oldt = tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, this._.transform || E);\n\t }\n\t R._extractTransform(this, vbt + tstr);\n\t var matrix = this.matrix.clone(),\n\t skew = this.skew,\n\t o = this.node,\n\t split,\n\t isGrad = ~Str(this.attrs.fill).indexOf(\"-\"),\n\t isPatt = !Str(this.attrs.fill).indexOf(\"url(\");\n\t matrix.translate(1, 1);\n\t if (isPatt || isGrad || this.type == \"image\") {\n\t skew.matrix = \"1 0 0 1\";\n\t skew.offset = \"0 0\";\n\t split = matrix.split();\n\t if ((isGrad && split.noRotation) || !split.isSimple) {\n\t o.style.filter = matrix.toFilter();\n\t var bb = this.getBBox(),\n\t bbt = this.getBBox(1),\n\t dx = bb.x - bbt.x,\n\t dy = bb.y - bbt.y;\n\t o.coordorigin = (dx * -zoom) + S + (dy * -zoom);\n\t setCoords(this, 1, 1, dx, dy, 0);\n\t } else {\n\t o.style.filter = E;\n\t setCoords(this, split.scalex, split.scaley, split.dx, split.dy, split.rotate);\n\t }\n\t } else {\n\t o.style.filter = E;\n\t skew.matrix = Str(matrix);\n\t skew.offset = matrix.offset();\n\t }\n\t if (oldt !== null) { // empty string value is true as well\n\t this._.transform = oldt;\n\t R._extractTransform(this, oldt);\n\t }\n\t return this;\n\t };\n\t elproto.rotate = function (deg, cx, cy) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t if (deg == null) {\n\t return;\n\t }\n\t deg = Str(deg).split(separator);\n\t if (deg.length - 1) {\n\t cx = toFloat(deg[1]);\n\t cy = toFloat(deg[2]);\n\t }\n\t deg = toFloat(deg[0]);\n\t (cy == null) && (cx = cy);\n\t if (cx == null || cy == null) {\n\t var bbox = this.getBBox(1);\n\t cx = bbox.x + bbox.width / 2;\n\t cy = bbox.y + bbox.height / 2;\n\t }\n\t this._.dirtyT = 1;\n\t this.transform(this._.transform.concat([[\"r\", deg, cx, cy]]));\n\t return this;\n\t };\n\t elproto.translate = function (dx, dy) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t dx = Str(dx).split(separator);\n\t if (dx.length - 1) {\n\t dy = toFloat(dx[1]);\n\t }\n\t dx = toFloat(dx[0]) || 0;\n\t dy = +dy || 0;\n\t if (this._.bbox) {\n\t this._.bbox.x += dx;\n\t this._.bbox.y += dy;\n\t }\n\t this.transform(this._.transform.concat([[\"t\", dx, dy]]));\n\t return this;\n\t };\n\t elproto.scale = function (sx, sy, cx, cy) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t sx = Str(sx).split(separator);\n\t if (sx.length - 1) {\n\t sy = toFloat(sx[1]);\n\t cx = toFloat(sx[2]);\n\t cy = toFloat(sx[3]);\n\t isNaN(cx) && (cx = null);\n\t isNaN(cy) && (cy = null);\n\t }\n\t sx = toFloat(sx[0]);\n\t (sy == null) && (sy = sx);\n\t (cy == null) && (cx = cy);\n\t if (cx == null || cy == null) {\n\t var bbox = this.getBBox(1);\n\t }\n\t cx = cx == null ? bbox.x + bbox.width / 2 : cx;\n\t cy = cy == null ? bbox.y + bbox.height / 2 : cy;\n\n\t this.transform(this._.transform.concat([[\"s\", sx, sy, cx, cy]]));\n\t this._.dirtyT = 1;\n\t return this;\n\t };\n\t elproto.hide = function () {\n\t !this.removed && (this.node.style.display = \"none\");\n\t return this;\n\t };\n\t elproto.show = function () {\n\t !this.removed && (this.node.style.display = E);\n\t return this;\n\t };\n\t // Needed to fix the vml setViewBox issues\n\t elproto.auxGetBBox = R.el.getBBox;\n\t elproto.getBBox = function(){\n\t var b = this.auxGetBBox();\n\t if (this.paper && this.paper._viewBoxShift)\n\t {\n\t var c = {};\n\t var z = 1/this.paper._viewBoxShift.scale;\n\t c.x = b.x - this.paper._viewBoxShift.dx;\n\t c.x *= z;\n\t c.y = b.y - this.paper._viewBoxShift.dy;\n\t c.y *= z;\n\t c.width = b.width * z;\n\t c.height = b.height * z;\n\t c.x2 = c.x + c.width;\n\t c.y2 = c.y + c.height;\n\t return c;\n\t }\n\t return b;\n\t };\n\t elproto._getBBox = function () {\n\t if (this.removed) {\n\t return {};\n\t }\n\t return {\n\t x: this.X + (this.bbx || 0) - this.W / 2,\n\t y: this.Y - this.H,\n\t width: this.W,\n\t height: this.H\n\t };\n\t };\n\t elproto.remove = function () {\n\t if (this.removed || !this.node.parentNode) {\n\t return;\n\t }\n\t this.paper.__set__ && this.paper.__set__.exclude(this);\n\t R.eve.unbind(\"raphael.*.*.\" + this.id);\n\t R._tear(this, this.paper);\n\t this.node.parentNode.removeChild(this.node);\n\t this.shape && this.shape.parentNode.removeChild(this.shape);\n\t for (var i in this) {\n\t this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n\t }\n\t this.removed = true;\n\t };\n\t elproto.attr = function (name, value) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t if (name == null) {\n\t var res = {};\n\t for (var a in this.attrs) if (this.attrs[has](a)) {\n\t res[a] = this.attrs[a];\n\t }\n\t res.gradient && res.fill == \"none\" && (res.fill = res.gradient) && delete res.gradient;\n\t res.transform = this._.transform;\n\t return res;\n\t }\n\t if (value == null && R.is(name, \"string\")) {\n\t if (name == fillString && this.attrs.fill == \"none\" && this.attrs.gradient) {\n\t return this.attrs.gradient;\n\t }\n\t var names = name.split(separator),\n\t out = {};\n\t for (var i = 0, ii = names.length; i < ii; i++) {\n\t name = names[i];\n\t if (name in this.attrs) {\n\t out[name] = this.attrs[name];\n\t } else if (R.is(this.paper.customAttributes[name], \"function\")) {\n\t out[name] = this.paper.customAttributes[name].def;\n\t } else {\n\t out[name] = R._availableAttrs[name];\n\t }\n\t }\n\t return ii - 1 ? out : out[names[0]];\n\t }\n\t if (this.attrs && value == null && R.is(name, \"array\")) {\n\t out = {};\n\t for (i = 0, ii = name.length; i < ii; i++) {\n\t out[name[i]] = this.attr(name[i]);\n\t }\n\t return out;\n\t }\n\t var params;\n\t if (value != null) {\n\t params = {};\n\t params[name] = value;\n\t }\n\t value == null && R.is(name, \"object\") && (params = name);\n\t for (var key in params) {\n\t eve(\"raphael.attr.\" + key + \".\" + this.id, this, params[key]);\n\t }\n\t if (params) {\n\t for (key in this.paper.customAttributes) if (this.paper.customAttributes[has](key) && params[has](key) && R.is(this.paper.customAttributes[key], \"function\")) {\n\t var par = this.paper.customAttributes[key].apply(this, [].concat(params[key]));\n\t this.attrs[key] = params[key];\n\t for (var subkey in par) if (par[has](subkey)) {\n\t params[subkey] = par[subkey];\n\t }\n\t }\n\t // this.paper.canvas.style.display = \"none\";\n\t if (params.text && this.type == \"text\") {\n\t this.textpath.string = params.text;\n\t }\n\t setFillAndStroke(this, params);\n\t // this.paper.canvas.style.display = E;\n\t }\n\t return this;\n\t };\n\t elproto.toFront = function () {\n\t !this.removed && this.node.parentNode.appendChild(this.node);\n\t this.paper && this.paper.top != this && R._tofront(this, this.paper);\n\t return this;\n\t };\n\t elproto.toBack = function () {\n\t if (this.removed) {\n\t return this;\n\t }\n\t if (this.node.parentNode.firstChild != this.node) {\n\t this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild);\n\t R._toback(this, this.paper);\n\t }\n\t return this;\n\t };\n\t elproto.insertAfter = function (element) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t if (element.constructor == R.st.constructor) {\n\t element = element[element.length - 1];\n\t }\n\t if (element.node.nextSibling) {\n\t element.node.parentNode.insertBefore(this.node, element.node.nextSibling);\n\t } else {\n\t element.node.parentNode.appendChild(this.node);\n\t }\n\t R._insertafter(this, element, this.paper);\n\t return this;\n\t };\n\t elproto.insertBefore = function (element) {\n\t if (this.removed) {\n\t return this;\n\t }\n\t if (element.constructor == R.st.constructor) {\n\t element = element[0];\n\t }\n\t element.node.parentNode.insertBefore(this.node, element.node);\n\t R._insertbefore(this, element, this.paper);\n\t return this;\n\t };\n\t elproto.blur = function (size) {\n\t var s = this.node.runtimeStyle,\n\t f = s.filter;\n\t f = f.replace(blurregexp, E);\n\t if (+size !== 0) {\n\t this.attrs.blur = size;\n\t s.filter = f + S + ms + \".Blur(pixelradius=\" + (+size || 1.5) + \")\";\n\t s.margin = R.format(\"-{0}px 0 0 -{0}px\", round(+size || 1.5));\n\t } else {\n\t s.filter = f;\n\t s.margin = 0;\n\t delete this.attrs.blur;\n\t }\n\t return this;\n\t };\n\n\t R._engine.path = function (pathString, vml) {\n\t var el = createNode(\"shape\");\n\t el.style.cssText = cssDot;\n\t el.coordsize = zoom + S + zoom;\n\t el.coordorigin = vml.coordorigin;\n\t var p = new Element(el, vml),\n\t attr = {fill: \"none\", stroke: \"#000\"};\n\t pathString && (attr.path = pathString);\n\t p.type = \"path\";\n\t p.path = [];\n\t p.Path = E;\n\t setFillAndStroke(p, attr);\n\t vml.canvas && vml.canvas.appendChild(el);\n\t var skew = createNode(\"skew\");\n\t skew.on = true;\n\t el.appendChild(skew);\n\t p.skew = skew;\n\t p.transform(E);\n\t return p;\n\t };\n\t R._engine.rect = function (vml, x, y, w, h, r) {\n\t var path = R._rectPath(x, y, w, h, r),\n\t res = vml.path(path),\n\t a = res.attrs;\n\t res.X = a.x = x;\n\t res.Y = a.y = y;\n\t res.W = a.width = w;\n\t res.H = a.height = h;\n\t a.r = r;\n\t a.path = path;\n\t res.type = \"rect\";\n\t return res;\n\t };\n\t R._engine.ellipse = function (vml, x, y, rx, ry) {\n\t var res = vml.path(),\n\t a = res.attrs;\n\t res.X = x - rx;\n\t res.Y = y - ry;\n\t res.W = rx * 2;\n\t res.H = ry * 2;\n\t res.type = \"ellipse\";\n\t setFillAndStroke(res, {\n\t cx: x,\n\t cy: y,\n\t rx: rx,\n\t ry: ry\n\t });\n\t return res;\n\t };\n\t R._engine.circle = function (vml, x, y, r) {\n\t var res = vml.path(),\n\t a = res.attrs;\n\t res.X = x - r;\n\t res.Y = y - r;\n\t res.W = res.H = r * 2;\n\t res.type = \"circle\";\n\t setFillAndStroke(res, {\n\t cx: x,\n\t cy: y,\n\t r: r\n\t });\n\t return res;\n\t };\n\t R._engine.image = function (vml, src, x, y, w, h) {\n\t var path = R._rectPath(x, y, w, h),\n\t res = vml.path(path).attr({stroke: \"none\"}),\n\t a = res.attrs,\n\t node = res.node,\n\t fill = node.getElementsByTagName(fillString)[0];\n\t a.src = src;\n\t res.X = a.x = x;\n\t res.Y = a.y = y;\n\t res.W = a.width = w;\n\t res.H = a.height = h;\n\t a.path = path;\n\t res.type = \"image\";\n\t fill.parentNode == node && node.removeChild(fill);\n\t fill.rotate = true;\n\t fill.src = src;\n\t fill.type = \"tile\";\n\t res._.fillpos = [x, y];\n\t res._.fillsize = [w, h];\n\t node.appendChild(fill);\n\t setCoords(res, 1, 1, 0, 0, 0);\n\t return res;\n\t };\n\t R._engine.text = function (vml, x, y, text) {\n\t var el = createNode(\"shape\"),\n\t path = createNode(\"path\"),\n\t o = createNode(\"textpath\");\n\t x = x || 0;\n\t y = y || 0;\n\t text = text || \"\";\n\t path.v = R.format(\"m{0},{1}l{2},{1}\", round(x * zoom), round(y * zoom), round(x * zoom) + 1);\n\t path.textpathok = true;\n\t o.string = Str(text);\n\t o.on = true;\n\t el.style.cssText = cssDot;\n\t el.coordsize = zoom + S + zoom;\n\t el.coordorigin = \"0 0\";\n\t var p = new Element(el, vml),\n\t attr = {\n\t fill: \"#000\",\n\t stroke: \"none\",\n\t font: R._availableAttrs.font,\n\t text: text\n\t };\n\t p.shape = el;\n\t p.path = path;\n\t p.textpath = o;\n\t p.type = \"text\";\n\t p.attrs.text = Str(text);\n\t p.attrs.x = x;\n\t p.attrs.y = y;\n\t p.attrs.w = 1;\n\t p.attrs.h = 1;\n\t setFillAndStroke(p, attr);\n\t el.appendChild(o);\n\t el.appendChild(path);\n\t vml.canvas.appendChild(el);\n\t var skew = createNode(\"skew\");\n\t skew.on = true;\n\t el.appendChild(skew);\n\t p.skew = skew;\n\t p.transform(E);\n\t return p;\n\t };\n\t R._engine.setSize = function (width, height) {\n\t var cs = this.canvas.style;\n\t this.width = width;\n\t this.height = height;\n\t width == +width && (width += \"px\");\n\t height == +height && (height += \"px\");\n\t cs.width = width;\n\t cs.height = height;\n\t cs.clip = \"rect(0 \" + width + \" \" + height + \" 0)\";\n\t if (this._viewBox) {\n\t R._engine.setViewBox.apply(this, this._viewBox);\n\t }\n\t return this;\n\t };\n\t R._engine.setViewBox = function (x, y, w, h, fit) {\n\t R.eve(\"raphael.setViewBox\", this, this._viewBox, [x, y, w, h, fit]);\n\t var paperSize = this.getSize(),\n\t width = paperSize.width,\n\t height = paperSize.height,\n\t H, W;\n\t if (fit) {\n\t H = height / h;\n\t W = width / w;\n\t if (w * H < width) {\n\t x -= (width - w * H) / 2 / H;\n\t }\n\t if (h * W < height) {\n\t y -= (height - h * W) / 2 / W;\n\t }\n\t }\n\t this._viewBox = [x, y, w, h, !!fit];\n\t this._viewBoxShift = {\n\t dx: -x,\n\t dy: -y,\n\t scale: paperSize\n\t };\n\t this.forEach(function (el) {\n\t el.transform(\"...\");\n\t });\n\t return this;\n\t };\n\t var createNode;\n\t R._engine.initWin = function (win) {\n\t var doc = win.document;\n\t if (doc.styleSheets.length < 31) {\n\t doc.createStyleSheet().addRule(\".rvml\", \"behavior:url(#default#VML)\");\n\t } else {\n\t // no more room, add to the existing one\n\t // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n\t doc.styleSheets[0].addRule(\".rvml\", \"behavior:url(#default#VML)\");\n\t }\n\t try {\n\t !doc.namespaces.rvml && doc.namespaces.add(\"rvml\", \"urn:schemas-microsoft-com:vml\");\n\t createNode = function (tagName) {\n\t return doc.createElement('<rvml:' + tagName + ' class=\"rvml\">');\n\t };\n\t } catch (e) {\n\t createNode = function (tagName) {\n\t return doc.createElement('<' + tagName + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">');\n\t };\n\t }\n\t };\n\t R._engine.initWin(R._g.win);\n\t R._engine.create = function () {\n\t var con = R._getContainer.apply(0, arguments),\n\t container = con.container,\n\t height = con.height,\n\t s,\n\t width = con.width,\n\t x = con.x,\n\t y = con.y;\n\t if (!container) {\n\t throw new Error(\"VML container not found.\");\n\t }\n\t var res = new R._Paper,\n\t c = res.canvas = R._g.doc.createElement(\"div\"),\n\t cs = c.style;\n\t x = x || 0;\n\t y = y || 0;\n\t width = width || 512;\n\t height = height || 342;\n\t res.width = width;\n\t res.height = height;\n\t width == +width && (width += \"px\");\n\t height == +height && (height += \"px\");\n\t res.coordsize = zoom * 1e3 + S + zoom * 1e3;\n\t res.coordorigin = \"0 0\";\n\t res.span = R._g.doc.createElement(\"span\");\n\t res.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;\";\n\t c.appendChild(res.span);\n\t cs.cssText = R.format(\"top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden\", width, height);\n\t if (container == 1) {\n\t R._g.doc.body.appendChild(c);\n\t cs.left = x + \"px\";\n\t cs.top = y + \"px\";\n\t cs.position = \"absolute\";\n\t } else {\n\t if (container.firstChild) {\n\t container.insertBefore(c, container.firstChild);\n\t } else {\n\t container.appendChild(c);\n\t }\n\t }\n\t res.renderfix = function () {};\n\t return res;\n\t };\n\t R.prototype.clear = function () {\n\t R.eve(\"raphael.clear\", this);\n\t this.canvas.innerHTML = E;\n\t this.span = R._g.doc.createElement(\"span\");\n\t this.span.style.cssText = \"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;\";\n\t this.canvas.appendChild(this.span);\n\t this.bottom = this.top = null;\n\t };\n\t R.prototype.remove = function () {\n\t R.eve(\"raphael.remove\", this);\n\t this.canvas.parentNode.removeChild(this.canvas);\n\t for (var i in this) {\n\t this[i] = typeof this[i] == \"function\" ? R._removedFactory(i) : null;\n\t }\n\t return true;\n\t };\n\n\t var setproto = R.st;\n\t for (var method in elproto) if (elproto[has](method) && !setproto[has](method)) {\n\t setproto[method] = (function (methodname) {\n\t return function () {\n\t var arg = arguments;\n\t return this.forEach(function (el) {\n\t el[methodname].apply(el, arg);\n\t });\n\t };\n\t })(method);\n\t }\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }\n/******/ ])\n});\n;","import Mousetrap from 'mousetrap';\nimport ShortcutsNavigation from './shortcuts_navigation';\n\nexport default class ShortcutsNetwork extends ShortcutsNavigation {\n constructor(graph) {\n super();\n\n Mousetrap.bind(['left', 'h'], graph.scrollLeft);\n Mousetrap.bind(['right', 'l'], graph.scrollRight);\n Mousetrap.bind(['up', 'k'], graph.scrollUp);\n Mousetrap.bind(['down', 'j'], graph.scrollDown);\n Mousetrap.bind(['shift+up', 'shift+k'], graph.scrollTop);\n Mousetrap.bind(['shift+down', 'shift+j'], graph.scrollBottom);\n\n this.enabledHelp.push('.hidden-shortcut.network');\n }\n}\n","import Raphael from 'raphael/raphael';\n\nRaphael.prototype.commitTooltip = function commitTooltip(x, y, commit) {\n const boxWidth = 300;\n const icon = this.image(gon.relative_url_root + commit.author.icon, x, y, 20, 20);\n const nameText = this.text(x + 25, y + 10, commit.author.name);\n const idText = this.text(x, y + 35, commit.id);\n const messageText = this.text(x, y + 50, commit.message.replace(/\\r?\\n/g, ' \\n '));\n const textSet = this.set(icon, nameText, idText, messageText).attr({\n 'text-anchor': 'start',\n font: '12px Monaco, monospace',\n });\n nameText.attr({\n font: '14px Arial',\n 'font-weight': 'bold',\n });\n idText.attr({\n fill: '#AAA',\n });\n messageText.node.style['white-space'] = 'pre';\n this.textWrap(messageText, boxWidth - 50);\n const rect = this.rect(x - 10, y - 10, boxWidth, 100, 4).attr({\n fill: '#FFF',\n stroke: '#000',\n 'stroke-linecap': 'round',\n 'stroke-width': 2,\n });\n const tooltip = this.set(rect, textSet);\n rect.attr({\n height: tooltip.getBBox().height + 10,\n width: tooltip.getBBox().width + 10,\n });\n tooltip.transform(['t', 20, 20]);\n return tooltip;\n};\n\nRaphael.prototype.textWrap = function testWrap(t, width) {\n const content = t.attr('text');\n const abc = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n t.attr({\n text: abc,\n });\n const letterWidth = t.getBBox().width / abc.length;\n t.attr({\n text: content,\n });\n const words = content.split(' ');\n let x = 0;\n const s = [];\n for (let j = 0, len = words.length; j < len; j += 1) {\n const word = words[j];\n if (x + (word.length * letterWidth) > width) {\n s.push('\\n');\n x = 0;\n }\n if (word === '\\n') {\n s.push('\\n');\n x = 0;\n } else {\n s.push(`${word} `);\n x += word.length * letterWidth;\n }\n }\n t.attr({\n text: s.join('').trim(),\n });\n const b = t.getBBox();\n const h = Math.abs(b.y2) + 1;\n return t.attr({\n y: h,\n });\n};\n\nexport default Raphael;\n","/* eslint-disable func-names, space-before-function-paren, no-var, wrap-iife, quotes, comma-dangle, one-var, one-var-declaration-per-line, no-mixed-operators, no-loop-func, no-floating-decimal, consistent-return, no-unused-vars, prefer-template, prefer-arrow-callback, camelcase, max-len */\n\nimport $ from 'jquery';\nimport { __ } from '../locale';\nimport axios from '../lib/utils/axios_utils';\nimport flash from '../flash';\nimport Raphael from './raphael';\n\nexport default (function() {\n function BranchGraph(element1, options1) {\n this.element = element1;\n this.options = options1;\n this.scrollTop = this.scrollTop.bind(this);\n this.scrollBottom = this.scrollBottom.bind(this);\n this.scrollRight = this.scrollRight.bind(this);\n this.scrollLeft = this.scrollLeft.bind(this);\n this.scrollUp = this.scrollUp.bind(this);\n this.scrollDown = this.scrollDown.bind(this);\n this.preparedCommits = {};\n this.mtime = 0;\n this.mspace = 0;\n this.parents = {};\n this.colors = [\"#000\"];\n this.offsetX = 150;\n this.offsetY = 20;\n this.unitTime = 30;\n this.unitSpace = 10;\n this.prev_start = -1;\n this.load();\n }\n\n BranchGraph.prototype.load = function() {\n axios.get(this.options.url)\n .then(({ data }) => {\n $(\".loading\", this.element).hide();\n this.prepareData(data.days, data.commits);\n this.buildGraph();\n })\n .catch(() => __('Error fetching network graph.'));\n };\n\n BranchGraph.prototype.prepareData = function(days, commits) {\n var c, ch, cw, j, len, ref;\n this.days = days;\n this.commits = commits;\n this.collectParents();\n this.graphHeight = $(this.element).height();\n this.graphWidth = $(this.element).width();\n ch = Math.max(this.graphHeight, this.offsetY + this.unitTime * this.mtime + 150);\n cw = Math.max(this.graphWidth, this.offsetX + this.unitSpace * this.mspace + 300);\n this.r = Raphael(this.element.get(0), cw, ch);\n this.top = this.r.set();\n this.barHeight = Math.max(this.graphHeight, this.unitTime * this.days.length + 320);\n ref = this.commits;\n for (j = 0, len = ref.length; j < len; j += 1) {\n c = ref[j];\n if (c.id in this.parents) {\n c.isParent = true;\n }\n this.preparedCommits[c.id] = c;\n this.markCommit(c);\n }\n return this.collectColors();\n };\n\n BranchGraph.prototype.collectParents = function() {\n var c, j, len, p, ref, results;\n ref = this.commits;\n results = [];\n for (j = 0, len = ref.length; j < len; j += 1) {\n c = ref[j];\n this.mtime = Math.max(this.mtime, c.time);\n this.mspace = Math.max(this.mspace, c.space);\n results.push((function() {\n var l, len1, ref1, results1;\n ref1 = c.parents;\n results1 = [];\n for (l = 0, len1 = ref1.length; l < len1; l += 1) {\n p = ref1[l];\n this.parents[p[0]] = true;\n results1.push(this.mspace = Math.max(this.mspace, p[1]));\n }\n return results1;\n }).call(this));\n }\n return results;\n };\n\n BranchGraph.prototype.collectColors = function() {\n var k, results;\n k = 0;\n results = [];\n while (k < this.mspace) {\n this.colors.push(Raphael.getColor(.8));\n // Skipping a few colors in the spectrum to get more contrast between colors\n Raphael.getColor();\n Raphael.getColor();\n results.push(k += 1);\n }\n return results;\n };\n\n BranchGraph.prototype.buildGraph = function() {\n var cuday, cumonth, day, j, len, mm, r, ref;\n r = this.r;\n cuday = 0;\n cumonth = \"\";\n r.rect(0, 0, 40, this.barHeight).attr({\n fill: \"#222\"\n });\n r.rect(40, 0, 30, this.barHeight).attr({\n fill: \"#444\"\n });\n ref = this.days;\n for (mm = j = 0, len = ref.length; j < len; mm = (j += 1)) {\n day = ref[mm];\n if (cuday !== day[0] || cumonth !== day[1]) {\n // Dates\n r.text(55, this.offsetY + this.unitTime * mm, day[0]).attr({\n font: \"12px Monaco, monospace\",\n fill: \"#BBB\"\n });\n cuday = day[0];\n }\n if (cumonth !== day[1]) {\n // Months\n r.text(20, this.offsetY + this.unitTime * mm, day[1]).attr({\n font: \"12px Monaco, monospace\",\n fill: \"#EEE\"\n });\n cumonth = day[1];\n }\n }\n this.renderPartialGraph();\n return this.bindEvents();\n };\n\n BranchGraph.prototype.renderPartialGraph = function() {\n var commit, end, i, isGraphEdge, start, x, y;\n start = Math.floor((this.element.scrollTop() - this.offsetY) / this.unitTime) - 10;\n if (start < 0) {\n isGraphEdge = true;\n start = 0;\n }\n end = start + 40;\n if (this.commits.length < end) {\n isGraphEdge = true;\n end = this.commits.length;\n }\n if (this.prev_start === -1 || Math.abs(this.prev_start - start) > 10 || isGraphEdge) {\n i = start;\n this.prev_start = start;\n while (i < end) {\n commit = this.commits[i];\n i += 1;\n if (commit.hasDrawn !== true) {\n x = this.offsetX + this.unitSpace * (this.mspace - commit.space);\n y = this.offsetY + this.unitTime * commit.time;\n this.drawDot(x, y, commit);\n this.drawLines(x, y, commit);\n this.appendLabel(x, y, commit);\n this.appendAnchor(x, y, commit);\n commit.hasDrawn = true;\n }\n }\n return this.top.toFront();\n }\n };\n\n BranchGraph.prototype.bindEvents = function() {\n var element;\n element = this.element;\n return $(element).scroll((function(_this) {\n return function(event) {\n return _this.renderPartialGraph();\n };\n })(this));\n };\n\n BranchGraph.prototype.scrollDown = function() {\n this.element.scrollTop(this.element.scrollTop() + 50);\n return this.renderPartialGraph();\n };\n\n BranchGraph.prototype.scrollUp = function() {\n this.element.scrollTop(this.element.scrollTop() - 50);\n return this.renderPartialGraph();\n };\n\n BranchGraph.prototype.scrollLeft = function() {\n this.element.scrollLeft(this.element.scrollLeft() - 50);\n return this.renderPartialGraph();\n };\n\n BranchGraph.prototype.scrollRight = function() {\n this.element.scrollLeft(this.element.scrollLeft() + 50);\n return this.renderPartialGraph();\n };\n\n BranchGraph.prototype.scrollBottom = function() {\n return this.element.scrollTop(this.element.find('svg').height());\n };\n\n BranchGraph.prototype.scrollTop = function() {\n return this.element.scrollTop(0);\n };\n\n BranchGraph.prototype.appendLabel = function(x, y, commit) {\n var label, r, rect, shortrefs, text, textbox, triangle;\n if (!commit.refs) {\n return;\n }\n r = this.r;\n shortrefs = commit.refs;\n // Truncate if longer than 15 chars\n if (shortrefs.length > 17) {\n shortrefs = shortrefs.substr(0, 15) + \"…\";\n }\n text = r.text(x + 4, y, shortrefs).attr({\n \"text-anchor\": \"start\",\n font: \"10px Monaco, monospace\",\n fill: \"#FFF\",\n title: commit.refs\n });\n textbox = text.getBBox();\n // Create rectangle based on the size of the textbox\n rect = r.rect(x, y - 7, textbox.width + 5, textbox.height + 5, 4).attr({\n fill: \"#000\",\n \"fill-opacity\": .5,\n stroke: \"none\"\n });\n triangle = r.path([\"M\", x - 5, y, \"L\", x - 15, y - 4, \"L\", x - 15, y + 4, \"Z\"]).attr({\n fill: \"#000\",\n \"fill-opacity\": .5,\n stroke: \"none\"\n });\n label = r.set(rect, text);\n label.transform([\"t\", -rect.getBBox().width - 15, 0]);\n // Set text to front\n return text.toFront();\n };\n\n BranchGraph.prototype.appendAnchor = function(x, y, commit) {\n var anchor, options, r, top;\n r = this.r;\n top = this.top;\n options = this.options;\n anchor = r.circle(x, y, 10).attr({\n fill: \"#000\",\n opacity: 0,\n cursor: \"pointer\"\n }).click(function() {\n return window.open(options.commit_url.replace(\"%s\", commit.id), \"_blank\");\n }).hover(function() {\n this.tooltip = r.commitTooltip(x + 5, y, commit);\n return top.push(this.tooltip.insertBefore(this));\n }, function() {\n return this.tooltip && this.tooltip.remove() && delete this.tooltip;\n });\n return top.push(anchor);\n };\n\n BranchGraph.prototype.drawDot = function(x, y, commit) {\n var avatar_box_x, avatar_box_y, r;\n r = this.r;\n r.circle(x, y, 3).attr({\n fill: this.colors[commit.space],\n stroke: \"none\"\n });\n avatar_box_x = this.offsetX + this.unitSpace * this.mspace + 10;\n avatar_box_y = y - 10;\n r.rect(avatar_box_x, avatar_box_y, 20, 20).attr({\n stroke: this.colors[commit.space],\n \"stroke-width\": 2\n });\n r.image(commit.author.icon, avatar_box_x, avatar_box_y, 20, 20);\n return r.text(this.offsetX + this.unitSpace * this.mspace + 35, y, commit.message.split(\"\\n\")[0]).attr({\n \"text-anchor\": \"start\",\n font: \"14px Monaco, monospace\"\n });\n };\n\n BranchGraph.prototype.drawLines = function(x, y, commit) {\n var arrow, color, i, j, len, offset, parent, parentCommit, parentX1, parentX2, parentY, r, ref, results, route;\n r = this.r;\n ref = commit.parents;\n results = [];\n for (i = j = 0, len = ref.length; j < len; i = (j += 1)) {\n parent = ref[i];\n parentCommit = this.preparedCommits[parent[0]];\n parentY = this.offsetY + this.unitTime * parentCommit.time;\n parentX1 = this.offsetX + this.unitSpace * (this.mspace - parentCommit.space);\n parentX2 = this.offsetX + this.unitSpace * (this.mspace - parent[1]);\n // Set line color\n if (parentCommit.space <= commit.space) {\n color = this.colors[commit.space];\n } else {\n color = this.colors[parentCommit.space];\n }\n // Build line shape\n if (parent[1] === commit.space) {\n offset = [0, 5];\n arrow = \"l-2,5,4,0,-2,-5,0,5\";\n } else if (parent[1] < commit.space) {\n offset = [3, 3];\n arrow = \"l5,0,-2,4,-3,-4,4,2\";\n } else {\n offset = [-3, 3];\n arrow = \"l-5,0,2,4,3,-4,-4,2\";\n }\n // Start point\n route = [\"M\", x + offset[0], y + offset[1]];\n // Add arrow if not first parent\n if (i > 0) {\n route.push(arrow);\n }\n // Circumvent if overlap\n if (commit.space !== parentCommit.space || commit.space !== parent[1]) {\n route.push(\"L\", parentX2, y + 10, \"L\", parentX2, parentY - 5);\n }\n // End point\n route.push(\"L\", parentX1, parentY);\n results.push(r.path(route).attr({\n stroke: color,\n \"stroke-width\": 2\n }));\n }\n return results;\n };\n\n BranchGraph.prototype.markCommit = function(commit) {\n var r, x, y;\n if (commit.id === this.options.commit_id) {\n r = this.r;\n x = this.offsetX + this.unitSpace * (this.mspace - commit.space);\n y = this.offsetY + this.unitTime * commit.time;\n r.path([\"M\", x + 5, y, \"L\", x + 15, y + 4, \"L\", x + 15, y - 4, \"Z\"]).attr({\n fill: \"#000\",\n \"fill-opacity\": .5,\n stroke: \"none\"\n });\n // Displayed in the center\n return this.element.scrollTop(y - this.graphHeight / 2);\n }\n };\n\n return BranchGraph;\n})();\n","/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, quotes, quote-props, prefer-template, comma-dangle, max-len */\n\nimport $ from 'jquery';\nimport BranchGraph from '../../../network/branch_graph';\n\nexport default (function() {\n function Network(opts) {\n var vph;\n $(\"#filter_ref\").click(function() {\n return $(this).closest('form').submit();\n });\n this.branch_graph = new BranchGraph($(\".network-graph\"), opts);\n vph = $(window).height() - 250;\n $('.network-graph').css({\n 'height': vph + 'px'\n });\n }\n\n return Network;\n})();\n","import $ from 'jquery';\nimport ShortcutsNetwork from '../../../../shortcuts_network';\nimport Network from '../network';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (!$('.network-graph').length) return;\n\n const networkGraph = new Network({\n url: $('.network-graph').attr('data-url'),\n commit_url: $('.network-graph').attr('data-commit-url'),\n ref: $('.network-graph').attr('data-ref'),\n commit_id: $('.network-graph').attr('data-commit-id'),\n });\n\n // eslint-disable-next-line no-new\n new ShortcutsNetwork(networkGraph.branch_graph);\n});\n"],"sourceRoot":""}