{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.regexp.test.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./src/components/WorldMap/WorldMap.vue","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/array.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/selectChild.js","webpack:///./node_modules/d3-selection/src/selection/selectChildren.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/iterator.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/easeVarying.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./src/util/throttle.js","webpack:///./src/components/WorldMap/WorldMap.vue?70e5","webpack:///./node_modules/datamaps/node_modules/d3/d3.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/topojson/build/topojson.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/datamaps/dist/datamaps.all.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js"],"names":["$","global","call","uncurryThis","isCallable","isObject","DELEGATES_TO_EXEC","execCalled","re","exec","apply","this","arguments","test","Error","un$Test","target","proto","forced","str","result","$values","values","stat","O","id","style","_createBlock","_arrayLikeToArray","arr","len","length","i","arr2","Array","_arrayWithoutHoles","isArray","arrayLikeToArray","_iterableToArray","iter","Symbol","iterator","from","_unsupportedIterableToArray","o","minLen","n","Object","prototype","toString","slice","constructor","name","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","noop","value","dispatch","t","_","Dispatch","parseTypenames","typenames","types","trim","split","map","indexOf","hasOwnProperty","type","get","c","set","callback","concat","push","on","typename","T","copy","that","args","none","selector","querySelector","select","groups","_groups","m","subgroups","j","node","subnode","group","subgroup","__data__","Selection","_parents","array","x","querySelectorAll","arrayAll","selectorAll","parents","matches","childMatcher","find","childFind","match","children","childFirst","firstElementChild","filter","childrenFilter","selectAll","matcher","update","_enter","sparse","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","appendChild","child","insertBefore","next","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","Map","keyValues","has","delete","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","selection","append","onupdate","onexit","remove","merge","order","context","groups0","groups1","m0","m1","Math","min","merges","group0","group1","compareDocumentPosition","parentNode","compareNode","a","b","compare","ascending","sortgroups","sortgroup","sort","NaN","size","xhtml","svg","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","splice","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","options","onAdd","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectChild","selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","nodes","selection_node","selection_size","empty","selection_empty","attr","classed","text","selection_text","html","selection_raise","selection_lower","insert","selection_remove","selection_datum","selection_on","selection_dispatch","factory","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_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","format","l","toLowerCase","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","max","round","h","s","Hsl","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","k","pow","floor","linear","d","exponential","y","gamma","nogamma","color","start","end","rgbGamma","rgbSpline","spline","colors","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","Date","setTime","reA","reB","source","one","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","index","number","date","numberArray","valueOf","object","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","e","undefined","wake","nap","poke","t0","Infinity","sleep","clearTimeout","clearInterval","setInterval","stop","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","tween","timing","duration","ease","state","init","schedule","self","tick","svgNode","active","interrupt","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","transform","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","scale","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","transition","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","abs","number1","number2","e10","e5","e2","ticks","count","reverse","step","tickIncrement","isFinite","r0","r1","power","log","LN10","error","tickStep","step0","step1","bisector","delta","compare1","compare2","left","lo","hi","mid","right","center","ascendingBisect","bisectRight","bisect","constants","unit","normalize","clamper","bimap","domain","range","d0","d1","polymap","clamp","unknown","transformer","untransform","piecewise","output","input","rescale","invert","rangeRound","u","continuous","initRange","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","toLocaleString","replace","formatDecimalParts","p","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","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","rho","b0","rho4","rho2","b1","coshr0","SQRT2","_1","_2","_4","zoomRho","Transform","point","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","throttle","handlerFunc","resizeTimeout","color1","color2","highlightFillColor","borderColor","highlightBorderColor","mapData","AUS","BRA","CAN","DEU","FRA","GBR","GEO","IND","ROU","RUS","USA","methods","generateColors","d3","generateMapColors","mapDataValues","maxVal","fills","defaultFill","val","fillKey","initVectorMap","worldMap","DataMap","scope","element","getElementById","responsive","geographyConfig","borderWidth","borderOpacity","highlightBorderWidth","highlightBorderOpacity","resizeFunc","resize","mounted","__exports__","render","version","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","descending","extent","sum","mean","quantile","H","median","numbers","variance","deviation","d3_bisect","d3_transposeLength","bisectLeft","shuffle","random","permute","indexes","permutes","pairs","transpose","row","zip","keys","entries","arrays","merged","d3_range_integerScale","d3_class","ctor","properties","defineProperty","enumerable","d3_Map","forEach","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","mouse","container","d3_mousePoint","d3_mouse_bug44083","navigator","userAgent","changedTouches","ownerSVGElement","createSVGPoint","scrollX","scrollY","position","top","margin","border","ctm","getScreenCTM","pageX","pageY","clientX","clientY","matrixTransform","inverse","rect","getBoundingClientRect","clientLeft","clientTop","d3_behavior_dragTouchId","identifier","touch","touches","drag","origin","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","sin","ρ","ρ2","ρ4","interpolateZoom","translate0","center0","mousewheelTimer","touchtime","x0","x1","y0","y1","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","cos","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","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","JSON","stringify","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","flush","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","geo","d3_adderSum","d3_adderTemp","reset","bv","av","d3_geo_streamGeometry","geometry","d3_geo_streamGeometryType","stream","d3_geo_streamObjectType","Feature","feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","d3_geo_streamLine","MultiLineString","Polygon","d3_geo_streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","area","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","centroid","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","points","current","isSubject","other","d3_geo_clip","pointVisible","clipLine","clipStart","line","rotatedClipStart","pointRing","polygon","d3_geo_pointInPolygon","polygonStarted","d3_geo_clipSort","pointLine","ring","buffer","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","arc","intersection","φarc","d3_geo_clipCircle","radius","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_","first","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","albersUsa","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","clipAngle","projection","d3_geo_rotation","invalidate","d3_geo_equirectangular","d3_geo_identityRotation","d3_geo_rotationλ","d3_geo_rotationφγ","d3_geo_forwardRotationλ","rotation","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","path","projectStream","contextStream","cacheStream","projectionMutator","equirectangular","circle","Δλ","sinΔλ","cosΔλ","sinφ1","graticule","X1","X0","Y1","Y0","DX","DY","outline","majorExtent","minorExtent","majorStep","minorStep","greatArc","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","geom","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","unshift","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","polygons","links","triangles","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","kx","d3_transformNormalize","kz","d3_transformDot","ky","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","neighbors","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","arcs","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","json","responseXML","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","isConstructor","lengthOfArrayLike","createProperty","getIterator","getIteratorMethod","module","exports","arrayLike","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","iteratorMethod","done","DESCRIPTORS","objectKeys","toIndexedObject","$propertyIsEnumerable","propertyIsEnumerable","createMethod","TO_ENTRIES","it","transformAbsolute","transformRelative","topology","feature$1","absolute","geometryType","stitchArcs","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","ends","dp","fg","gf","mesh","meshArcs","geomsByArc","geoms","cartesianTriangleArea","triangle","mergeArcs","objects","polygonsByArc","components","register","ring$$","component","ki","indexesByArc","ij","ik","compareArea","minAreaHeap","heap","up","down","removed","presimplify","triangleArea","relative","maxArea","anObject","iteratorClose","fn","ENTRIES","checkCorrectnessOfIteration","INCORRECT_ITERATION","iterable","topojson","defaultOptions","aspectRatio","setProjection","dataType","filters","dataUrl","hideAntarctica","hideHawaiiAndAlaska","popupTemplate","geography","popupOnHover","highlightOnHover","projectionConfig","bubblesConfig","fillOpacity","animate","highlightFillOpacity","exitDelay","arcConfig","strokeColor","strokeWidth","arcSharpness","animationSpeed","destination","latitude","longitude","datumValue","optionsValue","optionsValues","fnContext","addContainer","height","offsetWidth","offsetHeight","addStyleBlock","drawSubunits","fillData","colorCodeData","geoConfig","subunits","addLayer","geoData","fillColor","handleGeographyConfig","moveToFront","$this","previousAttributes","updatePopup","addLegend","layer","label","legendTitle","defaultFillName","labels","addGraticule","handleArcs","defaults","originXY","destXY","latLngToXY","midXY","sharpness","getTotalLength","WebkitTransition","strokeDasharray","strokeDashoffset","handleLabels","labelStartCoodinates","xOffset","yOffset","smallStateIndex","yStart","fontSize","labelColor","lineWidth","fontFamily","customLabelText","handleBubbles","filterData","datumHasCoords","latLng","centered","filterKey","obj","prop","Datamap","addPlugin","disableDefaultStyles","draw","newsize","clientWidth","oldsize","pathAndProjection","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","subunit","subunitData","pluginFn","createNewLayer","jQuery","datamaps","datamap","defineWellKnownSymbol"],"mappings":"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CL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,EAAG,IACJ,CAAC,GAAI,IACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,IACL,CAAC,EAAG,IACJ,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,GACL,CAAC,IAAK,GACN,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,IAAK,GACN,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,GACN,CAAC,GAAI,GACL,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,GAAI,GACL,CAAC,IAAK,GACN,CAAC,IAAK,IACN,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,IAAK,GACN,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,IAAK,GACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,GACN,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,GACL,CAAC,GAAI,IACL,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,GAAI,GACL,CAAC,IAAK,IACN,CAAC,IAAK,IACN,CAAC,IAAK,GACN,CAAC,GAAI,GACL,CAAC,GAAI,IACL,CAAC,GAAI,IACL,CAAC,GAAI,GACL,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,GAAI,IACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,GAAI,GACL,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,IAAK,IACN,CAAC,GAAI,IA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C,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,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,EAA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","file":"js/chunk-71331a62.a2c92621.js","sourcesContent":["'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar Error = global.Error;\nvar un$Test = uncurryThis(/./.test);\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n var exec = this.exec;\n if (!isCallable(exec)) return un$Test(this, str);\n var result = call(exec, this, str);\n if (result !== null && !isObject(result)) {\n throw new Error('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","\r\n \r\n\r\n\r\n\r\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","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: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\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_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: function(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: function(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: function() {\n return this;\n },\n displayable: function() {\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 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_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\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: function(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: function(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: function() {\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 displayable: function() {\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: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\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","import ascending from \"./ascending.js\";\n\nexport default function bisector(f) {\n let delta = f;\n let compare1 = f;\n let compare2 = f;\n\n if (f.length !== 2) {\n delta = (d, x) => f(d) - x;\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\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","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","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","/**\r\n * Simple throttle function that executes a passed function only once in the specified timeout\r\n * @param handlerFunc\r\n * @param [timeout] the throttle interval\r\n */\r\nexport function throttle(handlerFunc, timeout = 66) {\r\n let resizeTimeout;\r\n if (!resizeTimeout) {\r\n resizeTimeout = setTimeout(() => {\r\n resizeTimeout = null;\r\n handlerFunc();\r\n // The actualResizeHandler will execute at a rate of 15fps\r\n }, timeout);\r\n }\r\n}\r\n","import { render } from \"./WorldMap.vue?vue&type=template&id=fdf2029c\"\nimport script from \"./WorldMap.vue?vue&type=script&lang=js\"\nexport * from \"./WorldMap.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\CustomerPortal\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __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}();","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\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})));","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","(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 '