{"version":3,"sources":["webpack:////home/ubuntu/node_modules/datamaps/dist/datamaps.all.js","webpack:////home/ubuntu/node_modules/datamaps/node_modules/topojson/build/topojson.js","webpack:///./src/components/Dashboard/Views/Maps/VectorMaps.vue?f3b4","webpack:///./src/components/Dashboard/Views/Maps/VectorMaps.vue?ccdf","webpack:///./src/components/Dashboard/Views/Maps/WorldMap.vue?7195","webpack:////home/ubuntu/node_modules/d3-dispatch/src/dispatch.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selector.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/select.js","webpack:////home/ubuntu/node_modules/d3-selection/src/array.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selectorAll.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/selectAll.js","webpack:////home/ubuntu/node_modules/d3-selection/src/matcher.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/selectChild.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/selectChildren.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/filter.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/sparse.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/enter.js","webpack:////home/ubuntu/node_modules/d3-selection/src/constant.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/data.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/exit.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/join.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/merge.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/order.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/sort.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/call.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/nodes.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/node.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/size.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/empty.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/each.js","webpack:////home/ubuntu/node_modules/d3-selection/src/namespaces.js","webpack:////home/ubuntu/node_modules/d3-selection/src/namespace.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/attr.js","webpack:////home/ubuntu/node_modules/d3-selection/src/window.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/style.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/property.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/classed.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/text.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/html.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/raise.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/lower.js","webpack:////home/ubuntu/node_modules/d3-selection/src/creator.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/append.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/insert.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/remove.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/clone.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/datum.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/on.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/dispatch.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/iterator.js","webpack:////home/ubuntu/node_modules/d3-selection/src/selection/index.js","webpack:////home/ubuntu/node_modules/d3-color/src/define.js","webpack:////home/ubuntu/node_modules/d3-color/src/color.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/basis.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/basisClosed.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/constant.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/color.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/rgb.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/numberArray.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/array.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/date.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/number.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/object.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/string.js","webpack:////home/ubuntu/node_modules/d3-timer/src/timer.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/value.js","webpack:////home/ubuntu/node_modules/d3-timer/src/timeout.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/schedule.js","webpack:////home/ubuntu/node_modules/d3-transition/src/interrupt.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/transform/parse.js","webpack:////home/ubuntu/node_modules/d3-transition/src/selection/interrupt.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/transform/decompose.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/transform/index.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/tween.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/interpolate.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/attr.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/attrTween.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/delay.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/duration.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/ease.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/easeVarying.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/filter.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/merge.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/on.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/remove.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/select.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/selectAll.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/selection.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/style.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/styleTween.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/text.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/textTween.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/transition.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/end.js","webpack:////home/ubuntu/node_modules/d3-transition/src/transition/index.js","webpack:////home/ubuntu/node_modules/d3-ease/src/cubic.js","webpack:////home/ubuntu/node_modules/d3-transition/src/selection/transition.js","webpack:////home/ubuntu/node_modules/d3-transition/src/selection/index.js","webpack:////home/ubuntu/node_modules/d3-brush/src/brush.js","webpack:////home/ubuntu/node_modules/d3-array/src/ticks.js","webpack:////home/ubuntu/node_modules/d3-array/src/ascending.js","webpack:////home/ubuntu/node_modules/d3-array/src/descending.js","webpack:////home/ubuntu/node_modules/d3-array/src/bisector.js","webpack:////home/ubuntu/node_modules/d3-array/src/number.js","webpack:////home/ubuntu/node_modules/d3-array/src/bisect.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/round.js","webpack:////home/ubuntu/node_modules/d3-scale/src/constant.js","webpack:////home/ubuntu/node_modules/d3-scale/src/number.js","webpack:////home/ubuntu/node_modules/d3-scale/src/continuous.js","webpack:////home/ubuntu/node_modules/d3-scale/src/init.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatSpecifier.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatDecimal.js","webpack:////home/ubuntu/node_modules/d3-format/src/exponent.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatPrefixAuto.js","webpack:////home/ubuntu/node_modules/d3-format/src/defaultLocale.js","webpack:////home/ubuntu/node_modules/d3-format/src/precisionPrefix.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatGroup.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatNumerals.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatTrim.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatRounded.js","webpack:////home/ubuntu/node_modules/d3-format/src/formatTypes.js","webpack:////home/ubuntu/node_modules/d3-format/src/identity.js","webpack:////home/ubuntu/node_modules/d3-format/src/locale.js","webpack:////home/ubuntu/node_modules/d3-format/src/precisionRound.js","webpack:////home/ubuntu/node_modules/d3-format/src/precisionFixed.js","webpack:////home/ubuntu/node_modules/d3-scale/src/tickFormat.js","webpack:////home/ubuntu/node_modules/d3-scale/src/linear.js","webpack:////home/ubuntu/node_modules/d3-interpolate/src/zoom.js","webpack:////home/ubuntu/node_modules/d3-zoom/src/transform.js","webpack:////home/ubuntu/node_modules/topojson-client/src/bisect.js","webpack:////home/ubuntu/node_modules/topojson-server/src/hash/point-hash.js","webpack:////home/ubuntu/node_modules/topojson-simplify/src/spherical.js","webpack:///src/components/Dashboard/Views/Maps/WorldMap.vue","webpack:///./src/components/Dashboard/Views/Maps/WorldMap.vue?04f6","webpack:///./src/components/Dashboard/Views/Maps/WorldMap.vue","webpack:///src/components/Dashboard/Views/Maps/VectorMaps.vue","webpack:///./src/components/Dashboard/Views/Maps/VectorMaps.vue?726b","webpack:///./src/components/Dashboard/Views/Maps/VectorMaps.vue","webpack:////home/ubuntu/node_modules/datamaps/node_modules/d3/d3.js"],"names":["d3","window","topojson","defaultOptions","scope","responsive","aspectRatio","setProjection","projection","dataType","data","done","fills","defaultFill","filters","geographyConfig","dataUrl","hideAntarctica","hideHawaiiAndAlaska","borderWidth","borderOpacity","borderColor","popupTemplate","geography","properties","name","popupOnHover","highlightOnHover","highlightFillColor","highlightBorderColor","highlightBorderWidth","highlightBorderOpacity","projectionConfig","rotation","bubblesConfig","radius","fillOpacity","animate","highlightFillOpacity","exitDelay","key","JSON","stringify","arcConfig","strokeColor","strokeWidth","arcSharpness","animationSpeed","origin","destination","latitude","longitude","val","datumValue","optionsValue","context","optionsValues","undefined","value","fnContext","apply","addContainer","element","height","width","this","svg","select","append","attr","offsetWidth","offsetHeight","style","options","selectAll","path","geo","albersUsa","scale","translate","Math","PI","datum","type","clipAngle","rotate","addStyleBlock","empty","html","drawSubunits","fillData","colorCodeData","geoConfig","subunits","addLayer","geoData","feature","objects","features","filter","id","enter","d","fillColor","fillKey","handleGeographyConfig","self","moveToFront","parentNode","appendChild","on","$this","previousAttributes","test","navigator","userAgent","call","updatePopup","parse","addLegend","layer","label","legendTitle","defaultFillName","labels","addGraticule","graticule","insert","handleArcs","slice","i","length","defaults","arcs","originXY","destXY","latLngToXY","centroid","midXY","greatArc","source","target","sharpness","transition","delay","getTotalLength","WebkitTransition","strokeDasharray","strokeDashoffset","getBoundingClientRect","exit","remove","handleLabels","labelStartCoodinates","x","y","center","xOffset","yOffset","indexOf","smallStateIndex","yStart","fontSize","labelColor","lineWidth","fontFamily","text","customLabelText","handleBubbles","filterData","bubbles","datumHasCoords","latLng","centered","filterKey","duration","obj","Array","prototype","arguments","forEach","prop","Datamap","Error","addPlugin","disableDefaultStyles","draw","resize","newsize","clientWidth","oldsize","pathAndProjection","json","error","results","customTopo","dataJson","tmpData","Datamaps","updateChoropleth","hoverover","worldTopo","abwTopo","afgTopo","agoTopo","aiaTopo","albTopo","aldTopo","andTopo","areTopo","argTopo","armTopo","asmTopo","ataTopo","atcTopo","atfTopo","atgTopo","ausTopo","autTopo","azeTopo","bdiTopo","belTopo","benTopo","bfaTopo","bgdTopo","bgrTopo","bhrTopo","bhsTopo","bihTopo","bjnTopo","blmTopo","blrTopo","blzTopo","bmuTopo","bolTopo","braTopo","brbTopo","brnTopo","btnTopo","norTopo","bwaTopo","cafTopo","canTopo","cheTopo","chlTopo","chnTopo","civTopo","clpTopo","cmrTopo","codTopo","cogTopo","cokTopo","colTopo","comTopo","cpvTopo","criTopo","csiTopo","cubTopo","cuwTopo","cymTopo","cynTopo","cypTopo","czeTopo","deuTopo","djiTopo","dmaTopo","dnkTopo","domTopo","dzaTopo","ecuTopo","egyTopo","eriTopo","esbTopo","espTopo","estTopo","ethTopo","finTopo","fjiTopo","flkTopo","fraTopo","froTopo","fsmTopo","gabTopo","psxTopo","gbrTopo","geoTopo","ggyTopo","ghaTopo","gibTopo","ginTopo","gmbTopo","gnbTopo","gnqTopo","grcTopo","grdTopo","grlTopo","gtmTopo","gumTopo","guyTopo","hkgTopo","hmdTopo","hndTopo","hrvTopo","htiTopo","hunTopo","idnTopo","imnTopo","indTopo","ioaTopo","iotTopo","irlTopo","irnTopo","irqTopo","islTopo","isrTopo","itaTopo","jamTopo","jeyTopo","jorTopo","jpnTopo","kabTopo","kasTopo","kazTopo","kenTopo","kgzTopo","khmTopo","kirTopo","knaTopo","korTopo","kosTopo","kwtTopo","laoTopo","lbnTopo","lbrTopo","lbyTopo","lcaTopo","lieTopo","lkaTopo","lsoTopo","ltuTopo","luxTopo","lvaTopo","macTopo","mafTopo","marTopo","mcoTopo","mdaTopo","mdgTopo","mdvTopo","mexTopo","mhlTopo","mkdTopo","mliTopo","mltTopo","mmrTopo","mneTopo","mngTopo","mnpTopo","mozTopo","mrtTopo","msrTopo","musTopo","mwiTopo","mysTopo","namTopo","nclTopo","nerTopo","nfkTopo","ngaTopo","nicTopo","niuTopo","nldTopo","nplTopo","nruTopo","nulTopo","nzlTopo","omnTopo","pakTopo","panTopo","pcnTopo","perTopo","pgaTopo","phlTopo","plwTopo","pngTopo","polTopo","priTopo","prkTopo","prtTopo","pryTopo","pyfTopo","qatTopo","rouTopo","rusTopo","rwaTopo","sahTopo","sauTopo","scrTopo","sdnTopo","sdsTopo","senTopo","serTopo","sgpTopo","sgsTopo","shnTopo","slbTopo","sleTopo","slvTopo","smrTopo","solTopo","somTopo","spmTopo","srbTopo","stpTopo","surTopo","svkTopo","svnTopo","sweTopo","swzTopo","sxmTopo","sycTopo","syrTopo","tcaTopo","tcdTopo","tgoTopo","thaTopo","tjkTopo","tkmTopo","tlsTopo","tonTopo","ttoTopo","tunTopo","turTopo","tuvTopo","twnTopo","tzaTopo","ugaTopo","ukrTopo","umiTopo","uryTopo","usaTopo","usgTopo","uzbTopo","vatTopo","vctTopo","venTopo","vgbTopo","virTopo","vnmTopo","vutTopo","wlfTopo","wsbTopo","wsmTopo","yemTopo","zafTopo","zmbTopo","zweTopo","lat","lng","className","first","subunit","reset","hasOwnProperty","color","subunitData","Object","position","mouse","e","pluginFn","callback","createNewLayer","module","exports","jQuery","fn","datamaps","datamap","global","factory","noop","transformAbsolute","transform","x0","y0","kx","ky","dx","dy","point","transformRelative","x1","round","y1","reverse","array","n","t","j","bisect","a","lo","hi","mid","topology","o","geometries","map","feature$1","f","geometry","object","absolute","arc","points","pop","p","k","push","line","ring","polygon","geometryType","coordinates","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","stitchArcs","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","ends","p1","p0","dp","flush","start","end","g","fg","concat","unshift","gf","mesh","meshArcs","geomsByArc","geom","geoms","cartesianTriangleArea","triangle","b","c","abs","area","merge","mergeArcs","polygonsByArc","polygons","components","register","ring$$","_","component","neighbors","ki","indexesByArc","indexes","m","ij","ik","splice","compareArea","minAreaHeap","heap","size","up","parent","down","r","l","child","removed","presimplify","triangleArea","relative","update","triangles","maxArea","Infinity","previous","next","version","defineProperty","render","_vm","_h","$createElement","_c","_self","staticClass","_m","staticRenderFns","_v","attrs","staticStyle","dispatch","Dispatch","parseTypenames","typenames","types","trim","split","get","set","constructor","typename","T","copy","that","args","none","selector","querySelector","groups","_groups","subgroups","node","subnode","group","subgroup","__data__","Selection","_parents","isArray","from","querySelectorAll","arrayAll","selectorAll","parents","matches","childMatcher","find","childFind","match","children","childFirst","firstElementChild","childrenFilter","matcher","_enter","sparse","EnterNode","ownerDocument","namespaceURI","_next","_parent","insertBefore","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","Map","keyValues","has","delete","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","_exit","onenter","selection","onupdate","onexit","order","groups0","groups1","m0","m1","min","merges","group0","group1","compareDocumentPosition","compareNode","compare","ascending","sortgroups","sortgroup","sort","NaN","xhtml","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","namespace","getAttributeNS","getAttribute","each","defaultView","document","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","join","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","contextListener","listener","event","onRemove","__on","removeEventListener","onAdd","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectChild","selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","nodes","selection_node","selection_size","selection_empty","classed","selection_text","selection_raise","selection_lower","selection_remove","selection_datum","selection_on","selection_dispatch","Symbol","iterator","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatHex8","formatHex8","color_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","format","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatHex8","isNaN","rgb_formatRgb","clampa","clampi","max","toString","h","s","Hsl","hsl","clamph","clampt","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","pow","values","floor","linear","exponential","gamma","nogamma","rgbGamma","rgbSpline","spline","colors","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","Date","setTime","reA","reB","one","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","index","number","date","numberArray","valueOf","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","time","restart","timerFlush","wake","nap","poke","t0","sleep","clearTimeout","clearInterval","setInterval","TypeError","stop","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","tween","timing","ease","state","init","schedule","tick","svgNode","active","interrupt","degrees","identity","translateX","translateY","skewX","scaleX","scaleY","sqrt","atan2","atan","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_easeVarying","transition_end","defaultTiming","selection_interrupt","selection_transition","number1","number2","e10","e5","e2","ticks","count","step","tickIncrement","isFinite","r0","r1","power","log","LN10","tickStep","step0","step1","descending","bisector","compare1","compare2","delta","left","right","ascendingBisect","bisectRight","constants","unit","normalize","clamper","bimap","domain","range","d0","d1","polymap","clamp","unknown","transformer","untransform","piecewise","output","input","rescale","invert","rangeRound","u","continuous","initRange","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","comma","precision","toLocaleString","replace","formatDecimalParts","toExponential","coefficient","prefixExponent","grouping","substring","thousands","numerals","out","exponent","toFixed","formatDecimal","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","Number","currencyPrefix","currency","currencySuffix","decimal","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","charCodeAt","padding","formatPrefix","defaultLocale","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","ceil","epsilon2","cosh","exp","sinh","tanh","zoom","S","ux0","uy0","w0","ux1","uy1","w1","d2","rho","b0","rho4","rho2","b1","coshr0","SQRT2","_1","_2","_4","zoomRho","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","buffer","Float64Array","Uint32Array","cos","sin","color1","color2","mapData","methods","generateColors","generateMapColors","initVectorMap","throttle","mounted","WorldMap","Card","d3_arraySlice","d3_array","d3_document","d3_documentElement","d3_window","childNodes","nodeType","d3_element_prototype","Element","d3_element_setAttribute","d3_element_setAttributeNS","d3_style_prototype","CSSStyleDeclaration","d3_style_setProperty","d3_ascending","d3_number","d3_numeric","d3_bisector","extent","sum","mean","quantile","H","median","numbers","variance","deviation","d3_bisect","d3_transposeLength","bisectLeft","shuffle","random","permute","permutes","pairs","transpose","row","zip","keys","entries","arrays","merged","d3_range_integerScale","d3_class","ctor","enumerable","d3_Map","d3_map_proto","d3_map_zero","d3_map_escape","d3_map_unescape","d3_map_has","d3_map_remove","d3_map_keys","d3_map_size","d3_map_empty","d3_Set","d3_identity","d3_rebind","method","d3_vendorSymbol","charAt","d3_vendorPrefixes","prefixName","nest","sortValues","rollup","sortKeys","mapType","depth","setter","valuesByKey","sortKey","keyMap","behavior","rebind","d3_noop","d3_dispatch","d3_dispatch_event","listeners","listenerByName","z","d3_eventPreventDefault","preventDefault","d3_eventSource","sourceEvent","d3_eventDispatch","of","thiz","argumentz","e1","e0","requote","d3_requote_re","d3_subclass","__proto__","d3_selection","d3_selectionPrototype","d3_select","d3_selectAll","d3_selectMatches","d3_selectMatcher","Sizzle","matchesSelector","d3_selection_selector","d3_selection_selectorAll","d3_nsXhtml","d3_nsPrefix","d3_selection_attr","attrNull","attrNullNS","ns","qualify","d3_collapse","d3_selection_classedRe","d3_selection_classes","d3_selection_classed","d3_selection_classedName","classedConstant","d3_selection_style","d3_selection_property","propertyNull","d3_selection_creator","createNS","d3_selectionRemove","d3_selection_dataNode","d3_selection_filter","d3_selection_sortComparator","comparator","d3_selection_each","d3_selection_enter","d3_selection_enterPrototype","groupData","nodeData","n0","updateNodes","enterNodes","exitNodes","d3_selection_enterInsertBefore","j0","d3_selection_on","capture","wrap","d3_selection_onListener","d3_selection_onFilters","$","removeAll","d3_selection_onFilter","upgroup","mouseenter","mouseleave","related","relatedTarget","d3_event_dragSelect","d3_event_dragId","d3_event_dragSuppress","click","w","suppressClick","off","container","d3_mousePoint","d3_mouse_bug44083","changedTouches","ownerSVGElement","createSVGPoint","scrollX","scrollY","top","margin","border","ctm","getScreenCTM","pageX","pageY","clientX","clientY","matrixTransform","inverse","rect","clientLeft","clientTop","d3_behavior_dragTouchId","identifier","touch","touches","drag","mousedown","dragstart","touchstart","subject","move","dragOffset","correspondingElement","dragged","dragId","dragName","dragSubject","moved","ended","dragRestore","position0","position1","ε","ε2","π","τ","τε","halfπ","d3_radians","d3_degrees","d3_sgn","d3_cross2d","d3_acos","acos","d3_asin","asin","d3_sinh","d3_cosh","d3_tanh","d3_haversin","ρ","ρ2","ρ4","interpolateZoom","translate0","center0","mousewheelTimer","touchtime","view","scaleExtent","d3_behavior_zoomInfinity","zooming","mousemove","mouseup","mousedowned","d3_behavior_zoomWheel","mousewheeled","dblclicked","touchstarted","scaleTo","translateTo","zoomTo","__chart__","zoomstarted","zoomed","zoomended","location0","d3_selection_interrupt","scale0","locations0","distance0","zoomName","touchmove","touchend","targets","relocate","started","changed","LN2","l0","l1","distance1","scale1","d3_behavior_zoomDelta","shiftKey","deltaY","deltaMode","wheelDelta","view1","d3_transitionInheritId","cx","cy","d3_color","d3_hsl","d3_rgb_parse","d3_rgb_hsl","d3_hslPrototype","d3_hsl_rgb","vv","d3_rgb","d3_hcl","d3_lab_hcl","d3_lab","d3_rgb_lab","hcl","d3_hclPrototype","d3_hcl_lab","d3_lab_K","lab","d3_lab_X","d3_lab_Y","d3_lab_Z","d3_labPrototype","d3_lab_rgb","d3_lab_xyz","d3_xyz_rgb","d3_xyz_lab","d3_rgbNumber","d3_rgbString","d3_rgbPrototype","d3_rgb_hex","parseFloat","d3_rgb_parseNumber","d3_rgb_names","d3_rgb_xyz","d3_functor","d3_xhrType","response","url","mimeType","d3_xhr","xhr","headers","request","XMLHttpRequest","responseType","respond","result","status","d3_xhrHasResponse","load","XDomainRequest","onload","onerror","onreadystatechange","readyState","onprogress","progress","header","send","open","setRequestHeader","overrideMimeType","beforesend","abort","d3_xhr_fixCallback","responseText","functor","dsv","delimiter","reFormat","delimiterCode","typedResponse","formatRow","formatValue","parseRows","Function","eol","EOL","EOF","rows","N","I","token","formatRows","fieldSet","fields","field","csv","tsv","d3_timer_queueHead","d3_timer_queueTail","d3_timer_interval","d3_timer_timeout","d3_timer_frame","d3_timer","then","d3_timer_step","d3_timer_mark","d3_timer_sweep","d3_format_precision","d3_formatPrefixes","d3_formatPrefix","d3_locale_numberFormat","locale_decimal","locale_thousands","locale_grouping","locale_currency","d3_format_re","zfill","integer","d3_format_types","d3_format_typeDefault","zcomma","fullSuffix","negative","after","lastIndexOf","fromCharCode","X","d3_time","d3_date","d3_date_utc","UTC","getDate","getUTCDate","getDay","getUTCDay","getFullYear","getUTCFullYear","getHours","getUTCHours","getMilliseconds","getUTCMilliseconds","getMinutes","getUTCMinutes","getMonth","getUTCMonth","getSeconds","getUTCSeconds","getTime","getTimezoneOffset","setDate","d3_time_prototype","setUTCDate","setDay","setUTCDay","setFullYear","setUTCFullYear","setHours","setUTCHours","setMilliseconds","setUTCMilliseconds","setMinutes","setUTCMinutes","setMonth","setUTCMonth","setSeconds","setUTCSeconds","d3_time_interval","offset","dt","times","range_utc","utc","d3_time_interval_utc","d3_locale_timeFormat","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_days","days","locale_shortDays","shortDays","locale_months","months","locale_shortMonths","shortMonths","d3_time_format","template","d3_time_formatPads","d3_time_formats","M","L","Z","d3_time_parse","localZ","W","U","d3_time_parsers","multi","d3_time_formatMulti","d3_time_periodLookup","d3_time_dayRe","d3_time_formatRe","d3_time_dayLookup","d3_time_formatLookup","d3_time_dayAbbrevRe","d3_time_dayAbbrevLookup","d3_time_monthRe","d3_time_monthLookup","d3_time_monthAbbrevRe","d3_time_monthAbbrevLookup","A","B","d3_time_formatPad","dayOfYear","sundayOfYear","mondayOfYear","Y","d3_time_zone","d3_time_parseWeekdayAbbrev","d3_time_parseWeekday","d3_time_parseMonthAbbrev","d3_time_parseMonth","d3_time_parseLocaleFull","d3_time_parseDay","d3_time_parseHour24","d3_time_parseDayOfYear","d3_time_parseMilliseconds","d3_time_parseMonthNumber","d3_time_parseMinutes","d3_time_parseAmPm","d3_time_parseSeconds","d3_time_parseWeekNumberSunday","d3_time_parseWeekdayNumber","d3_time_parseWeekNumberMonday","d3_time_parseLocaleDate","d3_time_parseLocaleTime","d3_time_parseYear","d3_time_parseFullYear","d3_time_parseZone","d3_time_parseLiteralPercent","year","day","years","week","sunday","weeks","weekOfYear","d3_time_numberRe","d3_time_percentRe","d3_time_expandYear","zs","zh","zm","formats","numberFormat","timeFormat","d3_locale_enUS","d3_adder","d3_adderSum","d3_adderTemp","bv","av","d3_geo_streamGeometry","d3_geo_streamGeometryType","stream","d3_geo_streamObjectType","Feature","FeatureCollection","Sphere","sphere","d3_geo_streamLine","d3_geo_streamPolygon","GeometryCollection","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","d3_geo_areaSum","d3_geo_area","d3_geo_centroidW0","d3_geo_centroidW1","d3_geo_centroidX0","d3_geo_centroidY0","d3_geo_centroidZ0","d3_geo_centroidX1","d3_geo_centroidY1","d3_geo_centroidZ1","d3_geo_centroidX2","d3_geo_centroidY2","d3_geo_centroidZ2","d3_geo_areaRingSum","d3_geo_areaRingStart","λ00","φ00","λ0","cosφ0","sinφ0","nextPoint","λ","φ","dλ","sdλ","adλ","cosφ","sinφ","d3_geo_cartesian","spherical","d3_geo_cartesianDot","d3_geo_cartesianCross","d3_geo_cartesianAdd","d3_geo_cartesianScale","vector","d3_geo_cartesianNormalize","d3_geo_spherical","cartesian","d3_geo_sphericalEqual","bounds","φ0","λ1","φ1","λ_","λ__","φ__","dλSum","ranges","bound","ringPoint","ringStart","ringEnd","linePoint","normal","equatorial","inflection","λi","antimeridian","φi","angle","compareRanges","withinRange","best","d3_geo_centroid","d3_geo_centroidPoint","d3_geo_centroidLineStart","d3_geo_centroidLineEnd","d3_geo_centroidRingStart","d3_geo_centroidPointXYZ","z0","cz","d3_geo_compose","compose","d3_true","d3_geo_clipPolygon","segments","clipStartInside","clip","segment","d3_geo_clipPolygonIntersection","d3_geo_clipPolygonLinkCircular","entry","current","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","rotatedClipStart","pointRing","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","d3_geo_clipBufferListener","ringListener","clean","ringSegments","shift","d3_geo_clipSegmentLength1","lines","rejoin","d3_geo_clipAntimeridian","d3_geo_clipAntimeridianLine","d3_geo_clipAntimeridianInterpolate","sλ0","sλ1","d3_geo_clipAntimeridianIntersect","cosφ1","sinλ0_λ1","to","direction","meridian","parallel","meridianNormal","polarAngle","winding","point0","intersection","φarc","d3_geo_clipCircle","cr","smallRadius","notHemisphere","d3_geo_circleInterpolate","visible","c0","v00","point2","point1","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","δλ","polar","q1","d3_geom_clipLine","ax","ay","bx","by","d3_geo_clipExtentMAX","d3_geo_clipExtent","x__","y__","v__","x_","y_","v_","listener_","bufferListener","insidePolygon","inside","wn","a1","corner","comparePoints","ca","cb","d3_geo_conic","projectAt","d3_geo_projectionMutator","parallels","d3_geo_conicEqualArea","C","ρ0","forward","ρ0_y","clipExtent","valid","conicEqualArea","raw","albers","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","lower48Stream","alaskaStream","hawaiiStream","d3_geo_pathAreaSum","d3_geo_pathAreaPolygon","d3_geo_pathBoundsX0","d3_geo_pathBoundsY0","d3_geo_pathBoundsX1","d3_geo_pathBoundsY1","d3_geo_pathArea","d3_geo_pathAreaRingStart","x00","y00","d3_geo_pathBounds","d3_geo_pathBoundsPoint","d3_geo_pathBuffer","pointCircle","d3_geo_pathBufferCircle","pointLineStart","lineEndPolygon","pointRadius","d3_geo_lengthSum","d3_geo_pathCentroid","d3_geo_pathCentroidPoint","d3_geo_pathCentroidLineStart","d3_geo_pathCentroidLineEnd","d3_geo_pathCentroidRingStart","d3_geo_pathContext","moveTo","lineTo","closePath","d3_geo_resample","project","δ2","cosMinDistance","maxDepth","resample","resampleRecursive","resampleNone","d3_geo_transformPoint","a00","b00","c00","a0","resampleLineTo","φ2","λ2","x2","y2","dx2","dy2","dz","d3_geo_pathProjectStream","d3_geo_projectionRadians","d3_geo_transform","d3_geo_projection","projectRotate","δx","δy","projectResample","δφ","δγ","preclip","postclip","d3_geo_rotation","invalidate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","cosδφ","sinδφ","cosδγ","sinδγ","sr","d3_geo_circleAngle","d3_geo_graticuleX","d3_geo_graticuleY","d3_source","d3_target","d3_geo_interpolate","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","distance","projectStream","contextStream","cacheStream","projectionMutator","equirectangular","circle","Δλ","sinΔλ","cosΔλ","sinφ1","X1","X0","Y1","Y0","DX","DY","outline","majorExtent","minorExtent","majorStep","minorStep","source_","target_","d3_geo_length","d3_geo_lengthLineStart","d3_geo_azimuthal","azimuthal","cosλ","sinc","cosc","d3_geo_azimuthalEqualArea","cosλcosφ","azimuthalEqualArea","d3_geo_azimuthalEquidistant","d3_geo_conicConformal","F","d3_geo_mercator","d3_geo_conicEquidistant","G","azimuthalEquidistant","conicConformal","conicEquidistant","d3_geo_gnomonic","d3_geo_mercatorProjection","clipAuto","gnomonic","mercator","d3_geo_orthographic","orthographic","d3_geo_stereographic","d3_geo_transverseMercator","d3_geom_pointX","d3_geom_pointY","d3_geom_hullUpper","hull","hs","d3_geom_hullOrder","stereographic","transverseMercator","vertices","fx","fy","flippedPoints","upper","skipLeft","skipRight","d3_geom_polygonPrototype","d3_geom_polygonInside","d3_geom_polygonIntersect","x3","x21","x43","y3","y21","y43","ua","d3_geom_polygonClosed","d3_geom_voronoiEdges","d3_geom_voronoiCells","d3_geom_voronoiBeaches","d3_geom_voronoiFirstCircle","d3_geom_voronoiCircles","d3_geom_voronoiBeachPool","d3_geom_voronoiCirclePool","d3_geom_voronoiBeach","d3_geom_voronoiRedBlackNode","edge","site","d3_geom_voronoiCreateBeach","beach","d3_geom_voronoiDetachBeach","d3_geom_voronoiDetachCircle","d3_geom_voronoiRemoveBeach","vertex","P","disappearing","lArc","rArc","iArc","nArcs","d3_geom_voronoiSetEdgeEnd","d3_geom_voronoiCreateEdge","d3_geom_voronoiAttachCircle","d3_geom_voronoiAddBeach","dxl","dxr","directrix","d3_geom_voronoiLeftBreakPoint","d3_geom_voronoiRightBreakPoint","R","newArc","lSite","rSite","hb","hc","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","d3_geom_voronoiCell","edges","d3_geom_voronoiCloseCells","cell","iHalfEdge","halfEdges","nHalfEdges","cells","iCell","prepare","d3_geom_voronoiHalfEdge","d3_geom_voronoiCreateBorderEdge","d3_geom_voronoiHalfEdgeOrder","d3_geom_voronoiCircle","cSite","ha","d3_geom_voronoiClipEdges","d3_geom_voronoiConnectEdge","vb","fm","fb","va","lx","ly","rx","ry","d3_geom_voronoiEdge","d3_geom_voronoiRedBlackTree","d3_geom_voronoiRedBlackRotateLeft","tree","d3_geom_voronoiRedBlackRotateRight","d3_geom_voronoiRedBlackFirst","d3_geom_voronoi","sites","bbox","d3_geom_voronoiVertexOrder","diagram","grandpa","uncle","sibling","voronoi","d3_geom_voronoiClipExtent","links","s0","s1","d3_geom_voronoiTriangleArea","d3_geom_quadtreeCompatX","d3_geom_quadtreeCompatY","d3_geom_quadtreeNode","leaf","d3_geom_quadtreeVisit","sx","sy","d3_geom_quadtreeFind","root","closestPoint","minDistance2","distance2","xm","ym","below","d3_interpolateRgb","ar","ag","ab","br","bg","bb","d3_interpolateObject","d3_interpolate","d3_interpolateNumber","d3_interpolateString","d3_interpolate_numberA","d3_interpolate_numberB","delaunay","quadtree","compat","xs","ys","x1_","y1_","x2_","y2_","nx","ny","insertChild","nPoint","visit","interpolateRgb","interpolateObject","interpolateNumber","interpolateString","interpolators","d3_interpolateArray","interpolateArray","d3_ease_default","d3_ease","poly","d3_ease_poly","quad","d3_ease_quad","cubic","d3_ease_cubic","d3_ease_sin","d3_ease_exp","d3_ease_circle","elastic","d3_ease_elastic","back","d3_ease_back","bounce","d3_ease_bounce","d3_ease_mode","d3_ease_reverse","d3_ease_reflect","d3_ease_clamp","d3_ease_cubicInOut","d3_interpolateHcl","ah","ac","al","bh","bc","bl","d3_interpolateHsl","as","d3_interpolateLab","aa","ba","d3_interpolateRound","d3_transform","d3_transformNormalize","kz","d3_transformDot","d3_transformCombine","skew","interpolateHcl","interpolateHsl","interpolateLab","interpolateRound","d3_transformIdentity","d3_interpolateTransformPop","d3_interpolateTranslate","ta","tb","d3_interpolateRotate","ra","rb","d3_interpolateSkew","wa","wb","d3_interpolateScale","ka","kb","d3_interpolateTransform","d3_uninterpolateNumber","d3_uninterpolateClamp","d3_layout_bundlePath","link","lca","d3_layout_bundleLeastCommonAncestor","d3_layout_bundleAncestors","ancestors","aNodes","bNodes","aNode","bNode","sharedNode","d3_layout_forceDragstart","fixed","d3_layout_forceDragend","d3_layout_forceMouseover","px","py","d3_layout_forceMouseout","d3_layout_forceAccumulate","alpha","charges","charge","pointCharge","layout","bundle","paths","chord","chords","sortGroups","sortSubgroups","sortChords","relayout","groupSums","groupIndex","subgroupIndex","di","dj","subindex","startAngle","endAngle","resort","force","distances","strengths","friction","linkDistance","d3_layout_forceLinkDistance","linkStrength","d3_layout_forceLinkStrength","chargeDistance2","d3_layout_forceChargeDistance2","gravity","theta2","repulse","dw","dn","dragmove","resume","weight","chargeDistance","theta","dimension","candidates","d3_layout_hierarchyRebind","hierarchy","d3_layout_hierarchyLinks","d3_layout_hierarchyVisitBefore","d3_layout_hierarchyVisitAfter","nodes2","d3_layout_hierarchyChildren","d3_layout_hierarchyValue","d3_layout_hierarchySort","stack","childs","revalue","partition","pie","d3_layout_pieSortByValue","padAngle","da","d3_layout_stackX","d3_layout_stackY","d3_layout_stackOut","d3_layout_stackOrderDefault","d3_layout_stackOffsetZero","series","orders","offsets","d3_layout_stackOrders","d3_layout_stackOffsets","d3_layout_stackMaxIndex","sums","d3_layout_stackReduceSum","bottom","tops","bottoms","silhouette","wiggle","s2","s3","o0","expand","reduce","d3_layout_stackSum","d3_layout_histogramBinSturges","d3_layout_histogramBinFixed","d3_layout_histogramRange","d3_layout_packSort","d3_layout_packInsert","_pack_next","_pack_prev","d3_layout_packSplice","d3_layout_packIntersects","dr","d3_layout_packSiblings","xMin","xMax","yMin","yMax","d3_layout_packLink","d3_layout_packPlace","isect","d3_layout_packUnlink","d3_layout_packTransform","db","dc","d3_layout_treeSeparation","d3_layout_treeLeft","d3_layout_treeRight","d3_layout_treeMove","wm","wp","change","d3_layout_treeShift","d3_layout_treeAncestor","vim","ancestor","d3_layout_clusterY","d3_layout_clusterX","d3_layout_clusterLeft","d3_layout_clusterRight","d3_layout_treemapPadNull","d3_layout_treemapPad","d3_scaleExtent","d3_scaleRange","rangeExtent","d3_scale_bilinear","uninterpolate","d3_scale_nice","d3_scale_niceStep","d3_scale_niceIdentity","histogram","frequency","valuer","ranger","binner","bin","bins","thresholds","pack","separation","nodeSize","root0","root1","wrapTree","firstWalk","secondWalk","sizeNode","tx","node1","queue","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","cluster","previousNode","treemap","stickies","pad","sticky","mode","ratio","squarify","score","remaining","worst","stickify","rmax","rmin","padFunction","padConstant","µ","σ","logNormal","bates","irwinHall","d3_scale_polylinear","d3_scale_linear","d3_scale_linearTicks","d3_scale_linearTickFormat","d3_scale_linearNice","d3_scale_linearRebind","d3_scale_linearTickRange","span","err","d3_scale_linearPrecision","d3_scale_linearFormatPrecision","d3_scale_linearFormatSignificant","d3_scale_log","base","positive","niced","d3_scale_logNiceNegative","d3_scale_logFormat","d3_scale_pow","powp","d3_scale_powPow","powb","d3_scale_ordinal","rangeBand","steps","xi","rangePoints","rangeRoundPoints","rangeBands","outerPadding","rangeRoundBands","ordinal","category10","d3_category10","category20","d3_category20","category20b","d3_category20b","category20c","d3_category20c","d3_scale_quantile","quantiles","invertExtent","d3_scale_quantize","d3_scale_threshold","d3_scale_identity","d3_zero","quantize","threshold","innerRadius","d3_svg_arcInnerRadius","outerRadius","d3_svg_arcOuterRadius","cornerRadius","padRadius","d3_svg_arcAuto","d3_svg_arcStartAngle","d3_svg_arcEndAngle","d3_svg_arcPadAngle","cw","rc","circleSegment","rp","ap","d3_svg_arcSweep","h1","h0","rc1","rc0","oc","kc","lc","t30","d3_svg_arcCornerTangents","t12","t03","t21","x01","y01","ox","oy","D","cx0","cx1","dx0","dy0","dx1","dy1","d3_svg_line","defined","d3_svg_lineLinear","interpolateKey","tension","d3_svg_lineInterpolators","d3_svg_lineLinearClosed","d3_svg_lineStep","d3_svg_lineStepBefore","d3_svg_lineStepAfter","d3_svg_lineBasis","d3_svg_lineBasisOpen","d3_svg_lineBasisClosed","d3_svg_lineBundle","cardinal","d3_svg_lineCardinal","d3_svg_lineCardinalOpen","d3_svg_lineCardinalClosed","monotone","d3_svg_lineMonotone","d3_svg_lineHermite","d3_svg_lineCardinalTangents","tangents","pi","lp","p2","d3_svg_lineDot4","d3_svg_lineBasisBezier3","d3_svg_lineBasisBezier","d3_svg_lineBasisBezier1","d3_svg_lineBasisBezier2","d3_svg_lineSlope","d3_svg_lineFiniteDifferences","d3_svg_lineMonotoneTangents","d3_svg_lineRadial","d3_svg_area","interpolateReverse","points0","points1","fx0","fy0","fx1","fy1","d3_svg_chordRadius","d3_svg_diagonalProjection","d3_svg_diagonalRadialProjection","d3_svg_symbolSize","d3_svg_symbolType","d3_svg_symbolCircle","radial","equals","curve","diagonal","p3","projection_","d3_svg_symbols","cross","diamond","d3_svg_symbolTan30","square","d3_svg_symbolSqrt3","symbolTypes","d3_transitionId","d3_transitionNamespace","d3_transitionInherit","d3_transitionNode","d3_transition","d3_selection_interruptNS","lock","activeId","d3_transitionPrototype","d3_transition_tween","d3_transition_text","tweens","cancelId","subnodes","nameNS","styleString","inheritId","axis","tickFormat_","orient","d3_svg_axisDefaultOrient","innerTickSize","outerTickSize","tickPadding","tickArguments_","tickValues","tickTransform","tickEnter","tickExit","tickUpdate","tickSpacing","pathUpdate","lineEnter","lineUpdate","textEnter","textUpdate","d3_svg_axisX","d3_svg_axisY","d3_svg_axisOrients","tickSize","tickSubdivide","brush","xExtentDomain","yExtentDomain","xExtent","yExtent","xClamp","yClamp","resizes","d3_svg_brushResizes","brushstart","background","d3_svg_brushCursor","gUpdate","backgroundUpdate","redrawX","redrawY","redraw","eventTarget","event_","resizing","resizingX","resizingY","dragging","keydown","keyup","brushmove","brushend","ex","ey","altKey","keyCode","move1","extent1","extent0","yi","clear","nw","ne","se","sw","d3_time_formatUtc","d3_time_formatIso","d3_time_formatIsoNative","toISOString","d3_time_scale","tickMethod","d3_time_scaleSteps","d3_time_scaleMilliseconds","d3_time_scaleDate","skip","skipped","iso","second","seconds","minute","minutes","hour","timezone","hours","month","d3_time_scaleLocalMethods","d3_time_scaleLocalFormat","d3_time_scaleUtcMethods","d3_time_scaleUtcFormat","d3_json","d3_html","createRange","selectNode","body","createContextualFragment","responseXML"],"mappings":"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AG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GA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","file":"js/chunk-3c35915e.72971c59.js","sourcesContent":["(function() {\n var svg;\n\n // Save off default references\n var d3 = window.d3, topojson = window.topojson;\n\n var defaultOptions = {\n scope: 'world',\n responsive: false,\n aspectRatio: 0.5625,\n setProjection: setProjection,\n projection: 'equirectangular',\n dataType: 'json',\n data: {},\n done: function() {},\n fills: {\n defaultFill: '#ABDDA4'\n },\n filters: {},\n geographyConfig: {\n dataUrl: null,\n hideAntarctica: true,\n hideHawaiiAndAlaska : false,\n borderWidth: 1,\n borderOpacity: 1,\n borderColor: '#FDFDFD',\n popupTemplate: function(geography, data) {\n return '
' + geography.properties.name + '
';\n },\n popupOnHover: true,\n highlightOnHover: true,\n highlightFillColor: '#FC8D59',\n highlightBorderColor: 'rgba(250, 15, 160, 0.2)',\n highlightBorderWidth: 2,\n highlightBorderOpacity: 1\n },\n projectionConfig: {\n rotation: [97, 0]\n },\n bubblesConfig: {\n borderWidth: 2,\n borderOpacity: 1,\n borderColor: '#FFFFFF',\n popupOnHover: true,\n radius: null,\n popupTemplate: function(geography, data) {\n return '
' + data.name + '
';\n },\n fillOpacity: 0.75,\n animate: true,\n highlightOnHover: true,\n highlightFillColor: '#FC8D59',\n highlightBorderColor: 'rgba(250, 15, 160, 0.2)',\n highlightBorderWidth: 2,\n highlightBorderOpacity: 1,\n highlightFillOpacity: 0.85,\n exitDelay: 100,\n key: JSON.stringify\n },\n arcConfig: {\n strokeColor: '#DD1C77',\n strokeWidth: 1,\n arcSharpness: 1,\n animationSpeed: 600,\n popupOnHover: false,\n popupTemplate: function(geography, data) {\n // Case with latitude and longitude\n if ( ( data.origin && data.destination ) && data.origin.latitude && data.origin.longitude && data.destination.latitude && data.destination.longitude ) {\n return '
Arc
Origin: ' + JSON.stringify(data.origin) + '
Destination: ' + JSON.stringify(data.destination) + '
';\n }\n // Case with only country name\n else if ( data.origin && data.destination ) {\n return '
Arc
' + data.origin + ' -> ' + data.destination + '
';\n }\n // Missing information\n else {\n return '';\n }\n }\n }\n };\n\n /*\n Getter for value. If not declared on datumValue, look up the chain into optionsValue\n */\n function val( datumValue, optionsValue, context ) {\n if ( typeof context === 'undefined' ) {\n context = optionsValue;\n optionsValues = undefined;\n }\n var value = typeof datumValue !== 'undefined' ? datumValue : optionsValue;\n\n if (typeof value === 'undefined') {\n return null;\n }\n\n if ( typeof value === 'function' ) {\n var fnContext = [context];\n if ( context.geography ) {\n fnContext = [context.geography, context.data];\n }\n return value.apply(null, fnContext);\n }\n else {\n return value;\n }\n }\n\n function addContainer( element, height, width ) {\n this.svg = d3.select( element ).append('svg')\n .attr('width', width || element.offsetWidth)\n .attr('data-width', width || element.offsetWidth)\n .attr('class', 'datamap')\n .attr('height', height || element.offsetHeight)\n .style('overflow', 'hidden'); // IE10+ doesn't respect height/width when map is zoomed in\n\n if (this.options.responsive) {\n d3.select(this.options.element).style({'position': 'relative', 'padding-bottom': (this.options.aspectRatio*100) + '%'});\n d3.select(this.options.element).select('svg').style({'position': 'absolute', 'width': '100%', 'height': '100%'});\n d3.select(this.options.element).select('svg').select('g').selectAll('path').style('vector-effect', 'non-scaling-stroke');\n\n }\n\n return this.svg;\n }\n\n // setProjection takes the svg element and options\n function setProjection( element, options ) {\n var width = options.width || element.offsetWidth;\n var height = options.height || element.offsetHeight;\n var projection, path;\n var svg = this.svg;\n\n if ( options && typeof options.scope === 'undefined') {\n options.scope = 'world';\n }\n\n if ( options.scope === 'usa' ) {\n projection = d3.geo.albersUsa()\n .scale(width)\n .translate([width / 2, height / 2]);\n }\n else if ( options.scope === 'world' ) {\n projection = d3.geo[options.projection]()\n .scale((width + 1) / 2 / Math.PI)\n .translate([width / 2, height / (options.projection === \"mercator\" ? 1.45 : 1.8)]);\n }\n\n if ( options.projection === 'orthographic' ) {\n\n svg.append(\"defs\").append(\"path\")\n .datum({type: \"Sphere\"})\n .attr(\"id\", \"sphere\")\n .attr(\"d\", path);\n\n svg.append(\"use\")\n .attr(\"class\", \"stroke\")\n .attr(\"xlink:href\", \"#sphere\");\n\n svg.append(\"use\")\n .attr(\"class\", \"fill\")\n .attr(\"xlink:href\", \"#sphere\");\n projection.scale(250).clipAngle(90).rotate(options.projectionConfig.rotation)\n }\n\n path = d3.geo.path()\n .projection( projection );\n\n return {path: path, projection: projection};\n }\n\n function addStyleBlock() {\n if ( d3.select('.datamaps-style-block').empty() ) {\n d3.select('head').append('style').attr('class', 'datamaps-style-block')\n .html('.datamap path.datamaps-graticule { fill: none; stroke: #777; stroke-width: 0.5px; stroke-opacity: .5; pointer-events: none; } .datamap .labels {pointer-events: none;} .datamap path:not(.datamaps-arc), .datamap circle, .datamap line {stroke: #FFFFFF; vector-effect: non-scaling-stroke; stroke-width: 1px;} .datamaps-legend dt, .datamaps-legend dd { float: left; margin: 0 3px 0 0;} .datamaps-legend dd {width: 20px; margin-right: 6px; border-radius: 3px;} .datamaps-legend {padding-bottom: 20px; z-index: 1001; position: absolute; left: 4px; font-size: 12px; font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;} .datamaps-hoverover {display: none; font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif; } .hoverinfo {padding: 4px; border-radius: 1px; background-color: #FFF; box-shadow: 1px 1px 5px #CCC; font-size: 12px; border: 1px solid #CCC; } .hoverinfo hr {border:1px dotted #CCC; }');\n }\n }\n\n function drawSubunits( data ) {\n var fillData = this.options.fills,\n colorCodeData = this.options.data || {},\n geoConfig = this.options.geographyConfig;\n\n var subunits = this.svg.select('g.datamaps-subunits');\n if ( subunits.empty() ) {\n subunits = this.addLayer('datamaps-subunits', null, true);\n }\n\n var geoData = topojson.feature( data, data.objects[ this.options.scope ] ).features;\n if ( geoConfig.hideAntarctica ) {\n geoData = geoData.filter(function(feature) {\n return feature.id !== \"ATA\";\n });\n }\n\n if ( geoConfig.hideHawaiiAndAlaska ) {\n geoData = geoData.filter(function(feature) {\n return feature.id !== \"HI\" && feature.id !== 'AK';\n });\n }\n\n var geo = subunits.selectAll('path.datamaps-subunit').data( geoData );\n\n geo.enter()\n .append('path')\n .attr('d', this.path)\n .attr('class', function(d) {\n return 'datamaps-subunit ' + d.id;\n })\n .attr('data-info', function(d) {\n return JSON.stringify( colorCodeData[d.id]);\n })\n .style('fill', function(d) {\n // If fillKey - use that\n // Otherwise check 'fill'\n // Otherwise check 'defaultFill'\n var fillColor;\n\n var datum = colorCodeData[d.id];\n if ( datum && datum.fillKey ) {\n fillColor = fillData[ val(datum.fillKey, {data: colorCodeData[d.id], geography: d}) ];\n }\n\n if ( typeof fillColor === 'undefined' ) {\n fillColor = val(datum && datum.fillColor, fillData.defaultFill, {data: colorCodeData[d.id], geography: d});\n }\n\n return fillColor;\n })\n .style('stroke-width', geoConfig.borderWidth)\n .style('stroke-opacity', geoConfig.borderOpacity)\n .style('stroke', geoConfig.borderColor);\n }\n\n function handleGeographyConfig () {\n var hoverover;\n var svg = this.svg;\n var self = this;\n var options = this.options.geographyConfig;\n\n if ( options.highlightOnHover || options.popupOnHover ) {\n svg.selectAll('.datamaps-subunit')\n .on('mouseover', function(d) {\n var $this = d3.select(this);\n var datum = self.options.data[d.id] || {};\n if ( options.highlightOnHover ) {\n var previousAttributes = {\n 'fill': $this.style('fill'),\n 'stroke': $this.style('stroke'),\n 'stroke-width': $this.style('stroke-width'),\n 'fill-opacity': $this.style('fill-opacity')\n };\n\n $this\n .style('fill', val(datum.highlightFillColor, options.highlightFillColor, datum))\n .style('stroke', val(datum.highlightBorderColor, options.highlightBorderColor, datum))\n .style('stroke-width', val(datum.highlightBorderWidth, options.highlightBorderWidth, datum))\n .style('stroke-opacity', val(datum.highlightBorderOpacity, options.highlightBorderOpacity, datum))\n .style('fill-opacity', val(datum.highlightFillOpacity, options.highlightFillOpacity, datum))\n .attr('data-previousAttributes', JSON.stringify(previousAttributes));\n\n // As per discussion on https://github.com/markmarkoh/datamaps/issues/19\n if ( ! /((MSIE)|(Trident))/.test(navigator.userAgent) ) {\n moveToFront.call(this);\n }\n }\n\n if ( options.popupOnHover ) {\n self.updatePopup($this, d, options, svg);\n }\n })\n .on('mouseout', function() {\n var $this = d3.select(this);\n\n if (options.highlightOnHover) {\n // Reapply previous attributes\n var previousAttributes = JSON.parse( $this.attr('data-previousAttributes') );\n for ( var attr in previousAttributes ) {\n $this.style(attr, previousAttributes[attr]);\n }\n }\n $this.on('mousemove', null);\n d3.selectAll('.datamaps-hoverover').style('display', 'none');\n });\n }\n\n function moveToFront() {\n this.parentNode.appendChild(this);\n }\n }\n\n // Plugin to add a simple map legend\n function addLegend(layer, data, options) {\n data = data || {};\n if ( !this.options.fills ) {\n return;\n }\n\n var html = '
';\n var label = '';\n if ( data.legendTitle ) {\n html = '

' + data.legendTitle + '

' + html;\n }\n for ( var fillKey in this.options.fills ) {\n\n if ( fillKey === 'defaultFill') {\n if (! data.defaultFillName ) {\n continue;\n }\n label = data.defaultFillName;\n } else {\n if (data.labels && data.labels[fillKey]) {\n label = data.labels[fillKey];\n } else {\n label= fillKey + ': ';\n }\n }\n html += '
' + label + '
';\n html += '
 
';\n }\n html += '
';\n\n var hoverover = d3.select( this.options.element ).append('div')\n .attr('class', 'datamaps-legend')\n .html(html);\n }\n\n function addGraticule ( layer, options ) {\n var graticule = d3.geo.graticule();\n this.svg.insert(\"path\", '.datamaps-subunits')\n .datum(graticule)\n .attr(\"class\", \"datamaps-graticule\")\n .attr(\"d\", this.path);\n }\n\n function handleArcs (layer, data, options) {\n var self = this,\n svg = this.svg;\n\n if ( !data || (data && !data.slice) ) {\n throw \"Datamaps Error - arcs must be an array\";\n }\n\n // For some reason arc options were put in an `options` object instead of the parent arc\n // I don't like this, so to match bubbles and other plugins I'm moving it\n // This is to keep backwards compatability\n for ( var i = 0; i < data.length; i++ ) {\n data[i] = defaults(data[i], data[i].options);\n delete data[i].options;\n }\n\n if ( typeof options === \"undefined\" ) {\n options = defaultOptions.arcConfig;\n }\n\n var arcs = layer.selectAll('path.datamaps-arc').data( data, JSON.stringify );\n\n var path = d3.geo.path()\n .projection(self.projection);\n\n arcs\n .enter()\n .append('svg:path')\n .attr('class', 'datamaps-arc')\n .style('stroke-linecap', 'round')\n .style('stroke', function(datum) {\n return val(datum.strokeColor, options.strokeColor, datum);\n })\n .style('fill', 'none')\n .style('stroke-width', function(datum) {\n return val(datum.strokeWidth, options.strokeWidth, datum);\n })\n .attr('d', function(datum) {\n\n var originXY, destXY;\n\n if (typeof datum.origin === \"string\") {\n switch (datum.origin) {\n case \"CAN\":\n originXY = self.latLngToXY(56.624472, -114.665293);\n break;\n case \"CHL\":\n originXY = self.latLngToXY(-33.448890, -70.669265);\n break;\n case \"IDN\":\n originXY = self.latLngToXY(-6.208763, 106.845599);\n break;\n case \"JPN\":\n originXY = self.latLngToXY(35.689487, 139.691706);\n break;\n case \"MYS\":\n originXY = self.latLngToXY(3.139003, 101.686855);\n break;\n case \"NOR\":\n originXY = self.latLngToXY(59.913869, 10.752245);\n break;\n case \"USA\":\n originXY = self.latLngToXY(41.140276, -100.760145);\n break;\n case \"VNM\":\n originXY = self.latLngToXY(21.027764, 105.834160);\n break;\n default:\n originXY = self.path.centroid(svg.select('path.' + datum.origin).data()[0]);\n }\n } else {\n originXY = self.latLngToXY(val(datum.origin.latitude, datum), val(datum.origin.longitude, datum))\n }\n\n if (typeof datum.destination === 'string') {\n switch (datum.destination) {\n case \"CAN\":\n destXY = self.latLngToXY(56.624472, -114.665293);\n break;\n case \"CHL\":\n destXY = self.latLngToXY(-33.448890, -70.669265);\n break;\n case \"IDN\":\n destXY = self.latLngToXY(-6.208763, 106.845599);\n break;\n case \"JPN\":\n destXY = self.latLngToXY(35.689487, 139.691706);\n break;\n case \"MYS\":\n destXY = self.latLngToXY(3.139003, 101.686855);\n break;\n case \"NOR\":\n destXY = self.latLngToXY(59.913869, 10.752245);\n break;\n case \"USA\":\n destXY = self.latLngToXY(41.140276, -100.760145);\n break;\n case \"VNM\":\n destXY = self.latLngToXY(21.027764, 105.834160);\n break;\n default:\n destXY = self.path.centroid(svg.select('path.' + datum.destination).data()[0]);\n }\n } else {\n destXY = self.latLngToXY(val(datum.destination.latitude, datum), val(datum.destination.longitude, datum));\n }\n var midXY = [ (originXY[0] + destXY[0]) / 2, (originXY[1] + destXY[1]) / 2];\n if (options.greatArc) {\n // TODO: Move this to inside `if` clause when setting attr `d`\n var greatArc = d3.geo.greatArc()\n .source(function(d) { return [val(d.origin.longitude, d), val(d.origin.latitude, d)]; })\n .target(function(d) { return [val(d.destination.longitude, d), val(d.destination.latitude, d)]; });\n\n return path(greatArc(datum))\n }\n var sharpness = val(datum.arcSharpness, options.arcSharpness, datum);\n return \"M\" + originXY[0] + ',' + originXY[1] + \"S\" + (midXY[0] + (50 * sharpness)) + \",\" + (midXY[1] - (75 * sharpness)) + \",\" + destXY[0] + \",\" + destXY[1];\n })\n .attr('data-info', function(datum) {\n return JSON.stringify(datum);\n })\n .on('mouseover', function ( datum ) {\n var $this = d3.select(this);\n\n if (options.popupOnHover) {\n self.updatePopup($this, datum, options, svg);\n }\n })\n .on('mouseout', function ( datum ) {\n var $this = d3.select(this);\n\n d3.selectAll('.datamaps-hoverover').style('display', 'none');\n })\n .transition()\n .delay(100)\n .style('fill', function(datum) {\n /*\n Thank you Jake Archibald, this is awesome.\n Source: http://jakearchibald.com/2013/animated-line-drawing-svg/\n */\n var length = this.getTotalLength();\n this.style.transition = this.style.WebkitTransition = 'none';\n this.style.strokeDasharray = length + ' ' + length;\n this.style.strokeDashoffset = length;\n this.getBoundingClientRect();\n this.style.transition = this.style.WebkitTransition = 'stroke-dashoffset ' + val(datum.animationSpeed, options.animationSpeed, datum) + 'ms ease-out';\n this.style.strokeDashoffset = '0';\n return 'none';\n })\n\n arcs.exit()\n .transition()\n .style('opacity', 0)\n .remove();\n }\n\n function handleLabels ( layer, options ) {\n var self = this;\n options = options || {};\n var labelStartCoodinates = this.projection([-67.707617, 42.722131]);\n this.svg.selectAll(\".datamaps-subunit\")\n .attr(\"data-foo\", function(d) {\n var center = self.path.centroid(d);\n var xOffset = 7.5, yOffset = 5;\n\n if ( [\"FL\", \"KY\", \"MI\"].indexOf(d.id) > -1 ) xOffset = -2.5;\n if ( d.id === \"NY\" ) xOffset = -1;\n if ( d.id === \"MI\" ) yOffset = 18;\n if ( d.id === \"LA\" ) xOffset = 13;\n\n var x,y;\n\n x = center[0] - xOffset;\n y = center[1] + yOffset;\n\n var smallStateIndex = [\"VT\", \"NH\", \"MA\", \"RI\", \"CT\", \"NJ\", \"DE\", \"MD\", \"DC\"].indexOf(d.id);\n if ( smallStateIndex > -1) {\n var yStart = labelStartCoodinates[1];\n x = labelStartCoodinates[0];\n y = yStart + (smallStateIndex * (2+ (options.fontSize || 12)));\n layer.append(\"line\")\n .attr(\"x1\", x - 3)\n .attr(\"y1\", y - 5)\n .attr(\"x2\", center[0])\n .attr(\"y2\", center[1])\n .style(\"stroke\", options.labelColor || \"#000\")\n .style(\"stroke-width\", options.lineWidth || 1)\n }\n\n layer.append(\"text\")\n .attr(\"x\", x)\n .attr(\"y\", y)\n .style(\"font-size\", (options.fontSize || 10) + 'px')\n .style(\"font-family\", options.fontFamily || \"Verdana\")\n .style(\"fill\", options.labelColor || \"#000\")\n .text(function() {\n if (options.customLabelText && options.customLabelText[d.id]) {\n return options.customLabelText[d.id]\n } else {\n return d.id\n }\n });\n\n return \"bar\";\n });\n }\n\n\n function handleBubbles (layer, data, options ) {\n var self = this,\n fillData = this.options.fills,\n filterData = this.options.filters,\n svg = this.svg;\n\n if ( !data || (data && !data.slice) ) {\n throw \"Datamaps Error - bubbles must be an array\";\n }\n\n var bubbles = layer.selectAll('circle.datamaps-bubble').data( data, options.key );\n\n bubbles\n .enter()\n .append('svg:circle')\n .attr('class', 'datamaps-bubble')\n .attr('cx', function ( datum ) {\n var latLng;\n if ( datumHasCoords(datum) ) {\n latLng = self.latLngToXY(datum.latitude, datum.longitude);\n }\n else if ( datum.centered ) {\n if ( datum.centered === 'USA' ) {\n latLng = self.projection([-98.58333, 39.83333])\n } else {\n latLng = self.path.centroid(svg.select('path.' + datum.centered).data()[0]);\n }\n }\n if ( latLng ) return latLng[0];\n })\n .attr('cy', function ( datum ) {\n var latLng;\n if ( datumHasCoords(datum) ) {\n latLng = self.latLngToXY(datum.latitude, datum.longitude);\n }\n else if ( datum.centered ) {\n if ( datum.centered === 'USA' ) {\n latLng = self.projection([-98.58333, 39.83333])\n } else {\n latLng = self.path.centroid(svg.select('path.' + datum.centered).data()[0]);\n }\n }\n if ( latLng ) return latLng[1];\n })\n .attr('r', function(datum) {\n // If animation enabled start with radius 0, otherwise use full size.\n return options.animate ? 0 : val(datum.radius, options.radius, datum);\n })\n .attr('data-info', function(datum) {\n return JSON.stringify(datum);\n })\n .attr('filter', function (datum) {\n var filterKey = filterData[ val(datum.filterKey, options.filterKey, datum) ];\n\n if (filterKey) {\n return filterKey;\n }\n })\n .style('stroke', function ( datum ) {\n return val(datum.borderColor, options.borderColor, datum);\n })\n .style('stroke-width', function ( datum ) {\n return val(datum.borderWidth, options.borderWidth, datum);\n })\n .style('stroke-opacity', function ( datum ) {\n return val(datum.borderOpacity, options.borderOpacity, datum);\n })\n .style('fill-opacity', function ( datum ) {\n return val(datum.fillOpacity, options.fillOpacity, datum);\n })\n .style('fill', function ( datum ) {\n var fillColor = fillData[ val(datum.fillKey, options.fillKey, datum) ];\n return fillColor || fillData.defaultFill;\n })\n .on('mouseover', function ( datum ) {\n var $this = d3.select(this);\n\n if (options.highlightOnHover) {\n // Save all previous attributes for mouseout\n var previousAttributes = {\n 'fill': $this.style('fill'),\n 'stroke': $this.style('stroke'),\n 'stroke-width': $this.style('stroke-width'),\n 'fill-opacity': $this.style('fill-opacity')\n };\n\n $this\n .style('fill', val(datum.highlightFillColor, options.highlightFillColor, datum))\n .style('stroke', val(datum.highlightBorderColor, options.highlightBorderColor, datum))\n .style('stroke-width', val(datum.highlightBorderWidth, options.highlightBorderWidth, datum))\n .style('stroke-opacity', val(datum.highlightBorderOpacity, options.highlightBorderOpacity, datum))\n .style('fill-opacity', val(datum.highlightFillOpacity, options.highlightFillOpacity, datum))\n .attr('data-previousAttributes', JSON.stringify(previousAttributes));\n }\n\n if (options.popupOnHover) {\n self.updatePopup($this, datum, options, svg);\n }\n })\n .on('mouseout', function ( datum ) {\n var $this = d3.select(this);\n\n if (options.highlightOnHover) {\n // Reapply previous attributes\n var previousAttributes = JSON.parse( $this.attr('data-previousAttributes') );\n for ( var attr in previousAttributes ) {\n $this.style(attr, previousAttributes[attr]);\n }\n }\n\n d3.selectAll('.datamaps-hoverover').style('display', 'none');\n })\n\n bubbles.transition()\n .duration(400)\n .attr('r', function ( datum ) {\n return val(datum.radius, options.radius, datum);\n })\n .transition()\n .duration(0)\n .attr('data-info', function(d) {\n return JSON.stringify(d);\n });\n\n bubbles.exit()\n .transition()\n .delay(options.exitDelay)\n .attr(\"r\", 0)\n .remove();\n\n function datumHasCoords (datum) {\n return typeof datum !== 'undefined' && typeof datum.latitude !== 'undefined' && typeof datum.longitude !== 'undefined';\n }\n }\n\n function defaults(obj) {\n Array.prototype.slice.call(arguments, 1).forEach(function(source) {\n if (source) {\n for (var prop in source) {\n // Deep copy if property not set\n if (obj[prop] == null) {\n if (typeof source[prop] == 'function') {\n obj[prop] = source[prop];\n }\n else {\n obj[prop] = JSON.parse(JSON.stringify(source[prop]));\n }\n }\n }\n }\n });\n return obj;\n }\n /**************************************\n Public Functions\n ***************************************/\n\n function Datamap( options ) {\n\n if ( typeof d3 === 'undefined' || typeof topojson === 'undefined' ) {\n throw new Error('Include d3.js (v3.0.3 or greater) and topojson on this page before creating a new map');\n }\n // Set options for global use\n this.options = defaults(options, defaultOptions);\n this.options.geographyConfig = defaults(options.geographyConfig, defaultOptions.geographyConfig);\n this.options.projectionConfig = defaults(options.projectionConfig, defaultOptions.projectionConfig);\n this.options.bubblesConfig = defaults(options.bubblesConfig, defaultOptions.bubblesConfig);\n this.options.arcConfig = defaults(options.arcConfig, defaultOptions.arcConfig);\n\n // Add the SVG container\n if ( d3.select( this.options.element ).select('svg').length > 0 ) {\n addContainer.call(this, this.options.element, this.options.height, this.options.width );\n }\n\n // Add core plugins to this instance\n this.addPlugin('bubbles', handleBubbles);\n this.addPlugin('legend', addLegend);\n this.addPlugin('arc', handleArcs);\n this.addPlugin('labels', handleLabels);\n this.addPlugin('graticule', addGraticule);\n\n // Append style block with basic hoverover styles\n if ( ! this.options.disableDefaultStyles ) {\n addStyleBlock();\n }\n\n return this.draw();\n }\n\n // Resize map\n Datamap.prototype.resize = function () {\n\n var self = this;\n var options = self.options;\n\n if (options.responsive) {\n var newsize = options.element.clientWidth,\n oldsize = d3.select( options.element).select('svg').attr('data-width');\n\n d3.select(options.element).select('svg').selectAll('g').attr('transform', 'scale(' + (newsize / oldsize) + ')');\n }\n }\n\n // Actually draw the features(states & countries)\n Datamap.prototype.draw = function() {\n // Save off in a closure\n var self = this;\n var options = self.options;\n\n // Set projections and paths based on scope\n var pathAndProjection = options.setProjection.apply(this, [options.element, options] );\n\n this.path = pathAndProjection.path;\n this.projection = pathAndProjection.projection;\n\n // If custom URL for topojson data, retrieve it and render\n if ( options.geographyConfig.dataUrl ) {\n d3.json( options.geographyConfig.dataUrl, function(error, results) {\n if ( error ) throw new Error(error);\n self.customTopo = results;\n draw( results );\n });\n }\n else {\n draw( this[options.scope + 'Topo'] || options.geographyConfig.dataJson);\n }\n\n return this;\n\n function draw (data) {\n // If fetching remote data, draw the map first then call `updateChoropleth`\n if ( self.options.dataUrl ) {\n // Allow for csv or json data types\n d3[self.options.dataType](self.options.dataUrl, function(data) {\n // In the case of csv, transform data to object\n if ( self.options.dataType === 'csv' && (data && data.slice) ) {\n var tmpData = {};\n for(var i = 0; i < data.length; i++) {\n tmpData[data[i].id] = data[i];\n }\n data = tmpData;\n }\n Datamaps.prototype.updateChoropleth.call(self, data);\n });\n }\n drawSubunits.call(self, data);\n handleGeographyConfig.call(self);\n\n if ( self.options.geographyConfig.popupOnHover || self.options.bubblesConfig.popupOnHover) {\n hoverover = d3.select( self.options.element ).append('div')\n .attr('class', 'datamaps-hoverover')\n .style('z-index', 10001)\n .style('position', 'absolute');\n }\n\n // Fire off finished callback\n self.options.done(self);\n }\n };\n /**************************************\n TopoJSON\n ***************************************/\n Datamap.prototype.worldTopo = {\n \"type\": \"Topology\",\n \"objects\": {\n \"world\": {\n \"type\": \"GeometryCollection\",\n \"geometries\": [{\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Afghanistan\"\n },\n \"id\": \"AFG\",\n \"arcs\": [\n [0, 1, 2, 3, 4, 5]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Angola\"\n },\n \"id\": \"AGO\",\n \"arcs\": [\n [\n [6, 7, 8, 9]\n ],\n [\n [10, 11, 12]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Albania\"\n },\n \"id\": \"ALB\",\n \"arcs\": [\n [13, 14, 15, 16, 17]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"United Arab Emirates\"\n },\n \"id\": \"ARE\",\n \"arcs\": [\n [18, 19, 20, 21, 22]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Argentina\"\n },\n \"id\": \"ARG\",\n \"arcs\": [\n [\n [23, 24]\n ],\n [\n [25, 26, 27, 28, 29, 30]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Armenia\"\n },\n \"id\": \"ARM\",\n \"arcs\": [\n [31, 32, 33, 34, 35]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Antarctica\"\n },\n \"id\": \"ATA\",\n \"arcs\": [\n [\n [36]\n ],\n [\n [37]\n ],\n [\n [38]\n ],\n [\n [39]\n ],\n [\n [40]\n ],\n [\n [41]\n ],\n [\n [42]\n ],\n [\n [43]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"French Southern and Antarctic Lands\"\n },\n \"id\": \"ATF\",\n \"arcs\": [\n [44]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Australia\"\n },\n \"id\": \"AUS\",\n \"arcs\": [\n [\n [45]\n ],\n [\n [46]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Austria\"\n },\n \"id\": \"AUT\",\n \"arcs\": [\n [47, 48, 49, 50, 51, 52, 53]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Azerbaijan\"\n },\n \"id\": \"AZE\",\n \"arcs\": [\n [\n [54, -35]\n ],\n [\n [55, 56, -33, 57, 58]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Burundi\"\n },\n \"id\": \"BDI\",\n \"arcs\": [\n [59, 60, 61]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Belgium\"\n },\n \"id\": \"BEL\",\n \"arcs\": [\n [62, 63, 64, 65, 66]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Benin\"\n },\n \"id\": \"BEN\",\n \"arcs\": [\n [67, 68, 69, 70, 71]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Burkina Faso\"\n },\n \"id\": \"BFA\",\n \"arcs\": [\n [72, 73, 74, -70, 75, 76]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bangladesh\"\n },\n \"id\": \"BGD\",\n \"arcs\": [\n [77, 78, 79]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bulgaria\"\n },\n \"id\": \"BGR\",\n \"arcs\": [\n [80, 81, 82, 83, 84, 85]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"The Bahamas\"\n },\n \"id\": \"BHS\",\n \"arcs\": [\n [\n [86]\n ],\n [\n [87]\n ],\n [\n [88]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bosnia and Herzegovina\"\n },\n \"id\": \"BIH\",\n \"arcs\": [\n [89, 90, 91]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Belarus\"\n },\n \"id\": \"BLR\",\n \"arcs\": [\n [92, 93, 94, 95, 96]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Belize\"\n },\n \"id\": \"BLZ\",\n \"arcs\": [\n [97, 98, 99]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bolivia\"\n },\n \"id\": \"BOL\",\n \"arcs\": [\n [100, 101, 102, 103, -31]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Brazil\"\n },\n \"id\": \"BRA\",\n \"arcs\": [\n [-27, 104, -103, 105, 106, 107, 108, 109, 110, 111, 112]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Brunei\"\n },\n \"id\": \"BRN\",\n \"arcs\": [\n [113, 114]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Bhutan\"\n },\n \"id\": \"BTN\",\n \"arcs\": [\n [115, 116]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Botswana\"\n },\n \"id\": \"BWA\",\n \"arcs\": [\n [117, 118, 119, 120]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Central African Republic\"\n },\n \"id\": \"CAF\",\n \"arcs\": [\n [121, 122, 123, 124, 125, 126, 127]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Canada\"\n },\n \"id\": \"CAN\",\n \"arcs\": [\n [\n [128]\n ],\n [\n [129]\n ],\n [\n [130]\n ],\n [\n [131]\n ],\n [\n [132]\n ],\n [\n [133]\n ],\n [\n [134]\n ],\n [\n [135]\n ],\n [\n [136]\n ],\n [\n [137]\n ],\n [\n [138, 139, 140, 141]\n ],\n [\n [142]\n ],\n [\n [143]\n ],\n [\n [144]\n ],\n [\n [145]\n ],\n [\n [146]\n ],\n [\n [147]\n ],\n [\n [148]\n ],\n [\n [149]\n ],\n [\n [150]\n ],\n [\n [151]\n ],\n [\n [152]\n ],\n [\n [153]\n ],\n [\n [154]\n ],\n [\n [155]\n ],\n [\n [156]\n ],\n [\n [157]\n ],\n [\n [158]\n ],\n [\n [159]\n ],\n [\n [160]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Switzerland\"\n },\n \"id\": \"CHE\",\n \"arcs\": [\n [-51, 161, 162, 163]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Chile\"\n },\n \"id\": \"CHL\",\n \"arcs\": [\n [\n [-24, 164]\n ],\n [\n [-30, 165, 166, -101]\n ]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"China\"\n },\n \"id\": \"CHN\",\n \"arcs\": [\n [\n [167]\n ],\n [\n [168, 169, 170, 171, 172, 173, -117, 174, 175, 176, 177, -4, 178, 179, 180, 181, 182, 183]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ivory Coast\"\n },\n \"id\": \"CIV\",\n \"arcs\": [\n [184, 185, 186, 187, -73, 188]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cameroon\"\n },\n \"id\": \"CMR\",\n \"arcs\": [\n [189, 190, 191, 192, 193, 194, -128, 195]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Democratic Republic of the Congo\"\n },\n \"id\": \"COD\",\n \"arcs\": [\n [196, 197, -60, 198, 199, -10, 200, -13, 201, -126, 202]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Republic of the Congo\"\n },\n \"id\": \"COG\",\n \"arcs\": [\n [-12, 203, 204, -196, -127, -202]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Colombia\"\n },\n \"id\": \"COL\",\n \"arcs\": [\n [205, 206, 207, 208, 209, -107, 210]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Costa Rica\"\n },\n \"id\": \"CRI\",\n \"arcs\": [\n [211, 212, 213, 214]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cuba\"\n },\n \"id\": \"CUB\",\n \"arcs\": [\n [215]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Northern Cyprus\"\n },\n \"id\": \"-99\",\n \"arcs\": [\n [216, 217]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cyprus\"\n },\n \"id\": \"CYP\",\n \"arcs\": [\n [218, -218]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Czech Republic\"\n },\n \"id\": \"CZE\",\n \"arcs\": [\n [-53, 219, 220, 221]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Germany\"\n },\n \"id\": \"DEU\",\n \"arcs\": [\n [222, 223, -220, -52, -164, 224, 225, -64, 226, 227, 228]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Djibouti\"\n },\n \"id\": \"DJI\",\n \"arcs\": [\n [229, 230, 231, 232]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Denmark\"\n },\n \"id\": \"DNK\",\n \"arcs\": [\n [\n [233]\n ],\n [\n [-229, 234]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Dominican Republic\"\n },\n \"id\": \"DOM\",\n \"arcs\": [\n [235, 236]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Algeria\"\n },\n \"id\": \"DZA\",\n \"arcs\": [\n [237, 238, 239, 240, 241, 242, 243, 244]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ecuador\"\n },\n \"id\": \"ECU\",\n \"arcs\": [\n [245, -206, 246]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Egypt\"\n },\n \"id\": \"EGY\",\n \"arcs\": [\n [247, 248, 249, 250, 251]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Eritrea\"\n },\n \"id\": \"ERI\",\n \"arcs\": [\n [252, 253, 254, -233]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Spain\"\n },\n \"id\": \"ESP\",\n \"arcs\": [\n [255, 256, 257, 258]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Estonia\"\n },\n \"id\": \"EST\",\n \"arcs\": [\n [259, 260, 261]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ethiopia\"\n },\n \"id\": \"ETH\",\n \"arcs\": [\n [-232, 262, 263, 264, 265, 266, 267, -253]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Finland\"\n },\n \"id\": \"FIN\",\n \"arcs\": [\n [268, 269, 270, 271]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Fiji\"\n },\n \"id\": \"FJI\",\n \"arcs\": [\n [\n [272]\n ],\n [\n [273, 274]\n ],\n [\n [275, -275]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Falkland Islands\"\n },\n \"id\": \"FLK\",\n \"arcs\": [\n [276]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"France\"\n },\n \"id\": \"FRA\",\n \"arcs\": [\n [\n [277]\n ],\n [\n [278, -225, -163, 279, 280, -257, 281, -66]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"French Guiana\"\n },\n \"id\": \"GUF\",\n \"arcs\": [\n [282, 283, 284, 285, -111]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Gabon\"\n },\n \"id\": \"GAB\",\n \"arcs\": [\n [286, 287, -190, -205]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"United Kingdom\"\n },\n \"id\": \"GBR\",\n \"arcs\": [\n [\n [288, 289]\n ],\n [\n [290]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Georgia\"\n },\n \"id\": \"GEO\",\n \"arcs\": [\n [291, 292, -58, -32, 293]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ghana\"\n },\n \"id\": \"GHA\",\n \"arcs\": [\n [294, -189, -77, 295]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guinea\"\n },\n \"id\": \"GIN\",\n \"arcs\": [\n [296, 297, 298, 299, 300, 301, -187]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Gambia\"\n },\n \"id\": \"GMB\",\n \"arcs\": [\n [302, 303]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guinea Bissau\"\n },\n \"id\": \"GNB\",\n \"arcs\": [\n [304, 305, -300]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Equatorial Guinea\"\n },\n \"id\": \"GNQ\",\n \"arcs\": [\n [306, -191, -288]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Greece\"\n },\n \"id\": \"GRC\",\n \"arcs\": [\n [\n [307]\n ],\n [\n [308, -15, 309, -84, 310]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Greenland\"\n },\n \"id\": \"GRL\",\n \"arcs\": [\n [311]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guatemala\"\n },\n \"id\": \"GTM\",\n \"arcs\": [\n [312, 313, -100, 314, 315, 316]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Guyana\"\n },\n \"id\": \"GUY\",\n \"arcs\": [\n [317, 318, -109, 319]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Honduras\"\n },\n \"id\": \"HND\",\n \"arcs\": [\n [320, 321, -316, 322, 323]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Croatia\"\n },\n \"id\": \"HRV\",\n \"arcs\": [\n [324, -92, 325, 326, 327, 328]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Haiti\"\n },\n \"id\": \"HTI\",\n \"arcs\": [\n [-237, 329]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Hungary\"\n },\n \"id\": \"HUN\",\n \"arcs\": [\n [-48, 330, 331, 332, 333, -329, 334]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Indonesia\"\n },\n \"id\": \"IDN\",\n \"arcs\": [\n [\n [335]\n ],\n [\n [336, 337]\n ],\n [\n [338]\n ],\n [\n [339]\n ],\n [\n [340]\n ],\n [\n [341]\n ],\n [\n [342]\n ],\n [\n [343]\n ],\n [\n [344, 345]\n ],\n [\n [346]\n ],\n [\n [347]\n ],\n [\n [348, 349]\n ],\n [\n [350]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"India\"\n },\n \"id\": \"IND\",\n \"arcs\": [\n [-177, 351, -175, -116, -174, 352, -80, 353, 354]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ireland\"\n },\n \"id\": \"IRL\",\n \"arcs\": [\n [355, -289]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Iran\"\n },\n \"id\": \"IRN\",\n \"arcs\": [\n [356, -6, 357, 358, 359, 360, -55, -34, -57, 361]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Iraq\"\n },\n \"id\": \"IRQ\",\n \"arcs\": [\n [362, 363, 364, 365, 366, 367, -360]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Iceland\"\n },\n \"id\": \"ISL\",\n \"arcs\": [\n [368]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Israel\"\n },\n \"id\": \"ISR\",\n \"arcs\": [\n [369, 370, 371, -252, 372, 373, 374]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Italy\"\n },\n \"id\": \"ITA\",\n \"arcs\": [\n [\n [375]\n ],\n [\n [376]\n ],\n [\n [377, 378, -280, -162, -50]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Jamaica\"\n },\n \"id\": \"JAM\",\n \"arcs\": [\n [379]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Jordan\"\n },\n \"id\": \"JOR\",\n \"arcs\": [\n [-370, 380, -366, 381, 382, -372, 383]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Japan\"\n },\n \"id\": \"JPN\",\n \"arcs\": [\n [\n [384]\n ],\n [\n [385]\n ],\n [\n [386]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kazakhstan\"\n },\n \"id\": \"KAZ\",\n \"arcs\": [\n [387, 388, 389, 390, -181, 391]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kenya\"\n },\n \"id\": \"KEN\",\n \"arcs\": [\n [392, 393, 394, 395, -265, 396]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kyrgyzstan\"\n },\n \"id\": \"KGZ\",\n \"arcs\": [\n [-392, -180, 397, 398]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Cambodia\"\n },\n \"id\": \"KHM\",\n \"arcs\": [\n [399, 400, 401, 402]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"South Korea\"\n },\n \"id\": \"KOR\",\n \"arcs\": [\n [403, 404]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kosovo\"\n },\n \"id\": \"-99\",\n \"arcs\": [\n [-18, 405, 406, 407]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Kuwait\"\n },\n \"id\": \"KWT\",\n \"arcs\": [\n [408, 409, -364]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Laos\"\n },\n \"id\": \"LAO\",\n \"arcs\": [\n [410, 411, -172, 412, -401]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Lebanon\"\n },\n \"id\": \"LBN\",\n \"arcs\": [\n [-374, 413, 414]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Liberia\"\n },\n \"id\": \"LBR\",\n \"arcs\": [\n [415, 416, -297, -186]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Libya\"\n },\n \"id\": \"LBY\",\n \"arcs\": [\n [417, -245, 418, 419, -250, 420, 421]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sri Lanka\"\n },\n \"id\": \"LKA\",\n \"arcs\": [\n [422]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Lesotho\"\n },\n \"id\": \"LSO\",\n \"arcs\": [\n [423]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Lithuania\"\n },\n \"id\": \"LTU\",\n \"arcs\": [\n [424, 425, 426, -93, 427]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Luxembourg\"\n },\n \"id\": \"LUX\",\n \"arcs\": [\n [-226, -279, -65]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Latvia\"\n },\n \"id\": \"LVA\",\n \"arcs\": [\n [428, -262, 429, -94, -427]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Morocco\"\n },\n \"id\": \"MAR\",\n \"arcs\": [\n [-242, 430, 431]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Moldova\"\n },\n \"id\": \"MDA\",\n \"arcs\": [\n [432, 433]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Madagascar\"\n },\n \"id\": \"MDG\",\n \"arcs\": [\n [434]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mexico\"\n },\n \"id\": \"MEX\",\n \"arcs\": [\n [435, -98, -314, 436, 437]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Macedonia\"\n },\n \"id\": \"MKD\",\n \"arcs\": [\n [-408, 438, -85, -310, -14]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mali\"\n },\n \"id\": \"MLI\",\n \"arcs\": [\n [439, -239, 440, -74, -188, -302, 441]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Myanmar\"\n },\n \"id\": \"MMR\",\n \"arcs\": [\n [442, -78, -353, -173, -412, 443]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Montenegro\"\n },\n \"id\": \"MNE\",\n \"arcs\": [\n [444, -326, -91, 445, -406, -17]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mongolia\"\n },\n \"id\": \"MNG\",\n \"arcs\": [\n [446, -183]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mozambique\"\n },\n \"id\": \"MOZ\",\n \"arcs\": [\n [447, 448, 449, 450, 451, 452, 453, 454]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Mauritania\"\n },\n \"id\": \"MRT\",\n \"arcs\": [\n [455, 456, 457, -240, -440]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Malawi\"\n },\n \"id\": \"MWI\",\n \"arcs\": [\n [-455, 458, 459]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Malaysia\"\n },\n \"id\": \"MYS\",\n \"arcs\": [\n [\n [460, 461]\n ],\n [\n [-349, 462, -115, 463]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Namibia\"\n },\n \"id\": \"NAM\",\n \"arcs\": [\n [464, -8, 465, -119, 466]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"New Caledonia\"\n },\n \"id\": \"NCL\",\n \"arcs\": [\n [467]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Niger\"\n },\n \"id\": \"NER\",\n \"arcs\": [\n [-75, -441, -238, -418, 468, -194, 469, -71]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Nigeria\"\n },\n \"id\": \"NGA\",\n \"arcs\": [\n [470, -72, -470, -193]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Nicaragua\"\n },\n \"id\": \"NIC\",\n \"arcs\": [\n [471, -324, 472, -213]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Netherlands\"\n },\n \"id\": \"NLD\",\n \"arcs\": [\n [-227, -63, 473]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Norway\"\n },\n \"id\": \"NOR\",\n \"arcs\": [\n [\n [474, -272, 475, 476]\n ],\n [\n [477]\n ],\n [\n [478]\n ],\n [\n [479]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Nepal\"\n },\n \"id\": \"NPL\",\n \"arcs\": [\n [-352, -176]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"New Zealand\"\n },\n \"id\": \"NZL\",\n \"arcs\": [\n [\n [480]\n ],\n [\n [481]\n ]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Oman\"\n },\n \"id\": \"OMN\",\n \"arcs\": [\n [\n [482, 483, -22, 484]\n ],\n [\n [-20, 485]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Pakistan\"\n },\n \"id\": \"PAK\",\n \"arcs\": [\n [-178, -355, 486, -358, -5]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Panama\"\n },\n \"id\": \"PAN\",\n \"arcs\": [\n [487, -215, 488, -208]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Peru\"\n },\n \"id\": \"PER\",\n \"arcs\": [\n [-167, 489, -247, -211, -106, -102]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Philippines\"\n },\n \"id\": \"PHL\",\n \"arcs\": [\n [\n [490]\n ],\n [\n [491]\n ],\n [\n [492]\n ],\n [\n [493]\n ],\n [\n [494]\n ],\n [\n [495]\n ],\n [\n [496]\n ]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Papua New Guinea\"\n },\n \"id\": \"PNG\",\n \"arcs\": [\n [\n [497]\n ],\n [\n [498]\n ],\n [\n [-345, 499]\n ],\n [\n [500]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Poland\"\n },\n \"id\": \"POL\",\n \"arcs\": [\n [-224, 501, 502, -428, -97, 503, 504, -221]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Puerto Rico\"\n },\n \"id\": \"PRI\",\n \"arcs\": [\n [505]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"North Korea\"\n },\n \"id\": \"PRK\",\n \"arcs\": [\n [506, 507, -405, 508, -169]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Portugal\"\n },\n \"id\": \"PRT\",\n \"arcs\": [\n [-259, 509]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Paraguay\"\n },\n \"id\": \"PRY\",\n \"arcs\": [\n [-104, -105, -26]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Qatar\"\n },\n \"id\": \"QAT\",\n \"arcs\": [\n [510, 511]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Romania\"\n },\n \"id\": \"ROU\",\n \"arcs\": [\n [512, -434, 513, 514, -81, 515, -333]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Russia\"\n },\n \"id\": \"RUS\",\n \"arcs\": [\n [\n [516]\n ],\n [\n [-503, 517, -425]\n ],\n [\n [518, 519]\n ],\n [\n [520]\n ],\n [\n [521]\n ],\n [\n [522]\n ],\n [\n [523]\n ],\n [\n [524]\n ],\n [\n [525]\n ],\n [\n [526, -507, -184, -447, -182, -391, 527, -59, -293, 528, 529, -95, -430, -261, 530, -269, -475, 531, -520]\n ],\n [\n [532]\n ],\n [\n [533]\n ],\n [\n [534]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Rwanda\"\n },\n \"id\": \"RWA\",\n \"arcs\": [\n [535, -61, -198, 536]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Western Sahara\"\n },\n \"id\": \"ESH\",\n \"arcs\": [\n [-241, -458, 537, -431]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Saudi Arabia\"\n },\n \"id\": \"SAU\",\n \"arcs\": [\n [538, -382, -365, -410, 539, -512, 540, -23, -484, 541]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sudan\"\n },\n \"id\": \"SDN\",\n \"arcs\": [\n [542, 543, -123, 544, -421, -249, 545, -254, -268, 546]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"South Sudan\"\n },\n \"id\": \"SSD\",\n \"arcs\": [\n [547, -266, -396, 548, -203, -125, 549, -543]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Senegal\"\n },\n \"id\": \"SEN\",\n \"arcs\": [\n [550, -456, -442, -301, -306, 551, -304]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Solomon Islands\"\n },\n \"id\": \"SLB\",\n \"arcs\": [\n [\n [552]\n ],\n [\n [553]\n ],\n [\n [554]\n ],\n [\n [555]\n ],\n [\n [556]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sierra Leone\"\n },\n \"id\": \"SLE\",\n \"arcs\": [\n [557, -298, -417]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"El Salvador\"\n },\n \"id\": \"SLV\",\n \"arcs\": [\n [558, -317, -322]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Somaliland\"\n },\n \"id\": \"-99\",\n \"arcs\": [\n [-263, -231, 559, 560]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Somalia\"\n },\n \"id\": \"SOM\",\n \"arcs\": [\n [-397, -264, -561, 561]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Republic of Serbia\"\n },\n \"id\": \"SRB\",\n \"arcs\": [\n [-86, -439, -407, -446, -90, -325, -334, -516]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Suriname\"\n },\n \"id\": \"SUR\",\n \"arcs\": [\n [562, -285, 563, -283, -110, -319]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Slovakia\"\n },\n \"id\": \"SVK\",\n \"arcs\": [\n [-505, 564, -331, -54, -222]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Slovenia\"\n },\n \"id\": \"SVN\",\n \"arcs\": [\n [-49, -335, -328, 565, -378]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Sweden\"\n },\n \"id\": \"SWE\",\n \"arcs\": [\n [-476, -271, 566]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Swaziland\"\n },\n \"id\": \"SWZ\",\n \"arcs\": [\n [567, -451]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Syria\"\n },\n \"id\": \"SYR\",\n \"arcs\": [\n [-381, -375, -415, 568, 569, -367]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Chad\"\n },\n \"id\": \"TCD\",\n \"arcs\": [\n [-469, -422, -545, -122, -195]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Togo\"\n },\n \"id\": \"TGO\",\n \"arcs\": [\n [570, -296, -76, -69]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Thailand\"\n },\n \"id\": \"THA\",\n \"arcs\": [\n [571, -462, 572, -444, -411, -400]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Tajikistan\"\n },\n \"id\": \"TJK\",\n \"arcs\": [\n [-398, -179, -3, 573]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Turkmenistan\"\n },\n \"id\": \"TKM\",\n \"arcs\": [\n [-357, 574, -389, 575, -1]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"East Timor\"\n },\n \"id\": \"TLS\",\n \"arcs\": [\n [576, -337]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Trinidad and Tobago\"\n },\n \"id\": \"TTO\",\n \"arcs\": [\n [577]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Tunisia\"\n },\n \"id\": \"TUN\",\n \"arcs\": [\n [-244, 578, -419]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Turkey\"\n },\n \"id\": \"TUR\",\n \"arcs\": [\n [\n [-294, -36, -361, -368, -570, 579]\n ],\n [\n [-311, -83, 580]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Taiwan\"\n },\n \"id\": \"TWN\",\n \"arcs\": [\n [581]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"United Republic of Tanzania\"\n },\n \"id\": \"TZA\",\n \"arcs\": [\n [-394, 582, -448, -460, 583, -199, -62, -536, 584]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Uganda\"\n },\n \"id\": \"UGA\",\n \"arcs\": [\n [-537, -197, -549, -395, -585]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Ukraine\"\n },\n \"id\": \"UKR\",\n \"arcs\": [\n [-530, 585, -514, -433, -513, -332, -565, -504, -96]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Uruguay\"\n },\n \"id\": \"URY\",\n \"arcs\": [\n [-113, 586, -28]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"United States of America\"\n },\n \"id\": \"USA\",\n \"arcs\": [\n [\n [587]\n ],\n [\n [588]\n ],\n [\n [589]\n ],\n [\n [590]\n ],\n [\n [591]\n ],\n [\n [592, -438, 593, -139]\n ],\n [\n [594]\n ],\n [\n [595]\n ],\n [\n [596]\n ],\n [\n [-141, 597]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Uzbekistan\"\n },\n \"id\": \"UZB\",\n \"arcs\": [\n [-576, -388, -399, -574, -2]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Venezuela\"\n },\n \"id\": \"VEN\",\n \"arcs\": [\n [598, -320, -108, -210]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Vietnam\"\n },\n \"id\": \"VNM\",\n \"arcs\": [\n [599, -402, -413, -171]\n ]\n }, {\n \"type\": \"MultiPolygon\",\n \"properties\": {\n \"name\": \"Vanuatu\"\n },\n \"id\": \"VUT\",\n \"arcs\": [\n [\n [600]\n ],\n [\n [601]\n ]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"West Bank\"\n },\n \"id\": \"PSE\",\n \"arcs\": [\n [-384, -371]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Yemen\"\n },\n \"id\": \"YEM\",\n \"arcs\": [\n [602, -542, -483]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"South Africa\"\n },\n \"id\": \"ZAF\",\n \"arcs\": [\n [-467, -118, 603, -452, -568, -450, 604],\n [-424]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Zambia\"\n },\n \"id\": \"ZMB\",\n \"arcs\": [\n [-459, -454, 605, -120, -466, -7, -200, -584]\n ]\n }, {\n \"type\": \"Polygon\",\n \"properties\": {\n \"name\": \"Zimbabwe\"\n },\n \"id\": \"ZWE\",\n \"arcs\": [\n [-604, -121, -606, -453]\n ]\n }]\n }\n },\n \"arcs\": [\n [\n [6700, 7164],\n [28, -23],\n [21, 8],\n [6, 27],\n [22, 9],\n [15, 18],\n [6, 47],\n [23, 11],\n [5, 21],\n [13, -15],\n [8, -2]\n ],\n [\n [6847, 7265],\n [16, -1],\n [20, -12]\n ],\n [\n [6883, 7252],\n [9, -7],\n [20, 19],\n [9, -12],\n [9, 27],\n [17, -1],\n [4, 9],\n [3, 24],\n [12, 20],\n [15, -13],\n [-3, -18],\n [9, -3],\n [-3, -50],\n [11, -19],\n [10, 12],\n [12, 6],\n [17, 27],\n [19, -5],\n [29, 0]\n ],\n [\n [7082, 7268],\n [5, -17]\n ],\n [\n [7087, 7251],\n [-16, -6],\n [-14, -11],\n [-32, -7],\n [-30, -13],\n [-16, -25],\n [6, -25],\n [4, -30],\n [-14, -25],\n [1, -22],\n [-8, -22],\n [-26, 2],\n [11, -39],\n [-18, -15],\n [-12, -35],\n [2, -36],\n [-11, -16],\n [-10, 5],\n [-22, -8],\n [-3, -16],\n [-20, 0],\n [-16, -34],\n [-1, -50],\n [-36, -24],\n [-19, 5],\n [-6, -13],\n [-16, 7],\n [-28, -8],\n [-47, 30]\n ],\n [\n [6690, 6820],\n [25, 53],\n [-2, 38],\n [-21, 10],\n [-2, 38],\n [-9, 47],\n [12, 32],\n [-12, 9],\n [7, 43],\n [12, 74]\n ],\n [\n [5664, 4412],\n [3, -18],\n [-4, -29],\n [5, -28],\n [-4, -22],\n [3, -20],\n [-58, 1],\n [-2, -188],\n [19, -49],\n [18, -37]\n ],\n [\n [5644, 4022],\n [-51, -24],\n [-67, 9],\n [-19, 28],\n [-113, -3],\n [-4, -4],\n [-17, 27],\n [-18, 2],\n [-16, -10],\n [-14, -12]\n ],\n [\n [5325, 4035],\n [-2, 38],\n [4, 51],\n [9, 55],\n [2, 25],\n [9, 53],\n [6, 24],\n [16, 39],\n [9, 26],\n [3, 44],\n [-1, 34],\n [-9, 21],\n [-7, 36],\n [-7, 35],\n [2, 12],\n [8, 24],\n [-8, 57],\n [-6, 39],\n [-14, 38],\n [3, 11]\n ],\n [\n [5342, 4697],\n [11, 8],\n [8, -1],\n [10, 7],\n [82, -1],\n [7, -44],\n [8, -35],\n [6, -19],\n [11, -31],\n [18, 5],\n [9, 8],\n [16, -8],\n [4, 14],\n [7, 35],\n [17, 2],\n [2, 10],\n [14, 1],\n [-3, -22],\n [34, 1],\n [1, -37],\n [5, -23],\n [-4, -36],\n [2, -36],\n [9, -22],\n [-1, -70],\n [7, 5],\n [12, -1],\n [17, 8],\n [13, -3]\n ],\n [\n [5338, 4715],\n [-8, 45]\n ],\n [\n [5330, 4760],\n [12, 25],\n [8, 10],\n [10, -20]\n ],\n [\n [5360, 4775],\n [-10, -12],\n [-4, -16],\n [-1, -25],\n [-7, -7]\n ],\n [\n [5571, 7530],\n [-3, -20],\n [4, -25],\n [11, -15]\n ],\n [\n [5583, 7470],\n [0, -15],\n [-9, -9],\n [-2, -19],\n [-13, -29]\n ],\n [\n [5559, 7398],\n [-5, 5],\n [0, 13],\n [-15, 19],\n [-3, 29],\n [2, 40],\n [4, 18],\n [-4, 10]\n ],\n [\n [5538, 7532],\n [-2, 18],\n [12, 29],\n [1, -11],\n [8, 6]\n ],\n [\n [5557, 7574],\n [6, -16],\n [7, -6],\n [1, -22]\n ],\n [\n [6432, 6490],\n [5, 3],\n [1, -16],\n [22, 9],\n [23, -2],\n [17, -1],\n [19, 39],\n [20, 38],\n [18, 37]\n ],\n [\n [6557, 6597],\n [5, -20]\n ],\n [\n [6562, 6577],\n [4, -47]\n ],\n [\n [6566, 6530],\n [-14, 0],\n [-3, -39],\n [5, -8],\n [-12, -12],\n [0, -24],\n [-8, -24],\n [-1, -24]\n ],\n [\n [6533, 6399],\n [-6, -12],\n [-83, 29],\n [-11, 60],\n [-1, 14]\n ],\n [\n [3140, 1814],\n [-17, 2],\n [-30, 0],\n [0, 132]\n ],\n [\n [3093, 1948],\n [11, -27],\n [14, -45],\n [36, -35],\n [39, -15],\n [-13, -30],\n [-26, -2],\n [-14, 20]\n ],\n [\n [3258, 3743],\n [51, -96],\n [23, -9],\n [34, -44],\n [29, -23],\n [4, -26],\n [-28, -90],\n [28, -16],\n [32, -9],\n [22, 10],\n [25, 45],\n [4, 52]\n ],\n [\n [3482, 3537],\n [14, 11],\n [14, -34],\n [-1, -47],\n [-23, -33],\n [-19, -24],\n [-31, -57],\n [-37, -81]\n ],\n [\n [3399, 3272],\n [-7, -47],\n [-7, -61],\n [0, -58],\n [-6, -14],\n [-2, -38]\n ],\n [\n [3377, 3054],\n [-2, -31],\n [35, -50],\n [-4, -41],\n [18, -26],\n [-2, -29],\n [-26, -75],\n [-42, -32],\n [-55, -12],\n [-31, 6],\n [6, -36],\n [-6, -44],\n [5, -30],\n [-16, -20],\n [-29, -8],\n [-26, 21],\n [-11, -15],\n [4, -59],\n [18, -18],\n [16, 19],\n [8, -31],\n [-26, -18],\n [-22, -37],\n [-4, -59],\n [-7, -32],\n [-26, 0],\n [-22, -31],\n [-8, -44],\n [28, -43],\n [26, -12],\n [-9, -53],\n [-33, -33],\n [-18, -70],\n [-25, -23],\n [-12, -28],\n [9, -61],\n [19, -34],\n [-12, 3]\n ],\n [\n [3095, 1968],\n [-26, 9],\n [-67, 8],\n [-11, 34],\n [0, 45],\n [-18, -4],\n [-10, 21],\n [-3, 63],\n [22, 26],\n [9, 37],\n [-4, 30],\n [15, 51],\n [10, 78],\n [-3, 35],\n [12, 11],\n [-3, 22],\n [-13, 12],\n [10, 25],\n [-13, 22],\n [-6, 68],\n [11, 12],\n [-5, 72],\n [7, 61],\n [7, 52],\n [17, 22],\n [-9, 58],\n [0, 54],\n [21, 38],\n [-1, 50],\n [16, 57],\n [0, 55],\n [-7, 11],\n [-13, 102],\n [17, 60],\n [-2, 58],\n [10, 53],\n [18, 56],\n [20, 36],\n [-9, 24],\n [6, 19],\n [-1, 98],\n [30, 29],\n [10, 62],\n [-3, 14]\n ],\n [\n [3136, 3714],\n [23, 54],\n [36, -15],\n [16, -42],\n [11, 47],\n [32, -2],\n [4, -13]\n ],\n [\n [6210, 7485],\n [39, 9]\n ],\n [\n [6249, 7494],\n [5, -15],\n [11, -10],\n [-6, -15],\n [15, -21],\n [-8, -18],\n [12, -16],\n [13, -10],\n [0, -41]\n ],\n [\n [6291, 7348],\n [-10, -2]\n ],\n [\n [6281, 7346],\n [-11, 34],\n [0, 10],\n [-12, -1],\n [-9, 16],\n [-5, -1]\n ],\n [\n [6244, 7404],\n [-11, 17],\n [-21, 15],\n [3, 28],\n [-5, 21]\n ],\n [\n [3345, 329],\n [-8, -30],\n [-8, -27],\n [-59, 8],\n [-62, -3],\n [-34, 20],\n [0, 2],\n [-16, 17],\n [63, -2],\n [60, -6],\n [20, 24],\n [15, 21],\n [29, -24]\n ],\n [\n [577, 361],\n [-53, -8],\n [-36, 21],\n [-17, 21],\n [-1, 3],\n [-18, 16],\n [17, 22],\n [52, -9],\n [28, -18],\n [21, -21],\n [7, -27]\n ],\n [\n [3745, 447],\n [35, -26],\n [12, -36],\n [3, -25],\n [1, -30],\n [-43, -19],\n [-45, -15],\n [-52, -14],\n [-59, -11],\n [-65, 3],\n [-37, 20],\n [5, 24],\n [59, 16],\n [24, 20],\n [18, 26],\n [12, 22],\n [17, 20],\n [18, 25],\n [14, 0],\n [41, 12],\n [42, -12]\n ],\n [\n [1633, 715],\n [36, -9],\n [33, 10],\n [-16, -20],\n [-26, -15],\n [-39, 4],\n [-27, 21],\n [6, 20],\n [33, -11]\n ],\n [\n [1512, 716],\n [43, -23],\n [-17, 3],\n [-36, 5],\n [-38, 17],\n [20, 12],\n [28, -14]\n ],\n [\n [2250, 808],\n [31, -8],\n [30, 7],\n [17, -34],\n [-22, 5],\n [-34, -2],\n [-34, 2],\n [-38, -4],\n [-28, 12],\n [-15, 24],\n [18, 11],\n [35, -8],\n [40, -5]\n ],\n [\n [3098, 866],\n [4, -27],\n [-5, -23],\n [-8, -22],\n [-33, -8],\n [-31, -12],\n [-36, 1],\n [14, 24],\n [-33, -9],\n [-31, -8],\n [-21, 18],\n [-2, 24],\n [30, 23],\n [20, 7],\n [32, -2],\n [8, 30],\n [1, 22],\n [0, 47],\n [16, 28],\n [25, 9],\n [15, -22],\n [6, -22],\n [12, -26],\n [10, -26],\n [7, -26]\n ],\n [\n [3371, 1268],\n [-11, -13],\n [-21, 9],\n [-23, -6],\n [-19, -14],\n [-20, -15],\n [-14, -17],\n [-4, -23],\n [2, -22],\n [13, -20],\n [-19, -14],\n [-26, -4],\n [-15, -20],\n [-17, -19],\n [-17, -25],\n [-4, -22],\n [9, -24],\n [15, -19],\n [23, -14],\n [21, -18],\n [12, -23],\n [6, -22],\n [8, -24],\n [13, -19],\n [8, -22],\n [4, -55],\n [8, -22],\n [2, -23],\n [9, -23],\n [-4, -31],\n [-15, -24],\n [-17, -20],\n [-37, -8],\n [-12, -21],\n [-17, -20],\n [-42, -22],\n [-37, -9],\n [-35, -13],\n [-37, -13],\n [-22, -24],\n [-45, -2],\n [-49, 2],\n [-44, -4],\n [-47, 0],\n [9, -24],\n [42, -10],\n [31, -16],\n [18, -21],\n [-31, -19],\n [-48, 6],\n [-40, -15],\n [-2, -24],\n [-1, -23],\n [33, -20],\n [6, -22],\n [35, -22],\n [59, -9],\n [50, -16],\n [40, -19],\n [50, -18],\n [70, -10],\n [68, -16],\n [47, -17],\n [52, -20],\n [27, -28],\n [13, -22],\n [34, 21],\n [46, 17],\n [48, 19],\n [58, 15],\n [49, 16],\n [69, 1],\n [68, -8],\n [56, -14],\n [18, 26],\n [39, 17],\n [70, 1],\n [55, 13],\n [52, 13],\n [58, 8],\n [62, 10],\n [43, 15],\n [-20, 21],\n [-12, 21],\n [0, 22],\n [-54, -2],\n [-57, -10],\n [-54, 0],\n [-8, 22],\n [4, 44],\n [12, 13],\n [40, 14],\n [47, 14],\n [34, 17],\n [33, 18],\n [25, 23],\n [38, 10],\n [38, 8],\n [19, 5],\n [43, 2],\n [41, 8],\n [34, 12],\n [34, 14],\n [30, 14],\n [39, 18],\n [24, 20],\n [26, 17],\n [9, 24],\n [-30, 13],\n [10, 25],\n [18, 18],\n [29, 12],\n [31, 14],\n [28, 18],\n [22, 23],\n [13, 28],\n [21, 16],\n [33, -3],\n [13, -20],\n [34, -2],\n [1, 22],\n [14, 23],\n [30, -6],\n [7, -22],\n [33, -3],\n [36, 10],\n [35, 7],\n [31, -3],\n [12, -25],\n [31, 20],\n [28, 10],\n [31, 9],\n [31, 8],\n [29, 14],\n [31, 9],\n [24, 13],\n [17, 20],\n [20, -15],\n [29, 8],\n [20, -27],\n [16, -21],\n [32, 11],\n [12, 24],\n [28, 16],\n [37, -4],\n [11, -22],\n [22, 22],\n [30, 7],\n [33, 3],\n [29, -2],\n [31, -7],\n [30, -3],\n [13, -20],\n [18, -17],\n [31, 10],\n [32, 3],\n [32, 0],\n [31, 1],\n [28, 8],\n [29, 7],\n [25, 16],\n [26, 11],\n [28, 5],\n [21, 17],\n [15, 32],\n [16, 20],\n [29, -10],\n [11, -21],\n [24, -13],\n [29, 4],\n [19, -21],\n [21, -15],\n [28, 14],\n [10, 26],\n [25, 10],\n [29, 20],\n [27, 8],\n [33, 11],\n [22, 13],\n [22, 14],\n [22, 13],\n [26, -7],\n [25, 21],\n [18, 16],\n [26, -1],\n [23, 14],\n [6, 21],\n [23, 16],\n [23, 11],\n [28, 10],\n [25, 4],\n [25, -3],\n [26, -6],\n [22, -16],\n [3, -26],\n [24, -19],\n [17, -17],\n [33, -7],\n [19, -16],\n [23, -16],\n [26, -3],\n [23, 11],\n [24, 24],\n [26, -12],\n [27, -7],\n [26, -7],\n [27, -5],\n [28, 0],\n [23, -61],\n [-1, -15],\n [-4, -27],\n [-26, -15],\n [-22, -22],\n [4, -23],\n [31, 1],\n [-4, -23],\n [-14, -22],\n [-13, -24],\n [21, -19],\n [32, -6],\n [32, 11],\n [15, 23],\n [10, 22],\n [15, 18],\n [17, 18],\n [7, 21],\n [15, 29],\n [18, 5],\n [31, 3],\n [28, 7],\n [28, 9],\n [14, 23],\n [8, 22],\n [19, 22],\n [27, 15],\n [23, 12],\n [16, 19],\n [15, 11],\n [21, 9],\n [27, -6],\n [25, 6],\n [28, 7],\n [30, -4],\n [20, 17],\n [14, 39],\n [11, -16],\n [13, -28],\n [23, -12],\n [27, -4],\n [26, 7],\n [29, -5],\n [26, -1],\n [17, 6],\n [24, -4],\n [21, -12],\n [25, 8],\n [30, 0],\n [25, 8],\n [29, -8],\n [19, 19],\n [14, 20],\n [19, 16],\n [35, 44],\n [18, -8],\n [21, -16],\n [18, -21],\n [36, -36],\n [27, -1],\n [25, 0],\n [30, 7],\n [30, 8],\n [23, 16],\n [19, 18],\n [31, 2],\n [21, 13],\n [22, -12],\n [14, -18],\n [19, -19],\n [31, 2],\n [19, -15],\n [33, -15],\n [35, -5],\n [29, 4],\n [21, 19],\n [19, 18],\n [25, 5],\n [25, -8],\n [29, -6],\n [26, 9],\n [25, 0],\n [24, -6],\n [26, -5],\n [25, 10],\n [30, 9],\n [28, 3],\n [32, 0],\n [25, 5],\n [25, 5],\n [8, 29],\n [1, 24],\n [17, -16],\n [5, -27],\n [10, -24],\n [11, -20],\n [23, -10],\n [32, 4],\n [36, 1],\n [25, 3],\n [37, 0],\n [26, 1],\n [36, -2],\n [31, -5],\n [20, -18],\n [-5, -22],\n [18, -18],\n [30, -13],\n [31, -15],\n [35, -11],\n [38, -9],\n [28, -9],\n [32, -2],\n [18, 20],\n [24, -16],\n [21, -19],\n [25, -13],\n [34, -6],\n [32, -7],\n [13, -23],\n [32, -14],\n [21, -21],\n [31, -9],\n [32, 1],\n [30, -4],\n [33, 1],\n [34, -4],\n [31, -8],\n [28, -14],\n [29, -12],\n [20, -17],\n [-3, -23],\n [-15, -21],\n [-13, -27],\n [-9, -21],\n [-14, -24],\n [-36, -9],\n [-16, -21],\n [-36, -13],\n [-13, -23],\n [-19, -22],\n [-20, -18],\n [-11, -25],\n [-7, -22],\n [-3, -26],\n [0, -22],\n [16, -23],\n [6, -22],\n [13, -21],\n [52, -8],\n [11, -26],\n [-50, -9],\n [-43, -13],\n [-52, -2],\n [-24, -34],\n [-5, -27],\n [-12, -22],\n [-14, -22],\n [37, -20],\n [14, -24],\n [24, -22],\n [33, -20],\n [39, -19],\n [42, -18],\n [64, -19],\n [14, -29],\n [80, -12],\n [5, -5],\n [21, -17],\n [77, 15],\n [63, -19],\n [48, -14],\n [-9997, -1],\n [24, 35],\n [50, -19],\n [3, 2],\n [30, 19],\n [4, 0],\n [3, -1],\n [40, -25],\n [35, 25],\n [7, 3],\n [81, 11],\n [27, -14],\n [13, -7],\n [41, -20],\n [79, -15],\n [63, -18],\n [107, -14],\n [80, 16],\n [118, -11],\n [67, -19],\n [73, 17],\n [78, 17],\n [6, 27],\n [-110, 3],\n [-89, 14],\n [-24, 23],\n [-74, 12],\n [5, 27],\n [10, 24],\n [10, 22],\n [-5, 25],\n [-46, 16],\n [-22, 21],\n [-43, 18],\n [68, -3],\n [64, 9],\n [40, -20],\n [50, 18],\n [45, 22],\n [23, 19],\n [-10, 25],\n [-36, 16],\n [-41, 17],\n [-57, 4],\n [-50, 8],\n [-54, 6],\n [-18, 22],\n [-36, 18],\n [-21, 21],\n [-9, 67],\n [14, -6],\n [25, -18],\n [45, 6],\n [44, 8],\n [23, -26],\n [44, 6],\n [37, 13],\n [35, 16],\n [32, 20],\n [41, 5],\n [-1, 22],\n [-9, 22],\n [8, 21],\n [36, 11],\n [16, -20],\n [42, 12],\n [32, 15],\n [40, 1],\n [38, 6],\n [37, 13],\n [30, 13],\n [34, 13],\n [22, -4],\n [19, -4],\n [41, 8],\n [37, -10],\n [38, 1],\n [37, 8],\n [37, -6],\n [41, -6],\n [39, 3],\n [40, -2],\n [42, -1],\n [38, 3],\n [28, 17],\n [34, 9],\n [35, -13],\n [33, 11],\n [30, 21],\n [18, -19],\n [9, -21],\n [18, -19],\n [29, 17],\n [33, -22],\n [38, -7],\n [32, -16],\n [39, 3],\n [36, 11],\n [41, -3],\n [38, -8],\n [38, -10],\n [15, 25],\n [-18, 20],\n [-14, 21],\n [-36, 5],\n [-15, 22],\n [-6, 22],\n [-10, 43],\n [21, -8],\n [36, -3],\n [36, 3],\n [33, -9],\n [28, -17],\n [12, -21],\n [38, -4],\n [36, 9],\n [38, 11],\n [34, 7],\n [28, -14],\n [37, 5],\n [24, 45],\n [23, -27],\n [32, -10],\n [34, 6],\n [23, -23],\n [37, -3],\n [33, -7],\n [34, -12],\n [21, 22],\n [11, 20],\n [28, -23],\n [38, 6],\n [28, -13],\n [19, -19],\n [37, 5],\n [29, 13],\n [29, 15],\n [33, 8],\n [39, 7],\n [36, 8],\n [27, 13],\n [16, 19],\n [7, 25],\n [-3, 24],\n [-9, 24],\n [-10, 23],\n [-9, 23],\n [-7, 21],\n [-1, 23],\n [2, 23],\n [13, 22],\n [11, 24],\n [5, 23],\n [-6, 26],\n [-3, 23],\n [14, 27],\n [15, 17],\n [18, 22],\n [19, 19],\n [22, 17],\n [11, 25],\n [15, 17],\n [18, 15],\n [26, 3],\n [18, 19],\n [19, 11],\n [23, 7],\n [20, 15],\n [16, 19],\n [22, 7],\n [16, -15],\n [-10, -20],\n [-29, -17]\n ],\n [\n [6914, 2185],\n [18, -19],\n [26, -7],\n [1, -11],\n [-7, -27],\n [-43, -4],\n [-1, 31],\n [4, 25],\n [2, 12]\n ],\n [\n [9038, 2648],\n [27, -21],\n [15, 8],\n [22, 12],\n [16, -4],\n [2, -70],\n [-9, -21],\n [-3, -47],\n [-10, 16],\n [-19, -41],\n [-6, 3],\n [-17, 2],\n [-17, 50],\n [-4, 39],\n [-16, 52],\n [1, 27],\n [18, -5]\n ],\n [\n [8987, 4244],\n [10, -46],\n [18, 22],\n [9, -25],\n [13, -23],\n [-3, -26],\n [6, -51],\n [5, -29],\n [7, -7],\n [7, -51],\n [-3, -30],\n [9, -40],\n [31, -31],\n [19, -28],\n [19, -26],\n [-4, -14],\n [16, -37],\n [11, -64],\n [11, 13],\n [11, -26],\n [7, 9],\n [5, -63],\n [19, -36],\n [13, -22],\n [22, -48],\n [8, -48],\n [1, -33],\n [-2, -37],\n [13, -50],\n [-2, -52],\n [-5, -28],\n [-7, -52],\n [1, -34],\n [-6, -43],\n [-12, -53],\n [-21, -29],\n [-10, -46],\n [-9, -29],\n [-8, -51],\n [-11, -30],\n [-7, -44],\n [-4, -41],\n [2, -18],\n [-16, -21],\n [-31, -2],\n [-26, -24],\n [-13, -23],\n [-17, -26],\n [-23, 27],\n [-17, 10],\n [5, 31],\n [-15, -11],\n [-25, -43],\n [-24, 16],\n [-15, 9],\n [-16, 4],\n [-27, 17],\n [-18, 37],\n [-5, 45],\n [-7, 30],\n [-13, 24],\n [-27, 7],\n [9, 28],\n [-7, 44],\n [-13, -41],\n [-25, -11],\n [14, 33],\n [5, 34],\n [10, 29],\n [-2, 44],\n [-22, -50],\n [-18, -21],\n [-10, -47],\n [-22, 25],\n [1, 31],\n [-18, 43],\n [-14, 22],\n [5, 14],\n [-36, 35],\n [-19, 2],\n [-27, 29],\n [-50, -6],\n [-36, -21],\n [-31, -20],\n [-27, 4],\n [-29, -30],\n [-24, -14],\n [-6, -31],\n [-10, -24],\n [-23, -1],\n [-18, -5],\n [-24, 10],\n [-20, -6],\n [-19, -3],\n [-17, -31],\n [-8, 2],\n [-14, -16],\n [-13, -19],\n [-21, 2],\n [-18, 0],\n [-30, 38],\n [-15, 11],\n [1, 34],\n [14, 8],\n [4, 14],\n [-1, 21],\n [4, 41],\n [-3, 35],\n [-15, 60],\n [-4, 33],\n [1, 34],\n [-11, 38],\n [-1, 18],\n [-12, 23],\n [-4, 47],\n [-16, 46],\n [-4, 26],\n [13, -26],\n [-10, 55],\n [14, -17],\n [8, -23],\n [0, 30],\n [-14, 47],\n [-3, 18],\n [-6, 18],\n [3, 34],\n [6, 15],\n [4, 29],\n [-3, 35],\n [11, 42],\n [2, -45],\n [12, 41],\n [22, 20],\n [14, 25],\n [21, 22],\n [13, 4],\n [7, -7],\n [22, 22],\n [17, 6],\n [4, 13],\n [8, 6],\n [15, -2],\n [29, 18],\n [15, 26],\n [7, 31],\n [17, 30],\n [1, 24],\n [1, 32],\n [19, 50],\n [12, -51],\n [12, 12],\n [-10, 28],\n [9, 29],\n [12, -13],\n [3, 45],\n [15, 29],\n [7, 23],\n [14, 10],\n [0, 17],\n [13, -7],\n [0, 15],\n [12, 8],\n [14, 8],\n [20, -27],\n [16, -35],\n [17, 0],\n [18, -6],\n [-6, 33],\n [13, 47],\n [13, 15],\n [-5, 15],\n [12, 34],\n [17, 21],\n [14, -7],\n [24, 11],\n [-1, 30],\n [-20, 19],\n [15, 9],\n [18, -15],\n [15, -24],\n [23, -15],\n [8, 6],\n [17, -18],\n [17, 17],\n [10, -5],\n [7, 11],\n [12, -29],\n [-7, -32],\n [-11, -24],\n [-9, -2],\n [3, -23],\n [-8, -30],\n [-10, -29],\n [2, -17],\n [22, -32],\n [21, -19],\n [15, -20],\n [20, -35],\n [8, 0],\n [14, -15],\n [4, -19],\n [27, -20],\n [18, 20],\n [6, 32],\n [5, 26],\n [4, 33],\n [8, 47],\n [-4, 28],\n [2, 17],\n [-3, 34],\n [4, 45],\n [5, 12],\n [-4, 20],\n [7, 31],\n [5, 32],\n [1, 17],\n [10, 22],\n [8, -29],\n [2, -37],\n [7, -7],\n [1, -25],\n [10, -30],\n [2, -33],\n [-1, -22]\n ],\n [\n [5471, 7900],\n [-2, -24],\n [-16, 0],\n [6, -13],\n [-9, -38]\n ],\n [\n [5450, 7825],\n [-6, -10],\n [-24, -1],\n [-14, -13],\n [-23, 4]\n ],\n [\n [5383, 7805],\n [-40, 15],\n [-6, 21],\n [-27, -10],\n [-4, -12],\n [-16, 9]\n ],\n [\n [5290, 7828],\n [-15, 1],\n [-12, 11],\n [4, 15],\n [-1, 10]\n ],\n [\n [5266, 7865],\n [8, 3],\n [14, -16],\n [4, 16],\n [25, -3],\n [20, 11],\n [13, -2],\n [9, -12],\n [2, 10],\n [-4, 38],\n [10, 8],\n [10, 27]\n ],\n [\n [5377, 7945],\n [21, -19],\n [15, 24],\n [10, 5],\n [22, -18],\n [13, 3],\n [13, -12]\n ],\n [\n [5471, 7928],\n [-3, -7],\n [3, -21]\n ],\n [\n [6281, 7346],\n [-19, 8],\n [-14, 27],\n [-4, 23]\n ],\n [\n [6349, 7527],\n [15, -31],\n [14, -42],\n [13, -2],\n [8, -16],\n [-23, -5],\n [-5, -46],\n [-4, -21],\n [-11, -13],\n [1, -30]\n ],\n [\n [6357, 7321],\n [-7, -3],\n [-17, 31],\n [10, 30],\n [-9, 17],\n [-10, -4],\n [-33, -44]\n ],\n [\n [6249, 7494],\n [6, 10],\n [21, -17],\n [15, -4],\n [4, 7],\n [-14, 32],\n [7, 9]\n ],\n [\n [6288, 7531],\n [8, -2],\n [19, -36],\n [13, -4],\n [4, 15],\n [17, 23]\n ],\n [\n [5814, 4792],\n [-1, 71],\n [-7, 27]\n ],\n [\n [5806, 4890],\n [17, -5],\n [8, 34],\n [15, -4]\n ],\n [\n [5846, 4915],\n [1, -23],\n [6, -14],\n [1, -19],\n [-7, -12],\n [-11, -31],\n [-10, -22],\n [-12, -2]\n ],\n [\n [5092, 8091],\n [20, -5],\n [26, 12],\n [17, -25],\n [16, -14]\n ],\n [\n [5171, 8059],\n [-4, -40]\n ],\n [\n [5167, 8019],\n [-7, -2],\n [-3, -33]\n ],\n [\n [5157, 7984],\n [-24, 26],\n [-14, -4],\n [-20, 28],\n [-13, 23],\n [-13, 1],\n [-4, 21]\n ],\n [\n [5069, 8079],\n [23, 12]\n ],\n [\n [5074, 5427],\n [-23, -7]\n ],\n [\n [5051, 5420],\n [-7, 41],\n [2, 136],\n [-6, 12],\n [-1, 29],\n [-10, 21],\n [-8, 17],\n [3, 31]\n ],\n [\n [5024, 5707],\n [10, 7],\n [6, 26],\n [13, 5],\n [6, 18]\n ],\n [\n [5059, 5763],\n [10, 17],\n [10, 0],\n [21, -34]\n ],\n [\n [5100, 5746],\n [-1, -19],\n [6, -35],\n [-6, -24],\n [3, -16],\n [-13, -37],\n [-9, -18],\n [-5, -37],\n [1, -38],\n [-2, -95]\n ],\n [\n [4921, 5627],\n [-19, 15],\n [-13, -2],\n [-10, -15],\n [-12, 13],\n [-5, 19],\n [-13, 13]\n ],\n [\n [4849, 5670],\n [-1, 34],\n [7, 26],\n [-1, 20],\n [23, 48],\n [4, 41],\n [7, 14],\n [14, -8],\n [11, 12],\n [4, 16],\n [22, 26],\n [5, 19],\n [26, 24],\n [15, 9],\n [7, -12],\n [18, 0]\n ],\n [\n [5010, 5939],\n [-2, -28],\n [3, -27],\n [16, -39],\n [1, -28],\n [32, -14],\n [-1, -40]\n ],\n [\n [5024, 5707],\n [-24, 1]\n ],\n [\n [5000, 5708],\n [-13, 5],\n [-9, -9],\n [-12, 4],\n [-48, -3],\n [-1, -33],\n [4, -45]\n ],\n [\n [7573, 6360],\n [0, -43],\n [-10, 9],\n [2, -47]\n ],\n [\n [7565, 6279],\n [-8, 30],\n [-1, 31],\n [-6, 28],\n [-11, 34],\n [-26, 3],\n [3, -25],\n [-9, -32],\n [-12, 12],\n [-4, -11],\n [-8, 6],\n [-11, 5]\n ],\n [\n [7472, 6360],\n [-4, 49],\n [-10, 45],\n [5, 35],\n [-17, 16],\n [6, 22],\n [18, 22],\n [-20, 31],\n [9, 40],\n [22, -26],\n [14, -3],\n [2, -41],\n [26, -8],\n [26, 1],\n [16, -10],\n [-13, -50],\n [-12, -3],\n [-9, -34],\n [16, -31],\n [4, 38],\n [8, 0],\n [14, -93]\n ],\n [\n [5629, 7671],\n [8, -25],\n [11, 5],\n [21, -9],\n [41, -4],\n [13, 16],\n [33, 13],\n [20, -21],\n [17, -6]\n ],\n [\n [5793, 7640],\n [-15, -25],\n [-10, -42],\n [9, -34]\n ],\n [\n [5777, 7539],\n [-24, 8],\n [-28, -18]\n ],\n [\n [5725, 7529],\n [0, -30],\n [-26, -5],\n [-19, 20],\n [-22, -16],\n [-21, 2]\n ],\n [\n [5637, 7500],\n [-2, 39],\n [-14, 19]\n ],\n [\n [5621, 7558],\n [5, 8],\n [-3, 7],\n [4, 19],\n [11, 18],\n [-14, 26],\n [-2, 21],\n [7, 14]\n ],\n [\n [2846, 6461],\n [-7, -3],\n [-7, 34],\n [-10, 17],\n [6, 38],\n [8, -3],\n [10, -49],\n [0, -34]\n ],\n [\n [2838, 6628],\n [-30, -10],\n [-2, 22],\n [13, 5],\n [18, -2],\n [1, -15]\n ],\n [\n [2861, 6628],\n [-5, -42],\n [-5, 8],\n [0, 31],\n [-12, 23],\n [0, 7],\n [22, -27]\n ],\n [\n [5527, 7708],\n [10, 0],\n [-7, -26],\n [14, -23],\n [-4, -28],\n [-7, -2]\n ],\n [\n [5533, 7629],\n [-5, -6],\n [-9, -13],\n [-4, -33]\n ],\n [\n [5515, 7577],\n [-25, 23],\n [-10, 24],\n [-11, 13],\n [-12, 22],\n [-6, 19],\n [-14, 27],\n [6, 25],\n [10, -14],\n [6, 12],\n [13, 2],\n [24, -10],\n [19, 1],\n [12, -13]\n ],\n [\n [5652, 8242],\n [27, 0],\n [30, 22],\n [6, 34],\n [23, 19],\n [-3, 26]\n ],\n [\n [5735, 8343],\n [17, 10],\n [30, 23]\n ],\n [\n [5782, 8376],\n [29, -15],\n [4, -15],\n [15, 7],\n [27, -14],\n [3, -27],\n [-6, -16],\n [17, -39],\n [12, -11],\n [-2, -11],\n [19, -10],\n [8, -16],\n [-11, -13],\n [-23, 2],\n [-5, -5],\n [7, -20],\n [6, -37]\n ],\n [\n [5882, 8136],\n [-23, -4],\n [-9, -13],\n [-2, -30],\n [-11, 6],\n [-25, -3],\n [-7, 14],\n [-11, -10],\n [-10, 8],\n [-22, 1],\n [-31, 15],\n [-28, 4],\n [-22, -1],\n [-15, -16],\n [-13, -2]\n ],\n [\n [5653, 8105],\n [-1, 26],\n [-8, 27],\n [17, 12],\n [0, 24],\n [-8, 22],\n [-1, 26]\n ],\n [\n [2524, 6110],\n [-1, 8],\n [4, 3],\n [5, -7],\n [10, 36],\n [5, 0]\n ],\n [\n [2547, 6150],\n [0, -8],\n [5, -1],\n [0, -16],\n [-5, -25],\n [3, -9],\n [-3, -21],\n [2, -6],\n [-4, -30],\n [-5, -16],\n [-5, -1],\n [-6, -21]\n ],\n [\n [2529, 5996],\n [-8, 0],\n [2, 67],\n [1, 47]\n ],\n [\n [3136, 3714],\n [-20, -8],\n [-11, 82],\n [-15, 66],\n [9, 57],\n [-15, 25],\n [-4, 43],\n [-13, 40]\n ],\n [\n [3067, 4019],\n [17, 64],\n [-12, 49],\n [7, 20],\n [-5, 22],\n [10, 30],\n [1, 50],\n [1, 41],\n [6, 20],\n [-24, 96]\n ],\n [\n [3068, 4411],\n [21, -5],\n [14, 1],\n [6, 18],\n [25, 24],\n [14, 22],\n [37, 10],\n [-3, -44],\n [3, -23],\n [-2, -40],\n [30, -53],\n [31, -9],\n [11, -23],\n [19, -11],\n [11, -17],\n [18, 0],\n [16, -17],\n [1, -34],\n [6, -18],\n [0, -25],\n [-8, -1],\n [11, -69],\n [53, -2],\n [-4, -35],\n [3, -23],\n [15, -16],\n [6, -37],\n [-4, -47],\n [-8, -26],\n [3, -33],\n [-9, -12]\n ],\n [\n [3384, 3866],\n [-1, 18],\n [-25, 30],\n [-26, 1],\n [-49, -17],\n [-13, -52],\n [-1, -32],\n [-11, -71]\n ],\n [\n [3482, 3537],\n [6, 34],\n [3, 35],\n [1, 32],\n [-10, 11],\n [-11, -9],\n [-10, 2],\n [-4, 23],\n [-2, 54],\n [-5, 18],\n [-19, 16],\n [-11, -12],\n [-30, 11],\n [2, 81],\n [-8, 33]\n ],\n [\n [3068, 4411],\n [-15, -11],\n [-13, 7],\n [2, 90],\n [-23, -35],\n [-24, 2],\n [-11, 31],\n [-18, 4],\n [5, 25],\n [-15, 36],\n [-11, 53],\n [7, 11],\n [0, 25],\n [17, 17],\n [-3, 32],\n [7, 20],\n [2, 28],\n [32, 40],\n [22, 11],\n [4, 9],\n [25, -2]\n ],\n [\n [3058, 4804],\n [13, 162],\n [0, 25],\n [-4, 34],\n [-12, 22],\n [0, 42],\n [15, 10],\n [6, -6],\n [1, 23],\n [-16, 6],\n [-1, 37],\n [54, -2],\n [10, 21],\n [7, -19],\n [6, -35],\n [5, 8]\n ],\n [\n [3142, 5132],\n [15, -32],\n [22, 4],\n [5, 18],\n [21, 14],\n [11, 10],\n [4, 25],\n [19, 17],\n [-1, 12],\n [-24, 5],\n [-3, 37],\n [1, 40],\n [-13, 15],\n [5, 6],\n [21, -8],\n [22, -15],\n [8, 14],\n [20, 9],\n [31, 23],\n [10, 22],\n [-3, 17]\n ],\n [\n [3313, 5365],\n [14, 2],\n [7, -13],\n [-4, -26],\n [9, -9],\n [7, -28],\n [-8, -20],\n [-4, -51],\n [7, -30],\n [2, -27],\n [17, -28],\n [14, -3],\n [3, 12],\n [8, 3],\n [13, 10],\n [9, 16],\n [15, -5],\n [7, 2]\n ],\n [\n [3429, 5170],\n [15, -5],\n [3, 12],\n [-5, 12],\n [3, 17],\n [11, -5],\n [13, 6],\n [16, -13]\n ],\n [\n [3485, 5194],\n [12, -12],\n [9, 16],\n [6, -3],\n [4, -16],\n [13, 4],\n [11, 22],\n [8, 44],\n [17, 54]\n ],\n [\n [3565, 5303],\n [9, 3],\n [7, -33],\n [16, -103],\n [14, -10],\n [1, -41],\n [-21, -48],\n [9, -18],\n [49, -9],\n [1, -60],\n [21, 39],\n [35, -21],\n [46, -36],\n [14, -35],\n [-5, -32],\n [33, 18],\n [54, -32],\n [41, 3],\n [41, -49],\n [36, -66],\n [21, -17],\n [24, -3],\n [10, -18],\n [9, -76],\n [5, -35],\n [-11, -98],\n [-14, -39],\n [-39, -82],\n [-18, -67],\n [-21, -51],\n [-7, -1],\n [-7, -43],\n [2, -111],\n [-8, -91],\n [-3, -39],\n [-9, -23],\n [-5, -79],\n [-28, -77],\n [-5, -61],\n [-22, -26],\n [-7, -35],\n [-30, 0],\n [-44, -23],\n [-19, -26],\n [-31, -18],\n [-33, -47],\n [-23, -58],\n [-5, -44],\n [5, -33],\n [-5, -60],\n [-6, -28],\n [-20, -33],\n [-31, -104],\n [-24, -47],\n [-19, -27],\n [-13, -57],\n [-18, -33]\n ],\n [\n [3517, 3063],\n [-8, 33],\n [13, 28],\n [-16, 40],\n [-22, 33],\n [-29, 38],\n [-10, -2],\n [-28, 46],\n [-18, -7]\n ],\n [\n [8172, 5325],\n [11, 22],\n [23, 32]\n ],\n [\n [8206, 5379],\n [-1, -29],\n [-2, -37],\n [-13, 1],\n [-6, -20],\n [-12, 31]\n ],\n [\n [7546, 6698],\n [12, -19],\n [-2, -36],\n [-23, -2],\n [-23, 4],\n [-18, -9],\n [-25, 22],\n [-1, 12]\n ],\n [\n [7466, 6670],\n [19, 44],\n [15, 15],\n [20, -14],\n [14, -1],\n [12, -16]\n ],\n [\n [5817, 3752],\n [-39, -43],\n [-25, -44],\n [-10, -40],\n [-8, -22],\n [-15, -4],\n [-5, -29],\n [-3, -18],\n [-17, -14],\n [-23, 3],\n [-13, 17],\n [-12, 7],\n [-14, -14],\n [-6, -28],\n [-14, -18],\n [-13, -26],\n [-20, -6],\n [-6, 20],\n [2, 36],\n [-16, 56],\n [-8, 9]\n ],\n [\n [5552, 3594],\n [0, 173],\n [27, 2],\n [1, 210],\n [21, 2],\n [43, 21],\n [10, -24],\n [18, 23],\n [9, 0],\n [15, 13]\n ],\n [\n [5696, 4014],\n [5, -4]\n ],\n [\n [5701, 4010],\n [11, -48],\n [5, -10],\n [9, -34],\n [32, -65],\n [12, -7],\n [0, -20],\n [8, -38],\n [21, -9],\n [18, -27]\n ],\n [\n [5424, 5496],\n [23, 4],\n [5, 16],\n [5, -2],\n [7, -13],\n [34, 23],\n [12, 23],\n [15, 20],\n [-3, 21],\n [8, 6],\n [27, -4],\n [26, 27],\n [20, 65],\n [14, 24],\n [18, 10]\n ],\n [\n [5635, 5716],\n [3, -26],\n [16, -36],\n [0, -25],\n [-5, -24],\n [2, -18],\n [10, -18]\n ],\n [\n [5661, 5569],\n [21, -25]\n ],\n [\n [5682, 5544],\n [15, -24],\n [0, -19],\n [19, -31],\n [12, -26],\n [7, -35],\n [20, -24],\n [5, -18]\n ],\n [\n [5760, 5367],\n [-9, -7],\n [-18, 2],\n [-21, 6],\n [-10, -5],\n [-5, -14],\n [-9, -2],\n [-10, 12],\n [-31, -29],\n [-13, 6],\n [-4, -5],\n [-8, -35],\n [-21, 11],\n [-20, 6],\n [-18, 22],\n [-23, 20],\n [-15, -19],\n [-10, -30],\n [-3, -41]\n ],\n [\n [5512, 5265],\n [-18, 3],\n [-19, 10],\n [-16, -32],\n [-15, -55]\n ],\n [\n [5444, 5191],\n [-3, 18],\n [-1, 27],\n [-13, 19],\n [-10, 30],\n [-2, 21],\n [-13, 31],\n [2, 18],\n [-3, 25],\n [2, 45],\n [7, 11],\n [14, 60]\n ],\n [\n [3231, 7808],\n [20, -8],\n [26, 1],\n [-14, -24],\n [-10, -4],\n [-35, 25],\n [-7, 20],\n [10, 18],\n [10, -28]\n ],\n [\n [3283, 7958],\n [-14, -1],\n [-36, 19],\n [-26, 28],\n [10, 5],\n [37, -15],\n [28, -25],\n [1, -11]\n ],\n [\n [1569, 7923],\n [-14, -8],\n [-46, 27],\n [-8, 21],\n [-25, 21],\n [-5, 16],\n [-28, 11],\n [-11, 32],\n [2, 14],\n [30, -13],\n [17, -9],\n [26, -6],\n [9, -21],\n [14, -28],\n [28, -24],\n [11, -33]\n ],\n [\n [3440, 8052],\n [-18, -52],\n [18, 20],\n [19, -12],\n [-10, -21],\n [25, -16],\n [12, 14],\n [28, -18],\n [-8, -43],\n [19, 10],\n [4, -32],\n [8, -36],\n [-11, -52],\n [-13, -2],\n [-18, 11],\n [6, 48],\n [-8, 8],\n [-32, -52],\n [-17, 2],\n [20, 28],\n [-27, 14],\n [-30, -3],\n [-54, 2],\n [-4, 17],\n [17, 21],\n [-12, 16],\n [24, 36],\n [28, 94],\n [18, 33],\n [24, 21],\n [13, -3],\n [-6, -16],\n [-15, -37]\n ],\n [\n [1313, 8250],\n [27, 5],\n [-8, -67],\n [24, -48],\n [-11, 0],\n [-17, 27],\n [-10, 27],\n [-14, 19],\n [-5, 26],\n [1, 19],\n [13, -8]\n ],\n [\n [2798, 8730],\n [-11, -31],\n [-12, 5],\n [-8, 17],\n [2, 4],\n [10, 18],\n [12, -1],\n [7, -12]\n ],\n [\n [2725, 8762],\n [-33, -32],\n [-19, 1],\n [-6, 16],\n [20, 27],\n [38, 0],\n [0, -12]\n ],\n [\n [2634, 8936],\n [5, -26],\n [15, 9],\n [16, -15],\n [30, -20],\n [32, -19],\n [2, -28],\n [21, 5],\n [20, -20],\n [-25, -18],\n [-43, 14],\n [-16, 26],\n [-27, -31],\n [-40, -31],\n [-9, 35],\n [-38, -6],\n [24, 30],\n [4, 46],\n [9, 54],\n [20, -5]\n ],\n [\n [2892, 9024],\n [-31, -3],\n [-7, 29],\n [12, 34],\n [26, 8],\n [21, -17],\n [1, -25],\n [-4, -8],\n [-18, -18]\n ],\n [\n [2343, 9140],\n [-17, -21],\n [-38, 18],\n [-22, -6],\n [-38, 26],\n [24, 19],\n [19, 25],\n [30, -16],\n [17, -11],\n [8, -11],\n [17, -23]\n ],\n [\n [3135, 7724],\n [-18, 33],\n [0, 81],\n [-13, 17],\n [-18, -10],\n [-10, 16],\n [-21, -45],\n [-8, -46],\n [-10, -27],\n [-12, -9],\n [-9, -3],\n [-3, -15],\n [-51, 0],\n [-42, 0],\n [-12, -11],\n [-30, -42],\n [-3, -5],\n [-9, -23],\n [-26, 0],\n [-27, 0],\n [-12, -10],\n [4, -11],\n [2, -18],\n [0, -6],\n [-36, -30],\n [-29, -9],\n [-32, -31],\n [-7, 0],\n [-10, 9],\n [-3, 8],\n [1, 6],\n [6, 21],\n [13, 33],\n [8, 35],\n [-5, 51],\n [-6, 53],\n [-29, 28],\n [3, 11],\n [-4, 7],\n [-8, 0],\n [-5, 9],\n [-2, 14],\n [-5, -6],\n [-7, 2],\n [1, 6],\n [-6, 6],\n [-3, 15],\n [-21, 19],\n [-23, 20],\n [-27, 23],\n [-26, 21],\n [-25, -17],\n [-9, 0],\n [-34, 15],\n [-23, -8],\n [-27, 19],\n [-28, 9],\n [-19, 4],\n [-9, 10],\n [-5, 32],\n [-9, 0],\n [-1, -23],\n [-57, 0],\n [-95, 0],\n [-94, 0],\n [-84, 0],\n [-83, 0],\n [-82, 0],\n [-85, 0],\n [-27, 0],\n [-82, 0],\n [-79, 0]\n ],\n [\n [1588, 7952],\n [-4, 0],\n [-54, 58],\n [-20, 26],\n [-50, 24],\n [-15, 53],\n [3, 36],\n [-35, 25],\n [-5, 48],\n [-34, 43],\n [0, 30]\n ],\n [\n [1374, 8295],\n [15, 29],\n [0, 37],\n [-48, 37],\n [-28, 68],\n [-17, 42],\n [-26, 27],\n [-19, 24],\n [-14, 31],\n [-28, -20],\n [-27, -33],\n [-25, 39],\n [-19, 26],\n [-27, 16],\n [-28, 2],\n [0, 337],\n [1, 219]\n ],\n [\n [1084, 9176],\n [51, -14],\n [44, -29],\n [29, -5],\n [24, 24],\n [34, 19],\n [41, -7],\n [42, 26],\n [45, 14],\n [20, -24],\n [20, 14],\n [6, 27],\n [20, -6],\n [47, -53],\n [37, 40],\n [3, -45],\n [34, 10],\n [11, 17],\n [34, -3],\n [42, -25],\n [65, -22],\n [38, -10],\n [28, 4],\n [37, -30],\n [-39, -29],\n [50, -13],\n [75, 7],\n [24, 11],\n [29, -36],\n [31, 30],\n [-29, 25],\n [18, 20],\n [34, 3],\n [22, 6],\n [23, -14],\n [28, -32],\n [31, 5],\n [49, -27],\n [43, 9],\n [40, -1],\n [-3, 37],\n [25, 10],\n [43, -20],\n [0, -56],\n [17, 47],\n [23, -1],\n [12, 59],\n [-30, 36],\n [-32, 24],\n [2, 65],\n [33, 43],\n [37, -9],\n [28, -26],\n [38, -67],\n [-25, -29],\n [52, -12],\n [-1, -60],\n [38, 46],\n [33, -38],\n [-9, -44],\n [27, -40],\n [29, 43],\n [21, 51],\n [1, 65],\n [40, -5],\n [41, -8],\n [37, -30],\n [2, -29],\n [-21, -31],\n [20, -32],\n [-4, -29],\n [-54, -41],\n [-39, -9],\n [-29, 18],\n [-8, -30],\n [-27, -50],\n [-8, -26],\n [-32, -40],\n [-40, -4],\n [-22, -25],\n [-2, -38],\n [-32, -7],\n [-34, -48],\n [-30, -67],\n [-11, -46],\n [-1, -69],\n [40, -10],\n [13, -55],\n [13, -45],\n [39, 12],\n [51, -26],\n [28, -22],\n [20, -28],\n [35, -17],\n [29, -24],\n [46, -4],\n [30, -6],\n [-4, -51],\n [8, -59],\n [21, -66],\n [41, -56],\n [21, 19],\n [15, 61],\n [-14, 93],\n [-20, 31],\n [45, 28],\n [31, 41],\n [16, 41],\n [-3, 40],\n [-19, 50],\n [-33, 44],\n [32, 62],\n [-12, 54],\n [-9, 92],\n [19, 14],\n [48, -16],\n [29, -6],\n [23, 15],\n [25, -20],\n [35, -34],\n [8, -23],\n [50, -4],\n [-1, -50],\n [9, -74],\n [25, -10],\n [21, -35],\n [40, 33],\n [26, 65],\n [19, 28],\n [21, -53],\n [36, -75],\n [31, -71],\n [-11, -37],\n [37, -33],\n [25, -34],\n [44, -15],\n [18, -19],\n [11, -50],\n [22, -8],\n [11, -22],\n [2, -67],\n [-20, -22],\n [-20, -21],\n [-46, -21],\n [-35, -48],\n [-47, -10],\n [-59, 13],\n [-42, 0],\n [-29, -4],\n [-23, -43],\n [-35, -26],\n [-40, -78],\n [-32, -54],\n [23, 9],\n [45, 78],\n [58, 49],\n [42, 6],\n [24, -29],\n [-26, -40],\n [9, -63],\n [9, -45],\n [36, -29],\n [46, 8],\n [28, 67],\n [2, -43],\n [17, -22],\n [-34, -38],\n [-61, -36],\n [-28, -23],\n [-31, -43],\n [-21, 4],\n [-1, 50],\n [48, 49],\n [-44, -2],\n [-31, -7]\n ],\n [\n [1829, 9377],\n [-14, -27],\n [61, 17],\n [39, -29],\n [31, 30],\n [26, -20],\n [23, -58],\n [14, 25],\n [-20, 60],\n [24, 9],\n [28, -9],\n [31, -24],\n [17, -58],\n [9, -41],\n [47, -30],\n [50, -28],\n [-3, -26],\n [-46, -4],\n [18, -23],\n [-9, -22],\n [-51, 9],\n [-48, 16],\n [-32, -3],\n [-52, -20],\n [-70, -9],\n [-50, -6],\n [-15, 28],\n [-38, 16],\n [-24, -6],\n [-35, 47],\n [19, 6],\n [43, 10],\n [39, -3],\n [36, 11],\n [-54, 13],\n [-59, -4],\n [-39, 1],\n [-15, 22],\n [64, 23],\n [-42, -1],\n [-49, 16],\n [23, 44],\n [20, 24],\n [74, 36],\n [29, -12]\n ],\n [\n [2097, 9395],\n [-24, -39],\n [-44, 41],\n [10, 9],\n [37, 2],\n [21, -13]\n ],\n [\n [2879, 9376],\n [3, -16],\n [-30, 2],\n [-30, 1],\n [-30, -8],\n [-8, 3],\n [-31, 32],\n [1, 21],\n [14, 4],\n [63, -6],\n [48, -33]\n ],\n [\n [2595, 9379],\n [22, -36],\n [26, 47],\n [70, 24],\n [48, -61],\n [-4, -38],\n [55, 17],\n [26, 23],\n [62, -30],\n [38, -28],\n [3, -25],\n [52, 13],\n [29, -38],\n [67, -23],\n [24, -24],\n [26, -55],\n [-51, -28],\n [66, -38],\n [44, -13],\n [40, -55],\n [44, -3],\n [-9, -42],\n [-49, -69],\n [-34, 26],\n [-44, 57],\n [-36, -8],\n [-3, -34],\n [29, -34],\n [38, -27],\n [11, -16],\n [18, -58],\n [-9, -43],\n [-35, 16],\n [-70, 47],\n [39, -51],\n [29, -35],\n [5, -21],\n [-76, 24],\n [-59, 34],\n [-34, 29],\n [10, 17],\n [-42, 30],\n [-40, 29],\n [0, -18],\n [-80, -9],\n [-23, 20],\n [18, 44],\n [52, 1],\n [57, 7],\n [-9, 21],\n [10, 30],\n [36, 57],\n [-8, 27],\n [-11, 20],\n [-42, 29],\n [-57, 20],\n [18, 15],\n [-29, 36],\n [-25, 4],\n [-22, 20],\n [-14, -18],\n [-51, -7],\n [-101, 13],\n [-59, 17],\n [-45, 9],\n [-23, 21],\n [29, 27],\n [-39, 0],\n [-9, 60],\n [21, 53],\n [29, 24],\n [72, 16],\n [-21, -39]\n ],\n [\n [2212, 9420],\n [33, -12],\n [50, 7],\n [7, -17],\n [-26, -28],\n [42, -26],\n [-5, -53],\n [-45, -23],\n [-27, 5],\n [-19, 23],\n [-69, 45],\n [0, 19],\n [57, -7],\n [-31, 38],\n [33, 29]\n ],\n [\n [2411, 9357],\n [-30, -45],\n [-32, 3],\n [-17, 52],\n [1, 29],\n [14, 25],\n [28, 16],\n [58, -2],\n [53, -14],\n [-42, -53],\n [-33, -11]\n ],\n [\n [1654, 9275],\n [-73, -29],\n [-15, 26],\n [-64, 31],\n [12, 25],\n [19, 43],\n [24, 39],\n [-27, 36],\n [94, 10],\n [39, -13],\n [71, -3],\n [27, -17],\n [30, -25],\n [-35, -15],\n [-68, -41],\n [-34, -42],\n [0, -25]\n ],\n [\n [2399, 9487],\n [-15, -23],\n [-40, 5],\n [-34, 15],\n [15, 27],\n [40, 16],\n [24, -21],\n [10, -19]\n ],\n [\n [2264, 9590],\n [21, -27],\n [1, -31],\n [-13, -44],\n [-46, -6],\n [-30, 10],\n [1, 34],\n [-45, -4],\n [-2, 45],\n [30, -2],\n [41, 21],\n [40, -4],\n [2, 8]\n ],\n [\n [1994, 9559],\n [11, -21],\n [25, 10],\n [29, -2],\n [5, -29],\n [-17, -28],\n [-94, -10],\n [-70, -25],\n [-43, -2],\n [-3, 20],\n [57, 26],\n [-125, -7],\n [-39, 10],\n [38, 58],\n [26, 17],\n [78, -20],\n [50, -35],\n [48, -5],\n [-40, 57],\n [26, 21],\n [29, -7],\n [9, -28]\n ],\n [\n [2370, 9612],\n [30, -19],\n [55, 0],\n [24, -19],\n [-6, -22],\n [32, -14],\n [17, -14],\n [38, -2],\n [40, -5],\n [44, 13],\n [57, 5],\n [45, -5],\n [30, -22],\n [6, -24],\n [-17, -16],\n [-42, -13],\n [-35, 8],\n [-80, -10],\n [-57, -1],\n [-45, 8],\n [-74, 19],\n [-9, 32],\n [-4, 29],\n [-27, 26],\n [-58, 7],\n [-32, 19],\n [10, 24],\n [58, -4]\n ],\n [\n [1772, 9645],\n [-4, -46],\n [-21, -20],\n [-26, -3],\n [-52, -26],\n [-44, -9],\n [-38, 13],\n [47, 44],\n [57, 39],\n [43, -1],\n [38, 9]\n ],\n [\n [2393, 9637],\n [-13, -2],\n [-52, 4],\n [-7, 17],\n [56, -1],\n [19, -11],\n [-3, -7]\n ],\n [\n [1939, 9648],\n [-52, -17],\n [-41, 19],\n [23, 19],\n [40, 6],\n [39, -10],\n [-9, -17]\n ],\n [\n [1954, 9701],\n [-34, -11],\n [-46, 0],\n [0, 8],\n [29, 18],\n [14, -3],\n [37, -12]\n ],\n [\n [2338, 9669],\n [-41, -12],\n [-23, 13],\n [-12, 23],\n [-2, 24],\n [36, -2],\n [16, -4],\n [33, -21],\n [-7, -21]\n ],\n [\n [2220, 9685],\n [11, -25],\n [-45, 7],\n [-46, 19],\n [-62, 2],\n [27, 18],\n [-34, 14],\n [-2, 22],\n [55, -8],\n [75, -21],\n [21, -28]\n ],\n [\n [2583, 9764],\n [33, -20],\n [-38, -17],\n [-51, -45],\n [-50, -4],\n [-57, 8],\n [-30, 24],\n [0, 21],\n [22, 16],\n [-50, 0],\n [-31, 19],\n [-18, 27],\n [20, 26],\n [19, 18],\n [28, 4],\n [-12, 14],\n [65, 3],\n [35, -32],\n [47, -12],\n [46, -11],\n [22, -39]\n ],\n [\n [3097, 9967],\n [74, -4],\n [60, -8],\n [51, -16],\n [-2, -16],\n [-67, -25],\n [-68, -12],\n [-25, -14],\n [61, 1],\n [-66, -36],\n [-45, -17],\n [-48, -48],\n [-57, -10],\n [-18, -12],\n [-84, -6],\n [39, -8],\n [-20, -10],\n [23, -29],\n [-26, -21],\n [-43, -16],\n [-13, -24],\n [-39, -17],\n [4, -14],\n [48, 3],\n [0, -15],\n [-74, -35],\n [-73, 16],\n [-81, -9],\n [-42, 7],\n [-52, 3],\n [-4, 29],\n [52, 13],\n [-14, 43],\n [17, 4],\n [74, -26],\n [-38, 38],\n [-45, 11],\n [23, 23],\n [49, 14],\n [8, 21],\n [-39, 23],\n [-12, 31],\n [76, -3],\n [22, -6],\n [43, 21],\n [-62, 7],\n [-98, -4],\n [-49, 20],\n [-23, 24],\n [-32, 17],\n [-6, 21],\n [41, 11],\n [32, 2],\n [55, 9],\n [41, 22],\n [34, -3],\n [30, -16],\n [21, 32],\n [37, 9],\n [50, 7],\n [85, 2],\n [14, -6],\n [81, 10],\n [60, -4],\n [60, -4]\n ],\n [\n [5290, 7828],\n [-3, -24],\n [-12, -10],\n [-20, 7],\n [-6, -24],\n [-14, -2],\n [-5, 10],\n [-15, -20],\n [-13, -3],\n [-12, 13]\n ],\n [\n [5190, 7775],\n [-10, 25],\n [-13, -9],\n [0, 27],\n [21, 33],\n [-1, 15],\n [12, -5],\n [8, 10]\n ],\n [\n [5207, 7871],\n [24, -1],\n [5, 13],\n [30, -18]\n ],\n [\n [3140, 1814],\n [-10, -24],\n [-23, -18],\n [-14, 2],\n [-16, 5],\n [-21, 18],\n [-29, 8],\n [-35, 33],\n [-28, 32],\n [-38, 66],\n [23, -12],\n [39, -40],\n [36, -21],\n [15, 27],\n [9, 41],\n [25, 24],\n [20, -7]\n ],\n [\n [3095, 1968],\n [-25, 0],\n [-13, -14],\n [-25, -22],\n [-5, -55],\n [-11, -1],\n [-32, 19],\n [-32, 41],\n [-34, 34],\n [-9, 37],\n [8, 35],\n [-14, 39],\n [-4, 101],\n [12, 57],\n [30, 45],\n [-43, 18],\n [27, 52],\n [9, 98],\n [31, -21],\n [15, 123],\n [-19, 15],\n [-9, -73],\n [-17, 8],\n [9, 84],\n [9, 110],\n [13, 40],\n [-8, 58],\n [-2, 66],\n [11, 2],\n [17, 96],\n [20, 94],\n [11, 88],\n [-6, 89],\n [8, 49],\n [-3, 72],\n [16, 73],\n [5, 114],\n [9, 123],\n [9, 132],\n [-2, 96],\n [-6, 84]\n ],\n [\n [3045, 3974],\n [14, 15],\n [8, 30]\n ],\n [\n [8064, 6161],\n [-24, -28],\n [-23, 18],\n [0, 51],\n [13, 26],\n [31, 17],\n [16, -1],\n [6, -23],\n [-12, -26],\n [-7, -34]\n ],\n [\n [8628, 7562],\n [-18, 35],\n [-11, -33],\n [-43, -26],\n [4, -31],\n [-24, 2],\n [-13, 19],\n [-19, -42],\n [-30, -32],\n [-23, -38]\n ],\n [\n [8451, 7416],\n [-39, -17],\n [-20, -27],\n [-30, -17],\n [15, 28],\n [-6, 23],\n [22, 40],\n [-15, 30],\n [-24, -20],\n [-32, -41],\n [-17, -39],\n [-27, -2],\n [-14, -28],\n [15, -40],\n [22, -10],\n [1, -26],\n [22, -17],\n [31, 42],\n [25, -23],\n [18, -2],\n [4, -31],\n [-39, -16],\n [-13, -32],\n [-27, -30],\n [-14, -41],\n [30, -33],\n [11, -58],\n [17, -54],\n [18, -45],\n [0, -44],\n [-17, -16],\n [6, -32],\n [17, -18],\n [-5, -48],\n [-7, -47],\n [-15, -5],\n [-21, -64],\n [-22, -78],\n [-26, -70],\n [-38, -55],\n [-39, -50],\n [-31, -6],\n [-17, -27],\n [-10, 20],\n [-15, -30],\n [-39, -29],\n [-29, -9],\n [-10, -63],\n [-15, -3],\n [-8, 43],\n [7, 22],\n [-37, 19],\n [-13, -9]\n ],\n [\n [8001, 6331],\n [-28, 15],\n [-14, 24],\n [5, 34],\n [-26, 11],\n [-13, 22],\n [-24, -31],\n [-27, -7],\n [-22, 0],\n [-15, -14]\n ],\n [\n [7837, 6385],\n [-14, -9],\n [4, -68],\n [-15, 2],\n [-2, 14]\n ],\n [\n [7810, 6324],\n [-1, 24],\n [-20, -17],\n [-12, 11],\n [-21, 22],\n [8, 49],\n [-18, 12],\n [-6, 54],\n [-30, -10],\n [4, 70],\n [26, 50],\n [1, 48],\n [-1, 46],\n [-12, 14],\n [-9, 35],\n [-16, -5]\n ],\n [\n [7703, 6727],\n [-30, 9],\n [9, 25],\n [-13, 36],\n [-20, -24],\n [-23, 14],\n [-32, -37],\n [-25, -44],\n [-23, -8]\n ],\n [\n [7466, 6670],\n [-2, 47],\n [-17, -13]\n ],\n [\n [7447, 6704],\n [-32, 6],\n [-32, 14],\n [-22, 26],\n [-22, 11],\n [-9, 29],\n [-16, 8],\n [-28, 39],\n [-22, 18],\n [-12, -14]\n ],\n [\n [7252, 6841],\n [-38, 41],\n [-28, 37],\n [-7, 65],\n [20, -7],\n [1, 30],\n [-12, 30],\n [3, 48],\n [-30, 69]\n ],\n [\n [7161, 7154],\n [-45, 24],\n [-8, 46],\n [-21, 27]\n ],\n [\n [7082, 7268],\n [-4, 34],\n [1, 23],\n [-17, 13],\n [-9, -6],\n [-7, 55]\n ],\n [\n [7046, 7387],\n [8, 13],\n [-4, 14],\n [26, 28],\n [20, 12],\n [29, -8],\n [11, 38],\n [35, 7],\n [10, 23],\n [44, 32],\n [4, 13]\n ],\n [\n [7229, 7559],\n [-2, 34],\n [19, 15],\n [-25, 103],\n [55, 24],\n [14, 13],\n [20, 106],\n [55, -20],\n [15, 27],\n [2, 59],\n [23, 6],\n [21, 39]\n ],\n [\n [7426, 7965],\n [11, 5]\n ],\n [\n [7437, 7970],\n [7, -41],\n [23, -32],\n [40, -22],\n [19, -47],\n [-10, -70],\n [10, -25],\n [33, -10],\n [37, -8],\n [33, -37],\n [18, -7],\n [12, -54],\n [17, -35],\n [30, 1],\n [58, -13],\n [36, 8],\n [28, -9],\n [41, -36],\n [34, 0],\n [12, -18],\n [32, 32],\n [45, 20],\n [42, 2],\n [32, 21],\n [20, 32],\n [20, 20],\n [-5, 19],\n [-9, 23],\n [15, 38],\n [15, -5],\n [29, -12],\n [28, 31],\n [42, 23],\n [20, 39],\n [20, 17],\n [40, 8],\n [22, -7],\n [3, 21],\n [-25, 41],\n [-22, 19],\n [-22, -22],\n [-27, 10],\n [-16, -8],\n [-7, 24],\n [20, 59],\n [13, 45]\n ],\n [\n [8240, 8005],\n [34, -23],\n [39, 38],\n [-1, 26],\n [26, 62],\n [15, 19],\n [0, 33],\n [-16, 14],\n [23, 29],\n [35, 11],\n [37, 2],\n [41, -18],\n [25, -22],\n [17, -59],\n [10, -26],\n [10, -36],\n [10, -58],\n [49, -19],\n [32, -42],\n [12, -55],\n [42, 0],\n [24, 23],\n [46, 17],\n [-15, -53],\n [-11, -21],\n [-9, -65],\n [-19, -58],\n [-33, 11],\n [-24, -21],\n [7, -51],\n [-4, -69],\n [-14, -2],\n [0, -30]\n ],\n [\n [4920, 5353],\n [-12, -1],\n [-20, 12],\n [-18, -1],\n [-33, -10],\n [-19, -18],\n [-27, -21],\n [-6, 1]\n ],\n [\n [4785, 5315],\n [2, 49],\n [3, 7],\n [-1, 24],\n [-12, 24],\n [-8, 4],\n [-8, 17],\n [6, 26],\n [-3, 28],\n [1, 18]\n ],\n [\n [4765, 5512],\n [5, 0],\n [1, 25],\n [-2, 12],\n [3, 8],\n [10, 7],\n [-7, 47],\n [-6, 25],\n [2, 20],\n [5, 4]\n ],\n [\n [4776, 5660],\n [4, 6],\n [8, -9],\n [21, -1],\n [5, 18],\n [5, -1],\n [8, 6],\n [4, -25],\n [7, 7],\n [11, 9]\n ],\n [\n [4921, 5627],\n [7, -84],\n [-11, -50],\n [-8, -66],\n [12, -51],\n [-1, -23]\n ],\n [\n [5363, 5191],\n [-4, 4],\n [-16, -8],\n [-17, 8],\n [-13, -4]\n ],\n [\n [5313, 5191],\n [-45, 1]\n ],\n [\n [5268, 5192],\n [4, 47],\n [-11, 39],\n [-13, 10],\n [-6, 27],\n [-7, 8],\n [1, 16]\n ],\n [\n [5236, 5339],\n [7, 42],\n [13, 57],\n [8, 1],\n [17, 34],\n [10, 1],\n [16, -24],\n [19, 20],\n [2, 25],\n [7, 23],\n [4, 30],\n [15, 25],\n [5, 41],\n [6, 13],\n [4, 31],\n [7, 37],\n [24, 46],\n [1, 20],\n [3, 10],\n [-11, 24]\n ],\n [\n [5393, 5795],\n [1, 19],\n [8, 3]\n ],\n [\n [5402, 5817],\n [11, -38],\n [2, -39],\n [-1, -39],\n [15, -54],\n [-15, 1],\n [-8, -4],\n [-13, 6],\n [-6, -28],\n [16, -35],\n [13, -10],\n [3, -24],\n [9, -41],\n [-4, -16]\n ],\n [\n [5444, 5191],\n [-2, -31],\n [-22, 14],\n [-22, 15],\n [-35, 2]\n ],\n [\n [5856, 5265],\n [-2, -69],\n [11, -8],\n [-9, -21],\n [-10, -16],\n [-11, -31],\n [-6, -27],\n [-1, -48],\n [-7, -22],\n [0, -45]\n ],\n [\n [5821, 4978],\n [-8, -16],\n [-1, -35],\n [-4, -5],\n [-2, -32]\n ],\n [\n [5814, 4792],\n [5, -55],\n [-2, -30],\n [5, -35],\n [16, -33],\n [15, -74]\n ],\n [\n [5853, 4565],\n [-11, 6],\n [-37, -10],\n [-7, -7],\n [-8, -38],\n [6, -26],\n [-5, -70],\n [-3, -59],\n [7, -11],\n [19, -23],\n [8, 11],\n [2, -64],\n [-21, 1],\n [-11, 32],\n [-10, 25],\n [-22, 9],\n [-6, 31],\n [-17, -19],\n [-22, 8],\n [-10, 27],\n [-17, 6],\n [-13, -2],\n [-2, 19],\n [-9, 1]\n ],\n [\n [5342, 4697],\n [-4, 18]\n ],\n [\n [5360, 4775],\n [8, -6],\n [9, 23],\n [15, -1],\n [2, -17],\n [11, -10],\n [16, 37],\n [16, 29],\n [7, 19],\n [-1, 48],\n [12, 58],\n [13, 30],\n [18, 29],\n [3, 18],\n [1, 22],\n [5, 21],\n [-2, 33],\n [4, 52],\n [5, 37],\n [8, 32],\n [2, 36]\n ],\n [\n [5760, 5367],\n [17, -49],\n [12, -7],\n [8, 10],\n [12, -4],\n [16, 12],\n [6, -25],\n [25, -39]\n ],\n [\n [5330, 4760],\n [-22, 62]\n ],\n [\n [5308, 4822],\n [21, 33],\n [-11, 39],\n [10, 15],\n [19, 7],\n [2, 26],\n [15, -28],\n [24, -2],\n [9, 27],\n [3, 40],\n [-3, 46],\n [-13, 35],\n [12, 68],\n [-7, 12],\n [-21, -5],\n [-7, 31],\n [2, 25]\n ],\n [\n [2906, 5049],\n [-12, 14],\n [-14, 19],\n [-7, -9],\n [-24, 8],\n [-7, 25],\n [-5, -1],\n [-28, 34]\n ],\n [\n [2809, 5139],\n [-3, 18],\n [10, 5],\n [-1, 29],\n [6, 22],\n [14, 4],\n [12, 37],\n [10, 31],\n [-10, 14],\n [5, 34],\n [-6, 54],\n [6, 16],\n [-4, 50],\n [-12, 31]\n ],\n [\n [2836, 5484],\n [4, 29],\n [9, -4],\n [5, 17],\n [-6, 35],\n [3, 9]\n ],\n [\n [2851, 5570],\n [14, -2],\n [21, 41],\n [12, 6],\n [0, 20],\n [5, 50],\n [16, 27],\n [17, 1],\n [3, 13],\n [21, -5],\n [22, 30],\n [11, 13],\n [14, 28],\n [9, -3],\n [8, -16],\n [-6, -20]\n ],\n [\n [3018, 5753],\n [-18, -10],\n [-7, -29],\n [-10, -17],\n [-8, -22],\n [-4, -42],\n [-8, -35],\n [15, -4],\n [3, -27],\n [6, -13],\n [3, -24],\n [-4, -22],\n [1, -12],\n [7, -5],\n [7, -20],\n [36, 5],\n [16, -7],\n [19, -51],\n [11, 6],\n [20, -3],\n [16, 7],\n [10, -10],\n [-5, -32],\n [-6, -20],\n [-2, -42],\n [5, -40],\n [8, -17],\n [1, -13],\n [-14, -30],\n [10, -13],\n [8, -21],\n [8, -58]\n ],\n [\n [3058, 4804],\n [-14, 31],\n [-8, 1],\n [18, 61],\n [-21, 27],\n [-17, -5],\n [-10, 10],\n [-15, -15],\n [-21, 7],\n [-16, 62],\n [-13, 15],\n [-9, 28],\n [-19, 28],\n [-7, -5]\n ],\n [\n [2695, 5543],\n [-15, 14],\n [-6, 12],\n [4, 10],\n [-1, 13],\n [-8, 14],\n [-11, 12],\n [-10, 8],\n [-1, 17],\n [-8, 10],\n [2, -17],\n [-5, -14],\n [-7, 17],\n [-9, 5],\n [-4, 12],\n [1, 18],\n [3, 19],\n [-8, 8],\n [7, 12]\n ],\n [\n [2619, 5713],\n [4, 7],\n [18, -15],\n [7, 7],\n [9, -5],\n [4, -12],\n [8, -4],\n [7, 13]\n ],\n [\n [2676, 5704],\n [7, -32],\n [11, -24],\n [13, -25]\n ],\n [\n [2707, 5623],\n [-11, -6],\n [0, -23],\n [6, -9],\n [-4, -7],\n [1, -11],\n [-2, -12],\n [-2, -12]\n ],\n [\n [2715, 6427],\n [23, -4],\n [22, 0],\n [26, -21],\n [11, -21],\n [26, 6],\n [10, -13],\n [24, -37],\n [17, -27],\n [9, 1],\n [17, -12],\n [-2, -17],\n [20, -2],\n [21, -24],\n [-3, -14],\n [-19, -7],\n [-18, -3],\n [-19, 4],\n [-40, -5],\n [18, 32],\n [-11, 16],\n [-18, 4],\n [-9, 17],\n [-7, 33],\n [-16, -2],\n [-26, 16],\n [-8, 12],\n [-36, 10],\n [-10, 11],\n [11, 15],\n [-28, 3],\n [-20, -31],\n [-11, -1],\n [-4, -14],\n [-14, -7],\n [-12, 6],\n [15, 18],\n [6, 22],\n [13, 13],\n [14, 11],\n [21, 6],\n [7, 6]\n ],\n [\n [5909, 7133],\n [2, 1],\n [4, 14],\n [20, -1],\n [25, 18],\n [-19, -25],\n [2, -11]\n ],\n [\n [5943, 7129],\n [-3, 2],\n [-5, -5],\n [-4, 1],\n [-2, -2],\n [0, 6],\n [-2, 4],\n [-6, 0],\n [-7, -5],\n [-5, 3]\n ],\n [\n [5943, 7129],\n [1, -5],\n [-28, -24],\n [-14, 8],\n [-7, 23],\n [14, 2]\n ],\n [\n [5377, 7945],\n [-16, 25],\n [-14, 15],\n [-3, 25],\n [-5, 17],\n [21, 13],\n [10, 15],\n [20, 11],\n [7, 11],\n [7, -6],\n [13, 6]\n ],\n [\n [5417, 8077],\n [13, -19],\n [21, -5],\n [-2, -17],\n [15, -12],\n [4, 15],\n [19, -6],\n [3, -19],\n [20, -3],\n [13, -29]\n ],\n [\n [5523, 7982],\n [-8, 0],\n [-4, -11],\n [-7, -3],\n [-2, -13],\n [-5, -3],\n [-1, -5],\n [-9, -7],\n [-12, 1],\n [-4, -13]\n ],\n [\n [5275, 8306],\n [1, -23],\n [28, -14],\n [-1, -21],\n [29, 11],\n [15, 16],\n [32, -23],\n [13, -19]\n ],\n [\n [5392, 8233],\n [6, -30],\n [-8, -16],\n [11, -21],\n [6, -31],\n [-2, -21],\n [12, -37]\n ],\n [\n [5207, 7871],\n [3, 42],\n [14, 40],\n [-40, 11],\n [-13, 16]\n ],\n [\n [5171, 7980],\n [2, 26],\n [-6, 13]\n ],\n [\n [5171, 8059],\n [-5, 62],\n [17, 0],\n [7, 22],\n [6, 54],\n [-5, 20]\n ],\n [\n [5191, 8217],\n [6, 13],\n [23, 3],\n [5, -13],\n [19, 29],\n [-6, 22],\n [-2, 34]\n ],\n [\n [5236, 8305],\n [21, -8],\n [18, 9]\n ],\n [\n [6196, 5808],\n [7, -19],\n [-1, -24],\n [-16, -14],\n [12, -16]\n ],\n [\n [6198, 5735],\n [-10, -32]\n ],\n [\n [6188, 5703],\n [-7, 11],\n [-6, -5],\n [-16, 1],\n [0, 18],\n [-2, 17],\n [9, 27],\n [10, 26]\n ],\n [\n [6176, 5798],\n [12, -5],\n [8, 15]\n ],\n [\n [5352, 8343],\n [-17, -48],\n [-29, 33],\n [-4, 25],\n [41, 19],\n [9, -29]\n ],\n [\n [5236, 8305],\n [-11, 32],\n [-1, 61],\n [5, 16],\n [8, 17],\n [24, 4],\n [10, 16],\n [22, 17],\n [-1, -30],\n [-8, -20],\n [4, -16],\n [15, -9],\n [-7, -22],\n [-8, 6],\n [-20, -42],\n [7, -29]\n ],\n [\n [3008, 6222],\n [3, 10],\n [22, 0],\n [16, -15],\n [8, 1],\n [5, -21],\n [15, 1],\n [-1, -17],\n [12, -2],\n [14, -22],\n [-10, -24],\n [-14, 13],\n [-12, -3],\n [-9, 3],\n [-5, -11],\n [-11, -3],\n [-4, 14],\n [-10, -8],\n [-11, -41],\n [-7, 10],\n [-1, 17]\n ],\n [\n [3008, 6124],\n [0, 16],\n [-7, 17],\n [7, 10],\n [2, 23],\n [-2, 32]\n ],\n [\n [5333, 6444],\n [-95, -112],\n [-81, -117],\n [-39, -26]\n ],\n [\n [5118, 6189],\n [-31, -6],\n [0, 38],\n [-13, 10],\n [-17, 16],\n [-7, 28],\n [-94, 129],\n [-93, 129]\n ],\n [\n [4863, 6533],\n [-105, 143]\n ],\n [\n [4758, 6676],\n [1, 11],\n [0, 4]\n ],\n [\n [4759, 6691],\n [0, 70],\n [44, 44],\n [28, 9],\n [23, 16],\n [11, 29],\n [32, 24],\n [1, 44],\n [16, 5],\n [13, 22],\n [36, 9],\n [5, 23],\n [-7, 13],\n [-10, 62],\n [-1, 36],\n [-11, 38]\n ],\n [\n [4939, 7135],\n [27, 32],\n [30, 11],\n [17, 24],\n [27, 18],\n [47, 11],\n [46, 4],\n [14, -8],\n [26, 23],\n [30, 0],\n [11, -13],\n [19, 3]\n ],\n [\n [5233, 7240],\n [-5, -30],\n [4, -56],\n [-6, -49],\n [-18, -33],\n [3, -45],\n [23, -35],\n [0, -14],\n [17, -24],\n [12, -106]\n ],\n [\n [5263, 6848],\n [9, -52],\n [1, -28],\n [-5, -48],\n [2, -27],\n [-3, -32],\n [2, -37],\n [-11, -25],\n [17, -43],\n [1, -25],\n [10, -33],\n [13, 11],\n [22, -28],\n [12, -37]\n ],\n [\n [2769, 4856],\n [15, 45],\n [-6, 25],\n [-11, -27],\n [-16, 26],\n [5, 16],\n [-4, 54],\n [9, 9],\n [5, 37],\n [11, 38],\n [-2, 24],\n [15, 13],\n [19, 23]\n ],\n [\n [2906, 5049],\n [4, -45],\n [-9, -39],\n [-30, -62],\n [-33, -23],\n [-17, -51],\n [-6, -40],\n [-15, -24],\n [-12, 29],\n [-11, 7],\n [-12, -5],\n [-1, 22],\n [8, 14],\n [-3, 24]\n ],\n [\n [5969, 6800],\n [-7, -23],\n [-6, -45],\n [-8, -31],\n [-6, -10],\n [-10, 19],\n [-12, 26],\n [-20, 85],\n [-3, -5],\n [12, -63],\n [17, -59],\n [21, -92],\n [10, -32],\n [9, -34],\n [25, -65],\n [-6, -10],\n [1, -39],\n [33, -53],\n [4, -12]\n ],\n [\n [6023, 6357],\n [-110, 0],\n [-107, 0],\n [-112, 0]\n ],\n [\n [5694, 6357],\n [0, 218],\n [0, 210],\n [-8, 47],\n [7, 37],\n [-5, 25],\n [10, 29]\n ],\n [\n [5698, 6923],\n [37, 0],\n [27, -15],\n [28, -18],\n [13, -9],\n [21, 19],\n [11, 17],\n [25, 5],\n [20, -8],\n [7, -29],\n [7, 19],\n [22, -14],\n [22, -3],\n [13, 15]\n ],\n [\n [5951, 6902],\n [18, -102]\n ],\n [\n [6176, 5798],\n [-10, 20],\n [-11, 34],\n [-12, 19],\n [-8, 21],\n [-24, 23],\n [-19, 1],\n [-7, 12],\n [-16, -14],\n [-17, 27],\n [-8, -44],\n [-33, 13]\n ],\n [\n [6011, 5910],\n [-3, 23],\n [12, 87],\n [3, 39],\n [9, 18],\n [20, 10],\n [14, 34]\n ],\n [\n [6066, 6121],\n [16, -69],\n [8, -54],\n [15, -29],\n [38, -55],\n [16, -34],\n [15, -34],\n [8, -20],\n [14, -18]\n ],\n [\n [4749, 7532],\n [1, 42],\n [-11, 25],\n [39, 43],\n [34, -11],\n [37, 1],\n [30, -10],\n [23, 3],\n [45, -2]\n ],\n [\n [4947, 7623],\n [11, -23],\n [51, -27],\n [10, 13],\n [31, -27],\n [32, 8]\n ],\n [\n [5082, 7567],\n [2, -35],\n [-26, -39],\n [-36, -12],\n [-2, -20],\n [-18, -33],\n [-10, -48],\n [11, -34],\n [-16, -26],\n [-6, -39],\n [-21, -11],\n [-20, -46],\n [-35, -1],\n [-27, 1],\n [-17, -21],\n [-11, -22],\n [-13, 5],\n [-11, 20],\n [-8, 34],\n [-26, 9]\n ],\n [\n [4792, 7249],\n [-2, 20],\n [10, 22],\n [4, 16],\n [-9, 17],\n [7, 39],\n [-11, 36],\n [12, 5],\n [1, 27],\n [5, 9],\n [0, 46],\n [13, 16],\n [-8, 30],\n [-16, 2],\n [-5, -8],\n [-16, 0],\n [-7, 29],\n [-11, -8],\n [-10, -15]\n ],\n [\n [5675, 8472],\n [3, 35],\n [-10, -8],\n [-18, 21],\n [-2, 34],\n [35, 17],\n [35, 8],\n [30, -10],\n [29, 2]\n ],\n [\n [5777, 8571],\n [4, -10],\n [-20, -34],\n [8, -55],\n [-12, -19]\n ],\n [\n [5757, 8453],\n [-22, 0],\n [-24, 22],\n [-13, 7],\n [-23, -10]\n ],\n [\n [6188, 5703],\n [-6, -21],\n [10, -32],\n [10, -29],\n [11, -21],\n [90, -70],\n [24, 0]\n ],\n [\n [6327, 5530],\n [-79, -177],\n [-36, -3],\n [-25, -41],\n [-17, -1],\n [-8, -19]\n ],\n [\n [6162, 5289],\n [-19, 0],\n [-11, 20],\n [-26, -25],\n [-8, -24],\n [-18, 4],\n [-6, 7],\n [-7, -1],\n [-9, 0],\n [-35, 50],\n [-19, 0],\n [-10, 20],\n [0, 33],\n [-14, 10]\n ],\n [\n [5980, 5383],\n [-17, 64],\n [-12, 14],\n [-5, 23],\n [-14, 29],\n [-17, 4],\n [9, 34],\n [15, 2],\n [4, 18]\n ],\n [\n [5943, 5571],\n [0, 53]\n ],\n [\n [5943, 5624],\n [8, 62],\n [13, 16],\n [3, 24],\n [12, 45],\n [17, 30],\n [11, 58],\n [4, 51]\n ],\n [\n [5794, 9138],\n [-4, -42],\n [42, -39],\n [-26, -45],\n [33, -67],\n [-19, -51],\n [25, -43],\n [-11, -39],\n [41, -40],\n [-11, -31],\n [-25, -34],\n [-60, -75]\n ],\n [\n [5779, 8632],\n [-50, -5],\n [-49, -21],\n [-45, -13],\n [-16, 32],\n [-27, 20],\n [6, 58],\n [-14, 53],\n [14, 35],\n [25, 37],\n [63, 64],\n [19, 12],\n [-3, 25],\n [-39, 28]\n ],\n [\n [5663, 8957],\n [-9, 23],\n [-1, 91],\n [-43, 40],\n [-37, 29]\n ],\n [\n [5573, 9140],\n [17, 16],\n [30, -32],\n [37, 3],\n [30, -14],\n [26, 26],\n [14, 44],\n [43, 20],\n [35, -24],\n [-11, -41]\n ],\n [\n [9954, 4033],\n [9, -17],\n [-4, -31],\n [-17, -8],\n [-16, 7],\n [-2, 26],\n [10, 21],\n [13, -8],\n [7, 10]\n ],\n [\n [0, 4079],\n [9981, -14],\n [-17, -13],\n [-4, 23],\n [14, 12],\n [9, 3],\n [-9983, 18]\n ],\n [\n [0, 4108],\n [0, -29]\n ],\n [\n [0, 4108],\n [6, 3],\n [-4, -28],\n [-2, -4]\n ],\n [\n [3300, 1994],\n [33, 36],\n [24, -15],\n [16, 24],\n [22, -27],\n [-8, -21],\n [-37, -17],\n [-13, 20],\n [-23, -26],\n [-14, 26]\n ],\n [\n [5265, 7548],\n [-9, -46],\n [-13, 12],\n [-6, 40],\n [5, 22],\n [18, 22],\n [5, -50]\n ],\n [\n [5157, 7984],\n [6, -6],\n [8, 2]\n ],\n [\n [5190, 7775],\n [-2, -17],\n [9, -22],\n [-10, -18],\n [7, -46],\n [15, -8],\n [-3, -25]\n ],\n [\n [5206, 7639],\n [-25, -34],\n [-55, 16],\n [-40, -19],\n [-4, -35]\n ],\n [\n [4947, 7623],\n [14, 35],\n [5, 118],\n [-28, 62],\n [-21, 30],\n [-42, 23],\n [-3, 43],\n [36, 12],\n [47, -15],\n [-9, 67],\n [26, -25],\n [65, 46],\n [8, 48],\n [24, 12]\n ],\n [\n [3485, 5194],\n [7, 25],\n [3, 27]\n ],\n [\n [3495, 5246],\n [4, 26],\n [-10, 34]\n ],\n [\n [3489, 5306],\n [-3, 41],\n [15, 51]\n ],\n [\n [3501, 5398],\n [9, -7],\n [21, -14],\n [29, -50],\n [5, -24]\n ],\n [\n [5308, 4822],\n [-29, 60],\n [-18, 49],\n [-17, 61],\n [1, 19],\n [6, 19],\n [7, 43],\n [5, 44]\n ],\n [\n [5263, 5117],\n [10, 4],\n [40, -1],\n [0, 71]\n ],\n [\n [4827, 8240],\n [-21, 12],\n [-17, -1],\n [6, 32],\n [-6, 32]\n ],\n [\n [4789, 8315],\n [23, 2],\n [30, -37],\n [-15, -40]\n ],\n [\n [4916, 8521],\n [-30, -63],\n [29, 8],\n [30, -1],\n [-7, -48],\n [-25, -53],\n [29, -4],\n [2, -6],\n [25, -69],\n [19, -10],\n [17, -67],\n [8, -24],\n [33, -11],\n [-3, -38],\n [-14, -17],\n [11, -30],\n [-25, -31],\n [-37, 0],\n [-48, -16],\n [-13, 12],\n [-18, -28],\n [-26, 7],\n [-19, -23],\n [-15, 12],\n [41, 62],\n [25, 13],\n [-1, 0],\n [-43, 9],\n [-8, 24],\n [29, 18],\n [-15, 32],\n [5, 39],\n [42, -6],\n [4, 35],\n [-19, 36],\n [0, 1],\n [-34, 10],\n [-7, 16],\n [10, 27],\n [-9, 16],\n [-15, -28],\n [-1, 57],\n [-14, 30],\n [10, 61],\n [21, 48],\n [23, -4],\n [33, 4]\n ],\n [\n [6154, 7511],\n [4, 26],\n [-7, 40],\n [-16, 22],\n [-16, 6],\n [-10, 19]\n ],\n [\n [6109, 7624],\n [4, 6],\n [23, -10],\n [41, -9],\n [38, -28],\n [5, -11],\n [17, 9],\n [25, -13],\n [9, -24],\n [17, -13]\n ],\n [\n [6210, 7485],\n [-27, 29],\n [-29, -3]\n ],\n [\n [5029, 5408],\n [-44, -35],\n [-15, -20],\n [-25, -17],\n [-25, 17]\n ],\n [\n [5000, 5708],\n [-2, -18],\n [12, -30],\n [0, -43],\n [2, -47],\n [7, -21],\n [-6, -54],\n [2, -29],\n [8, -37],\n [6, -21]\n ],\n [\n [4765, 5512],\n [-8, 1],\n [-5, -24],\n [-8, 1],\n [-6, 12],\n [2, 24],\n [-11, 36],\n [-8, -7],\n [-6, -1]\n ],\n [\n [4715, 5554],\n [-7, -3],\n [0, 21],\n [-4, 16],\n [0, 17],\n [-6, 25],\n [-7, 21],\n [-23, 0],\n [-6, -11],\n [-8, -1],\n [-4, -13],\n [-4, -17],\n [-14, -26]\n ],\n [\n [4632, 5583],\n [-13, 35],\n [-10, 24],\n [-8, 7],\n [-6, 12],\n [-4, 26],\n [-4, 13],\n [-8, 10]\n ],\n [\n [4579, 5710],\n [13, 29],\n [8, -2],\n [7, 10],\n [6, 0],\n [5, 8],\n [-3, 20],\n [3, 6],\n [1, 20]\n ],\n [\n [4619, 5801],\n [13, -1],\n [20, -14],\n [6, 1],\n [3, 7],\n [15, -5],\n [4, 4]\n ],\n [\n [4680, 5793],\n [1, -22],\n [5, 0],\n [7, 8],\n [5, -2],\n [7, -15],\n [12, -5],\n [8, 13],\n [9, 8],\n [6, 8],\n [6, -1],\n [6, -13],\n [3, -17],\n [12, -24],\n [-6, -16],\n [-1, -19],\n [6, 6],\n [3, -7],\n [-1, -17],\n [8, -18]\n ],\n [\n [4532, 5834],\n [3, 27]\n ],\n [\n [4535, 5861],\n [31, 1],\n [6, 14],\n [9, 1],\n [11, -14],\n [8, -1],\n [9, 10],\n [6, -17],\n [-12, -13],\n [-12, 1],\n [-12, 13],\n [-10, -14],\n [-5, -1],\n [-7, -8],\n [-25, 1]\n ],\n [\n [4579, 5710],\n [-15, 24],\n [-11, 4],\n [-7, 17],\n [1, 9],\n [-9, 13],\n [-2, 12]\n ],\n [\n [4536, 5789],\n [15, 10],\n [9, -2],\n [8, 7],\n [51, -3]\n ],\n [\n [5263, 5117],\n [-5, 9],\n [10, 66]\n ],\n [\n [5658, 7167],\n [15, -20],\n [22, 3],\n [20, -4],\n [0, -10],\n [15, 7],\n [-4, -18],\n [-40, -5],\n [1, 10],\n [-34, 12],\n [5, 25]\n ],\n [\n [5723, 7469],\n [-17, 2],\n [-14, 6],\n [-34, -16],\n [19, -33],\n [-14, -10],\n [-15, 0],\n [-15, 31],\n [-5, -13],\n [6, -36],\n [14, -27],\n [-10, -13],\n [15, -27],\n [14, -18],\n [0, -33],\n [-25, 16],\n [8, -30],\n [-18, -7],\n [11, -52],\n [-19, -1],\n [-23, 26],\n [-10, 47],\n [-5, 40],\n [-11, 27],\n [-14, 34],\n [-2, 16]\n ],\n [\n [5583, 7470],\n [18, 6],\n [11, 13],\n [15, -2],\n [5, 11],\n [5, 2]\n ],\n [\n [5725, 7529],\n [13, -16],\n [-8, -37],\n [-7, -7]\n ],\n [\n [3701, 9939],\n [93, 35],\n [97, -2],\n [36, 21],\n [98, 6],\n [222, -7],\n [174, -47],\n [-52, -23],\n [-106, -3],\n [-150, -5],\n [14, -11],\n [99, 7],\n [83, -21],\n [54, 18],\n [23, -21],\n [-30, -34],\n [71, 22],\n [135, 23],\n [83, -12],\n [15, -25],\n [-113, -42],\n [-16, -14],\n [-88, -10],\n [64, -3],\n [-32, -43],\n [-23, -38],\n [1, -66],\n [33, -38],\n [-43, -3],\n [-46, -19],\n [52, -31],\n [6, -50],\n [-30, -6],\n [36, -50],\n [-61, -5],\n [32, -24],\n [-9, -20],\n [-39, -10],\n [-39, 0],\n [35, -40],\n [0, -26],\n [-55, 24],\n [-14, -15],\n [37, -15],\n [37, -36],\n [10, -48],\n [-49, -11],\n [-22, 22],\n [-34, 34],\n [10, -40],\n [-33, -31],\n [73, -2],\n [39, -3],\n [-75, -52],\n [-75, -46],\n [-81, -21],\n [-31, 0],\n [-29, -23],\n [-38, -62],\n [-60, -42],\n [-19, -2],\n [-37, -15],\n [-40, -13],\n [-24, -37],\n [0, -41],\n [-15, -39],\n [-45, -47],\n [11, -47],\n [-12, -48],\n [-14, -58],\n [-39, -4],\n [-41, 49],\n [-56, 0],\n [-27, 32],\n [-18, 58],\n [-49, 73],\n [-14, 39],\n [-3, 53],\n [-39, 54],\n [10, 44],\n [-18, 21],\n [27, 69],\n [42, 22],\n [11, 25],\n [6, 46],\n [-32, -21],\n [-15, -9],\n [-25, -8],\n [-34, 19],\n [-2, 40],\n [11, 31],\n [25, 1],\n [57, -15],\n [-48, 37],\n [-24, 20],\n [-28, -8],\n [-23, 15],\n [31, 55],\n [-17, 22],\n [-22, 41],\n [-34, 62],\n [-35, 23],\n [0, 25],\n [-74, 34],\n [-59, 5],\n [-74, -3],\n [-68, -4],\n [-32, 19],\n [-49, 37],\n [73, 19],\n [56, 3],\n [-119, 15],\n [-62, 24],\n [3, 23],\n [106, 28],\n [101, 29],\n [11, 21],\n [-75, 22],\n [24, 23],\n [97, 41],\n [40, 7],\n [-12, 26],\n [66, 16],\n [86, 9],\n [85, 1],\n [30, -19],\n [74, 33],\n [66, -22],\n [39, -5],\n [58, -19],\n [-66, 32],\n [4, 25]\n ],\n [\n [2497, 5869],\n [-14, 10],\n [-17, 1],\n [-13, 12],\n [-15, 24]\n ],\n [\n [2438, 5916],\n [1, 18],\n [3, 13],\n [-4, 12],\n [13, 48],\n [36, 0],\n [1, 20],\n [-5, 4],\n [-3, 12],\n [-10, 14],\n [-11, 20],\n [13, 0],\n [0, 33],\n [26, 0],\n [26, 0]\n ],\n [\n [2529, 5996],\n [10, -11],\n [2, 9],\n [8, -7]\n ],\n [\n [2549, 5987],\n [-13, -23],\n [-13, -16],\n [-2, -12],\n [2, -11],\n [-5, -15]\n ],\n [\n [2518, 5910],\n [-7, -4],\n [2, -7],\n [-6, -6],\n [-9, -15],\n [-1, -9]\n ],\n [\n [3340, 5552],\n [18, -22],\n [17, -38],\n [1, -31],\n [10, -1],\n [15, -29],\n [11, -21]\n ],\n [\n [3412, 5410],\n [-4, -53],\n [-17, -15],\n [1, -14],\n [-5, -31],\n [13, -42],\n [9, -1],\n [3, -33],\n [17, -51]\n ],\n [\n [3313, 5365],\n [-19, 45],\n [7, 16],\n [0, 27],\n [17, 10],\n [7, 11],\n [-10, 22],\n [3, 21],\n [22, 35]\n ],\n [\n [2574, 5825],\n [-5, 18],\n [-8, 5]\n ],\n [\n [2561, 5848],\n [2, 24],\n [-4, 6],\n [-6, 4],\n [-12, -7],\n [-1, 8],\n [-8, 10],\n [-6, 12],\n [-8, 5]\n ],\n [\n [2549, 5987],\n [3, -3],\n [6, 11],\n [8, 1],\n [3, -5],\n [4, 3],\n [13, -6],\n [13, 2],\n [9, 6],\n [3, 7],\n [9, -3],\n [6, -4],\n [8, 1],\n [5, 5],\n [13, -8],\n [4, -1],\n [9, -11],\n [8, -13],\n [10, -9],\n [7, -17]\n ],\n [\n [2690, 5943],\n [-9, 2],\n [-4, -8],\n [-10, -8],\n [-7, 0],\n [-6, -8],\n [-6, 3],\n [-4, 9],\n [-3, -2],\n [-4, -14],\n [-3, 1],\n [0, -12],\n [-10, -17],\n [-5, -7],\n [-3, -7],\n [-8, 12],\n [-6, -16],\n [-6, 1],\n [-6, -2],\n [0, -29],\n [-4, 0],\n [-3, -14],\n [-9, -2]\n ],\n [\n [5522, 7770],\n [7, -23],\n [9, -17],\n [-11, -22]\n ],\n [\n [5515, 7577],\n [-3, -10]\n ],\n [\n [5512, 7567],\n [-26, 22],\n [-16, 21],\n [-26, 18],\n [-23, 43],\n [6, 5],\n [-13, 25],\n [-1, 19],\n [-17, 10],\n [-9, -26],\n [-8, 20],\n [0, 21],\n [1, 1]\n ],\n [\n [5380, 7746],\n [20, -2],\n [5, 9],\n [9, -9],\n [11, -1],\n [0, 16],\n [10, 6],\n [2, 24],\n [23, 16]\n ],\n [\n [5460, 7805],\n [8, -7],\n [21, -26],\n [23, -11],\n [10, 9]\n ],\n [\n [3008, 6124],\n [-19, 10],\n [-13, -5],\n [-17, 5],\n [-13, -11],\n [-15, 18],\n [3, 19],\n [25, -8],\n [21, -5],\n [10, 13],\n [-12, 26],\n [0, 23],\n [-18, 9],\n [7, 16],\n [17, -3],\n [24, -9]\n ],\n [\n [5471, 7900],\n [14, -15],\n [10, -6],\n [24, 7],\n [2, 12],\n [11, 2],\n [14, 9],\n [3, -4],\n [13, 8],\n [6, 13],\n [9, 4],\n [30, -18],\n [6, 6]\n ],\n [\n [5613, 7918],\n [15, -16],\n [2, -16]\n ],\n [\n [5630, 7886],\n [-17, -12],\n [-13, -40],\n [-17, -40],\n [-22, -11]\n ],\n [\n [5561, 7783],\n [-17, 2],\n [-22, -15]\n ],\n [\n [5460, 7805],\n [-6, 20],\n [-4, 0]\n ],\n [\n [8352, 4453],\n [-11, -2],\n [-37, 42],\n [26, 11],\n [14, -18],\n [10, -17],\n [-2, -16]\n ],\n [\n [8471, 4532],\n [2, -11],\n [1, -18]\n ],\n [\n [8474, 4503],\n [-18, -45],\n [-24, -13],\n [-3, 8],\n [2, 20],\n [12, 36],\n [28, 23]\n ],\n [\n [8274, 4579],\n [10, -16],\n [17, 5],\n [7, -25],\n [-32, -12],\n [-19, -8],\n [-15, 1],\n [10, 34],\n [15, 0],\n [7, 21]\n ],\n [\n [8413, 4579],\n [-4, -32],\n [-42, -17],\n [-37, 7],\n [0, 22],\n [22, 12],\n [18, -18],\n [18, 5],\n [25, 21]\n ],\n [\n [8017, 4657],\n [53, -6],\n [6, 25],\n [51, -29],\n [10, -38],\n [42, -11],\n [34, -35],\n [-31, -23],\n [-31, 24],\n [-25, -1],\n [-29, 4],\n [-26, 11],\n [-32, 22],\n [-21, 6],\n [-11, -7],\n [-51, 24],\n [-5, 25],\n [-25, 5],\n [19, 56],\n [34, -3],\n [22, -23],\n [12, -5],\n [4, -21]\n ],\n [\n [8741, 4690],\n [-14, -40],\n [-3, 45],\n [5, 21],\n [6, 20],\n [7, -17],\n [-1, -29]\n ],\n [\n [8534, 4853],\n [-11, -19],\n [-19, 10],\n [-5, 26],\n [28, 3],\n [7, -20]\n ],\n [\n [8623, 4875],\n [10, -45],\n [-23, 24],\n [-23, 5],\n [-16, -4],\n [-19, 2],\n [6, 33],\n [35, 2],\n [30, -17]\n ],\n [\n [8916, 4904],\n [0, -193],\n [1, -192]\n ],\n [\n [8917, 4519],\n [-25, 48],\n [-28, 12],\n [-7, -17],\n [-35, -1],\n [12, 48],\n [17, 16],\n [-7, 64],\n [-14, 50],\n [-53, 50],\n [-23, 5],\n [-42, 54],\n [-8, -28],\n [-11, -5],\n [-6, 21],\n [0, 26],\n [-21, 29],\n [29, 21],\n [20, -1],\n [-2, 16],\n [-41, 0],\n [-11, 35],\n [-25, 11],\n [-11, 29],\n [37, 14],\n [14, 20],\n [45, -25],\n [4, -22],\n [8, -95],\n [29, -35],\n [23, 62],\n [32, 36],\n [25, 0],\n [23, -21],\n [21, -21],\n [30, -11]\n ],\n [\n [8478, 5141],\n [-22, -58],\n [-21, -12],\n [-27, 12],\n [-46, -3],\n [-24, -8],\n [-4, -45],\n [24, -53],\n [15, 27],\n [52, 20],\n [-2, -27],\n [-12, 9],\n [-12, -35],\n [-25, -23],\n [27, -76],\n [-5, -20],\n [25, -68],\n [-1, -39],\n [-14, -17],\n [-11, 20],\n [13, 49],\n [-27, -23],\n [-7, 16],\n [3, 23],\n [-20, 35],\n [3, 57],\n [-19, -18],\n [2, -69],\n [1, -84],\n [-17, -9],\n [-12, 18],\n [8, 54],\n [-4, 57],\n [-12, 1],\n [-9, 40],\n [12, 39],\n [4, 47],\n [14, 89],\n [5, 24],\n [24, 44],\n [22, -18],\n [35, -8],\n [32, 3],\n [27, 43],\n [5, -14]\n ],\n [\n [8574, 5124],\n [-2, -51],\n [-14, 6],\n [-4, -36],\n [11, -32],\n [-8, -7],\n [-11, 38],\n [-8, 75],\n [6, 47],\n [9, 22],\n [2, -32],\n [16, -5],\n [3, -25]\n ],\n [\n [8045, 5176],\n [5, -39],\n [19, -34],\n [18, 12],\n [18, -4],\n [16, 30],\n [13, 5],\n [26, -17],\n [23, 13],\n [14, 82],\n [11, 21],\n [10, 67],\n [32, 0],\n [24, -10]\n ],\n [\n [8274, 5302],\n [-16, -53],\n [20, -56],\n [-5, -28],\n [32, -54],\n [-33, -7],\n [-10, -40],\n [2, -54],\n [-27, -40],\n [-1, -59],\n [-10, -91],\n [-5, 21],\n [-31, -26],\n [-11, 36],\n [-20, 3],\n [-14, 19],\n [-33, -21],\n [-10, 29],\n [-18, -4],\n [-23, 7],\n [-4, 79],\n [-14, 17],\n [-13, 50],\n [-4, 52],\n [3, 55],\n [16, 39]\n ],\n [\n [7939, 4712],\n [-31, -1],\n [-24, 49],\n [-35, 48],\n [-12, 36],\n [-21, 48],\n [-14, 44],\n [-21, 83],\n [-24, 49],\n [-9, 51],\n [-10, 46],\n [-25, 37],\n [-14, 51],\n [-21, 33],\n [-29, 65],\n [-3, 30],\n [18, -2],\n [43, -12],\n [25, -57],\n [21, -40],\n [16, -25],\n [26, -63],\n [28, -1],\n [23, -41],\n [16, -49],\n [22, -27],\n [-12, -49],\n [16, -20],\n [10, -2],\n [5, -41],\n [10, -33],\n [20, -5],\n [14, -37],\n [-7, -74],\n [-1, -91]\n ],\n [\n [7252, 6841],\n [-17, -27],\n [-11, -55],\n [27, -23],\n [26, -29],\n [36, -33],\n [38, -8],\n [16, -30],\n [22, -5],\n [33, -14],\n [23, 1],\n [4, 23],\n [-4, 38],\n [2, 25]\n ],\n [\n [7703, 6727],\n [2, -22],\n [-10, -11],\n [2, -36],\n [-19, 10],\n [-36, -41],\n [0, -33],\n [-15, -50],\n [-1, -29],\n [-13, -48],\n [-21, 13],\n [-1, -61],\n [-7, -20],\n [3, -25],\n [-14, -14]\n ],\n [\n [7472, 6360],\n [-4, -21],\n [-19, 1],\n [-34, -13],\n [2, -44],\n [-15, -35],\n [-40, -40],\n [-31, -69],\n [-21, -38],\n [-28, -38],\n [0, -27],\n [-13, -15],\n [-26, -21],\n [-12, -3],\n [-9, -45],\n [6, -77],\n [1, -49],\n [-11, -56],\n [0, -101],\n [-15, -2],\n [-12, -46],\n [8, -19],\n [-25, -17],\n [-10, -40],\n [-11, -17],\n [-26, 55],\n [-13, 83],\n [-11, 60],\n [-9, 28],\n [-15, 56],\n [-7, 74],\n [-5, 37],\n [-25, 81],\n [-12, 115],\n [-8, 75],\n [0, 72],\n [-5, 55],\n [-41, -35],\n [-19, 7],\n [-36, 71],\n [13, 22],\n [-8, 23],\n [-33, 50]\n ],\n [\n [6893, 6457],\n [19, 40],\n [61, -1],\n [-6, 51],\n [-15, 30],\n [-4, 46],\n [-18, 26],\n [31, 62],\n [32, -4],\n [29, 61],\n [18, 60],\n [27, 60],\n [-1, 42],\n [24, 34],\n [-23, 29],\n [-9, 40],\n [-10, 52],\n [14, 25],\n [42, -14],\n [31, 9],\n [26, 49]\n ],\n [\n [4827, 8240],\n [5, -42],\n [-21, -53],\n [-49, -35],\n [-40, 9],\n [23, 62],\n [-15, 60],\n [38, 46],\n [21, 28]\n ],\n [\n [6497, 7255],\n [25, 12],\n [19, 33],\n [19, -1],\n [12, 11],\n [20, -6],\n [31, -30],\n [22, -6],\n [31, -53],\n [21, -2],\n [3, -49]\n ],\n [\n [6690, 6820],\n [14, -31],\n [11, -36],\n [27, -26],\n [1, -52],\n [13, -10],\n [2, -27],\n [-40, -30],\n [-10, -69]\n ],\n [\n [6708, 6539],\n [-53, 18],\n [-30, 13],\n [-31, 8],\n [-12, 73],\n [-13, 10],\n [-22, -11],\n [-28, -28],\n [-34, 20],\n [-28, 45],\n [-27, 17],\n [-18, 56],\n [-21, 79],\n [-15, -10],\n [-17, 20],\n [-11, -24]\n ],\n [\n [6348, 6825],\n [-15, 32],\n [0, 31],\n [-9, 0],\n [5, 43],\n [-15, 45],\n [-34, 32],\n [-19, 56],\n [6, 46],\n [14, 21],\n [-2, 34],\n [-18, 18],\n [-18, 70]\n ],\n [\n [6243, 7253],\n [-15, 48],\n [5, 18],\n [-8, 68],\n [19, 17]\n ],\n [\n [6357, 7321],\n [9, -43],\n [26, -13],\n [20, -29],\n [39, -10],\n [44, 15],\n [2, 14]\n ],\n [\n [6348, 6825],\n [-16, 3]\n ],\n [\n [6332, 6828],\n [-19, 5],\n [-20, -56]\n ],\n [\n [6293, 6777],\n [-52, 4],\n [-78, 119],\n [-41, 41],\n [-34, 16]\n ],\n [\n [6088, 6957],\n [-11, 72]\n ],\n [\n [6077, 7029],\n [61, 62],\n [11, 71],\n [-3, 43],\n [16, 15],\n [14, 37]\n ],\n [\n [6176, 7257],\n [12, 9],\n [32, -8],\n [10, -15],\n [13, 10]\n ],\n [\n [4597, 8984],\n [-7, -39],\n [31, -40],\n [-36, -45],\n [-80, -41],\n [-24, -10],\n [-36, 8],\n [-78, 19],\n [28, 26],\n [-61, 29],\n [49, 12],\n [-1, 17],\n [-58, 14],\n [19, 38],\n [42, 9],\n [43, -40],\n [42, 32],\n [35, -17],\n [45, 32],\n [47, -4]\n ],\n [\n [5992, 6990],\n [-5, -19]\n ],\n [\n [5987, 6971],\n [-10, 8],\n [-6, -39],\n [7, -7],\n [-7, -8],\n [-1, -15],\n [13, 8]\n ],\n [\n [5983, 6918],\n [0, -23],\n [-14, -95]\n ],\n [\n [5951, 6902],\n [8, 19],\n [-2, 4],\n [8, 27],\n [5, 45],\n [4, 15],\n [1, 0]\n ],\n [\n [5975, 7012],\n [9, 0],\n [3, 11],\n [7, 0]\n ],\n [\n [5994, 7023],\n [1, -24],\n [-4, -9],\n [1, 0]\n ],\n [\n [5431, 7316],\n [-10, -46],\n [4, -19],\n [-6, -30],\n [-21, 22],\n [-14, 7],\n [-39, 30],\n [4, 30],\n [32, -6],\n [28, 7],\n [22, 5]\n ],\n [\n [5255, 7492],\n [17, -42],\n [-4, -78],\n [-13, 4],\n [-11, -20],\n [-10, 16],\n [-2, 71],\n [-6, 34],\n [15, -3],\n [14, 18]\n ],\n [\n [5383, 7805],\n [-3, -29],\n [7, -25]\n ],\n [\n [5387, 7751],\n [-22, 8],\n [-23, -20],\n [1, -30],\n [-3, -17],\n [9, -30],\n [26, -29],\n [14, -49],\n [31, -48],\n [22, 0],\n [7, -13],\n [-8, -11],\n [25, -22],\n [20, -18],\n [24, -30],\n [3, -11],\n [-5, -22],\n [-16, 28],\n [-24, 10],\n [-12, -39],\n [20, -21],\n [-3, -31],\n [-11, -4],\n [-15, -50],\n [-12, -5],\n [0, 18],\n [6, 32],\n [6, 12],\n [-11, 35],\n [-8, 29],\n [-12, 8],\n [-8, 25],\n [-18, 11],\n [-12, 24],\n [-21, 4],\n [-21, 26],\n [-26, 39],\n [-19, 34],\n [-8, 58],\n [-14, 7],\n [-23, 20],\n [-12, -8],\n [-16, -28],\n [-12, -4]\n ],\n [\n [2845, 6150],\n [19, -5],\n [14, -15],\n [5, -16],\n [-19, -1],\n [-9, -10],\n [-15, 10],\n [-16, 21],\n [3, 14],\n [12, 4],\n [6, -2]\n ],\n [\n [5992, 6990],\n [31, -24],\n [54, 63]\n ],\n [\n [6088, 6957],\n [-5, -8],\n [-56, -30],\n [28, -59],\n [-9, -10],\n [-5, -20],\n [-21, -8],\n [-7, -21],\n [-12, -19],\n [-31, 10]\n ],\n [\n [5970, 6792],\n [-1, 8]\n ],\n [\n [5983, 6918],\n [4, 17],\n [0, 36]\n ],\n [\n [8739, 7075],\n [4, -20],\n [-16, -36],\n [-11, 19],\n [-15, -14],\n [-7, -34],\n [-18, 16],\n [0, 28],\n [15, 36],\n [16, -7],\n [12, 25],\n [20, -13]\n ],\n [\n [8915, 7252],\n [-10, -47],\n [4, -30],\n [-14, -42],\n [-35, -27],\n [-49, -4],\n [-40, -67],\n [-19, 22],\n [-1, 44],\n [-48, -13],\n [-33, -27],\n [-32, -2],\n [28, -43],\n [-19, -101],\n [-18, -24],\n [-13, 23],\n [7, 53],\n [-18, 17],\n [-11, 41],\n [26, 18],\n [15, 37],\n [28, 30],\n [20, 41],\n [55, 17],\n [30, -12],\n [29, 105],\n [19, -28],\n [40, 59],\n [16, 23],\n [18, 72],\n [-5, 67],\n [11, 37],\n [30, 11],\n [15, -82],\n [-1, -48],\n [-25, -59],\n [0, -61]\n ],\n [\n [8997, 7667],\n [19, -12],\n [20, 25],\n [6, -67],\n [-41, -16],\n [-25, -59],\n [-43, 41],\n [-15, -65],\n [-31, -1],\n [-4, 59],\n [14, 46],\n [29, 3],\n [8, 82],\n [9, 46],\n [32, -62],\n [22, -20]\n ],\n [\n [6970, 7554],\n [-15, -10],\n [-37, -42],\n [-12, -42],\n [-11, 0],\n [-7, 28],\n [-36, 2],\n [-5, 48],\n [-14, 0],\n [2, 60],\n [-33, 43],\n [-48, -5],\n [-32, -8],\n [-27, 53],\n [-22, 22],\n [-43, 43],\n [-6, 5],\n [-71, -35],\n [1, -218]\n ],\n [\n [6554, 7498],\n [-14, -3],\n [-20, 46],\n [-18, 17],\n [-32, -12],\n [-12, -20]\n ],\n [\n [6458, 7526],\n [-2, 14],\n [7, 25],\n [-5, 21],\n [-32, 20],\n [-13, 53],\n [-15, 15],\n [-1, 19],\n [27, -6],\n [1, 44],\n [23, 9],\n [25, -9],\n [5, 58],\n [-5, 36],\n [-28, -2],\n [-24, 14],\n [-32, -26],\n [-26, -12]\n ],\n [\n [6363, 7799],\n [-14, 9],\n [3, 31],\n [-18, 39],\n [-20, -2],\n [-24, 40],\n [16, 45],\n [-8, 12],\n [22, 65],\n [29, -34],\n [3, 43],\n [58, 64],\n [43, 2],\n [61, -41],\n [33, -24],\n [30, 25],\n [44, 1],\n [35, -30],\n [8, 17],\n [39, -2],\n [7, 28],\n [-45, 40],\n [27, 29],\n [-5, 16],\n [26, 15],\n [-20, 41],\n [13, 20],\n [104, 21],\n [13, 14],\n [70, 22],\n [25, 24],\n [50, -12],\n [9, -61],\n [29, 14],\n [35, -20],\n [-2, -32],\n [27, 3],\n [69, 56],\n [-10, -19],\n [35, -46],\n [62, -150],\n [15, 31],\n [39, -34],\n [39, 16],\n [16, -11],\n [13, -34],\n [20, -12],\n [11, -25],\n [36, 8],\n [15, -36]\n ],\n [\n [7229, 7559],\n [-17, 9],\n [-14, 21],\n [-42, 6],\n [-46, 2],\n [-10, -6],\n [-39, 24],\n [-16, -12],\n [-4, -35],\n [-46, 21],\n [-18, -9],\n [-7, -26]\n ],\n [\n [6155, 4958],\n [-20, -24],\n [-7, -24],\n [-10, -4],\n [-4, -42],\n [-9, -24],\n [-5, -39],\n [-12, -20]\n ],\n [\n [6088, 4781],\n [-40, 59],\n [-1, 35],\n [-101, 120],\n [-5, 6]\n ],\n [\n [5941, 5001],\n [0, 63],\n [8, 24],\n [14, 39],\n [10, 43],\n [-13, 68],\n [-3, 30],\n [-13, 41]\n ],\n [\n [5944, 5309],\n [17, 35],\n [19, 39]\n ],\n [\n [6162, 5289],\n [-24, -67],\n [0, -215],\n [17, -49]\n ],\n [\n [7046, 7387],\n [-53, -9],\n [-34, 19],\n [-30, -4],\n [3, 34],\n [30, -10],\n [10, 18]\n ],\n [\n [6972, 7435],\n [21, -6],\n [36, 43],\n [-33, 31],\n [-20, -15],\n [-21, 22],\n [24, 39],\n [-9, 5]\n ],\n [\n [7849, 5777],\n [-7, 72],\n [18, 49],\n [36, 11],\n [26, -8]\n ],\n [\n [7922, 5901],\n [23, -23],\n [12, 40],\n [25, -21]\n ],\n [\n [7982, 5897],\n [6, -40],\n [-3, -71],\n [-47, -45],\n [13, -36],\n [-30, -4],\n [-24, -24]\n ],\n [\n [7897, 5677],\n [-23, 9],\n [-11, 30],\n [-14, 61]\n ],\n [\n [8564, 7339],\n [24, -70],\n [7, -38],\n [0, -68],\n [-10, -33],\n [-25, -11],\n [-22, -25],\n [-25, -5],\n [-3, 32],\n [5, 45],\n [-13, 61],\n [21, 10],\n [-19, 51]\n ],\n [\n [8504, 7288],\n [2, 5],\n [12, -2],\n [11, 27],\n [20, 2],\n [11, 4],\n [4, 15]\n ],\n [\n [5557, 7574],\n [5, 13]\n ],\n [\n [5562, 7587],\n [7, 4],\n [4, 20],\n [5, 3],\n [4, -8],\n [5, -4],\n [3, -10],\n [5, -2],\n [5, -11],\n [4, 0],\n [-3, -14],\n [-3, -7],\n [1, -5]\n ],\n [\n [5599, 7553],\n [-6, -2],\n [-17, -9],\n [-1, -12],\n [-4, 0]\n ],\n [\n [6332, 6828],\n [6, -26],\n [-3, -13],\n [9, -45]\n ],\n [\n [6344, 6744],\n [-19, -1],\n [-7, 28],\n [-25, 6]\n ],\n [\n [7922, 5901],\n [9, 26],\n [1, 50],\n [-22, 52],\n [-2, 58],\n [-21, 48],\n [-21, 4],\n [-6, -20],\n [-16, -2],\n [-8, 10],\n [-30, -35],\n [0, 53],\n [7, 62],\n [-19, 3],\n [-2, 36],\n [-12, 18]\n ],\n [\n [7780, 6264],\n [6, 21],\n [24, 39]\n ],\n [\n [7837, 6385],\n [17, -47],\n [12, -54],\n [34, 0],\n [11, -52],\n [-18, -15],\n [-8, -21],\n [34, -36],\n [23, -70],\n [17, -52],\n [21, -41],\n [7, -41],\n [-5, -59]\n ],\n [\n [5975, 7012],\n [10, 49],\n [14, 41],\n [0, 2]\n ],\n [\n [5999, 7104],\n [13, -3],\n [4, -23],\n [-15, -22],\n [-7, -33]\n ],\n [\n [4785, 5315],\n [-7, 0],\n [-29, 28],\n [-25, 45],\n [-24, 32],\n [-18, 38]\n ],\n [\n [4682, 5458],\n [6, 19],\n [2, 17],\n [12, 33],\n [13, 27]\n ],\n [\n [5412, 6408],\n [-20, -22],\n [-15, 33],\n [-44, 25]\n ],\n [\n [5263, 6848],\n [13, 14],\n [3, 25],\n [-3, 24],\n [19, 23],\n [8, 19],\n [14, 17],\n [2, 45]\n ],\n [\n [5319, 7015],\n [32, -20],\n [12, 5],\n [23, -10],\n [37, -26],\n [13, -53],\n [25, -11],\n [39, -25],\n [30, -29],\n [13, 15],\n [13, 27],\n [-6, 45],\n [9, 29],\n [20, 28],\n [19, 8],\n [37, -12],\n [10, -27],\n [10, 0],\n [9, -10],\n [28, -7],\n [6, -19]\n ],\n [\n [5694, 6357],\n [0, -118],\n [-32, 0],\n [0, -25]\n ],\n [\n [5662, 6214],\n [-111, 113],\n [-111, 113],\n [-28, -32]\n ],\n [\n [7271, 5502],\n [-4, -62],\n [-12, -16],\n [-24, -14],\n [-13, 47],\n [-5, 85],\n [13, 96],\n [19, -33],\n [13, -42],\n [13, -61]\n ],\n [\n [5804, 3347],\n [10, -18],\n [-9, -29],\n [-4, -19],\n [-16, -9],\n [-5, -19],\n [-10, -6],\n [-21, 46],\n [15, 37],\n [15, 23],\n [13, 12],\n [12, -18]\n ],\n [\n [5631, 8267],\n [-2, 15],\n [3, 16],\n [-13, 10],\n [-29, 10]\n ],\n [\n [5590, 8318],\n [-6, 50]\n ],\n [\n [5584, 8368],\n [32, 18],\n [47, -4],\n [27, 6],\n [4, -12],\n [15, -4],\n [26, -29]\n ],\n [\n [5652, 8242],\n [-7, 19],\n [-14, 6]\n ],\n [\n [5584, 8368],\n [1, 44],\n [14, 37],\n [26, 20],\n [22, -44],\n [22, 1],\n [6, 46]\n ],\n [\n [5757, 8453],\n [14, -14],\n [2, -28],\n [9, -35]\n ],\n [\n [4759, 6691],\n [-4, 0],\n [0, -31],\n [-17, -2],\n [-9, -14],\n [-13, 0],\n [-10, 8],\n [-23, -6],\n [-9, -46],\n [-9, -5],\n [-13, -74],\n [-38, -64],\n [-9, -81],\n [-12, -27],\n [-3, -21],\n [-63, -5]\n ],\n [\n [4527, 6323],\n [1, 27],\n [11, 17],\n [9, 30],\n [-2, 20],\n [10, 42],\n [15, 38],\n [9, 9],\n [8, 35],\n [0, 31],\n [10, 37],\n [19, 21],\n [18, 60],\n [0, 1],\n [14, 23],\n [26, 6],\n [22, 41],\n [14, 16],\n [23, 49],\n [-7, 73],\n [10, 51],\n [4, 31],\n [18, 40],\n [28, 27],\n [21, 25],\n [18, 61],\n [9, 36],\n [20, 0],\n [17, -25],\n [26, 4],\n [29, -13],\n [12, -1]\n ],\n [\n [5739, 7906],\n [6, 9],\n [19, 6],\n [20, -19],\n [12, -2],\n [12, -16],\n [-2, -20],\n [11, -9],\n [4, -25],\n [9, -15],\n [-2, -9],\n [5, -6],\n [-7, -4],\n [-16, 1],\n [-3, 9],\n [-6, -5],\n [2, -11],\n [-7, -19],\n [-5, -20],\n [-7, -6]\n ],\n [\n [5784, 7745],\n [-5, 27],\n [3, 25],\n [-1, 26],\n [-16, 35],\n [-9, 25],\n [-9, 17],\n [-8, 6]\n ],\n [\n [6376, 4321],\n [7, -25],\n [7, -39],\n [4, -71],\n [7, -28],\n [-2, -28],\n [-5, -18],\n [-10, 35],\n [-5, -18],\n [5, -43],\n [-2, -25],\n [-8, -14],\n [-1, -50],\n [-11, -69],\n [-14, -81],\n [-17, -112],\n [-11, -82],\n [-12, -69],\n [-23, -14],\n [-24, -25],\n [-16, 15],\n [-22, 21],\n [-8, 31],\n [-2, 53],\n [-10, 47],\n [-2, 42],\n [5, 43],\n [13, 10],\n [0, 20],\n [13, 45],\n [2, 37],\n [-6, 28],\n [-5, 38],\n [-2, 54],\n [9, 33],\n [4, 38],\n [14, 2],\n [15, 12],\n [11, 10],\n [12, 1],\n [16, 34],\n [23, 36],\n [8, 30],\n [-4, 25],\n [12, -7],\n [15, 41],\n [1, 36],\n [9, 26],\n [10, -25]\n ],\n [\n [2301, 6586],\n [-10, -52],\n [-5, -43],\n [-2, -79],\n [-3, -29],\n [5, -32],\n [9, -29],\n [5, -45],\n [19, -44],\n [6, -34],\n [11, -29],\n [29, -16],\n [12, -25],\n [24, 17],\n [21, 6],\n [21, 11],\n [18, 10],\n [17, 24],\n [7, 34],\n [2, 50],\n [5, 17],\n [19, 16],\n [29, 13],\n [25, -2],\n [17, 5],\n [6, -12],\n [-1, -29],\n [-15, -35],\n [-6, -36],\n [5, -10],\n [-4, -26],\n [-7, -46],\n [-7, 15],\n [-6, -1]\n ],\n [\n [2438, 5916],\n [-32, 64],\n [-14, 19],\n [-23, 16],\n [-15, -5],\n [-22, -22],\n [-14, -6],\n [-20, 16],\n [-21, 11],\n [-26, 27],\n [-21, 8],\n [-31, 28],\n [-23, 28],\n [-7, 16],\n [-16, 3],\n [-28, 19],\n [-12, 27],\n [-30, 34],\n [-14, 37],\n [-6, 29],\n [9, 5],\n [-3, 17],\n [7, 16],\n [0, 20],\n [-10, 27],\n [-2, 23],\n [-9, 30],\n [-25, 59],\n [-28, 46],\n [-13, 37],\n [-24, 24],\n [-5, 14],\n [4, 37],\n [-14, 13],\n [-17, 29],\n [-7, 41],\n [-14, 5],\n [-17, 31],\n [-13, 29],\n [-1, 19],\n [-15, 44],\n [-10, 45],\n [1, 23],\n [-20, 23],\n [-10, -2],\n [-15, 16],\n [-5, -24],\n [5, -28],\n [2, -45],\n [10, -24],\n [21, -41],\n [4, -14],\n [4, -4],\n [4, -20],\n [5, 1],\n [6, -38],\n [8, -15],\n [6, -21],\n [17, -30],\n [10, -55],\n [8, -26],\n [8, -28],\n [1, -31],\n [13, -2],\n [12, -27],\n [10, -26],\n [-1, -11],\n [-12, -21],\n [-5, 0],\n [-7, 36],\n [-18, 33],\n [-20, 29],\n [-14, 15],\n [1, 43],\n [-5, 32],\n [-13, 19],\n [-19, 26],\n [-4, -8],\n [-7, 16],\n [-17, 14],\n [-16, 34],\n [2, 5],\n [11, -4],\n [11, 22],\n [1, 27],\n [-22, 42],\n [-16, 17],\n [-10, 36],\n [-11, 39],\n [-12, 47],\n [-12, 54]\n ],\n [\n [1746, 6980],\n [32, 4],\n [35, 7],\n [-2, -12],\n [41, -29],\n [64, -41],\n [55, 0],\n [22, 0],\n [0, 24],\n [48, 0],\n [10, -20],\n [15, -19],\n [16, -26],\n [9, -31],\n [7, -32],\n [15, -18],\n [23, -18],\n [17, 47],\n [23, 1],\n [19, -24],\n [14, -40],\n [10, -35],\n [16, -34],\n [6, -41],\n [8, -28],\n [22, -18],\n [20, -13],\n [10, 2]\n ],\n [\n [5599, 7553],\n [9, 4],\n [13, 1]\n ],\n [\n [4661, 5921],\n [10, 11],\n [4, 35],\n [9, 1],\n [20, -16],\n [15, 11],\n [11, -4],\n [4, 13],\n [112, 1],\n [6, 42],\n [-5, 7],\n [-13, 255],\n [-14, 255],\n [43, 1]\n ],\n [\n [5118, 6189],\n [0, -136],\n [-15, -39],\n [-2, -37],\n [-25, -9],\n [-38, -5],\n [-10, -21],\n [-18, -3]\n ],\n [\n [4680, 5793],\n [1, 18],\n [-2, 23],\n [-11, 16],\n [-5, 34],\n [-2, 37]\n ],\n [\n [7737, 5644],\n [-3, 44],\n [9, 45],\n [-10, 35],\n [3, 65],\n [-12, 30],\n [-9, 71],\n [-5, 75],\n [-12, 49],\n [-18, -30],\n [-32, -42],\n [-15, 5],\n [-17, 14],\n [9, 73],\n [-6, 56],\n [-21, 68],\n [3, 21],\n [-16, 7],\n [-20, 49]\n ],\n [\n [7780, 6264],\n [-16, -14],\n [-16, -26],\n [-20, -2],\n [-12, -64],\n [-12, -11],\n [14, -52],\n [17, -43],\n [12, -39],\n [-11, -51],\n [-9, -11],\n [6, -30],\n [19, -47],\n [3, -33],\n [0, -27],\n [11, -54],\n [-16, -55],\n [-13, -61]\n ],\n [\n [5538, 7532],\n [-6, 4],\n [-8, 19],\n [-12, 12]\n ],\n [\n [5533, 7629],\n [8, -10],\n [4, -9],\n [9, -6],\n [10, -12],\n [-2, -5]\n ],\n [\n [7437, 7970],\n [29, 10],\n [53, 51],\n [42, 28],\n [24, -18],\n [29, -1],\n [19, -28],\n [28, -2],\n [40, -15],\n [27, 41],\n [-11, 35],\n [28, 61],\n [31, -24],\n [26, -7],\n [32, -15],\n [6, -44],\n [39, -25],\n [26, 11],\n [36, 7],\n [27, -7],\n [28, -29],\n [16, -30],\n [26, 1],\n [35, -10],\n [26, 15],\n [36, 9],\n [41, 42],\n [17, -6],\n [14, -20],\n [33, 5]\n ],\n [\n [5959, 4377],\n [21, 5],\n [34, -17],\n [7, 8],\n [19, 1],\n [10, 18],\n [17, -1],\n [30, 23],\n [22, 34]\n ],\n [\n [6119, 4448],\n [5, -26],\n [-1, -59],\n [3, -52],\n [1, -92],\n [5, -29],\n [-8, -43],\n [-11, -41],\n [-18, -36],\n [-25, -23],\n [-31, -28],\n [-32, -64],\n [-10, -11],\n [-20, -42],\n [-11, -13],\n [-3, -42],\n [14, -45],\n [5, -35],\n [0, -17],\n [5, 3],\n [-1, -58],\n [-4, -28],\n [6, -10],\n [-4, -25],\n [-11, -21],\n [-23, -20],\n [-34, -32],\n [-12, -21],\n [3, -25],\n [7, -4],\n [-3, -31]\n ],\n [\n [5911, 3478],\n [-21, 0]\n ],\n [\n [5890, 3478],\n [-2, 26],\n [-4, 27]\n ],\n [\n [5884, 3531],\n [-3, 21],\n [5, 66],\n [-7, 42],\n [-13, 83]\n ],\n [\n [5866, 3743],\n [29, 67],\n [7, 43],\n [5, 5],\n [3, 35],\n [-5, 17],\n [1, 44],\n [6, 41],\n [0, 75],\n [-15, 19],\n [-13, 4],\n [-6, 15],\n [-13, 12],\n [-23, -1],\n [-2, 22]\n ],\n [\n [5840, 4141],\n [-2, 42],\n [84, 49]\n ],\n [\n [5922, 4232],\n [16, -28],\n [8, 5],\n [11, -15],\n [1, -23],\n [-6, -28],\n [2, -42],\n [19, -36],\n [8, 41],\n [12, 12],\n [-2, 76],\n [-12, 43],\n [-10, 19],\n [-10, -1],\n [-7, 77],\n [7, 45]\n ],\n [\n [4661, 5921],\n [-18, 41],\n [-17, 43],\n [-18, 16],\n [-13, 17],\n [-16, -1],\n [-13, -12],\n [-14, 5],\n [-10, -19]\n ],\n [\n [4542, 6011],\n [-2, 32],\n [8, 29],\n [3, 55],\n [-3, 59],\n [-3, 29],\n [2, 30],\n [-7, 28],\n [-14, 25]\n ],\n [\n [4526, 6298],\n [6, 20],\n [108, -1],\n [-5, 86],\n [7, 30],\n [26, 5],\n [-1, 152],\n [91, -4],\n [0, 90]\n ],\n [\n [5922, 4232],\n [-15, 15],\n [9, 55],\n [9, 21],\n [-6, 49],\n [6, 48],\n [5, 16],\n [-7, 50],\n [-14, 26]\n ],\n [\n [5909, 4512],\n [28, -11],\n [5, -16],\n [10, -28],\n [7, -80]\n ],\n [\n [7836, 5425],\n [7, -5],\n [16, -36],\n [12, -40],\n [2, -39],\n [-3, -27],\n [2, -21],\n [2, -35],\n [10, -16],\n [11, -52],\n [-1, -20],\n [-19, -4],\n [-27, 44],\n [-32, 47],\n [-4, 30],\n [-16, 39],\n [-4, 49],\n [-10, 32],\n [4, 43],\n [-7, 25]\n ],\n [\n [7779, 5439],\n [5, 11],\n [23, -26],\n [2, -30],\n [18, 7],\n [9, 24]\n ],\n [\n [8045, 5176],\n [21, -20],\n [21, 11],\n [6, 50],\n [12, 11],\n [33, 13],\n [20, 47],\n [14, 37]\n ],\n [\n [8206, 5379],\n [22, 41],\n [14, 47],\n [11, 0],\n [14, -30],\n [1, -26],\n [19, -16],\n [23, -18],\n [-2, -23],\n [-19, -3],\n [5, -29],\n [-20, -20]\n ],\n [\n [5453, 3369],\n [-20, 45],\n [-11, 43],\n [-6, 58],\n [-7, 42],\n [-9, 91],\n [-1, 71],\n [-3, 32],\n [-11, 25],\n [-15, 48],\n [-14, 71],\n [-6, 37],\n [-23, 58],\n [-2, 45]\n ],\n [\n [5644, 4022],\n [23, 14],\n [18, -4],\n [11, -13],\n [0, -5]\n ],\n [\n [5552, 3594],\n [0, -218],\n [-25, -30],\n [-15, -4],\n [-17, 11],\n [-13, 4],\n [-4, 25],\n [-11, 17],\n [-14, -30]\n ],\n [\n [9604, 3812],\n [23, -36],\n [14, -28],\n [-10, -14],\n [-16, 16],\n [-19, 27],\n [-18, 31],\n [-19, 42],\n [-4, 20],\n [12, -1],\n [16, -20],\n [12, -20],\n [9, -17]\n ],\n [\n [5412, 6408],\n [7, -92],\n [10, -15],\n [1, -19],\n [11, -20],\n [-6, -25],\n [-11, -120],\n [-1, -77],\n [-35, -56],\n [-12, -78],\n [11, -22],\n [0, -38],\n [18, -1],\n [-3, -28]\n ],\n [\n [5393, 5795],\n [-5, -1],\n [-19, 64],\n [-6, 3],\n [-22, -33],\n [-21, 17],\n [-15, 3],\n [-8, -8],\n [-17, 2],\n [-16, -25],\n [-14, -2],\n [-34, 31],\n [-13, -15],\n [-14, 1],\n [-10, 23],\n [-28, 22],\n [-30, -7],\n [-7, -13],\n [-4, -34],\n [-8, -24],\n [-2, -53]\n ],\n [\n [5236, 5339],\n [-29, -21],\n [-11, 3],\n [-10, -13],\n [-23, 1],\n [-15, 37],\n [-9, 43],\n [-19, 39],\n [-21, -1],\n [-25, 0]\n ],\n [\n [2619, 5713],\n [-10, 18],\n [-13, 24],\n [-6, 20],\n [-12, 19],\n [-13, 26],\n [3, 9],\n [4, -9],\n [2, 5]\n ],\n [\n [2690, 5943],\n [-2, -5],\n [-2, -13],\n [3, -22],\n [-6, -20],\n [-3, -24],\n [-1, -26],\n [1, -15],\n [1, -27],\n [-4, -6],\n [-3, -25],\n [2, -15],\n [-6, -16],\n [2, -16],\n [4, -9]\n ],\n [\n [5092, 8091],\n [14, 16],\n [24, 87],\n [38, 25],\n [23, -2]\n ],\n [\n [5863, 9167],\n [-47, -24],\n [-22, -5]\n ],\n [\n [5573, 9140],\n [-17, -2],\n [-4, -39],\n [-53, 9],\n [-7, -33],\n [-27, 1],\n [-18, -42],\n [-28, -66],\n [-43, -83],\n [10, -20],\n [-10, -24],\n [-27, 1],\n [-18, -55],\n [2, -79],\n [17, -29],\n [-9, -70],\n [-23, -40],\n [-12, -34]\n ],\n [\n [5306, 8535],\n [-19, 36],\n [-55, -69],\n [-37, -13],\n [-38, 30],\n [-10, 63],\n [-9, 137],\n [26, 38],\n [73, 49],\n [55, 61],\n [51, 82],\n [66, 115],\n [47, 44],\n [76, 74],\n [61, 26],\n [46, -3],\n [42, 49],\n [51, -3],\n [50, 12],\n [87, -43],\n [-36, -16],\n [30, -37]\n ],\n [\n [5686, 9657],\n [-62, -24],\n [-49, 13],\n [19, 16],\n [-16, 19],\n [57, 11],\n [11, -22],\n [40, -13]\n ],\n [\n [5506, 9766],\n [92, -44],\n [-70, -23],\n [-15, -44],\n [-25, -11],\n [-13, -49],\n [-34, -2],\n [-59, 36],\n [25, 21],\n [-42, 17],\n [-54, 50],\n [-21, 46],\n [75, 21],\n [16, -20],\n [39, 0],\n [11, 21],\n [40, 2],\n [35, -21]\n ],\n [\n [5706, 9808],\n [55, -21],\n [-41, -32],\n [-81, -7],\n [-82, 10],\n [-5, 16],\n [-40, 1],\n [-30, 27],\n [86, 17],\n [40, -14],\n [28, 17],\n [70, -14]\n ],\n [\n [9805, 2640],\n [6, -24],\n [20, 24],\n [8, -25],\n [0, -25],\n [-10, -27],\n [-18, -44],\n [-14, -24],\n [10, -28],\n [-22, -1],\n [-23, -22],\n [-8, -39],\n [-16, -60],\n [-21, -26],\n [-14, -17],\n [-26, 1],\n [-18, 20],\n [-30, 4],\n [-5, 22],\n [15, 43],\n [35, 59],\n [18, 11],\n [20, 22],\n [24, 31],\n [16, 31],\n [13, 44],\n [10, 15],\n [5, 33],\n [19, 27],\n [6, -25]\n ],\n [\n [9849, 2922],\n [20, -63],\n [1, 41],\n [13, -16],\n [4, -45],\n [22, -19],\n [19, -5],\n [16, 22],\n [14, -6],\n [-7, -53],\n [-8, -34],\n [-22, 1],\n [-7, -18],\n [3, -25],\n [-4, -11],\n [-11, -32],\n [-14, -41],\n [-21, -23],\n [-5, 15],\n [-12, 9],\n [16, 48],\n [-9, 33],\n [-30, 23],\n [1, 22],\n [20, 20],\n [5, 46],\n [-1, 38],\n [-12, 40],\n [1, 10],\n [-13, 25],\n [-22, 52],\n [-12, 42],\n [11, 4],\n [15, -33],\n [21, -15],\n [8, -52]\n ],\n [\n [6475, 6041],\n [-9, 41],\n [-22, 98]\n ],\n [\n [6444, 6180],\n [83, 59],\n [19, 118],\n [-13, 42]\n ],\n [\n [6566, 6530],\n [12, -40],\n [16, -22],\n [20, -8],\n [17, -10],\n [12, -34],\n [8, -20],\n [10, -7],\n [0, -13],\n [-10, -36],\n [-5, -16],\n [-12, -19],\n [-10, -41],\n [-13, 3],\n [-5, -14],\n [-5, -30],\n [4, -39],\n [-3, -7],\n [-13, 0],\n [-17, -22],\n [-3, -29],\n [-6, -12],\n [-18, 0],\n [-10, -15],\n [0, -24],\n [-14, -16],\n [-15, 5],\n [-19, -19],\n [-12, -4]\n ],\n [\n [6557, 6597],\n [8, 20],\n [3, -5],\n [-2, -25],\n [-4, -10]\n ],\n [\n [6893, 6457],\n [-20, 15],\n [-9, 43],\n [-21, 45],\n [-51, -12],\n [-45, -1],\n [-39, -8]\n ],\n [\n [2836, 5484],\n [-9, 17],\n [-6, 32],\n [7, 16],\n [-7, 4],\n [-5, 20],\n [-14, 16],\n [-12, -4],\n [-6, -20],\n [-11, -15],\n [-6, -2],\n [-3, -13],\n [13, -32],\n [-7, -7],\n [-4, -9],\n [-13, -3],\n [-5, 35],\n [-4, -10],\n [-9, 4],\n [-5, 24],\n [-12, 3],\n [-7, 7],\n [-12, 0],\n [-1, -13],\n [-3, 9]\n ],\n [\n [2707, 5623],\n [10, -22],\n [-1, -12],\n [11, -3],\n [3, 5],\n [8, -14],\n [13, 4],\n [12, 15],\n [17, 12],\n [9, 17],\n [16, -3],\n [-1, -6],\n [15, -2],\n [12, -10],\n [10, -18],\n [10, -16]\n ],\n [\n [3045, 3974],\n [-28, 33],\n [-2, 25],\n [-55, 59],\n [-50, 65],\n [-22, 36],\n [-11, 49],\n [4, 17],\n [-23, 77],\n [-28, 109],\n [-26, 118],\n [-11, 27],\n [-9, 43],\n [-21, 39],\n [-20, 24],\n [9, 26],\n [-14, 57],\n [9, 41],\n [22, 37]\n ],\n [\n [8510, 5555],\n [2, -40],\n [2, -33],\n [-9, -54],\n [-11, 60],\n [-13, -30],\n [9, -43],\n [-8, -28],\n [-32, 35],\n [-8, 42],\n [8, 28],\n [-17, 28],\n [-9, -24],\n [-13, 2],\n [-21, -33],\n [-4, 17],\n [11, 50],\n [17, 17],\n [15, 22],\n [10, -27],\n [21, 17],\n [5, 26],\n [19, 1],\n [-1, 46],\n [22, -28],\n [3, -30],\n [2, -21]\n ],\n [\n [8443, 5665],\n [-10, -20],\n [-9, -37],\n [-8, -17],\n [-17, 40],\n [5, 16],\n [7, 17],\n [3, 36],\n [16, 4],\n [-5, -40],\n [21, 57],\n [-3, -56]\n ],\n [\n [8291, 5608],\n [-37, -56],\n [14, 41],\n [20, 37],\n [16, 41],\n [15, 58],\n [5, -48],\n [-18, -33],\n [-15, -40]\n ],\n [\n [8385, 5760],\n [16, -18],\n [18, 0],\n [0, -25],\n [-13, -25],\n [-18, -18],\n [-1, 28],\n [2, 30],\n [-4, 28]\n ],\n [\n [8485, 5776],\n [8, -66],\n [-21, 16],\n [0, -20],\n [7, -37],\n [-13, -13],\n [-1, 42],\n [-9, 3],\n [-4, 36],\n [16, -5],\n [0, 22],\n [-17, 45],\n [27, -1],\n [7, -22]\n ],\n [\n [8375, 5830],\n [-7, -51],\n [-12, 29],\n [-15, 45],\n [24, -2],\n [10, -21]\n ],\n [\n [8369, 6151],\n [17, -17],\n [9, 15],\n [2, -15],\n [-4, -24],\n [9, -43],\n [-7, -49],\n [-16, -19],\n [-5, -48],\n [7, -47],\n [14, -7],\n [13, 7],\n [34, -32],\n [-2, -32],\n [9, -15],\n [-3, -27],\n [-22, 29],\n [-10, 31],\n [-7, -22],\n [-18, 36],\n [-25, -9],\n [-14, 13],\n [1, 25],\n [9, 15],\n [-8, 13],\n [-4, -21],\n [-14, 34],\n [-4, 26],\n [-1, 56],\n [11, -19],\n [3, 92],\n [9, 54],\n [17, 0]\n ],\n [\n [9329, 4655],\n [-8, -6],\n [-12, 22],\n [-12, 38],\n [-6, 45],\n [4, 6],\n [3, -18],\n [8, -13],\n [14, -38],\n [13, -20],\n [-4, -16]\n ],\n [\n [9221, 4734],\n [-15, -5],\n [-4, -17],\n [-15, -14],\n [-15, -14],\n [-14, 0],\n [-23, 18],\n [-16, 16],\n [2, 18],\n [25, -8],\n [15, 4],\n [5, 29],\n [4, 1],\n [2, -31],\n [16, 4],\n [8, 20],\n [16, 21],\n [-4, 35],\n [17, 1],\n [6, -9],\n [-1, -33],\n [-9, -36]\n ],\n [\n [8916, 4904],\n [48, -41],\n [51, -34],\n [19, -30],\n [16, -30],\n [4, -34],\n [46, -37],\n [7, -31],\n [-25, -7],\n [6, -39],\n [25, -39],\n [18, -62],\n [15, 2],\n [-1, -27],\n [22, -10],\n [-9, -11],\n [30, -25],\n [-3, -17],\n [-18, -4],\n [-7, 16],\n [-24, 6],\n [-28, 9],\n [-22, 38],\n [-16, 32],\n [-14, 52],\n [-36, 26],\n [-24, -17],\n [-17, -20],\n [4, -43],\n [-22, -20],\n [-16, 9],\n [-28, 3]\n ],\n [\n [9253, 4792],\n [-9, -16],\n [-5, 35],\n [-6, 23],\n [-13, 19],\n [-16, 25],\n [-20, 18],\n [8, 14],\n [15, -17],\n [9, -13],\n [12, -14],\n [11, -25],\n [11, -19],\n [3, -30]\n ],\n [\n [5392, 8233],\n [19, 18],\n [43, 27],\n [35, 20],\n [28, -10],\n [2, -14],\n [27, -1]\n ],\n [\n [5546, 8273],\n [34, -7],\n [51, 1]\n ],\n [\n [5653, 8105],\n [14, -52],\n [-3, -17],\n [-14, -6],\n [-25, -50],\n [7, -26],\n [-6, 3]\n ],\n [\n [5626, 7957],\n [-26, 23],\n [-20, -8],\n [-13, 6],\n [-17, -13],\n [-14, 21],\n [-11, -8],\n [-2, 4]\n ],\n [\n [3159, 6151],\n [14, -5],\n [5, -12],\n [-7, -15],\n [-21, 1],\n [-17, -2],\n [-1, 25],\n [4, 9],\n [23, -1]\n ],\n [\n [8628, 7562],\n [4, -10]\n ],\n [\n [8632, 7552],\n [-11, 3],\n [-12, -20],\n [-8, -20],\n [1, -42],\n [-14, -13],\n [-5, -11],\n [-11, -17],\n [-18, -10],\n [-12, -16],\n [-1, -25],\n [-3, -7],\n [11, -9],\n [15, -26]\n ],\n [\n [8504, 7288],\n [-13, 11],\n [-4, -11],\n [-8, -5],\n [-1, 11],\n [-7, 5],\n [-8, 10],\n [8, 26],\n [7, 7],\n [-3, 11],\n [7, 31],\n [-2, 10],\n [-16, 7],\n [-13, 15]\n ],\n [\n [4792, 7249],\n [-11, -15],\n [-14, 8],\n [-15, -6],\n [5, 46],\n [-3, 36],\n [-12, 6],\n [-7, 22],\n [2, 39],\n [11, 21],\n [2, 24],\n [6, 36],\n [-1, 25],\n [-5, 21],\n [-1, 20]\n ],\n [\n [6411, 6520],\n [-2, 43],\n [7, 31],\n [8, 6],\n [8, -18],\n [1, -35],\n [-6, -35]\n ],\n [\n [6427, 6512],\n [-8, -4],\n [-8, 12]\n ],\n [\n [5630, 7886],\n [12, 13],\n [17, -7],\n [18, 0],\n [13, -14],\n [10, 9],\n [20, 5],\n [7, 14],\n [12, 0]\n ],\n [\n [5784, 7745],\n [12, -11],\n [13, 9],\n [13, -10]\n ],\n [\n [5822, 7733],\n [0, -15],\n [-13, -13],\n [-9, 6],\n [-7, -71]\n ],\n [\n [5629, 7671],\n [-5, 10],\n [6, 10],\n [-7, 7],\n [-8, -13],\n [-17, 17],\n [-2, 25],\n [-17, 14],\n [-3, 18],\n [-15, 24]\n ],\n [\n [8989, 8056],\n [28, -105],\n [-41, 19],\n [-17, -85],\n [27, -61],\n [-1, -41],\n [-21, 36],\n [-18, -46],\n [-5, 50],\n [3, 57],\n [-3, 64],\n [6, 45],\n [2, 79],\n [-17, 58],\n [3, 80],\n [25, 28],\n [-11, 27],\n [13, 8],\n [7, -39],\n [10, -57],\n [-1, -58],\n [11, -59]\n ],\n [\n [5546, 8273],\n [6, 26],\n [38, 19]\n ],\n [\n [0, 9132],\n [68, -45],\n [73, -59],\n [-3, -37],\n [19, -15],\n [-6, 43],\n [75, -8],\n [55, -56],\n [-28, -26],\n [-46, -6],\n [0, -57],\n [-11, -13],\n [-26, 2],\n [-22, 21],\n [-36, 17],\n [-7, 26],\n [-28, 9],\n [-31, -7],\n [-16, 20],\n [6, 22],\n [-33, -14],\n [13, -28],\n [-16, -25]\n ],\n [\n [0, 8896],\n [0, 236]\n ],\n [\n [0, 9282],\n [9999, -40],\n [-30, -3],\n [-5, 19],\n [-9964, 24]\n ],\n [\n [0, 9282],\n [4, 3],\n [23, 0],\n [40, -17],\n [-2, -8],\n [-29, -14],\n [-36, -4],\n [0, 40]\n ],\n [\n [8988, 9383],\n [-42, -1],\n [-57, 7],\n [-5, 3],\n [27, 23],\n [34, 6],\n [40, -23],\n [3, -15]\n ],\n [\n [9186, 9493],\n [-32, -23],\n [-44, 5],\n [-52, 23],\n [7, 20],\n [51, -9],\n [70, -16]\n ],\n [\n [9029, 9522],\n [-22, -44],\n [-102, 1],\n [-46, -14],\n [-55, 39],\n [15, 40],\n [37, 11],\n [73, -2],\n [100, -31]\n ],\n [\n [6598, 9235],\n [-17, -5],\n [-91, 8],\n [-7, 26],\n [-50, 16],\n [-4, 32],\n [28, 13],\n [-1, 32],\n [55, 50],\n [-25, 7],\n [66, 52],\n [-7, 27],\n [62, 31],\n [91, 38],\n [93, 11],\n [48, 22],\n [54, 8],\n [19, -23],\n [-19, -19],\n [-98, -29],\n [-85, -28],\n [-86, -57],\n [-42, -57],\n [-43, -57],\n [5, -49],\n [54, -49]\n ],\n [\n [0, 8896],\n [9963, -26],\n [-36, 4],\n [25, -31],\n [17, -49],\n [13, -16],\n [3, -24],\n [-7, -16],\n [-52, 13],\n [-78, -44],\n [-25, -7],\n [-42, -42],\n [-40, -36],\n [-11, -27],\n [-39, 41],\n [-73, -46],\n [-12, 22],\n [-27, -26],\n [-37, 8],\n [-9, -38],\n [-33, -58],\n [1, -24],\n [31, -13],\n [-4, -86],\n [-25, -2],\n [-12, -49],\n [11, -26],\n [-48, -30],\n [-10, -67],\n [-41, -15],\n [-9, -60],\n [-40, -55],\n [-10, 41],\n [-12, 86],\n [-15, 131],\n [13, 82],\n [23, 35],\n [2, 28],\n [43, 13],\n [50, 75],\n [47, 60],\n [50, 48],\n [23, 83],\n [-34, -5],\n [-17, -49],\n [-70, -65],\n [-23, 73],\n [-72, -20],\n [-69, -99],\n [23, -36],\n [-62, -16],\n [-43, -6],\n [2, 43],\n [-43, 9],\n [-35, -29],\n [-85, 10],\n [-91, -18],\n [-90, -115],\n [-106, -139],\n [43, -8],\n [14, -37],\n [27, -13],\n [18, 30],\n [30, -4],\n [40, -65],\n [1, -50],\n [-21, -59],\n [-3, -71],\n [-12, -94],\n [-42, -86],\n [-9, -41],\n [-38, -69],\n [-38, -68],\n [-18, -35],\n [-37, -34],\n [-17, -1],\n [-17, 29],\n [-38, -44],\n [-4, -19]\n ],\n [\n [6363, 7799],\n [-12, -35],\n [-27, -10],\n [-28, -61],\n [25, -56],\n [-2, -40],\n [30, -70]\n ],\n [\n [6109, 7624],\n [-35, 49],\n [-32, 23],\n [-24, 34],\n [20, 10],\n [23, 49],\n [-15, 24],\n [41, 24],\n [-1, 13],\n [-25, -10]\n ],\n [\n [6061, 7840],\n [1, 26],\n [14, 17],\n [27, 4],\n [5, 20],\n [-7, 33],\n [12, 30],\n [-1, 18],\n [-41, 19],\n [-16, -1],\n [-17, 28],\n [-21, -9],\n [-35, 20],\n [0, 12],\n [-10, 26],\n [-22, 3],\n [-2, 18],\n [7, 12],\n [-18, 33],\n [-29, -5],\n [-8, 3],\n [-7, -14],\n [-11, 3]\n ],\n [\n [5777, 8571],\n [31, 33],\n [-29, 28]\n ],\n [\n [5863, 9167],\n [29, 20],\n [46, -35],\n [76, -14],\n [105, -67],\n [21, -28],\n [2, -40],\n [-31, -31],\n [-45, -15],\n [-124, 44],\n [-21, -7],\n [45, -43],\n [2, -28],\n [2, -60],\n [36, -18],\n [22, -15],\n [3, 28],\n [-17, 26],\n [18, 22],\n [67, -37],\n [24, 15],\n [-19, 43],\n [65, 58],\n [25, -4],\n [26, -20],\n [16, 40],\n [-23, 35],\n [14, 36],\n [-21, 36],\n [78, -18],\n [16, -34],\n [-35, -7],\n [0, -33],\n [22, -20],\n [43, 13],\n [7, 38],\n [58, 28],\n [97, 50],\n [20, -3],\n [-27, -35],\n [35, -7],\n [19, 21],\n [52, 1],\n [42, 25],\n [31, -36],\n [32, 39],\n [-29, 35],\n [14, 19],\n [82, -18],\n [39, -18],\n [100, -68],\n [19, 31],\n [-28, 31],\n [-1, 13],\n [-34, 6],\n [10, 28],\n [-15, 46],\n [-1, 19],\n [51, 53],\n [18, 54],\n [21, 11],\n [74, -15],\n [5, -33],\n [-26, -48],\n [17, -19],\n [9, -41],\n [-6, -81],\n [31, -36],\n [-12, -40],\n [-55, -84],\n [32, -8],\n [11, 21],\n [31, 15],\n [7, 29],\n [24, 29],\n [-16, 33],\n [13, 39],\n [-31, 5],\n [-6, 33],\n [22, 59],\n [-36, 48],\n [50, 40],\n [-7, 42],\n [14, 2],\n [15, -33],\n [-11, -57],\n [29, -11],\n [-12, 43],\n [46, 23],\n [58, 3],\n [51, -34],\n [-25, 49],\n [-2, 63],\n [48, 12],\n [67, -2],\n [60, 7],\n [-23, 31],\n [33, 39],\n [31, 2],\n [54, 29],\n [74, 8],\n [9, 16],\n [73, 6],\n [23, -14],\n [62, 32],\n [51, -1],\n [8, 25],\n [26, 25],\n [66, 25],\n [48, -19],\n [-38, -15],\n [63, -9],\n [7, -29],\n [25, 14],\n [82, -1],\n [62, -29],\n [23, -22],\n [-7, -30],\n [-31, -18],\n [-73, -33],\n [-21, -17],\n [35, -8],\n [41, -15],\n [25, 11],\n [14, -38],\n [12, 15],\n [44, 10],\n [90, -10],\n [6, -28],\n [116, -9],\n [2, 46],\n [59, -11],\n [44, 1],\n [45, -32],\n [13, -37],\n [-17, -25],\n [35, -47],\n [44, -24],\n [27, 62],\n [44, -26],\n [48, 16],\n [53, -18],\n [21, 16],\n [45, -8],\n [-20, 55],\n [37, 25],\n [251, -38],\n [24, -35],\n [72, -45],\n [112, 11],\n [56, -10],\n [23, -24],\n [-4, -44],\n [35, -16],\n [37, 12],\n [49, 1],\n [52, -11],\n [53, 6],\n [49, -52],\n [34, 19],\n [-23, 37],\n [13, 27],\n [88, -17],\n [58, 4],\n [80, -29],\n [-9960, -25]\n ],\n [\n [7918, 9684],\n [-157, -23],\n [51, 77],\n [23, 7],\n [21, -4],\n [70, -33],\n [-8, -24]\n ],\n [\n [6420, 9816],\n [-37, -8],\n [-25, -4],\n [-4, -10],\n [-33, -10],\n [-30, 14],\n [16, 19],\n [-62, 2],\n [54, 10],\n [43, 1],\n [5, -16],\n [16, 14],\n [26, 10],\n [42, -13],\n [-11, -9]\n ],\n [\n [7775, 9718],\n [-60, -8],\n [-78, 17],\n [-46, 23],\n [-21, 42],\n [-38, 12],\n [72, 40],\n [60, 14],\n [54, -30],\n [64, -57],\n [-7, -53]\n ],\n [\n [5844, 4990],\n [11, -33],\n [-1, -35],\n [-8, -7]\n ],\n [\n [5821, 4978],\n [7, -6],\n [16, 18]\n ],\n [\n [4526, 6298],\n [1, 25]\n ],\n [\n [6188, 6023],\n [-4, 26],\n [-8, 17],\n [-2, 24],\n [-15, 21],\n [-15, 50],\n [-7, 48],\n [-20, 40],\n [-12, 10],\n [-18, 56],\n [-4, 41],\n [2, 35],\n [-16, 66],\n [-13, 23],\n [-15, 12],\n [-10, 34],\n [2, 13],\n [-8, 31],\n [-8, 13],\n [-11, 44],\n [-17, 48],\n [-14, 40],\n [-14, 0],\n [5, 33],\n [1, 20],\n [3, 24]\n ],\n [\n [6344, 6744],\n [11, -51],\n [14, -13],\n [5, -21],\n [18, -25],\n [2, -24],\n [-3, -20],\n [4, -20],\n [8, -16],\n [4, -20],\n [4, -14]\n ],\n [\n [6427, 6512],\n [5, -22]\n ],\n [\n [6444, 6180],\n [-80, -23],\n [-26, -26],\n [-20, -62],\n [-13, -10],\n [-7, 20],\n [-11, -3],\n [-27, 6],\n [-5, 5],\n [-32, -1],\n [-7, -5],\n [-12, 15],\n [-7, -29],\n [3, -25],\n [-12, -19]\n ],\n [\n [5943, 5617],\n [-4, 1],\n [0, 29],\n [-3, 20],\n [-14, 24],\n [-4, 42],\n [4, 44],\n [-13, 4],\n [-2, -13],\n [-17, -3],\n [7, -17],\n [2, -36],\n [-15, -32],\n [-14, -43],\n [-14, -6],\n [-23, 34],\n [-11, -12],\n [-3, -17],\n [-14, -11],\n [-1, -12],\n [-28, 0],\n [-3, 12],\n [-20, 2],\n [-10, -10],\n [-8, 5],\n [-14, 34],\n [-5, 17],\n [-20, -9],\n [-8, -27],\n [-7, -53],\n [-10, -11],\n [-8, -6]\n ],\n [\n [5663, 5567],\n [-2, 2]\n ],\n [\n [5635, 5716],\n [0, 14],\n [-10, 17],\n [-1, 35],\n [-5, 23],\n [-10, -4],\n [3, 22],\n [7, 25],\n [-3, 24],\n [9, 18],\n [-6, 14],\n [7, 36],\n [13, 44],\n [24, -4],\n [-1, 234]\n ],\n [\n [6023, 6357],\n [9, -58],\n [-6, -10],\n [4, -61],\n [11, -71],\n [10, -14],\n [15, -22]\n ],\n [\n [5943, 5624],\n [0, -7]\n ],\n [\n [5943, 5617],\n [0, -46]\n ],\n [\n [5944, 5309],\n [-17, -28],\n [-20, 1],\n [-22, -14],\n [-18, 13],\n [-11, -16]\n ],\n [\n [5682, 5544],\n [-19, 23]\n ],\n [\n [4535, 5861],\n [-11, 46],\n [-14, 21],\n [12, 11],\n [14, 41],\n [6, 31]\n ],\n [\n [4536, 5789],\n [-4, 45]\n ],\n [\n [9502, 4438],\n [8, -20],\n [-19, 0],\n [-11, 37],\n [17, -15],\n [5, -2]\n ],\n [\n [9467, 4474],\n [-11, -1],\n [-17, 6],\n [-5, 9],\n [1, 23],\n [19, -9],\n [9, -12],\n [4, -16]\n ],\n [\n [9490, 4490],\n [-4, -11],\n [-21, 52],\n [-5, 35],\n [9, 0],\n [10, -47],\n [11, -29]\n ],\n [\n [9440, 4565],\n [1, -12],\n [-22, 25],\n [-15, 21],\n [-10, 20],\n [4, 6],\n [13, -14],\n [23, -27],\n [6, -19]\n ],\n [\n [9375, 4623],\n [-5, -3],\n [-13, 14],\n [-11, 24],\n [1, 10],\n [17, -25],\n [11, -20]\n ],\n [\n [4682, 5458],\n [-8, 5],\n [-20, 24],\n [-14, 31],\n [-5, 22],\n [-3, 43]\n ],\n [\n [2561, 5848],\n [-3, -14],\n [-16, 1],\n [-10, 6],\n [-12, 12],\n [-15, 3],\n [-8, 13]\n ],\n [\n [6198, 5735],\n [9, -11],\n [5, -25],\n [13, -24],\n [14, -1],\n [26, 16],\n [30, 7],\n [25, 18],\n [13, 4],\n [10, 11],\n [16, 2]\n ],\n [\n [6359, 5732],\n [0, -1],\n [0, -25],\n [0, -59],\n [0, -31],\n [-13, -36],\n [-19, -50]\n ],\n [\n [6359, 5732],\n [9, 1],\n [13, 9],\n [14, 6],\n [14, 20],\n [10, 0],\n [1, -16],\n [-3, -35],\n [0, -31],\n [-6, -21],\n [-7, -64],\n [-14, -66],\n [-17, -75],\n [-24, -87],\n [-23, -66],\n [-33, -81],\n [-28, -48],\n [-42, -58],\n [-25, -45],\n [-31, -72],\n [-6, -31],\n [-6, -14]\n ],\n [\n [3412, 5410],\n [34, -11],\n [2, 10],\n [23, 4],\n [30, -15]\n ],\n [\n [3489, 5306],\n [10, -35],\n [-4, -25]\n ],\n [\n [5626, 7957],\n [-8, -15],\n [-5, -24]\n ],\n [\n [5380, 7746],\n [7, 5]\n ],\n [\n [5663, 8957],\n [-47, -17],\n [-27, -41],\n [4, -36],\n [-44, -48],\n [-54, -50],\n [-20, -84],\n [20, -41],\n [26, -33],\n [-25, -67],\n [-29, -14],\n [-11, -99],\n [-15, -55],\n [-34, 6],\n [-16, -47],\n [-32, -3],\n [-9, 56],\n [-23, 67],\n [-21, 84]\n ],\n [\n [5890, 3478],\n [-5, -26],\n [-17, -6],\n [-16, 32],\n [0, 20],\n [7, 22],\n [3, 17],\n [8, 5],\n [14, -11]\n ],\n [\n [5999, 7104],\n [-2, 45],\n [7, 25]\n ],\n [\n [6004, 7174],\n [7, 13],\n [7, 13],\n [2, 33],\n [9, -12],\n [31, 17],\n [14, -12],\n [23, 1],\n [32, 22],\n [15, -1],\n [32, 9]\n ],\n [\n [5051, 5420],\n [-22, -12]\n ],\n [\n [7849, 5777],\n [-25, 28],\n [-24, -2],\n [4, 47],\n [-24, 0],\n [-2, -65],\n [-15, -87],\n [-10, -52],\n [2, -43],\n [18, -2],\n [12, -53],\n [5, -52],\n [15, -33],\n [17, -7],\n [14, -31]\n ],\n [\n [7779, 5439],\n [-11, 23],\n [-4, 29],\n [-15, 34],\n [-14, 28],\n [-4, -35],\n [-5, 33],\n [3, 37],\n [8, 56]\n ],\n [\n [6883, 7252],\n [16, 60],\n [-6, 44],\n [-20, 14],\n [7, 26],\n [23, -3],\n [13, 33],\n [9, 38],\n [37, 13],\n [-6, -27],\n [4, -17],\n [12, 2]\n ],\n [\n [6497, 7255],\n [-5, 42],\n [4, 62],\n [-22, 20],\n [8, 40],\n [-19, 4],\n [6, 49],\n [26, -14],\n [25, 19],\n [-20, 35],\n [-8, 34],\n [-23, -15],\n [-3, -43],\n [-8, 38]\n ],\n [\n [6554, 7498],\n [31, 1],\n [-4, 29],\n [24, 21],\n [23, 34],\n [37, -31],\n [3, -47],\n [11, -12],\n [30, 2],\n [9, -10],\n [14, -61],\n [32, -41],\n [18, -28],\n [29, -29],\n [37, -25],\n [-1, -36]\n ],\n [\n [8471, 4532],\n [3, 14],\n [24, 13],\n [19, 2],\n [9, 8],\n [10, -8],\n [-10, -16],\n [-29, -25],\n [-23, -17]\n ],\n [\n [3286, 5693],\n [16, 8],\n [6, -2],\n [-1, -44],\n [-23, -7],\n [-5, 6],\n [8, 16],\n [-1, 23]\n ],\n [\n [5233, 7240],\n [31, 24],\n [19, -7],\n [-1, -30],\n [24, 22],\n [2, -12],\n [-14, -29],\n [0, -27],\n [9, -15],\n [-3, -51],\n [-19, -29],\n [6, -33],\n [14, -1],\n [7, -28],\n [11, -9]\n ],\n [\n [6004, 7174],\n [-11, 27],\n [11, 22],\n [-17, -5],\n [-23, 13],\n [-19, -34],\n [-43, -6],\n [-22, 31],\n [-30, 2],\n [-6, -24],\n [-20, -7],\n [-26, 31],\n [-31, -1],\n [-16, 59],\n [-21, 33],\n [14, 46],\n [-18, 28],\n [31, 56],\n [43, 3],\n [12, 45],\n [53, -8],\n [33, 38],\n [32, 17],\n [46, 1],\n [49, -42],\n [40, -22],\n [32, 9],\n [24, -6],\n [33, 31]\n ],\n [\n [5777, 7539],\n [3, -23],\n [25, -19],\n [-5, -14],\n [-33, -3],\n [-12, -19],\n [-23, -31],\n [-9, 27],\n [0, 12]\n ],\n [\n [8382, 6499],\n [-17, -95],\n [-12, -49],\n [-14, 50],\n [-4, 44],\n [17, 58],\n [22, 45],\n [13, -18],\n [-5, -35]\n ],\n [\n [6088, 4781],\n [-12, -73],\n [1, -33],\n [18, -22],\n [1, -15],\n [-8, -36],\n [2, -18],\n [-2, -28],\n [10, -37],\n [11, -58],\n [10, -13]\n ],\n [\n [5909, 4512],\n [-15, 18],\n [-18, 10],\n [-11, 10],\n [-12, 15]\n ],\n [\n [5844, 4990],\n [10, 8],\n [31, -1],\n [56, 4]\n ],\n [\n [6061, 7840],\n [-22, -5],\n [-18, -19],\n [-26, -3],\n [-24, -22],\n [1, -37],\n [14, -14],\n [28, 4],\n [-5, -21],\n [-31, -11],\n [-37, -34],\n [-16, 12],\n [6, 28],\n [-30, 17],\n [5, 12],\n [26, 19],\n [-8, 14],\n [-43, 15],\n [-2, 22],\n [-25, -8],\n [-11, -32],\n [-21, -44]\n ],\n [\n [3517, 3063],\n [-12, -38],\n [-31, -32],\n [-21, 11],\n [-15, -6],\n [-26, 25],\n [-18, -1],\n [-17, 32]\n ],\n [\n [679, 6185],\n [-4, -10],\n [-7, 8],\n [1, 17],\n [-4, 21],\n [1, 7],\n [5, 10],\n [-2, 11],\n [1, 6],\n [3, -1],\n [10, -10],\n [5, -5],\n [5, -8],\n [7, -21],\n [-1, -3],\n [-11, -13],\n [-9, -9]\n ],\n [\n [664, 6277],\n [-9, -4],\n [-5, 12],\n [-3, 5],\n [0, 4],\n [3, 5],\n [9, -6],\n [8, -9],\n [-3, -7]\n ],\n [\n [646, 6309],\n [-1, -7],\n [-15, 2],\n [2, 7],\n [14, -2]\n ],\n [\n [621, 6317],\n [-2, -3],\n [-2, 1],\n [-9, 2],\n [-4, 13],\n [-1, 2],\n [7, 8],\n [3, -3],\n [8, -20]\n ],\n [\n [574, 6356],\n [-4, -6],\n [-9, 11],\n [1, 4],\n [5, 6],\n [6, -1],\n [1, -14]\n ],\n [\n [3135, 7724],\n [5, -19],\n [-30, -29],\n [-29, -20],\n [-29, -18],\n [-15, -35],\n [-4, -13],\n [-1, -31],\n [10, -32],\n [11, -1],\n [-3, 21],\n [8, -13],\n [-2, -17],\n [-19, -9],\n [-13, 1],\n [-20, -10],\n [-12, -3],\n [-17, -3],\n [-23, -17],\n [41, 11],\n [8, -11],\n [-39, -18],\n [-17, 0],\n [0, 7],\n [-8, -16],\n [8, -3],\n [-6, -43],\n [-20, -45],\n [-2, 15],\n [-6, 3],\n [-9, 15],\n [5, -32],\n [7, -10],\n [1, -23],\n [-9, -23],\n [-16, -47],\n [-2, 3],\n [8, 40],\n [-14, 22],\n [-3, 49],\n [-5, -25],\n [5, -38],\n [-18, 10],\n [19, -19],\n [1, -57],\n [8, -4],\n [3, -20],\n [4, -59],\n [-17, -44],\n [-29, -18],\n [-18, -34],\n [-14, -4],\n [-14, -22],\n [-4, -20],\n [-31, -38],\n [-16, -28],\n [-13, -35],\n [-4, -42],\n [5, -41],\n [9, -51],\n [13, -41],\n [0, -26],\n [13, -69],\n [-1, -39],\n [-1, -23],\n [-7, -36],\n [-8, -8],\n [-14, 7],\n [-4, 26],\n [-11, 14],\n [-15, 51],\n [-13, 45],\n [-4, 23],\n [6, 39],\n [-8, 33],\n [-22, 49],\n [-10, 9],\n [-28, -27],\n [-5, 3],\n [-14, 28],\n [-17, 14],\n [-32, -7],\n [-24, 7],\n [-21, -5],\n [-12, -9],\n [5, -15],\n [0, -24],\n [5, -12],\n [-5, -8],\n [-10, 9],\n [-11, -11],\n [-20, 2],\n [-20, 31],\n [-25, -8],\n [-20, 14],\n [-17, -4],\n [-24, -14],\n [-25, -44],\n [-27, -25],\n [-16, -28],\n [-6, -27],\n [0, -41],\n [1, -28],\n [5, -20]\n ],\n [\n [1746, 6980],\n [-4, 30],\n [-18, 34],\n [-13, 7],\n [-3, 17],\n [-16, 3],\n [-10, 16],\n [-26, 6],\n [-7, 9],\n [-3, 32],\n [-27, 60],\n [-23, 82],\n [1, 14],\n [-13, 19],\n [-21, 50],\n [-4, 48],\n [-15, 32],\n [6, 49],\n [-1, 51],\n [-8, 45],\n [10, 56],\n [4, 53],\n [3, 54],\n [-5, 79],\n [-9, 51],\n [-8, 27],\n [4, 12],\n [40, -20],\n [15, -56],\n [7, 15],\n [-5, 49],\n [-9, 48]\n ],\n [\n [750, 8432],\n [-28, -23],\n [-14, 15],\n [-4, 28],\n [25, 21],\n [15, 9],\n [18, -4],\n [12, -18],\n [-24, -28]\n ],\n [\n [401, 8597],\n [-18, -9],\n [-18, 11],\n [-17, 16],\n [28, 10],\n [22, -6],\n [3, -22]\n ],\n [\n [230, 8826],\n [17, -12],\n [17, 6],\n [23, -15],\n [27, -8],\n [-2, -7],\n [-21, -12],\n [-21, 13],\n [-11, 11],\n [-24, -4],\n [-7, 5],\n [2, 23]\n ],\n [\n [1374, 8295],\n [-15, 22],\n [-25, 19],\n [-8, 52],\n [-36, 47],\n [-15, 56],\n [-26, 4],\n [-44, 2],\n [-33, 17],\n [-57, 61],\n [-27, 11],\n [-49, 21],\n [-38, -5],\n [-55, 27],\n [-33, 25],\n [-30, -12],\n [5, -41],\n [-15, -4],\n [-32, -12],\n [-25, -20],\n [-30, -13],\n [-4, 35],\n [12, 58],\n [30, 18],\n [-8, 15],\n [-35, -33],\n [-19, -39],\n [-40, -42],\n [20, -29],\n [-26, -42],\n [-30, -25],\n [-28, -18],\n [-7, -26],\n [-43, -31],\n [-9, -28],\n [-32, -25],\n [-20, 5],\n [-25, -17],\n [-29, -20],\n [-23, -20],\n [-47, -16],\n [-5, 9],\n [31, 28],\n [27, 18],\n [29, 33],\n [35, 6],\n [14, 25],\n [38, 35],\n [6, 12],\n [21, 21],\n [5, 44],\n [14, 35],\n [-32, -18],\n [-9, 11],\n [-15, -22],\n [-18, 30],\n [-8, -21],\n [-10, 29],\n [-28, -23],\n [-17, 0],\n [-3, 35],\n [5, 21],\n [-17, 22],\n [-37, -12],\n [-23, 28],\n [-19, 14],\n [0, 34],\n [-22, 25],\n [11, 34],\n [23, 33],\n [10, 30],\n [22, 4],\n [19, -9],\n [23, 28],\n [20, -5],\n [21, 19],\n [-5, 27],\n [-16, 10],\n [21, 23],\n [-17, -1],\n [-30, -13],\n [-8, -13],\n [-22, 13],\n [-39, -6],\n [-41, 14],\n [-12, 24],\n [-35, 34],\n [39, 25],\n [62, 29],\n [23, 0],\n [-4, -30],\n [59, 2],\n [-23, 37],\n [-34, 23],\n [-20, 29],\n [-26, 25],\n [-38, 19],\n [15, 31],\n [49, 2],\n [35, 27],\n [7, 29],\n [28, 28],\n [28, 6],\n [52, 27],\n [26, -4],\n [42, 31],\n [42, -12],\n [21, -27],\n [12, 11],\n [47, -3],\n [-2, -14],\n [43, -10],\n [28, 6],\n [59, -18],\n [53, -6],\n [21, -8],\n [37, 10],\n [42, -18],\n [31, -8]\n ],\n [\n [3018, 5753],\n [-1, -14],\n [-16, -7],\n [9, -26],\n [0, -31],\n [-12, -35],\n [10, -47],\n [12, 4],\n [6, 43],\n [-8, 21],\n [-2, 45],\n [35, 24],\n [-4, 27],\n [10, 19],\n [10, -41],\n [19, -1],\n [18, -33],\n [1, -20],\n [25, 0],\n [30, 6],\n [16, -27],\n [21, -7],\n [16, 18],\n [0, 15],\n [34, 4],\n [34, 1],\n [-24, -18],\n [10, -28],\n [22, -4],\n [21, -29],\n [4, -48],\n [15, 2],\n [11, -14]\n ],\n [\n [8001, 6331],\n [-37, -51],\n [-24, -56],\n [-6, -41],\n [22, -62],\n [25, -77],\n [26, -37],\n [17, -47],\n [12, -109],\n [-3, -104],\n [-24, -39],\n [-31, -38],\n [-23, -49],\n [-35, -55],\n [-10, 37],\n [8, 40],\n [-21, 34]\n ],\n [\n [9661, 4085],\n [-9, -8],\n [-9, 26],\n [1, 16],\n [17, -34]\n ],\n [\n [9641, 4175],\n [4, -47],\n [-7, 7],\n [-6, -3],\n [-4, 16],\n [0, 45],\n [13, -18]\n ],\n [\n [6475, 6041],\n [-21, -16],\n [-5, -26],\n [-1, -20],\n [-27, -25],\n [-45, -28],\n [-24, -41],\n [-13, -3],\n [-8, 3],\n [-16, -25],\n [-18, -11],\n [-23, -3],\n [-7, -3],\n [-6, -16],\n [-8, -4],\n [-4, -15],\n [-14, 1],\n [-9, -8],\n [-19, 3],\n [-7, 35],\n [1, 32],\n [-5, 17],\n [-5, 44],\n [-8, 24],\n [5, 3],\n [-2, 27],\n [3, 12],\n [-1, 25]\n ],\n [\n [5817, 3752],\n [11, 0],\n [14, -10],\n [9, 7],\n [15, -6]\n ],\n [\n [5911, 3478],\n [-7, -43],\n [-3, -49],\n [-7, -27],\n [-19, -30],\n [-5, -8],\n [-12, -30],\n [-8, -31],\n [-16, -42],\n [-31, -61],\n [-20, -36],\n [-21, -26],\n [-29, -23],\n [-14, -3],\n [-3, -17],\n [-17, 9],\n [-14, -11],\n [-30, 11],\n [-17, -7],\n [-12, 3],\n [-28, -23],\n [-24, -10],\n [-17, -22],\n [-13, -1],\n [-11, 21],\n [-10, 1],\n [-12, 26],\n [-1, -8],\n [-4, 16],\n [0, 34],\n [-9, 40],\n [9, 11],\n [0, 45],\n [-19, 55],\n [-14, 50],\n [0, 1],\n [-20, 76]\n ],\n [\n [5840, 4141],\n [-21, -8],\n [-15, -23],\n [-4, -21],\n [-10, -4],\n [-24, -49],\n [-15, -38],\n [-10, -2],\n [-9, 7],\n [-31, 7]\n ]\n ],\n \"transform\": {\n \"scale\": [0.036003600360036005, 0.016927109510951093],\n \"translate\": [-180, -85.609038]\n }\n}\n;\n Datamap.prototype.abwTopo = '__ABW__';\n Datamap.prototype.afgTopo = '__AFG__';\n Datamap.prototype.agoTopo = '__AGO__';\n Datamap.prototype.aiaTopo = '__AIA__';\n Datamap.prototype.albTopo = '__ALB__';\n Datamap.prototype.aldTopo = '__ALD__';\n Datamap.prototype.andTopo = '__AND__';\n Datamap.prototype.areTopo = '__ARE__';\n Datamap.prototype.argTopo = '__ARG__';\n Datamap.prototype.armTopo = '__ARM__';\n Datamap.prototype.asmTopo = '__ASM__';\n Datamap.prototype.ataTopo = '__ATA__';\n Datamap.prototype.atcTopo = '__ATC__';\n Datamap.prototype.atfTopo = '__ATF__';\n Datamap.prototype.atgTopo = '__ATG__';\n Datamap.prototype.ausTopo = '__AUS__';\n Datamap.prototype.autTopo = '__AUT__';\n Datamap.prototype.azeTopo = '__AZE__';\n Datamap.prototype.bdiTopo = '__BDI__';\n Datamap.prototype.belTopo = '__BEL__';\n Datamap.prototype.benTopo = '__BEN__';\n Datamap.prototype.bfaTopo = '__BFA__';\n Datamap.prototype.bgdTopo = '__BGD__';\n Datamap.prototype.bgrTopo = '__BGR__';\n Datamap.prototype.bhrTopo = '__BHR__';\n Datamap.prototype.bhsTopo = '__BHS__';\n Datamap.prototype.bihTopo = '__BIH__';\n Datamap.prototype.bjnTopo = '__BJN__';\n Datamap.prototype.blmTopo = '__BLM__';\n Datamap.prototype.blrTopo = '__BLR__';\n Datamap.prototype.blzTopo = '__BLZ__';\n Datamap.prototype.bmuTopo = '__BMU__';\n Datamap.prototype.bolTopo = '__BOL__';\n Datamap.prototype.braTopo = '__BRA__';\n Datamap.prototype.brbTopo = '__BRB__';\n Datamap.prototype.brnTopo = '__BRN__';\n Datamap.prototype.btnTopo = '__BTN__';\n Datamap.prototype.norTopo = '__NOR__';\n Datamap.prototype.bwaTopo = '__BWA__';\n Datamap.prototype.cafTopo = '__CAF__';\n Datamap.prototype.canTopo = '__CAN__';\n Datamap.prototype.cheTopo = '__CHE__';\n Datamap.prototype.chlTopo = '__CHL__';\n Datamap.prototype.chnTopo = '__CHN__';\n Datamap.prototype.civTopo = '__CIV__';\n Datamap.prototype.clpTopo = '__CLP__';\n Datamap.prototype.cmrTopo = '__CMR__';\n Datamap.prototype.codTopo = '__COD__';\n Datamap.prototype.cogTopo = '__COG__';\n Datamap.prototype.cokTopo = '__COK__';\n Datamap.prototype.colTopo = '__COL__';\n Datamap.prototype.comTopo = '__COM__';\n Datamap.prototype.cpvTopo = '__CPV__';\n Datamap.prototype.criTopo = '__CRI__';\n Datamap.prototype.csiTopo = '__CSI__';\n Datamap.prototype.cubTopo = '__CUB__';\n Datamap.prototype.cuwTopo = '__CUW__';\n Datamap.prototype.cymTopo = '__CYM__';\n Datamap.prototype.cynTopo = '__CYN__';\n Datamap.prototype.cypTopo = '__CYP__';\n Datamap.prototype.czeTopo = '__CZE__';\n Datamap.prototype.deuTopo = '__DEU__';\n Datamap.prototype.djiTopo = '__DJI__';\n Datamap.prototype.dmaTopo = '__DMA__';\n Datamap.prototype.dnkTopo = '__DNK__';\n Datamap.prototype.domTopo = '__DOM__';\n Datamap.prototype.dzaTopo = '__DZA__';\n Datamap.prototype.ecuTopo = '__ECU__';\n Datamap.prototype.egyTopo = '__EGY__';\n Datamap.prototype.eriTopo = '__ERI__';\n Datamap.prototype.esbTopo = '__ESB__';\n Datamap.prototype.espTopo = '__ESP__';\n Datamap.prototype.estTopo = '__EST__';\n Datamap.prototype.ethTopo = '__ETH__';\n Datamap.prototype.finTopo = '__FIN__';\n Datamap.prototype.fjiTopo = '__FJI__';\n Datamap.prototype.flkTopo = '__FLK__';\n Datamap.prototype.fraTopo = '__FRA__';\n Datamap.prototype.froTopo = '__FRO__';\n Datamap.prototype.fsmTopo = '__FSM__';\n Datamap.prototype.gabTopo = '__GAB__';\n Datamap.prototype.psxTopo = '__PSX__';\n Datamap.prototype.gbrTopo = '__GBR__';\n Datamap.prototype.geoTopo = '__GEO__';\n Datamap.prototype.ggyTopo = '__GGY__';\n Datamap.prototype.ghaTopo = '__GHA__';\n Datamap.prototype.gibTopo = '__GIB__';\n Datamap.prototype.ginTopo = '__GIN__';\n Datamap.prototype.gmbTopo = '__GMB__';\n Datamap.prototype.gnbTopo = '__GNB__';\n Datamap.prototype.gnqTopo = '__GNQ__';\n Datamap.prototype.grcTopo = '__GRC__';\n Datamap.prototype.grdTopo = '__GRD__';\n Datamap.prototype.grlTopo = '__GRL__';\n Datamap.prototype.gtmTopo = '__GTM__';\n Datamap.prototype.gumTopo = '__GUM__';\n Datamap.prototype.guyTopo = '__GUY__';\n Datamap.prototype.hkgTopo = '__HKG__';\n Datamap.prototype.hmdTopo = '__HMD__';\n Datamap.prototype.hndTopo = '__HND__';\n Datamap.prototype.hrvTopo = '__HRV__';\n Datamap.prototype.htiTopo = '__HTI__';\n Datamap.prototype.hunTopo = '__HUN__';\n Datamap.prototype.idnTopo = '__IDN__';\n Datamap.prototype.imnTopo = '__IMN__';\n Datamap.prototype.indTopo = '__IND__';\n Datamap.prototype.ioaTopo = '__IOA__';\n Datamap.prototype.iotTopo = '__IOT__';\n Datamap.prototype.irlTopo = '__IRL__';\n Datamap.prototype.irnTopo = '__IRN__';\n Datamap.prototype.irqTopo = '__IRQ__';\n Datamap.prototype.islTopo = '__ISL__';\n Datamap.prototype.isrTopo = '__ISR__';\n Datamap.prototype.itaTopo = '__ITA__';\n Datamap.prototype.jamTopo = '__JAM__';\n Datamap.prototype.jeyTopo = '__JEY__';\n Datamap.prototype.jorTopo = '__JOR__';\n Datamap.prototype.jpnTopo = '__JPN__';\n Datamap.prototype.kabTopo = '__KAB__';\n Datamap.prototype.kasTopo = '__KAS__';\n Datamap.prototype.kazTopo = '__KAZ__';\n Datamap.prototype.kenTopo = '__KEN__';\n Datamap.prototype.kgzTopo = '__KGZ__';\n Datamap.prototype.khmTopo = '__KHM__';\n Datamap.prototype.kirTopo = '__KIR__';\n Datamap.prototype.knaTopo = '__KNA__';\n Datamap.prototype.korTopo = '__KOR__';\n Datamap.prototype.kosTopo = '__KOS__';\n Datamap.prototype.kwtTopo = '__KWT__';\n Datamap.prototype.laoTopo = '__LAO__';\n Datamap.prototype.lbnTopo = '__LBN__';\n Datamap.prototype.lbrTopo = '__LBR__';\n Datamap.prototype.lbyTopo = '__LBY__';\n Datamap.prototype.lcaTopo = '__LCA__';\n Datamap.prototype.lieTopo = '__LIE__';\n Datamap.prototype.lkaTopo = '__LKA__';\n Datamap.prototype.lsoTopo = '__LSO__';\n Datamap.prototype.ltuTopo = '__LTU__';\n Datamap.prototype.luxTopo = '__LUX__';\n Datamap.prototype.lvaTopo = '__LVA__';\n Datamap.prototype.macTopo = '__MAC__';\n Datamap.prototype.mafTopo = '__MAF__';\n Datamap.prototype.marTopo = '__MAR__';\n Datamap.prototype.mcoTopo = '__MCO__';\n Datamap.prototype.mdaTopo = '__MDA__';\n Datamap.prototype.mdgTopo = '__MDG__';\n Datamap.prototype.mdvTopo = '__MDV__';\n Datamap.prototype.mexTopo = '__MEX__';\n Datamap.prototype.mhlTopo = '__MHL__';\n Datamap.prototype.mkdTopo = '__MKD__';\n Datamap.prototype.mliTopo = '__MLI__';\n Datamap.prototype.mltTopo = '__MLT__';\n Datamap.prototype.mmrTopo = '__MMR__';\n Datamap.prototype.mneTopo = '__MNE__';\n Datamap.prototype.mngTopo = '__MNG__';\n Datamap.prototype.mnpTopo = '__MNP__';\n Datamap.prototype.mozTopo = '__MOZ__';\n Datamap.prototype.mrtTopo = '__MRT__';\n Datamap.prototype.msrTopo = '__MSR__';\n Datamap.prototype.musTopo = '__MUS__';\n Datamap.prototype.mwiTopo = '__MWI__';\n Datamap.prototype.mysTopo = '__MYS__';\n Datamap.prototype.namTopo = '__NAM__';\n Datamap.prototype.nclTopo = '__NCL__';\n Datamap.prototype.nerTopo = '__NER__';\n Datamap.prototype.nfkTopo = '__NFK__';\n Datamap.prototype.ngaTopo = '__NGA__';\n Datamap.prototype.nicTopo = '__NIC__';\n Datamap.prototype.niuTopo = '__NIU__';\n Datamap.prototype.nldTopo = '__NLD__';\n Datamap.prototype.nplTopo = '__NPL__';\n Datamap.prototype.nruTopo = '__NRU__';\n Datamap.prototype.nulTopo = '__NUL__';\n Datamap.prototype.nzlTopo = '__NZL__';\n Datamap.prototype.omnTopo = '__OMN__';\n Datamap.prototype.pakTopo = '__PAK__';\n Datamap.prototype.panTopo = '__PAN__';\n Datamap.prototype.pcnTopo = '__PCN__';\n Datamap.prototype.perTopo = '__PER__';\n Datamap.prototype.pgaTopo = '__PGA__';\n Datamap.prototype.phlTopo = '__PHL__';\n Datamap.prototype.plwTopo = '__PLW__';\n Datamap.prototype.pngTopo = '__PNG__';\n Datamap.prototype.polTopo = '__POL__';\n Datamap.prototype.priTopo = '__PRI__';\n Datamap.prototype.prkTopo = '__PRK__';\n Datamap.prototype.prtTopo = '__PRT__';\n Datamap.prototype.pryTopo = '__PRY__';\n Datamap.prototype.pyfTopo = '__PYF__';\n Datamap.prototype.qatTopo = '__QAT__';\n Datamap.prototype.rouTopo = '__ROU__';\n Datamap.prototype.rusTopo = '__RUS__';\n Datamap.prototype.rwaTopo = '__RWA__';\n Datamap.prototype.sahTopo = '__SAH__';\n Datamap.prototype.sauTopo = '__SAU__';\n Datamap.prototype.scrTopo = '__SCR__';\n Datamap.prototype.sdnTopo = '__SDN__';\n Datamap.prototype.sdsTopo = '__SDS__';\n Datamap.prototype.senTopo = '__SEN__';\n Datamap.prototype.serTopo = '__SER__';\n Datamap.prototype.sgpTopo = '__SGP__';\n Datamap.prototype.sgsTopo = '__SGS__';\n Datamap.prototype.shnTopo = '__SHN__';\n Datamap.prototype.slbTopo = '__SLB__';\n Datamap.prototype.sleTopo = '__SLE__';\n Datamap.prototype.slvTopo = '__SLV__';\n Datamap.prototype.smrTopo = '__SMR__';\n Datamap.prototype.solTopo = '__SOL__';\n Datamap.prototype.somTopo = '__SOM__';\n Datamap.prototype.spmTopo = '__SPM__';\n Datamap.prototype.srbTopo = '__SRB__';\n Datamap.prototype.stpTopo = '__STP__';\n Datamap.prototype.surTopo = '__SUR__';\n Datamap.prototype.svkTopo = '__SVK__';\n Datamap.prototype.svnTopo = '__SVN__';\n Datamap.prototype.sweTopo = '__SWE__';\n Datamap.prototype.swzTopo = '__SWZ__';\n Datamap.prototype.sxmTopo = '__SXM__';\n Datamap.prototype.sycTopo = '__SYC__';\n Datamap.prototype.syrTopo = '__SYR__';\n Datamap.prototype.tcaTopo = '__TCA__';\n Datamap.prototype.tcdTopo = '__TCD__';\n Datamap.prototype.tgoTopo = '__TGO__';\n Datamap.prototype.thaTopo = '__THA__';\n Datamap.prototype.tjkTopo = '__TJK__';\n Datamap.prototype.tkmTopo = '__TKM__';\n Datamap.prototype.tlsTopo = '__TLS__';\n Datamap.prototype.tonTopo = '__TON__';\n Datamap.prototype.ttoTopo = '__TTO__';\n Datamap.prototype.tunTopo = '__TUN__';\n Datamap.prototype.turTopo = '__TUR__';\n Datamap.prototype.tuvTopo = '__TUV__';\n Datamap.prototype.twnTopo = '__TWN__';\n Datamap.prototype.tzaTopo = '__TZA__';\n Datamap.prototype.ugaTopo = '__UGA__';\n Datamap.prototype.ukrTopo = '__UKR__';\n Datamap.prototype.umiTopo = '__UMI__';\n Datamap.prototype.uryTopo = '__URY__';\n Datamap.prototype.usaTopo = {\"type\":\"Topology\",\"transform\":{\"scale\":[0.03514630243024302,0.005240860686068607],\"translate\":[-178.123152,18.948267]},\"objects\":{\"usa\":{\"type\":\"GeometryCollection\",\"geometries\":[{\"type\":\"Polygon\",\"id\":\"AL\",\"arcs\":[[0,1,2,3,4]],\"properties\":{\"name\":\"Alabama\"}},{\"type\":\"MultiPolygon\",\"id\":\"AK\",\"arcs\":[[[5]],[[6]],[[7]],[[8]],[[9]],[[10]],[[11]],[[12]],[[13]],[[14]],[[15]],[[16]],[[17]],[[18]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]]],\"properties\":{\"name\":\"Alaska\"}},{\"type\":\"Polygon\",\"id\":\"AZ\",\"arcs\":[[44,45,46,47,48]],\"properties\":{\"name\":\"Arizona\"}},{\"type\":\"Polygon\",\"id\":\"AR\",\"arcs\":[[49,50,51,52,53,54]],\"properties\":{\"name\":\"Arkansas\"}},{\"type\":\"Polygon\",\"id\":\"CA\",\"arcs\":[[55,-47,56,57]],\"properties\":{\"name\":\"California\"}},{\"type\":\"Polygon\",\"id\":\"CO\",\"arcs\":[[58,59,60,61,62,63]],\"properties\":{\"name\":\"Colorado\"}},{\"type\":\"Polygon\",\"id\":\"CT\",\"arcs\":[[64,65,66,67]],\"properties\":{\"name\":\"Connecticut\"}},{\"type\":\"Polygon\",\"id\":\"DE\",\"arcs\":[[68,69,70,71]],\"properties\":{\"name\":\"Delaware\"}},{\"type\":\"Polygon\",\"id\":\"DC\",\"arcs\":[[72,73]],\"properties\":{\"name\":\"District of Columbia\"}},{\"type\":\"Polygon\",\"id\":\"FL\",\"arcs\":[[74,75,-2]],\"properties\":{\"name\":\"Florida\"}},{\"type\":\"Polygon\",\"id\":\"GA\",\"arcs\":[[76,77,-75,-1,78,79]],\"properties\":{\"name\":\"Georgia\"}},{\"type\":\"MultiPolygon\",\"id\":\"HI\",\"arcs\":[[[80]],[[81]],[[82]],[[83]],[[84]]],\"properties\":{\"name\":\"Hawaii\"}},{\"type\":\"Polygon\",\"id\":\"ID\",\"arcs\":[[85,86,87,88,89,90,91]],\"properties\":{\"name\":\"Idaho\"}},{\"type\":\"Polygon\",\"id\":\"IL\",\"arcs\":[[92,93,94,95,96,97]],\"properties\":{\"name\":\"Illinois\"}},{\"type\":\"Polygon\",\"id\":\"IN\",\"arcs\":[[98,99,-95,100,101]],\"properties\":{\"name\":\"Indiana\"}},{\"type\":\"Polygon\",\"id\":\"IA\",\"arcs\":[[102,-98,103,104,105,106]],\"properties\":{\"name\":\"Iowa\"}},{\"type\":\"Polygon\",\"id\":\"KS\",\"arcs\":[[107,108,-60,109]],\"properties\":{\"name\":\"Kansas\"}},{\"type\":\"Polygon\",\"id\":\"KY\",\"arcs\":[[110,111,112,113,-96,-100,114]],\"properties\":{\"name\":\"Kentucky\"}},{\"type\":\"Polygon\",\"id\":\"LA\",\"arcs\":[[115,116,117,-52]],\"properties\":{\"name\":\"Louisiana\"}},{\"type\":\"Polygon\",\"id\":\"ME\",\"arcs\":[[118,119]],\"properties\":{\"name\":\"Maine\"}},{\"type\":\"MultiPolygon\",\"id\":\"MD\",\"arcs\":[[[120]],[[-71,121,122,123,124,-74,125,126,127]]],\"properties\":{\"name\":\"Maryland\"}},{\"type\":\"Polygon\",\"id\":\"MA\",\"arcs\":[[128,129,130,131,-68,132,133,134]],\"properties\":{\"name\":\"Massachusetts\"}},{\"type\":\"MultiPolygon\",\"id\":\"MI\",\"arcs\":[[[-102,135,136]],[[137]],[[138,139]],[[140]]],\"properties\":{\"name\":\"Michigan\"}},{\"type\":\"Polygon\",\"id\":\"MN\",\"arcs\":[[-107,141,142,143,144]],\"properties\":{\"name\":\"Minnesota\"}},{\"type\":\"Polygon\",\"id\":\"MS\",\"arcs\":[[-4,145,-116,-51,146]],\"properties\":{\"name\":\"Mississippi\"}},{\"type\":\"Polygon\",\"id\":\"MO\",\"arcs\":[[-97,-114,147,-55,148,-108,149,-104]],\"properties\":{\"name\":\"Missouri\"}},{\"type\":\"Polygon\",\"id\":\"MT\",\"arcs\":[[150,151,-92,152,153]],\"properties\":{\"name\":\"Montana\"}},{\"type\":\"Polygon\",\"id\":\"NE\",\"arcs\":[[-105,-150,-110,-59,154,155]],\"properties\":{\"name\":\"Nebraska\"}},{\"type\":\"Polygon\",\"id\":\"NV\",\"arcs\":[[156,-48,-56,157,-88]],\"properties\":{\"name\":\"Nevada\"}},{\"type\":\"Polygon\",\"id\":\"NH\",\"arcs\":[[-135,158,159,-120,160]],\"properties\":{\"name\":\"New Hampshire\"}},{\"type\":\"Polygon\",\"id\":\"NJ\",\"arcs\":[[161,-69,162,163]],\"properties\":{\"name\":\"New Jersey\"}},{\"type\":\"Polygon\",\"id\":\"NM\",\"arcs\":[[164,165,166,-45,-62]],\"properties\":{\"name\":\"New Mexico\"}},{\"type\":\"Polygon\",\"id\":\"NY\",\"arcs\":[[-133,-67,167,-164,168,169,170]],\"properties\":{\"name\":\"New York\"}},{\"type\":\"Polygon\",\"id\":\"NC\",\"arcs\":[[171,172,-80,173,174]],\"properties\":{\"name\":\"North Carolina\"}},{\"type\":\"Polygon\",\"id\":\"ND\",\"arcs\":[[175,-154,176,-143]],\"properties\":{\"name\":\"North Dakota\"}},{\"type\":\"Polygon\",\"id\":\"OH\",\"arcs\":[[177,-115,-99,-137,178,179]],\"properties\":{\"name\":\"Ohio\"}},{\"type\":\"Polygon\",\"id\":\"OK\",\"arcs\":[[-149,-54,180,-165,-61,-109]],\"properties\":{\"name\":\"Oklahoma\"}},{\"type\":\"Polygon\",\"id\":\"OR\",\"arcs\":[[-89,-158,-58,181,182]],\"properties\":{\"name\":\"Oregon\"}},{\"type\":\"Polygon\",\"id\":\"PA\",\"arcs\":[[-163,-72,-128,183,-180,184,-169]],\"properties\":{\"name\":\"Pennsylvania\"}},{\"type\":\"MultiPolygon\",\"id\":\"RI\",\"arcs\":[[[185,-130]],[[186,-65,-132]]],\"properties\":{\"name\":\"Rhode Island\"}},{\"type\":\"Polygon\",\"id\":\"SC\",\"arcs\":[[187,-77,-173]],\"properties\":{\"name\":\"South Carolina\"}},{\"type\":\"Polygon\",\"id\":\"SD\",\"arcs\":[[-142,-106,-156,188,-151,-176]],\"properties\":{\"name\":\"South Dakota\"}},{\"type\":\"Polygon\",\"id\":\"TN\",\"arcs\":[[189,-174,-79,-5,-147,-50,-148,-113]],\"properties\":{\"name\":\"Tennessee\"}},{\"type\":\"Polygon\",\"id\":\"TX\",\"arcs\":[[-53,-118,190,-166,-181]],\"properties\":{\"name\":\"Texas\"}},{\"type\":\"Polygon\",\"id\":\"UT\",\"arcs\":[[191,-63,-49,-157,-87]],\"properties\":{\"name\":\"Utah\"}},{\"type\":\"Polygon\",\"id\":\"VT\",\"arcs\":[[-134,-171,192,-159]],\"properties\":{\"name\":\"Vermont\"}},{\"type\":\"MultiPolygon\",\"id\":\"VA\",\"arcs\":[[[193,-123]],[[120]],[[-126,-73,-125,194,-175,-190,-112,195]]],\"properties\":{\"name\":\"Virginia\"}},{\"type\":\"MultiPolygon\",\"id\":\"WA\",\"arcs\":[[[-183,196,-90]],[[197]],[[198]]],\"properties\":{\"name\":\"Washington\"}},{\"type\":\"Polygon\",\"id\":\"WV\",\"arcs\":[[-184,-127,-196,-111,-178]],\"properties\":{\"name\":\"West Virginia\"}},{\"type\":\"Polygon\",\"id\":\"WI\",\"arcs\":[[199,-93,-103,-145,200,-140]],\"properties\":{\"name\":\"Wisconsin\"}},{\"type\":\"Polygon\",\"id\":\"WY\",\"arcs\":[[-189,-155,-64,-192,-86,-152]],\"properties\":{\"name\":\"Wyoming\"}}]}},\"arcs\":[[[2632,3060],[5,-164],[7,-242],[4,-53],[3,-30],[-2,-19],[4,-11],[-5,-25],[0,-24],[-2,-32],[2,-57],[-2,-51],[3,-52]],[[2649,2300],[-14,-1],[-59,0],[-1,-25],[6,-37],[-1,-31],[2,-16],[-4,-28]],[[2578,2162],[-4,-6],[-7,31],[-1,47],[-2,6],[-3,-36],[-1,-34],[-7,9]],[[2553,2179],[-2,291],[6,363],[4,209],[-3,20]],[[2558,3062],[24,1],[50,-3]],[[1324,6901],[1,32],[6,-19],[-1,-32],[-8,4],[2,15]],[[1317,6960],[5,-23],[-3,-33],[-2,11],[0,45]],[[1285,7153],[6,5],[3,-8],[-1,-28],[-6,-6],[-5,17],[3,20]],[[1267,7137],[12,-7],[3,-36],[13,-41],[4,-25],[0,-21],[3,-4],[1,-27],[5,-27],[0,-25],[3,8],[2,-19],[1,-74],[-3,-17],[-7,3],[-3,38],[-2,-3],[-6,28],[-2,-10],[-5,10],[1,-28],[5,7],[3,-10],[-2,-39],[-5,4],[-9,49],[-2,25],[1,26],[-7,-2],[0,20],[5,2],[5,18],[-2,31],[-6,7],[-1,50],[-2,25],[-4,-18],[-2,28],[4,14],[-3,32],[2,8]],[[1263,6985],[5,-12],[4,15],[4,-7],[-4,-28],[-6,8],[-3,24]],[[1258,7247],[-4,19],[5,13],[15,-18],[7,1],[5,-36],[9,-29],[-1,-22],[-5,-11],[-6,5],[-5,-14],[-6,9],[-7,-9],[-1,45],[0,30],[-5,1],[-1,16]],[[1252,7162],[-4,14],[-4,32],[0,24],[3,11],[4,-11],[0,20],[12,-35],[1,-33],[-4,-5],[-3,-37],[3,-11],[-3,-43],[-5,9],[0,-27],[-3,13],[-2,54],[5,25]],[[1207,7331],[8,38],[3,-16],[7,-13],[6,-2],[0,-30],[6,-99],[0,-85],[-1,-22],[-4,13],[-10,84],[-7,25],[3,20],[-3,48],[-8,39]],[[1235,7494],[10,-15],[5,2],[0,-14],[8,-52],[-5,8],[-2,-18],[6,-27],[2,-48],[-6,-13],[-2,-16],[-10,-35],[-3,1],[-1,37],[2,22],[-1,32],[-3,40],[0,21],[-2,51],[-4,22],[-1,38],[7,-36]],[[1203,7324],[4,0],[4,-35],[-2,-24],[-6,-5],[0,38],[0,26]],[[1207,7331],[-5,7],[-3,26],[-6,18],[-5,37],[-6,17],[1,30],[4,10],[1,26],[3,-11],[8,-1],[6,17],[8,-23],[-5,-26],[2,-9],[4,28],[10,-9],[5,-21],[-3,-38],[3,-3],[3,-50],[-7,-7],[-14,41],[0,-42],[-4,-17]],[[883,7871],[-12,-48],[-1,-19],[-9,-12],[2,29],[10,30],[7,34],[3,-14]],[[870,7943],[-2,-39],[-4,-41],[-6,14],[5,47],[7,19]],[[863,9788],[3,-8],[15,-9],[8,5],[10,0],[12,-7],[7,4],[7,-15],[12,-18],[16,-4],[5,10],[11,6],[4,14],[12,2],[0,-9],[7,5],[15,-15],[9,-24],[10,-11],[2,-11],[8,-2],[8,-18],[1,-11],[5,9],[6,-7],[0,-1783],[13,-16],[2,17],[14,-24],[8,30],[18,4],[-3,-52],[4,-17],[10,-17],[2,-27],[29,-101],[4,-63],[6,17],[12,31],[7,1],[3,23],[0,34],[5,0],[1,31],[9,7],[13,26],[13,-45],[-1,-27],[3,-27],[7,-7],[10,-40],[-1,-12],[4,-22],[12,-25],[19,-110],[3,-29],[6,-29],[8,-65],[9,-55],[-3,-23],[9,-9],[-2,-33],[7,-14],[1,-38],[7,2],[14,-40],[9,-7],[5,-19],[4,-5],[1,-19],[9,-5],[3,-23],[-4,-43],[1,-36],[4,-58],[-4,-15],[-6,-53],[-10,-39],[-3,20],[-4,-6],[-3,39],[1,17],[-3,20],[7,21],[-2,7],[-7,-26],[-3,17],[-4,-10],[-12,42],[4,46],[-8,-15],[0,-23],[-6,17],[-1,22],[4,24],[-1,24],[-6,-19],[-6,42],[-3,-8],[-2,36],[5,23],[6,0],[-2,28],[3,36],[-5,-1],[-9,32],[-6,37],[-15,27],[0,77],[-4,9],[1,31],[-5,9],[-8,42],[-2,22],[-12,7],[-14,56],[-6,132],[-3,-30],[1,-27],[6,-53],[-1,-8],[3,-43],[0,-28],[-6,6],[-4,31],[-6,6],[-8,-9],[0,45],[-5,38],[-5,-12],[-17,40],[-2,-11],[10,-13],[7,-31],[3,-1],[1,-25],[4,-30],[-10,-16],[-5,10],[0,-26],[-8,20],[-2,14],[-5,0],[-13,38],[-10,33],[-1,20],[-5,30],[-14,21],[-9,21],[-14,26],[-9,24],[1,26],[2,-9],[3,17],[-3,38],[4,21],[-2,9],[-7,-40],[-14,-26],[-18,10],[-14,24],[-1,18],[-7,-4],[-7,14],[-17,12],[-9,1],[-21,-10],[-8,-7],[-10,27],[-12,12],[-3,17],[-2,28],[-8,-2],[-3,-25],[-15,34],[-2,14],[-15,-27],[-7,-32],[-3,30],[3,17],[4,-5],[14,22],[-2,17],[-6,-8],[-3,22],[-6,3],[-6,55],[-3,-13],[-8,-8],[-3,8],[-3,-18],[-11,6],[-1,-20],[-7,-5],[-3,7],[2,36],[-3,-1],[-5,-38],[7,-12],[1,-27],[4,-30],[-3,-31],[-5,10],[-2,-15],[6,-7],[3,-41],[-8,-9],[-4,9],[-7,-12],[-3,10],[-9,-2],[0,16],[-4,-10],[-3,-20],[-3,18],[-5,-25],[2,-12],[-6,-15],[-6,-2],[-3,-20],[-6,-17],[-4,6],[-5,-21],[-4,1],[-8,-43],[-9,-3],[-3,14],[-5,-23],[-11,17],[2,33],[8,11],[4,-2],[2,13],[8,25],[0,21],[-11,-28],[-9,16],[-1,12],[5,48],[8,34],[1,29],[2,5],[1,30],[-4,34],[10,12],[19,48],[4,-19],[6,-5],[9,20],[-10,26],[-4,20],[-7,-2],[-5,9],[-2,-8],[-9,-14],[-4,-26],[-9,-6],[-9,-30],[-1,-20],[-7,-11],[-2,-22],[-5,-13],[-2,-39],[-10,-25],[5,-20],[-4,-29],[-9,-5],[-1,-38],[-8,-13],[-3,15],[-4,-29],[-5,-1],[1,-21],[-11,-13],[-2,-57],[12,-3],[10,-16],[3,-19],[-4,-30],[-7,-19],[-6,-1],[0,-17],[-4,-6],[1,-21],[-4,-31],[-9,-29],[-5,0],[-5,-11],[-5,2],[-4,-11],[2,-16],[-7,-8],[-2,-23],[-5,14],[-5,-45],[-9,4],[1,-24],[-6,6],[-3,-11],[0,-32],[-6,-50],[-10,-6],[-7,-23],[-2,-13],[-5,18],[-8,-48],[-2,13],[-5,-4],[-1,-27],[-5,-10],[-6,4],[-4,-27],[8,-9],[-9,-60],[-25,-20],[-6,-54],[-2,12],[1,33],[-5,6],[-6,-13],[-1,-14],[-10,-22],[-4,-25],[-1,18],[-2,-21],[-6,14],[-10,-33],[-8,2],[1,25],[-4,24],[-3,-20],[1,-21],[-11,-64],[-3,16],[-1,-24],[-8,4],[-1,38],[-4,8],[-2,-14],[4,-16],[-2,-27],[-5,-13],[-5,29],[-5,2],[-1,-11],[5,-17],[-9,-27],[6,-7],[0,-13],[-5,9],[-7,-25],[-15,1],[-7,-16],[0,-13],[-8,-15],[-6,6],[-2,35],[6,12],[4,43],[6,1],[13,28],[10,1],[4,-27],[3,20],[-1,23],[6,10],[7,0],[8,50],[10,45],[12,40],[15,18],[6,-9],[6,12],[1,-17],[-3,-19],[4,-14],[1,23],[7,2],[2,-15],[5,-5],[0,18],[-8,15],[0,11],[5,49],[6,28],[9,27],[15,24],[10,35],[5,-13],[4,5],[-1,22],[1,21],[8,44],[11,28],[8,38],[0,21],[7,148],[11,40],[-1,31],[-27,-45],[-8,6],[-2,18],[-5,9],[-1,21],[-4,-10],[-3,-32],[5,-41],[-6,-18],[-5,7],[-9,64],[-6,33],[-4,0],[-2,-24],[-3,-4],[-4,19],[-5,4],[-2,32],[-16,-37],[-13,-26],[-1,-14],[-11,-22],[-6,20],[5,23],[-1,54],[-4,57],[7,24],[-6,49],[-5,27],[-4,39],[-6,17],[-2,-34],[-7,-8],[-12,-22],[-14,-9],[-7,2],[-7,12],[-1,30],[-5,9],[-9,42],[-8,8],[-8,46],[6,21],[1,39],[-5,-8],[0,24],[2,19],[-6,18],[0,-19],[-7,8],[-1,32],[-6,4],[-3,22],[0,27],[-5,-12],[-1,26],[7,6],[-6,30],[10,2],[0,35],[2,24],[18,77],[4,23],[3,-5],[-2,33],[7,55],[6,22],[11,9],[8,-9],[12,-33],[8,4],[11,32],[11,49],[6,6],[1,-13],[13,0],[12,10],[11,52],[0,12],[-5,48],[-1,28],[-8,31],[-3,26],[8,-7],[8,22],[0,20],[-10,39],[-8,-30],[-7,5],[-6,-17],[-8,-4],[-2,-11],[-9,-17],[-2,-28],[-5,-12],[-2,34],[-5,7],[-4,-26],[-2,12],[-10,19],[-20,-1],[-14,-21],[-6,-3],[-11,13],[-22,14],[-6,12],[-3,19],[2,26],[-8,22],[2,24],[5,12],[-2,31],[-8,0],[-6,8],[-13,6],[-7,16],[-10,16],[-1,19],[16,27],[20,43],[15,27],[8,-15],[8,-3],[2,21],[-5,3],[-1,18],[20,29],[22,22],[12,2],[7,-7],[-4,-32],[2,-22],[-3,-15],[4,-26],[8,5],[10,-5],[11,6],[4,-10],[7,-2],[7,10],[8,-11],[9,42],[5,2],[5,-8],[2,24],[-12,11],[-11,-9],[1,31],[-8,34],[-10,10],[-2,30],[7,8],[9,-31],[-1,-24],[4,-18],[10,-22],[2,23],[-11,30],[5,54],[-4,10],[-11,-12],[-11,3],[-2,10],[-6,-10],[-24,23],[0,24],[-7,54],[-6,19],[-9,17],[-19,46],[-9,18],[-8,4],[-13,31],[-12,18],[-1,6],[9,10],[4,29],[1,59],[25,-4],[31,13],[8,11],[12,29],[12,45],[3,45],[5,38],[10,33],[5,24],[13,38],[2,-10],[11,-3],[16,20],[10,21],[24,64],[9,4],[1,-10],[9,7],[9,-2],[18,9],[17,28],[17,58],[7,13],[2,-10],[26,-24],[2,-17],[-9,-22],[-4,-1],[0,-29],[14,9],[0,16],[6,14],[2,-8],[5,33],[13,-30],[-2,-23],[8,-6],[5,-14],[7,22],[13,1],[7,7],[18,-7],[10,-8],[-5,-45],[17,-12],[2,-11],[16,-20],[1,9],[12,13],[11,-1],[0,-11],[7,-1],[7,15],[11,2],[9,-6],[11,-16],[5,3],[7,-22],[4,9],[7,-7],[5,-13]],[[717,7456],[-1,-8],[-9,13],[7,49],[6,4],[4,45],[5,-40],[4,14],[8,-22],[0,-31],[-11,-4],[-5,-13],[-8,-7]],[[688,7363],[8,25],[-8,6],[0,22],[6,14],[5,-10],[0,-22],[3,15],[0,32],[5,-15],[1,21],[5,-12],[5,0],[5,11],[7,-20],[0,-55],[9,4],[-6,-37],[-11,15],[4,-24],[-3,-20],[-6,10],[0,-38],[-8,-10],[-3,-16],[-5,15],[-6,-40],[-4,-4],[-5,-18],[-2,43],[-6,-23],[-1,13],[-6,14],[0,39],[-6,15],[4,45],[11,28],[7,-2],[1,-21]],[[671,7185],[-6,-39],[-2,6],[8,33]],[[640,7055],[4,-2],[-1,-40],[-8,6],[-1,13],[6,23]],[[519,6933],[-2,-41],[-9,-33],[5,51],[2,-5],[4,28]],[[501,6947],[5,0],[0,-20],[-5,-23],[-5,15],[-3,-14],[-2,35],[2,12],[8,-5]],[[451,6875],[1,-16],[-3,-11],[-3,18],[5,9]],[[447,8527],[-4,-19],[-2,16],[6,3]],[[436,6781],[6,-7],[-1,-16],[-5,1],[0,22]],[[358,6745],[2,-22],[-5,-10],[-1,23],[4,9]],[[352,6718],[-8,-21],[-2,14],[3,19],[7,-12]],[[335,7902],[6,7],[2,-14],[5,3],[6,-12],[1,-54],[-3,-18],[-7,-11],[-2,-18],[-11,20],[-5,-1],[-10,28],[-4,0],[-6,15],[-3,25],[4,7],[10,-7],[5,20],[5,2],[3,14],[4,-6]],[[334,6690],[5,-14],[-10,-36],[1,-6],[12,26],[0,-15],[-5,-17],[-8,-12],[-1,-18],[-8,-18],[-7,-1],[-5,-18],[-9,-16],[-5,17],[9,20],[3,-3],[8,16],[-2,19],[4,20],[6,-9],[1,12],[-7,4],[-4,14],[4,23],[11,13],[2,-26],[5,25]],[[266,6527],[10,37],[1,16],[4,17],[7,9],[3,-10],[1,-25],[-12,-27],[-6,-40],[-6,-13],[-2,36]],[[238,6477],[2,-19],[-8,-1],[-1,13],[7,7]],[[227,7303],[-4,-18],[-1,18],[5,0]],[[212,6440],[2,-18],[-5,-13],[-1,19],[4,12]],[[182,8542],[22,-28],[13,24],[6,-2],[5,-14],[2,-23],[11,-12],[4,-12],[15,-5],[8,-8],[-4,-28],[-7,6],[-8,-5],[-4,-13],[-4,-28],[-5,26],[-6,18],[-6,2],[-3,20],[-15,25],[-6,1],[-11,-22],[-7,11],[-4,23],[4,44]],[[162,6381],[0,-22],[-5,-4],[1,19],[4,7]],[[128,6335],[4,-8],[10,1],[1,-7],[-13,-9],[-2,23]],[[108,6360],[0,19],[4,7],[6,-19],[-2,-17],[-4,1],[1,-20],[-5,-2],[-12,-21],[-6,6],[2,15],[7,-2],[9,33]],[[47,6279],[5,3],[0,-24],[-6,3],[-8,-28],[-4,37],[4,1],[0,29],[5,1],[0,-21],[4,-1]],[[28,6296],[3,-9],[-2,-32],[-5,-10],[0,20],[4,31]],[[0,6291],[5,-1],[4,-23],[-4,-27],[-5,51]],[[9993,6496],[6,-13],[0,-19],[-11,-12],[-8,31],[0,15],[13,-2]],[[1966,3444],[-1,-1081]],[[1965,2363],[-57,0],[-34,71],[-73,150],[3,43]],[[1804,2627],[6,8],[1,16],[-1,36],[-4,1],[-2,71],[6,27],[0,28],[-1,45],[4,34],[4,12],[4,25],[-6,27],[-4,51],[-5,31],[0,24]],[[1806,3063],[2,26],[0,36],[-3,36],[-2,112],[11,7],[3,-23],[3,1],[3,33],[0,153]],[[1823,3444],[101,2],[42,-2]],[[2515,3253],[-1,-35],[-4,-11],[-1,-29],[-5,-31],[0,-46],[-3,-34],[-3,-5]],[[2498,3062],[2,-17],[-4,-14],[-2,-33],[-3,-8],[0,-38],[-5,-10],[0,-13],[-6,-31],[2,-21],[-5,-30],[-5,-59],[5,-25],[-2,-16],[1,-39],[-2,-26]],[[2474,2682],[-69,3],[-13,0]],[[2392,2685],[0,101],[-4,8],[-5,-9],[-3,18]],[[2380,2803],[1,335],[-5,211]],[[2376,3349],[4,0],[123,-1],[2,-36],[-4,-23],[-4,-36],[18,0]],[[1654,4398],[0,-331],[0,-241],[36,-171],[35,-169],[27,-137],[20,-101],[34,-185]],[[1804,2627],[-38,-18],[-30,-16],[-4,25],[0,40],[-2,47],[-4,33],[-9,46],[-12,43],[-2,-12],[-4,8],[1,18],[-5,39],[-7,-8],[-12,28],[-2,23],[-8,28],[-9,-1],[-7,13],[-10,-6],[-5,26],[1,53],[-1,8],[1,38],[-8,28],[0,39],[-3,2],[-4,33],[-4,8],[-1,20],[-11,79],[-5,23],[-1,61],[2,-5],[2,37],[-4,33],[-5,-4],[-7,30],[-2,24],[0,23],[-3,31],[0,50],[5,0],[-2,70],[-2,-7],[-1,-35],[-5,-7],[-7,26],[-1,45],[-4,35],[-6,22],[-3,25],[-9,50],[2,14],[-4,64],[2,35],[-3,54],[-7,52],[-7,29],[-2,35],[7,83],[2,29],[-2,22],[3,57],[-2,52],[-3,13],[1,42]],[[1534,4399],[28,1],[24,1],[38,-3],[30,0]],[[2107,4208],[57,0],[0,-191]],[[2164,4017],[1,-574]],[[2165,3443],[-28,1]],[[2137,3444],[-38,-1],[-72,0],[-15,1],[-46,0]],[[1966,3444],[0,223],[-1,21],[0,162],[0,357]],[[1965,4207],[32,1],[63,-1],[47,1]],[[3025,4400],[0,-113],[-2,-18]],[[3023,4269],[-2,3],[-12,-14],[-15,4],[-7,-26],[-7,-9],[-8,-22]],[[2972,4205],[-2,22],[7,21],[-2,16],[2,144]],[[2977,4408],[12,-2],[36,-3],[0,-3]],[[2922,3980],[-2,-23]],[[2920,3957],[-3,-13],[0,-30],[5,-29],[1,-47],[6,-49],[3,-2],[1,-66]],[[2933,3721],[-19,2],[-2,241]],[[2912,3964],[5,21],[5,-5]],[[2876,3786],[-2,27]],[[2874,3813],[2,12],[4,-19],[-4,-20]],[[2649,2300],[4,-55],[39,-13],[37,-14],[1,-41],[4,1],[1,39],[-1,35],[2,15],[7,-16],[8,-7]],[[2751,2244],[1,-83],[4,-93],[8,-122],[13,-131],[-2,-9],[1,-61],[5,-68],[8,-137],[2,-42],[0,-44],[-3,-158],[-3,-3],[-3,-49],[1,-16],[-5,-36],[-2,9],[-6,-15],[-9,-8],[-2,20],[1,29],[-7,85],[-5,15],[-4,-11],[-3,47],[-1,38],[-6,43],[-2,28],[1,41],[-3,8],[1,-24],[-3,-7],[-9,104],[-4,26],[9,76],[-6,-4],[-4,-24],[-3,38],[5,104],[1,87],[-4,21],[-1,28],[-5,6],[-7,46],[-5,19],[0,28],[-4,11],[-3,31],[-11,42],[-9,-10],[0,-29],[-3,5],[-12,-35],[-12,-9],[0,21],[-3,25],[-15,57],[-10,24],[-10,6],[-8,-4],[-17,-18]],[[2703,3063],[-6,-41],[0,-20],[9,-40],[3,3],[5,-42],[1,-22],[4,-40],[7,-24],[3,-35],[8,-33],[0,-22],[5,-35],[7,-29],[2,-32],[1,-40],[3,-14],[5,-51],[0,-33],[7,-16]],[[2767,2497],[-7,-65],[-2,-34],[-3,-29],[0,-30],[-3,-14],[-1,-81]],[[2632,3060],[37,1]],[[2669,3061],[20,-1],[14,3]],[[640,0],[-7,17],[-1,16],[1,43],[-5,73],[4,24],[2,34],[-2,22],[1,23],[8,-27],[9,-20],[5,-29],[0,-26],[8,-40],[-5,-34],[-8,-15],[-7,-25],[-3,-36]],[[613,397],[3,-26],[4,11],[9,-30],[-1,-27],[-9,-14],[-2,6],[-1,33],[-5,7],[-1,19],[3,21]],[[602,432],[-3,-20],[-7,0],[2,22],[8,-2]],[[574,525],[3,-45],[-2,-26],[-6,-5],[-4,54],[4,1],[5,21]],[[531,626],[3,-2],[2,-20],[-1,-28],[-4,-18],[-9,22],[1,31],[8,15]],[[1908,4871],[0,-472]],[[1908,4399],[-31,-1],[-54,0]],[[1823,4398],[-85,1]],[[1738,4399],[0,349],[4,62],[-2,16],[-6,3],[-2,26],[6,68],[3,6],[3,29],[-1,17],[4,23],[1,34],[6,56],[-2,26],[-7,14],[-4,32]],[[1741,5160],[0,34],[-3,33],[0,16],[0,255],[0,236]],[[1738,5734],[28,0]],[[1766,5734],[0,-195],[9,-54],[1,-52],[5,-23],[6,-8],[0,-14],[11,-51],[1,-21],[8,-20],[0,-12],[8,1],[-4,-71],[-1,-45],[3,-29],[-5,-21],[2,-20],[-1,-21],[6,-20],[7,26],[3,21],[5,-19],[-1,-15],[3,-37],[5,-39],[3,-13],[0,-37],[3,-16],[6,-2],[4,-61],[3,-11],[3,18],[9,-1],[7,17],[3,-10],[7,9],[2,-11],[5,8],[7,39],[4,-33],[5,-20]],[[2489,4496],[53,-3],[28,0]],[[2570,4493],[-1,-37],[4,-43],[5,-70]],[[2578,4343],[0,-450],[-3,-35],[3,-40],[1,-34],[-4,-27],[-1,-25],[-5,-41],[-3,-3],[0,-24],[-2,-9],[-1,-45],[0,-13]],[[2563,3597],[-3,-27],[2,-34],[-11,-17],[-1,-20],[2,-25],[-3,-16],[-11,29],[-3,-2],[-4,-33],[1,-11]],[[2532,3441],[-5,2],[-6,55],[2,12],[-2,37],[0,29],[-9,41],[-3,-4],[-3,25],[-9,38],[0,31],[5,49],[-1,18],[3,23],[-4,13],[-6,9],[-3,-18],[-3,11],[-1,63],[-10,41],[-9,49],[-3,58],[-1,39],[3,27]],[[2467,4089],[0,35],[8,21],[1,29],[4,19],[0,33],[-4,27],[2,34],[11,9],[9,24],[0,29],[4,13],[1,37],[0,24],[-7,18],[-1,20],[-6,35]],[[2655,4340],[0,-228],[0,-266]],[[2655,3846],[-2,-9],[2,-52],[-5,-1],[-5,-18],[-8,9],[1,-38],[-5,-16],[-2,-24],[-5,-9],[-3,-48],[-3,-13],[-6,18],[-1,22],[-7,-24],[1,-21],[-7,-7],[-1,19],[-8,-19],[-2,-20],[-7,28],[-4,-6],[-2,13],[-3,-13],[-7,-2],[-3,-18]],[[2578,4343],[3,-12],[8,0],[9,22]],[[2598,4353],[23,0],[34,0],[0,-13]],[[2473,4685],[0,-28],[4,-19],[-3,-23],[1,-43],[2,-30],[10,-22],[2,-24]],[[2467,4089],[-3,7],[-6,38],[-3,-1],[-40,-5],[-39,-2],[-33,3]],[[2343,4129],[-3,25],[2,49],[-3,43],[0,48],[-5,17],[-1,26],[2,23],[-2,33],[-4,13],[-5,86]],[[2324,4492],[-5,41],[2,29],[1,37],[2,14],[-3,19],[1,33],[-2,16],[4,4]],[[2324,4685],[144,0],[5,0]],[[2356,4017],[3,-18],[9,-14],[-6,-56],[4,-18],[4,-45],[6,-10],[0,-412]],[[2376,3444],[-156,0],[-55,-1]],[[2164,4017],[5,0],[187,0]],[[2718,3716],[-1,-57],[4,-37],[4,-28],[2,-22],[5,-22],[4,-3]],[[2736,3547],[-11,-51],[-11,-29],[0,-14],[-4,-13],[0,-16],[-6,-8],[-1,-21],[-16,-27]],[[2687,3368],[0,-3],[-24,2],[-22,6],[-5,-2],[-32,8],[-36,-5],[-6,9],[1,-35],[-36,2],[-3,-2]],[[2524,3348],[1,24],[5,-8],[2,77]],[[2655,3846],[11,0],[5,-40],[1,-17],[9,-7],[6,-26],[5,13],[10,-14],[4,19],[4,6],[1,-32],[3,-6],[4,-26]],[[2474,2682],[3,-22],[-2,-9],[-1,-38],[5,-24],[0,-57],[-3,-44],[-7,-27],[-2,-43],[-2,4],[-1,-70],[-3,-2],[2,-37],[-2,-14],[54,0],[-3,-63],[4,-41],[1,-32],[4,-20]],[[2521,2143],[-9,-26],[0,-19],[7,-12],[3,30],[6,-30],[-1,-24],[-3,-11],[-7,10],[1,-18],[-2,-27],[5,-24],[9,-7],[3,-29],[3,-4],[-5,-32],[-5,6],[-4,33],[-10,18],[0,33],[-6,-11],[1,-27],[-3,-25],[-3,-4],[-3,28],[-7,1],[-2,-29],[-4,-9],[-5,18],[-4,2],[-3,47],[-7,21],[-2,-3],[-3,40],[-7,-5],[0,24],[-8,-23],[1,-18],[-5,-17],[-9,8],[-10,27],[-7,11],[-16,-9],[-2,-8]],[[2398,2049],[-2,19],[6,68],[-2,37],[2,20],[-1,26],[3,19],[3,50],[0,40],[-8,78],[0,41],[-7,42],[0,196]],[[3046,5029],[12,26],[-2,13],[5,30],[4,13],[-1,12],[5,18],[-1,33],[2,50],[5,17],[1,53],[22,147],[6,-7],[0,-35],[4,-13],[9,21],[6,0],[4,14],[8,-31],[4,-25],[1,-214],[-1,-51],[10,-14],[-2,-22],[3,-21],[-2,-18],[4,-30],[5,7],[5,-68],[-6,-31],[-3,12],[-3,-21],[-4,5],[0,-18],[-6,2],[-8,-40],[-2,28],[-3,2],[1,-30],[-6,-15],[-2,24],[-3,-12],[-7,0],[0,28],[-5,-6],[1,-20],[-4,-42],[1,-12],[-6,-23],[-5,9],[-3,-24],[-4,-3],[-4,-20],[-4,4],[-1,21],[-7,-34],[2,-21],[-5,-7],[0,-18],[-5,-22],[-5,-50]],[[3056,4600],[-3,14],[0,19],[-4,22],[-2,250],[-1,124]],[[2904,3626],[2,0],[-1,0],[-1,0]],[[2933,3721],[-6,-80]],[[2927,3641],[-4,-3],[-8,-12]],[[2915,3626],[-6,-8],[0,31],[-2,13],[3,13],[-4,32],[-2,-14],[-6,3],[-2,35],[2,0],[0,45],[2,18],[-2,60],[3,36],[5,6],[0,37],[-3,-5],[0,-18],[-8,-25],[-2,-21],[0,-56],[-3,-26],[1,-44],[4,-30],[-1,-23],[3,-23],[-2,-16],[-6,30],[-10,15],[-2,29],[-6,-16],[-2,23],[5,29]],[[2874,3756],[2,30]],[[2874,3813],[-4,18],[-6,10],[0,28],[-3,15],[-4,4]],[[2857,3888],[-4,53],[-4,0],[-5,18],[-3,-15],[-5,1],[-1,-21],[-8,14],[-6,-28],[-3,6],[-6,-33],[-6,-17],[1,98]],[[2807,3964],[105,0]],[[3053,4565],[1,-34],[-1,-27],[-5,-25],[0,-29],[6,-4],[4,-31],[0,-24],[3,-6],[0,-22],[8,-19],[9,18],[-2,-26],[-13,-23],[-5,-1],[-3,18],[-5,-6],[0,-13],[-5,-9]],[[3045,4302],[-3,35]],[[3042,4337],[0,6]],[[3042,4343],[-3,14],[-2,45],[-4,0],[-8,-2]],[[2977,4408],[0,7],[6,126]],[[2983,4541],[23,-3]],[[3006,4538],[34,-7],[3,18],[7,19],[3,-3]],[[2598,4353],[5,25],[4,43],[4,26],[3,36],[1,52],[0,57],[-9,111],[3,42],[-2,50],[6,51],[2,43],[-1,23],[5,9],[0,31],[8,9],[5,34],[0,-69],[3,-3],[3,35],[1,58],[2,15],[8,9],[-3,41],[5,35],[7,2],[7,-22],[7,-3],[3,-28],[6,-2],[9,-25],[3,1],[4,-41],[-3,-21],[3,-29],[2,-32],[-2,-71],[-6,-18],[-1,-37],[-7,-12],[-4,-44],[2,-17],[6,-15],[6,24],[6,49],[10,19],[5,-15],[3,-27],[3,-80],[0,-39],[3,-48],[-3,-69],[-4,-11],[-1,25],[-3,-7],[-3,-58],[-6,-21],[-2,-44],[-7,-37],[0,-16]],[[2694,4347],[-39,-7]],[[2635,5110],[1,-23],[-4,-4],[1,33],[2,-6]],[[2496,5270],[11,20],[5,23],[12,9],[8,29],[4,1],[3,20],[9,28],[4,24],[7,15],[6,-13],[-11,-59],[-2,-19],[0,-36],[5,27],[10,-4],[8,-19],[7,-52],[3,-10],[7,9],[2,-12],[7,-6],[16,44],[8,4],[10,-2],[7,15],[6,1],[1,-54],[5,-7],[6,8],[2,-12],[4,16],[8,5],[1,-67],[3,-28],[6,-8],[1,19],[5,0],[3,-20],[-3,-14],[-15,12],[-8,-8],[-8,23],[-2,-21],[1,-18],[-4,4],[-5,27],[-9,15],[-5,1],[-4,-25],[-8,-6],[-8,5],[-3,-10],[-1,-21],[-9,-18],[1,25],[-4,5],[-2,-26],[-6,-1],[-3,-11],[-5,-45],[-8,-58],[1,-5]],[[2576,4989],[-4,20],[2,27],[-7,4],[3,26],[0,34],[-5,23],[-4,24],[-12,19],[-4,-7],[-12,29],[-29,38],[-3,33],[-5,11]],[[2541,5539],[-7,-24],[-4,-3],[1,19],[18,45],[-4,-31],[-4,-6]],[[2324,4685],[0,343],[-7,22],[-5,36],[8,41],[1,22]],[[2321,5149],[-1,76],[-4,20],[-2,42],[0,51],[-1,8],[-1,123],[-5,65],[-3,36],[0,77],[1,27],[-3,60]],[[2302,5734],[59,0],[0,73],[5,-2],[4,-14],[4,-100],[3,-11],[9,-3],[1,-10],[11,-4],[1,-21],[10,5],[0,9],[7,10],[6,-4],[8,-16],[2,-19],[4,2],[4,-43],[2,18],[7,8],[1,-18],[9,-12],[0,-17],[4,-14],[8,8],[5,18],[8,12],[2,-28],[5,6],[6,-6],[6,4],[8,-24],[7,4],[0,-10],[-10,-24],[-13,-19],[-9,-20],[-12,-49],[-5,-31],[-8,-34],[-13,-46],[2,-16]],[[2450,5296],[-2,9],[-6,-16],[0,-113],[-2,-11],[-8,-16],[-6,-41],[-1,-27],[3,-2],[4,-24],[-3,-29],[0,-33],[-2,-70],[8,-34],[6,-3],[3,-21],[8,-21],[2,-25],[8,-33],[5,-7],[5,-42],[-1,-30],[2,-22]],[[2553,2179],[-3,-8],[-7,4],[-3,12],[-7,-8],[-9,-22],[-3,-14]],[[2498,3062],[53,0],[7,0]],[[2524,3348],[-2,0],[-2,0],[1,-47],[-6,-48]],[[2376,3349],[0,95]],[[2356,4017],[-7,50],[-6,62]],[[2108,5151],[0,-181],[-1,0]],[[2107,4970],[-53,1],[-90,0],[-56,0],[0,-100]],[[1766,5734],[130,-1],[58,1],[154,0]],[[2108,5734],[0,-217],[0,-366]],[[2107,4208],[0,382]],[[2107,4590],[21,0],[49,-1],[88,0],[1,-10],[15,-34],[4,19],[4,-4],[13,0],[15,-36],[2,-27],[5,-5]],[[1823,4398],[0,-954]],[[1654,4398],[37,-1],[47,2]],[[3006,4538],[-2,14],[0,28],[3,11],[-1,27],[3,81],[5,37],[2,43],[3,16],[-1,47],[10,17],[5,33],[-3,31],[4,32],[0,18]],[[3034,4973],[4,49],[6,-5],[2,12]],[[3056,4600],[-3,-35]],[[2962,4152],[-5,-13],[-2,-29],[8,-14],[0,-22],[-3,-103],[-9,-76],[-6,-22],[-5,-48],[-3,31],[-8,16],[-10,42],[-1,28],[0,4],[2,11]],[[2922,3980],[8,15],[0,15],[9,31],[2,17],[-9,39],[0,24],[-3,6],[-1,22],[5,33],[-3,20],[7,40],[2,21],[4,13]],[[2943,4276],[13,-41],[9,-28],[-3,-55]],[[2137,3444],[0,-95]],[[2137,3349],[-1,0],[0,-474],[0,-193],[0,-192],[-101,0],[-1,-18],[3,-22]],[[2037,2450],[-48,0],[0,-87],[-24,0]],[[2972,4205],[13,-15],[2,11],[10,0],[6,6],[8,31],[1,-22],[5,-10],[-11,-28],[-22,-42],[-9,-8],[-6,2],[-5,-9],[-2,31]],[[2943,4276],[-2,14],[-4,1],[-5,32],[1,29],[-4,22],[-2,-2],[-3,27],[-125,0],[0,48],[0,3]],[[2799,4450],[17,54],[3,26],[5,18],[-2,32],[-2,7],[-2,52],[17,22],[15,-1],[6,-5],[6,-21],[4,8],[12,-1],[8,14],[8,34],[5,1],[0,52],[3,31],[-7,21],[2,24],[11,32],[4,28],[14,64],[13,32],[19,-5],[23,4]],[[2981,4973],[1,-39],[-2,-36],[3,-34],[-1,-37],[-3,-39],[2,-52],[-1,-16],[4,-31],[-1,-132],[0,-16]],[[2909,3359],[4,-77],[-8,8],[-1,-10],[-10,-11],[-1,-11],[-7,-3],[0,-13],[8,9],[1,-8],[9,9],[3,-18],[5,8],[2,-46],[-2,-22],[-3,-2],[-8,-47],[-9,-2],[-2,-33],[4,-32],[4,-6],[-6,-54],[-6,7],[-9,-6],[-6,-11],[-10,-37],[-7,-48],[-4,-60],[-6,13],[-11,-12]],[[2833,2844],[-32,181],[-32,4],[1,21],[-5,33],[-3,-12],[0,20],[-35,10],[-8,-8],[-6,-17],[-10,-13]],[[2669,3061],[1,45],[5,4],[3,31],[7,29],[7,1],[7,29],[8,10],[6,43],[4,13],[1,-19],[11,37],[5,-8],[4,36],[5,9],[1,45]],[[2744,3366],[20,-5],[19,-3],[23,-1],[103,2]],[[2321,5149],[-213,2]],[[2108,5734],[194,0]],[[2777,4138],[-4,-10],[2,-21],[0,-29],[-4,-46],[-3,-70],[-11,-62],[-3,-8],[-4,12],[-3,-27],[-3,1],[-4,-36],[1,-22],[-3,-18],[-4,29],[-5,-46],[1,-29],[-3,-11],[-1,-25],[-8,-4]],[[2694,4347],[11,-26],[3,-15],[3,14],[6,-30],[4,-9],[14,25],[7,-6],[9,36],[12,34],[14,24]],[[2777,4394],[0,-256]],[[2380,2803],[-11,21],[-3,22],[-7,18],[-2,-16],[-8,1],[-1,10],[-7,-19],[-3,11],[-6,-10],[-5,-29],[-2,17],[-6,14],[-7,0],[-2,21],[-7,-42],[-2,24],[-3,-8],[-3,16],[-7,15],[-5,-25],[-2,26],[-4,3],[-2,21],[-6,8],[-3,-18],[-3,16],[-5,-2],[-6,17],[-6,-2],[-2,36],[-9,2],[-4,-6],[-6,37],[-2,-3],[0,370],[-52,0],[-34,0]],[[1534,4399],[-4,22],[-2,61],[0,43],[-4,33],[3,32],[2,51],[4,54],[2,48],[3,162],[0,22],[3,71],[1,99],[-2,54],[1,32],[12,29]],[[1553,5212],[5,-22],[4,5],[3,2],[6,-20],[3,-23],[1,-57],[15,-21],[12,30],[8,3],[9,-10],[1,-13],[16,27],[3,-9],[9,5],[7,19],[12,17],[12,4],[4,12],[58,-1]],[[2807,3964],[-30,0],[0,174]],[[2777,4394],[5,11],[17,45]],[[3045,4302],[-6,-4],[3,39]],[[3042,4343],[-4,3],[-3,-28],[-1,-40],[-11,-9]],[[2833,2844],[-5,-10],[-6,-31],[-6,-49],[-1,-40],[-5,-31],[-6,0],[-2,-23],[-6,-25],[-4,-28],[-6,-11],[-6,-29],[-1,-14],[-6,-16],[-6,-40]],[[2107,4590],[0,380]],[[2687,3368],[57,-2]],[[2398,2049],[-5,-1],[-14,-26],[-6,15],[-1,31],[-3,-22],[-3,5],[-1,-27],[3,-11],[0,-36],[-5,-37],[-9,-47],[-17,-51],[-2,9],[-5,-13],[0,12],[-7,-9],[-3,24],[-2,-5],[7,-49],[-5,-16],[-5,10],[-1,-35],[-7,-35],[-6,-66],[-4,-69],[-3,5],[-1,-25],[3,6],[-2,-50],[-2,-2],[0,-28],[3,-16],[1,-57],[3,-20],[0,-37],[3,-32],[-9,-20],[-3,25],[-7,10],[-9,-3],[-8,32],[-5,3],[-5,25],[-6,8],[-4,24],[-2,58],[-5,34],[0,30],[-2,31],[1,27],[-4,30],[-3,4],[-5,27],[-1,34],[-5,32],[-6,26],[-3,57],[-2,16],[-4,46],[-1,38],[-4,27],[-6,24],[-1,16],[-6,15],[-4,42],[-13,9],[-7,-2],[-7,15],[-1,-20],[-7,-6],[-5,-40],[-3,-64],[-2,-1],[-4,-37],[-5,-1],[-7,29],[-17,47],[-4,25],[-6,24],[-5,54],[-1,49],[-4,40],[-2,35],[-3,22],[-11,32],[-6,44],[-4,15],[-6,38],[-7,20],[-5,50],[-4,11]],[[1908,4399],[0,-192],[57,0]],[[2981,4973],[30,-2],[23,2]],[[2927,3641],[-4,-32],[-3,-12],[-3,-44],[-6,-71],[-5,-15],[-1,27],[2,58],[8,74]],[[2874,3756],[-4,-8],[-2,-28],[1,-19],[8,6],[1,-31],[10,-12],[3,-24],[8,-26],[-4,-54],[4,-41],[-4,-20],[-1,-24],[4,-15],[-4,-23],[-6,30],[-1,-10],[5,-22],[14,-5],[3,-71]],[[2736,3547],[-1,-16],[4,-32],[5,-16],[4,1],[5,25],[4,-20],[7,11],[13,36],[1,-11],[5,17],[0,34],[4,30],[5,29],[2,34],[6,36],[2,44],[5,-27],[4,-8],[3,16],[6,68],[4,-17],[13,77],[2,57],[15,-64],[3,37]],[[1553,5212],[-5,7],[-4,-12],[-6,17],[1,26],[4,14],[-6,40],[-4,103],[-2,14],[-3,73],[-6,28],[-2,56],[3,38],[6,-18],[11,-24],[8,1],[8,-9],[8,9],[3,-16],[7,1],[5,-42],[3,3],[1,-56],[2,-52],[3,6],[-3,43],[1,43],[4,44],[-3,18],[-1,31],[-3,35],[2,25],[-2,29],[-5,4],[-4,22],[1,21],[163,0]],[[1576,5602],[4,9],[0,-39],[-5,15],[1,15]],[[1568,5655],[3,25],[4,-30],[-1,-27],[-7,8],[1,24]],[[2576,4989],[-1,-23],[-6,-4],[-4,-44],[-2,-30],[3,-6],[5,20],[4,38],[6,15],[5,48],[6,10],[-1,-25],[-4,-23],[-8,-79],[-2,-44],[0,-32],[-3,-10],[-2,-43],[1,-37],[-3,-24],[-3,-59],[0,-47],[4,-42],[-1,-55]],[[2450,5296],[6,-2],[20,33],[8,17],[2,-13],[-4,-25],[9,-33],[5,-3]]]};\n Datamap.prototype.usgTopo = '__USG__';\n Datamap.prototype.uzbTopo = '__UZB__';\n Datamap.prototype.vatTopo = '__VAT__';\n Datamap.prototype.vctTopo = '__VCT__';\n Datamap.prototype.venTopo = '__VEN__';\n Datamap.prototype.vgbTopo = '__VGB__';\n Datamap.prototype.virTopo = '__VIR__';\n Datamap.prototype.vnmTopo = '__VNM__';\n Datamap.prototype.vutTopo = '__VUT__';\n Datamap.prototype.wlfTopo = '__WLF__';\n Datamap.prototype.wsbTopo = '__WSB__';\n Datamap.prototype.wsmTopo = '__WSM__';\n Datamap.prototype.yemTopo = '__YEM__';\n Datamap.prototype.zafTopo = '__ZAF__';\n Datamap.prototype.zmbTopo = '__ZMB__';\n Datamap.prototype.zweTopo = '__ZWE__';\n\n /**************************************\n Utilities\n ***************************************/\n\n // Convert lat/lng coords to X / Y coords\n Datamap.prototype.latLngToXY = function(lat, lng) {\n return this.projection([lng, lat]);\n };\n\n // Add layer to root SVG\n Datamap.prototype.addLayer = function( className, id, first ) {\n var layer;\n if ( first ) {\n layer = this.svg.insert('g', ':first-child')\n }\n else {\n layer = this.svg.append('g')\n }\n return layer.attr('id', id || '')\n .attr('class', className || '');\n };\n\n Datamap.prototype.updateChoropleth = function(data, options) {\n var svg = this.svg;\n var that = this;\n\n // When options.reset = true, reset all the fill colors to the defaultFill and kill all data-info\n if ( options && options.reset === true ) {\n svg.selectAll('.datamaps-subunit')\n .attr('data-info', function() {\n return \"{}\"\n })\n .transition().style('fill', this.options.fills.defaultFill)\n }\n\n for ( var subunit in data ) {\n if ( data.hasOwnProperty(subunit) ) {\n var color;\n var subunitData = data[subunit]\n if ( ! subunit ) {\n continue;\n }\n else if ( typeof subunitData === \"string\" ) {\n color = subunitData;\n }\n else if ( typeof subunitData.color === \"string\" ) {\n color = subunitData.color;\n }\n else if ( typeof subunitData.fillColor === \"string\" ) {\n color = subunitData.fillColor;\n }\n else {\n color = this.options.fills[ subunitData.fillKey ];\n }\n // If it's an object, overriding the previous data\n if ( subunitData === Object(subunitData) ) {\n this.options.data[subunit] = defaults(subunitData, this.options.data[subunit] || {});\n var geo = this.svg.select('.' + subunit).attr('data-info', JSON.stringify(this.options.data[subunit]));\n }\n svg\n .selectAll('.' + subunit)\n .transition()\n .style('fill', color);\n }\n }\n };\n\n Datamap.prototype.updatePopup = function (element, d, options) {\n var self = this;\n element.on('mousemove', null);\n element.on('mousemove', function() {\n var position = d3.mouse(self.options.element);\n d3.select(self.svg[0][0].parentNode).select('.datamaps-hoverover')\n .style('top', ( (position[1] + 30)) + \"px\")\n .html(function() {\n var data = JSON.parse(element.attr('data-info'));\n try {\n return options.popupTemplate(d, data);\n } catch (e) {\n return \"\";\n }\n })\n .style('left', ( position[0]) + \"px\");\n });\n\n d3.select(self.svg[0][0].parentNode).select('.datamaps-hoverover').style('display', 'block');\n };\n\n Datamap.prototype.addPlugin = function( name, pluginFn ) {\n var self = this;\n if ( typeof Datamap.prototype[name] === \"undefined\" ) {\n Datamap.prototype[name] = function(data, options, callback, createNewLayer) {\n var layer;\n if ( typeof createNewLayer === \"undefined\" ) {\n createNewLayer = false;\n }\n\n if ( typeof options === 'function' ) {\n callback = options;\n options = undefined;\n }\n\n options = defaults(options || {}, self.options[name + 'Config']);\n\n // Add a single layer, reuse the old layer\n if ( !createNewLayer && this.options[name + 'Layer'] ) {\n layer = this.options[name + 'Layer'];\n options = options || this.options[name + 'Options'];\n }\n else {\n layer = this.addLayer(name);\n this.options[name + 'Layer'] = layer;\n this.options[name + 'Options'] = options;\n }\n pluginFn.apply(this, [layer, data, options]);\n if ( callback ) {\n callback(layer);\n }\n };\n }\n };\n\n // Expose library\n if (typeof exports === 'object') {\n d3 = require('d3');\n topojson = require('topojson');\n module.exports = Datamap;\n }\n else if ( typeof define === \"function\" && define.amd ) {\n define( \"datamaps\", [\"require\", \"d3\", \"topojson\"], function(require) {\n d3 = require('d3');\n topojson = require('topojson');\n\n return Datamap;\n });\n }\n else {\n window.Datamap = window.Datamaps = Datamap;\n }\n\n if ( window.jQuery ) {\n window.jQuery.fn.datamaps = function(options, callback) {\n options = options || {};\n options.element = this[0];\n var datamap = new Datamap(options);\n if ( typeof callback === \"function\" ) {\n callback(datamap, options);\n }\n return this;\n };\n }\n})();\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.topojson = global.topojson || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction noop() {}\n\nfunction transformAbsolute(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n point[0] = (x0 += point[0]) * kx + dx;\n point[1] = (y0 += point[1]) * ky + dy;\n };\n}\n\nfunction transformRelative(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n var x1 = Math.round((point[0] - dx) / kx),\n y1 = Math.round((point[1] - dy) / ky);\n point[0] = x1 - x0;\n point[1] = y1 - y0;\n x0 = x1;\n y0 = y1;\n };\n}\n\nfunction reverse(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n\nfunction bisect(a, x) {\n var lo = 0, hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (a[mid] < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n\nfunction feature(topology, o) {\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function(o) { return feature$1(topology, o); })\n } : feature$1(topology, o);\n}\n\nfunction feature$1(topology, o) {\n var f = {\n type: \"Feature\",\n id: o.id,\n properties: o.properties || {},\n geometry: object(topology, o)\n };\n if (o.id == null) delete f.id;\n return f;\n}\n\nfunction object(topology, o) {\n var absolute = transformAbsolute(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n points.push(p = a[k].slice());\n absolute(p, k);\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n p = p.slice();\n absolute(p, 0);\n return p;\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0].slice());\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0].slice());\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var t = o.type;\n return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n : null;\n }\n\n var geometryType = {\n Point: function(o) { return point(o.coordinates); },\n MultiPoint: function(o) { return o.coordinates.map(point); },\n LineString: function(o) { return line(o.arcs); },\n MultiLineString: function(o) { return o.arcs.map(line); },\n Polygon: function(o) { return polygon(o.arcs); },\n MultiPolygon: function(o) { return o.arcs.map(polygon); }\n };\n\n return geometry(o);\n}\n\nfunction stitchArcs(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n}\n\nfunction mesh(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\n\nfunction meshArcs(topology, o, filter) {\n var arcs = [];\n\n function arc(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function line(arcs) {\n arcs.forEach(arc);\n }\n\n function polygon(arcs) {\n arcs.forEach(line);\n }\n\n function geometry(o) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n }\n\n if (arguments.length > 1) {\n var geomsByArc = [],\n geom;\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n };\n\n geometry(o);\n\n geomsByArc.forEach(arguments.length < 3\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n } else {\n for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n }\n\n return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n}\n\nfunction cartesianTriangleArea(triangle) {\n var a = triangle[0], b = triangle[1], c = triangle[2];\n return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n}\n\nfunction ring(ring) {\n var i = -1,\n n = ring.length,\n a,\n b = ring[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = ring[i];\n area += a[0] * b[1] - a[1] * b[0];\n }\n\n return area / 2;\n}\n\nfunction merge(topology) {\n return object(topology, mergeArcs.apply(this, arguments));\n}\n\nfunction mergeArcs(topology, objects) {\n var polygonsByArc = {},\n polygons = [],\n components = [];\n\n objects.forEach(function(o) {\n if (o.type === \"Polygon\") register(o.arcs);\n else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n });\n\n function register(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n });\n });\n polygons.push(polygon);\n }\n\n function area(ring$$) {\n return Math.abs(ring(object(topology, {type: \"Polygon\", arcs: [ring$$]}).coordinates[0]));\n }\n\n polygons.forEach(function(polygon) {\n if (!polygon._) {\n var component = [],\n neighbors = [polygon];\n polygon._ = 1;\n components.push(component);\n while (polygon = neighbors.pop()) {\n component.push(polygon);\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n if (!polygon._) {\n polygon._ = 1;\n neighbors.push(polygon);\n }\n });\n });\n });\n }\n }\n });\n\n polygons.forEach(function(polygon) {\n delete polygon._;\n });\n\n return {\n type: \"MultiPolygon\",\n arcs: components.map(function(polygons) {\n var arcs = [], n;\n\n // Extract the exterior (unique) arcs.\n polygons.forEach(function(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n arcs.push(arc);\n }\n });\n });\n });\n\n // Stitch the arcs into one or more rings.\n arcs = stitchArcs(topology, arcs);\n\n // If more than one ring is returned,\n // at most one of these rings can be the exterior;\n // choose the one with the greatest absolute area.\n if ((n = arcs.length) > 1) {\n for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n if ((ki = area(arcs[i])) > k) {\n t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n }\n }\n }\n\n return arcs;\n })\n };\n}\n\nfunction neighbors(objects) {\n var indexesByArc = {}, // arc index -> array of object indexes\n neighbors = objects.map(function() { return []; });\n\n function line(arcs, i) {\n arcs.forEach(function(a) {\n if (a < 0) a = ~a;\n var o = indexesByArc[a];\n if (o) o.push(i);\n else indexesByArc[a] = [i];\n });\n }\n\n function polygon(arcs, i) {\n arcs.forEach(function(arc) { line(arc, i); });\n }\n\n function geometry(o, i) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n }\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n };\n\n objects.forEach(geometry);\n\n for (var i in indexesByArc) {\n for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n for (var k = j + 1; k < m; ++k) {\n var ij = indexes[j], ik = indexes[k], n;\n if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n }\n }\n }\n\n return neighbors;\n}\n\nfunction compareArea(a, b) {\n return a[1][2] - b[1][2];\n}\n\nfunction minAreaHeap() {\n var heap = {},\n array = [],\n size = 0;\n\n heap.push = function(object) {\n up(array[object._ = size] = object, size++);\n return size;\n };\n\n heap.pop = function() {\n if (size <= 0) return;\n var removed = array[0], object;\n if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n return removed;\n };\n\n heap.remove = function(removed) {\n var i = removed._, object;\n if (array[i] !== removed) return; // invalid request\n if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n return i;\n };\n\n function up(object, i) {\n while (i > 0) {\n var j = ((i + 1) >> 1) - 1,\n parent = array[j];\n if (compareArea(object, parent) >= 0) break;\n array[parent._ = i] = parent;\n array[object._ = i = j] = object;\n }\n }\n\n function down(object, i) {\n while (true) {\n var r = (i + 1) << 1,\n l = r - 1,\n j = i,\n child = array[j];\n if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n if (j === i) break;\n array[child._ = i] = child;\n array[object._ = i = j] = object;\n }\n }\n\n return heap;\n}\n\nfunction presimplify(topology, triangleArea) {\n var absolute = transformAbsolute(topology.transform),\n relative = transformRelative(topology.transform),\n heap = minAreaHeap();\n\n if (!triangleArea) triangleArea = cartesianTriangleArea;\n\n topology.arcs.forEach(function(arc) {\n var triangles = [],\n maxArea = 0,\n triangle,\n i,\n n,\n p;\n\n // To store each point’s effective area, we create a new array rather than\n // extending the passed-in point to workaround a Chrome/V8 bug (getting\n // stuck in smi mode). For midpoints, the initial effective area of\n // Infinity will be computed in the next step.\n for (i = 0, n = arc.length; i < n; ++i) {\n p = arc[i];\n absolute(arc[i] = [p[0], p[1], Infinity], i);\n }\n\n for (i = 1, n = arc.length - 1; i < n; ++i) {\n triangle = arc.slice(i - 1, i + 2);\n triangle[1][2] = triangleArea(triangle);\n triangles.push(triangle);\n heap.push(triangle);\n }\n\n for (i = 0, n = triangles.length; i < n; ++i) {\n triangle = triangles[i];\n triangle.previous = triangles[i - 1];\n triangle.next = triangles[i + 1];\n }\n\n while (triangle = heap.pop()) {\n var previous = triangle.previous,\n next = triangle.next;\n\n // If the area of the current point is less than that of the previous point\n // to be eliminated, use the latter's area instead. This ensures that the\n // current point cannot be eliminated without eliminating previously-\n // eliminated points.\n if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n else maxArea = triangle[1][2];\n\n if (previous) {\n previous.next = next;\n previous[2] = triangle[2];\n update(previous);\n }\n\n if (next) {\n next.previous = previous;\n next[0] = triangle[0];\n update(next);\n }\n }\n\n arc.forEach(relative);\n });\n\n function update(triangle) {\n heap.remove(triangle);\n triangle[1][2] = triangleArea(triangle);\n heap.push(triangle);\n }\n\n return topology;\n}\n\nvar version = \"1.6.27\";\n\nexports.version = version;\nexports.mesh = mesh;\nexports.meshArcs = meshArcs;\nexports.merge = merge;\nexports.mergeArcs = mergeArcs;\nexports.feature = feature;\nexports.neighbors = neighbors;\nexports.presimplify = presimplify;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VectorMaps.vue?vue&type=style&index=0&id=a937eff0&prod&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_vm._m(0),_c('world-map')],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"text-center mb-0\"},[_vm._v(\" World Map \"),_c('br'),_c('small',[_vm._v(\" Looks great on any resolution. Made by our friends from \"),_c('a',{attrs:{\"target\":\"_blank\",\"rel\":\"noopener\",\"href\":\"http://datamaps.github.io/\"}},[_vm._v(\"Data Maps\")]),_vm._v(\". \")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"300px\"},attrs:{\"id\":\"worldMap\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export default function(a, x) {\n var lo = 0, hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (a[mid] < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n","// TODO if quantized, use simpler Int32 hashing?\n\nvar buffer = new ArrayBuffer(16),\n floats = new Float64Array(buffer),\n uints = new Uint32Array(buffer);\n\nexport default function(point) {\n floats[0] = point[0];\n floats[1] = point[1];\n var hash = uints[0] ^ uints[1];\n hash = hash << 5 ^ hash >> 7 ^ uints[2] ^ uints[3];\n return hash & 0x7fffffff;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n quarterPi = pi / 4,\n radians = pi / 180,\n abs = Math.abs,\n atan2 = Math.atan2,\n cos = Math.cos,\n sin = Math.sin;\n\nfunction halfArea(ring, closed) {\n var i = 0,\n n = ring.length,\n sum = 0,\n point = ring[closed ? i++ : n - 1],\n lambda0, lambda1 = point[0] * radians,\n phi1 = (point[1] * radians) / 2 + quarterPi,\n cosPhi0, cosPhi1 = cos(phi1),\n sinPhi0, sinPhi1 = sin(phi1);\n\n for (; i < n; ++i) {\n point = ring[i];\n lambda0 = lambda1, lambda1 = point[0] * radians;\n phi1 = (point[1] * radians) / 2 + quarterPi;\n cosPhi0 = cosPhi1, cosPhi1 = cos(phi1);\n sinPhi0 = sinPhi1, sinPhi1 = sin(phi1);\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n // See https://github.com/d3/d3-geo/blob/master/README.md#geoArea\n var dLambda = lambda1 - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n k = sinPhi0 * sinPhi1,\n u = cosPhi0 * cosPhi1 + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n sum += atan2(v, u);\n }\n\n return sum;\n}\n\nexport function sphericalRingArea(ring, interior) {\n var sum = halfArea(ring, true);\n if (interior) sum *= -1;\n return (sum < 0 ? tau + sum : sum) * 2;\n}\n\nexport function sphericalTriangleArea(t) {\n return abs(halfArea(t, false)) * 2;\n}\n","\n\n\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WorldMap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WorldMap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WorldMap.vue?vue&type=template&id=119d760b&\"\nimport script from \"./WorldMap.vue?vue&type=script&lang=js&\"\nexport * from \"./WorldMap.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VectorMaps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VectorMaps.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VectorMaps.vue?vue&type=template&id=a937eff0&\"\nimport script from \"./VectorMaps.vue?vue&type=script&lang=js&\"\nexport * from \"./VectorMaps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VectorMaps.vue?vue&type=style&index=0&id=a937eff0&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();"],"sourceRoot":""}