{"version":3,"sources":["app.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"React","Router","routes","content","document","getElementById","run","Handler","render","createElement","console","log","./routes.jsx","react","react-router",2,"module","drainQueue","draining","currentQueue","len","queue","noop","process","nextTick","fun","push","setTimeout","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","umask",3,"global","Lexer","options","this","tokens","links","marked","defaults","rules","block","normal","gfm","tables","InlineLexer","inline","renderer","Renderer","breaks","pedantic","Parser","token","escape","html","encode","replace","unescape","_","toLowerCase","charAt","String","fromCharCode","parseInt","substring","regex","opt","source","self","name","val","RegExp","merge","obj","target","key","arguments","Object","prototype","hasOwnProperty","src","callback","pending","highlight","lex","done","err","out","parse","type","text","lang","escaped","message","silent","newline","fences","hr","heading","nptable","lheading","blockquote","list","def","table","paragraph","bullet","item","_tag","lexer","top","bq","next","loose","cap","bull","b","space","exec","depth","header","split","align","cells","test","ordered","match","indexOf","smartLists","slice","join","sanitize","pre","href","charCodeAt","autolink","url","tag","link","reflink","nolink","strong","em","br","del","_inside","_href","output","mangle","inLink","outputLink","codespan","smartypants","image","ch","Math","random","toString","langPrefix","quote","level","raw","headerPrefix","xhtml","body","listitem","tablerow","tablecell","flags","prot","decodeURIComponent","parser","reverse","tok","pop","peek","parseText","row","cell","j","setOptions","inlineLexer","define","amd","window",4,"Cancellation",5,"checkPropTypes","componentName","propTypes","props","propName","error","warning","invariant","Configuration","statics","validateProps","displayName","constructor","react/lib/invariant","react/lib/warning",6,"canUseDOM","History","back","history","react/lib/ExecutionEnvironment",7,"deepSearch","route","pathname","query","childRoutes","childRoute","isDefault","isNotFound","unshift","defaultRoute","params","PathUtils","extractParams","path","Match","notFoundRoute","_prototypeProperties","child","staticProps","instanceProps","defineProperties","_classCallCheck","instance","Constructor","TypeError","findMatch","value","withoutQuery","extractQuery","writable","configurable","./PathUtils",8,"PropTypes","Navigation","contextTypes","makePath","func","isRequired","makeHref","transitionTo","replaceWith","goBack","to","context","./PropTypes",9,"NavigationContext","childContextTypes","getChildContext","bind",10,"compilePattern","pattern","_compiledPatterns","paramNames","paramCompileMatcher","paramName","matcher","qs","paramInjectMatcher","paramInjectTrailingSlashMatcher","queryMatcher","isAbsolute","extractParamNames","_compilePattern","forEach","index","injectParams","splatIndex","segment","Array","isArray","withQuery","existingQuery","queryString","stringify","indices","qs/lib/utils",11,"assign","ReactPropTypes","falsy","react/lib/Object.assign",12,"Redirect",13,"_currentRoute","Route","ignoreScrollBehavior","onEnter","onLeave","handler","createRoute","parentRoute","appendChild","currentRoute","createDefaultRoute","createNotFoundRoute","createRedirect","from","transition","redirect","string",14,"REF_NAME","RouteHandlerMixin","getRouteAtDepth","setRouteComponentAtDepth","routeHandlers","array","concat","componentDidMount","_updateRouteComponent","refs","componentDidUpdate","componentWillUnmount","component","getRouteDepth","createChildRouteHandler","ref",15,"shouldUpdateScroll","state","prevState","prevRoutes","sharedAncestorRoutes","filter","some","getWindowScrollPosition","ScrollHistory","recordScrollPosition","scrollHistory","getScrollPosition","componentWillMount","getScrollBehavior","_updateScroll","prevProps","scrollBehavior","updateScrollPosition","action","./getWindowScrollPosition",16,"State","getCurrentPath","getCurrentRoutes","getCurrentPathname","getCurrentParams","getCurrentQuery","isActive","getPath","getRoutes","getPathname","getParams","getQuery",17,"routeIsActive","activeRoutes","routeName","paramsAreActive","activeParams","property","queryIsActive","activeQuery","StateContext",18,"Transition","retry","abortReason","abort","reason","cancel","components","reduce","reduceRight","./Cancellation","./Redirect",19,"LocationActions","PUSH","REPLACE","POP",20,"ImitateBrowserBehavior","position","actionType","scrollTo","x","y","../actions/LocationActions",21,"ScrollToTopBehavior",22,"DefaultRoute","createClass","mixins","children","../Configuration","../PropTypes",23,"isLeftClickEvent","event","button","isModifiedEvent","metaKey","altKey","ctrlKey","shiftKey","classSet","Link","activeClassName","oneOfType","instanceOf","object","activeStyle","onClick","getDefaultProps","handleClick","clickResult","allowTransition","defaultPrevented","preventDefault","getHref","getClassName","classNames","className","getActiveState","style","DOM","../Navigation","../Route","../State","react/lib/cx",24,"NotFoundRoute",25,26,"RouteHandler","bool","./RouteHandler",27,"../RouteHandlerMixin",28,"hasProperties","properties","propertyName","hasMatch","prevParams","nextParams","prevQuery","nextQuery","addRoutesToNamedRoutes","namedRoutes","createRouter","isReactChildren","mountedComponents","location","DEFAULT_LOCATION","DEFAULT_SCROLL_BEHAVIOR","nextState","pendingTransition","dispatchHandler","StaticLocation","NODE_ENV","needsDOM","HistoryLocation","supportsHistory","RefreshLocation","isRunning","cancelPendingTransition","clearAllRoutes","addRoutes","createRoutesFromReactChildren","apply","replaceRoutes","refresh","HashLocation","handleAbort","onAbort","handleError","onError","handleLocationChange","change","dispatch","prevPath","isRefreshing","fromRoutes","toRoutes","nextRoutes","fromComponents","newState","addChangeListener","stop","removeChangeListener","getInitialState","componentWillReceiveProps","setState","getLocation","./History","./Match","./NavigationContext","./Route","./ScrollHistory","./StateContext","./Transition","./actions/LocationActions","./behaviors/ImitateBrowserBehavior","./createRoutesFromReactChildren","./isReactChildren","./locations/HashLocation","./locations/HistoryLocation","./locations/RefreshLocation","./locations/StaticLocation","./supportsHistory","_process",29,"createRouteOptions","willTransitionTo","willTransitionFrom","createRouteFromReactElement","element","isValidElement","DefaultRouteType","NotFoundRouteType","RedirectType","Children","./components/DefaultRoute","./components/NotFoundRoute","./components/Redirect",30,"pageXOffset","documentElement","scrollLeft","pageYOffset","scrollTop",31,"create","./Navigation","./RouteHandlerMixin","./State","./behaviors/ScrollToTopBehavior","./components/Link","./components/Route","./components/RouteHandler","./createRouter","./runRouter",32,"isValidChild","every",33,"getHashPath","decodeURI","ensureSlash","notifyChange","_changeListeners","listener","onHashChange","_actionType","_isListening","addEventListener","attachEvent","removeEventListener","removeEvent","hash","search","../History",34,"getWindowPath","onPopState","undefined","pushState","replaceState",35,"./HistoryLocation",36,"throwCannotModify",37,"runRouter","router",38,"ua","navigator","userAgent",39,"./lib/",40,"Stringify","Parse","./parse","./stringify",41,"Utils","internals","delimiter","arrayLimit","parameterLimit","parseValues","str","parts","Infinity","il","part","pos","decode","parseObject","chain","root","shift","cleanRoot","indexString","isNaN","parseKeys","parent","keys","isRegExp","tempObj","newObj","compact","./utils",42,"prefix","isBuffer","Date","toISOString","encodeURIComponent","values","objKeys",43,"arrayToObject","k","kl","lookup","compacted",44,"focusNode","AutoFocusMixin","autoFocus","getDOMNode","./focusNode",45,"isPresto","opera","isKeypressCommand","nativeEvent","EventConstants","EventPropagators","ExecutionEnvironment","SyntheticInputEvent","keyOf","canUseTextInputEvent","SPACEBAR_CODE","SPACEBAR_CHAR","topLevelTypes","eventTypes","beforeInput","phasedRegistrationNames","bubbled","onBeforeInput","captured","onBeforeInputCapture","dependencies","topCompositionEnd","topKeyPress","topTextInput","topPaste","fallbackChars","hasSpaceKeypress","BeforeInputEventPlugin","extractEvents","topLevelType","topLevelTarget","topLevelTargetID","chars","which","data","getPooled","accumulateTwoPhaseDispatches","./EventConstants","./EventPropagators","./ExecutionEnvironment","./SyntheticInputEvent","./keyOf",46,"prefixKey","toUpperCase","isUnitlessNumber","columnCount","flex","flexGrow","flexShrink","fontWeight","lineClamp","lineHeight","opacity","order","orphans","widows","zIndex","zoom","fillOpacity","strokeOpacity","prefixes","prop","shorthandPropertyExpansions","background","backgroundImage","backgroundPosition","backgroundRepeat","backgroundColor","border","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftWidth","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopWidth","borderTopStyle","borderTopColor","font","fontStyle","fontVariant","fontSize","fontFamily","CSSProperty",47,"dangerousStyleValue","hyphenateStyleName","memoizeStringOnly","processStyleName","styleName","styleFloatAccessor","cssFloat","CSSPropertyOperations","createMarkupForStyles","styles","serialized","styleValue","setValueForStyles","node","expansion","individualStyleName","./CSSProperty","./camelizeStyleName","./dangerousStyleValue","./hyphenateStyleName","./memoizeStringOnly","./warning",48,"CallbackQueue","_callbacks","_contexts","PooledClass","enqueue","notifyAll","callbacks","contexts","reset","destructor","addPoolingTo","./Object.assign","./PooledClass","./invariant",49,"shouldUseChangeEvent","elem","nodeName","manualDispatchChangeEvent","SyntheticEvent","activeElementID","ReactUpdates","batchedUpdates","runEventInBatch","EventPluginHub","enqueueEvents","processEventQueue","startWatchingForChangeEventIE8","targetID","activeElement","stopWatchingForChangeEventIE8","detachEvent","getTargetIDForChangeEvent","topChange","handleEventsForChangeEventIE8","topFocus","topBlur","startWatchingForValueChange","activeElementValue","activeElementValueProp","getOwnPropertyDescriptor","defineProperty","newValueProp","handlePropertyChange","stopWatchingForValueChange","srcElement","getTargetIDForInputEvent","topInput","handleEventsForInputEventIE","getTargetIDForInputEventIE","topSelectionChange","topKeyUp","topKeyDown","shouldUseClickEvent","getTargetIDForClickEvent","topClick","isEventSupported","isTextInputElement","onChange","onChangeCapture","doesChangeEventBubble","documentMode","isInputEventSupported","get","set","ChangeEventPlugin","getTargetIDFunc","handleEventFunc","./EventPluginHub","./ReactUpdates","./SyntheticEvent","./isEventSupported","./isTextInputElement",50,"nextReactRootIndex","ClientReactRootIndex","createReactRootIndex",51,"getCompositionEventType","topCompositionStart","compositionStart","compositionEnd","topCompositionUpdate","compositionUpdate","isFallbackStart","keyCode","START_KEYCODE","isFallbackEnd","END_KEYCODES","topMouseDown","FallbackCompositionState","startSelection","ReactInputSelection","getSelection","startValue","getText","SyntheticCompositionEvent","getTextContentAccessor","useCompositionEvent","useFallbackData","currentComposition","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","getData","endValue","prefixLength","start","suffixLength","end","substr","CompositionEventPlugin","eventType","./ReactInputSelection","./SyntheticCompositionEvent","./getTextContentAccessor",52,"insertChildAt","parentNode","childNode","insertBefore","childNodes","updateTextContent","Danger","ReactMultiChildUpdateTypes","textContentAccessor","textContent","firstChild","removeChild","doc","ownerDocument","createTextNode","DOMChildrenOperations","dangerouslyReplaceNodeWithMarkup","processUpdates","updates","markupList","update","initialChildren","updatedChildren","MOVE_EXISTING","REMOVE_NODE","updatedIndex","fromIndex","updatedChild","parentID","renderedMarkup","dangerouslyRenderMarkup","INSERT_MARKUP","markupIndex","toIndex","TEXT_CONTENT","./Danger","./ReactMultiChildUpdateTypes",53,"checkMask","bitmask","DOMPropertyInjection","MUST_USE_ATTRIBUTE","MUST_USE_PROPERTY","HAS_SIDE_EFFECTS","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Properties","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","DOMProperty","_isCustomAttributeFunctions","isStandardName","lowerCased","getPossibleStandardName","attributeName","getAttributeName","getPropertyName","getMutationMethod","propConfig","mustUseAttribute","mustUseProperty","hasSideEffects","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","defaultValueCache","ID_ATTRIBUTE_NAME","isCustomAttributeFn","getDefaultValueForProperty","testElement","nodeDefaults","injection",54,"shouldIgnoreValue","escapeTextForBrowser","processAttributeNameAndPrefix","DOMPropertyOperations","createMarkupForID","id","createMarkupForProperty","setValueForProperty","mutationMethod","deleteValueForProperty","setAttribute","removeAttribute","defaultValue","./DOMProperty","./escapeTextForBrowser",55,"getNodeName","markup","createNodesFromMarkup","emptyFunction","getMarkupWrap","OPEN_TAG_NAME_EXP","RESULT_INDEX_ATTR","markupByNodeName","resultList","resultListAssignmentCount","markupListByNodeName","resultIndex","renderNodes","renderNode","hasAttribute","getAttribute","oldChild","tagName","newChild","replaceChild","./createNodesFromMarkup","./emptyFunction","./getMarkupWrap",56,"DefaultEventPluginOrder","ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","SelectEventPlugin","AnalyticsEventPlugin","MobileSafariClickEventPlugin",57,"SyntheticMouseEvent","ReactMount","getFirstReactDOM","mouseEnter","registrationName","onMouseEnter","topMouseOut","topMouseOver","mouseLeave","onMouseLeave","extractedEvents","relatedTarget","fromElement","win","defaultView","parentWindow","toElement","fromID","getID","toID","leave","enter","accumulateEnterLeaveDispatches","./ReactMount","./SyntheticMouseEvent",58,"keyMirror","PropagationPhases","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topError","topLoad","topMouseMove","topMouseUp","topReset","topScroll","topSubmit","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topWheel","./keyMirror",59,"EventListener","listen","remove","capture","registerDefault",60,"EventPluginRegistry","EventPluginUtils","accumulateInto","forEachAccumulated","listenerBank","eventQueue","executeDispatchesAndRelease","executeDispatch","PluginModule","getPluginModuleForEvent","executeDispatchesInOrder","isPersistent","release","InstanceHandle","injectMount","injectInstanceHandle","InjectedInstanceHandle","getInstanceHandle","injectEventPluginOrder","injectEventPluginsByName","eventNameDispatchConfigs","registrationNameModules","putListener","bankForRegistrationName","getListener","deleteListener","deleteAllListeners","events","plugins","possiblePlugin","processingEventQueue","__purge","__getListenerBank","./EventPluginRegistry","./EventPluginUtils","./accumulateInto","./forEachAccumulated",61,"recomputePluginOrdering","EventPluginOrder","pluginName","namesToPlugins","pluginIndex","publishedEvents","eventName","publishEventForPlugin","dispatchConfig","phaseName","phasedRegistrationName","publishRegistrationName","registrationNameDependencies","InjectedEventPluginOrder","injectedNamesToPlugins","isOrderingDirty","phase","_resetEventPlugins",62,"isEndish","isMoveish","isStartish","forEachEventDispatch","cb","dispatchListeners","_dispatchListeners","dispatchIDs","_dispatchIDs","isPropagationStopped","domID","currentTarget","Mount","getNode","returnValue","executeDispatchesInOrderStopAtTrueImpl","executeDispatchesInOrderStopAtTrue","ret","executeDirectDispatch","dispatchListener","dispatchID","res","hasDispatches","InjectedMount","useTouchEvents",63,"listenerAtPhase","propagationPhase","accumulateDirectionalDispatches","upwards","accumulateTwoPhaseDispatchesSingle","traverseTwoPhase","dispatchMarker","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","traverseEnterLeave","accumulateDirectDispatches",64,"canUseWorkers","Worker","canUseEventListeners","canUseViewport","screen","isInWorker",65,"hasSVG","implementation","hasFeature","HTMLDOMPropertyConfig","accept","acceptCharset","accessKey","allowFullScreen","allowTransparency","alt","async","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","checked","classID","cols","colSpan","contentEditable","contextMenu","controls","coords","crossOrigin","dateTime","defer","dir","disabled","download","draggable","encType","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","height","hidden","hrefLang","htmlFor","httpEquiv","icon","label","loop","manifest","marginHeight","marginWidth","max","maxLength","media","mediaGroup","method","min","multiple","muted","noValidate","open","placeholder","poster","preload","radioGroup","readOnly","rel","required","role","rows","rowSpan","sandbox","scope","scrolling","seamless","selected","shape","size","sizes","span","spellCheck","srcDoc","srcSet","step","tabIndex","useMap","width","wmode","autoCapitalize","autoCorrect","itemProp","itemScope","itemType",66,"_assertSingleLink","input","checkedLink","valueLink","_assertValueLink","_assertCheckedLink","_handleLinkedValueChange","requestChange","_handleLinkedCheckChange","hasReadOnlyValue","checkbox","radio","submit","LinkedValueUtils","Mixin","getValue","getChecked","getOnChange","./ReactPropTypes",67,"ReactBrowserEventEmitter","LocalEventTrapMixin","trapBubbledEvent","handlerBaseName","isMounted","_localEventListeners","./ReactBrowserEventEmitter",68,"onclick",69,"nextIndex","nextSource",70,"oneArgumentPooler","copyFieldsFrom","Klass","instancePool","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","fiveArgumentPooler","a4","a5","standardReleaser","poolSize","DEFAULT_POOL_SIZE","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass",71,"ReactChildren","ReactComponent","ReactCompositeComponent","ReactContext","ReactCurrentOwner","ReactElement","ReactDOM","ReactDOMComponent","ReactDefaultInjection","ReactInstanceHandles","ReactLegacyElement","ReactMultiChild","ReactPerf","ReactServerRendering","ReactTextComponent","deprecated","onlyChild","inject","createFactory","wrapCreateElement","wrapCreateFactory","measure","map","count","only","initializeTouchEvents","shouldUseTouch","constructAndRenderComponent","constructAndRenderComponentByID","renderToString","renderToStaticMarkup","unmountComponentAtNode","isValidClass","withContext","__spread","renderComponent","renderComponentToString","renderComponentToStaticMarkup","isValidComponent","__REACT_DEVTOOLS_GLOBAL_HOOK__","Component","CurrentOwner","DOMComponent","InstanceHandles","MultiChild","TextComponent","./DOMPropertyOperations","./ReactChildren","./ReactComponent","./ReactCompositeComponent","./ReactContext","./ReactCurrentOwner","./ReactDOM","./ReactDOMComponent","./ReactDefaultInjection","./ReactElement","./ReactElementValidator","./ReactInstanceHandles","./ReactLegacyElement","./ReactMultiChild","./ReactPerf","./ReactServerRendering","./ReactTextComponent","./deprecated","./onlyChild",72,"ReactEmptyComponent","ReactBrowserComponentMixin","isNullComponentID","_rootNodeID","./ReactEmptyComponent",73,"getListeningForDocument","mountAt","topListenersIDKey","reactTopListenersCounter","alreadyListeningTo","ReactEventEmitterMixin","ViewportMetrics","isMonitoringScrollValue","topEventMapping","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","listenTo","contentDocumentHandle","isListening","dependency","trapCapturedEvent","WINDOW_HANDLE","handle","ensureScrollValueMonitoring","refreshScrollValues","monitorScrollValue","./ReactEventEmitterMixin","./ViewportMetrics",74,"ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","traverseContext","forEachBookKeeping","forEachChildren","forEachFunc","traverseAllChildren","MapBookKeeping","mapResult","mapFunction","mapContext","mapSingleChildIntoContext","mapBookKeeping","keyUnique","mappedChild","mapChildren","forEachSingleChildDummy","countChildren","./traverseAllChildren",75,"ReactOwner","ComponentLifeCycle","MOUNTED","UNMOUNTED","injected","unmountIDFromEnvironment","mountImageIntoNode","injectEnvironment","ReactComponentEnvironment","BackendIDOperations","LifeCycle","_lifeCycleState","setProps","partialProps","_pendingElement","_currentElement","replaceProps","_mountDepth","cloneAndReplaceProps","enqueueUpdate","_setPropsInternal","construct","_owner","_pendingCallbacks","mountComponent","rootID","transaction","mountDepth","owner","addComponentAsRefTo","unmountComponent","removeComponentAsRefFrom","receiveComponent","nextElement","performUpdateIfNecessary","prevElement","updateComponent","mountComponentIntoNode","container","shouldReuseMarkup","ReactReconcileTransaction","perform","_mountComponentIntoNode","isOwnedBy","getSiblingByRef","./ReactOwner",76,"ReactDOMIDOperations","ReactMarkupChecksum","getReactRootElementInContainer","setInnerHTML","ELEMENT_NODE_TYPE","DOC_NODE_TYPE","ReactComponentBrowserEnvironment","rootNodeID","purgeID","nodeType","canReuseMarkup","./ReactDOMIDOperations","./ReactMarkupChecksum","./ReactReconcileTransaction","./getReactRootElementInContainer","./setInnerHTML",77,"getDeclarationErrorAddendum","validateTypeDef","typeDef","validateMethodOverride","proto","specPolicy","ReactCompositeComponentInterface","ReactCompositeComponentMixin","SpecPolicy","OVERRIDE_BASE","DEFINE_MANY","DEFINE_MANY_MERGED","validateLifeCycleOnReplaceState","compositeLifeCycleState","_compositeLifeCycleState","CompositeLifeCycle","MOUNTING","current","UNMOUNTING","mixSpecIntoComponent","spec","isValidFactory","MIXINS_KEY","RESERVED_SPEC_KEYS","isCompositeComponentMethod","isAlreadyDefined","markedDontBind","__reactDontBind","isFunction","shouldAutoBind","__reactAutoBindMap","createMergedResultFunction","createChainedFunction","mixStaticSpecIntoComponent","isReserved","isInherited","mergeObjectsWithNoDuplicateKeys","one","two","mapObject","ReactErrorUtils","ReactPropTransferer","ReactPropTypeLocations","instantiateReactComponent","shouldUpdateReactComponent","DEFINE_ONCE","injectedMixins","shouldComponentUpdate","componentWillUpdate","childContext","RECEIVING_PROPS","_pendingState","_bindAutoBindMethods","_processContext","_context","_processProps","_pendingForceUpdate","_renderedComponent","_renderValidatedComponent","getReactMountReady","partialState","completeState","maskedContext","contextName","_processChildContext","currentContext","newProps","_checkPropTypes","nextContext","nextProps","shouldUpdate","_performComponentUpdate","prevContext","prevParentElement","prevComponentInstance","thisID","prevComponentID","nextMarkup","dangerouslyReplaceNodeWithMarkupByID","forceUpdate","renderedComponent","previousContext","getEmptyComponent","registerNullComponentID","deregisterNullComponentID","autoBindKey","_bindAutoBindMethod","guard","boundMethod","ReactCompositeComponentBase","Base","defaultProps","methodName","wrapFactory","injectMixin","mixin","./ReactErrorUtils","./ReactPropTransferer","./ReactPropTypeLocationNames","./ReactPropTypeLocations","./instantiateReactComponent","./mapObject","./monitorCodeUse","./shouldUpdateReactComponent",78,"newContext","scopedCallback","result",79,80,"createDOMFactory","markNonLegacyFactory","abbr","address","area","article","aside","audio","base","bdi","bdo","big","canvas","caption","cite","col","colgroup","datalist","dd","details","dfn","dialog","div","dl","dt","embed","fieldset","figcaption","figure","footer","h1","h2","h3","h4","h5","h6","head","iframe","img","ins","kbd","keygen","legend","li","main","mark","menu","menuitem","meta","meter","nav","noscript","ol","optgroup","option","p","param","picture","progress","q","rp","rt","ruby","samp","script","section","select","small","sub","summary","sup","tbody","td","textarea","tfoot","th","thead","time","tr","track","ul","var","video","wbr","circle","defs","ellipse","g","line","linearGradient","mask","polygon","polyline","radialGradient","rect","svg","tspan",81,"mouseListenerNames","onDoubleClick","onMouseDown","onMouseMove","onMouseUp","onClickCapture","onDoubleClickCapture","onMouseDownCapture","onMouseMoveCapture","onMouseUpCapture","ReactDOMButton","./AutoFocusMixin","./ReactBrowserComponentMixin",82,"assertValidProps","dangerouslySetInnerHTML","findReactContainerForID","getPutListenerQueue","enqueuePutListener","validateDangerousTag","validatedTagCache","VALID_TAG_REGEX","CONTENT_TYPES","number","STYLE","omittedCloseTags","closeTag","_createOpenTagMarkupAndPutListeners","_createContentMarkup","propKey","propValue","markupForID","innerHTML","__html","contentToUse","childrenToUse","mountImages","mountChildren","_updateDOMProperties","_updateDOMChildren","lastProps","styleUpdates","lastStyle","deletePropertyByID","nextProp","lastProp","updatePropertyByID","updateStylesByID","lastContent","nextContent","lastHtml","nextHtml","lastChildren","nextChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateChildren","updateInnerHTMLByID","unmountChildren","./CSSPropertyOperations",83,"ReactDOMForm","./LocalEventTrapMixin",84,"INVALID_PROPERTY_ERRORS","updateTextContentByID","dangerouslyProcessChildrenUpdates","./DOMChildrenOperations",85,"ReactDOMImg",86,"forceUpdateIfMounted","instancesByReactID","ReactDOMInput","initialChecked","defaultChecked","initialValue","_handleChange","rootNode","asap","queryRoot","group","querySelectorAll","JSON","groupLen","otherNode","otherID","otherInstance","./LinkedValueUtils",87,"ReactDOMOption",88,"updateWithPendingValueIfMounted","_pendingValue","selectValueType","updateOptions","selectedValue","ReactDOMSelect","prevMultiple",89,"isCollapsed","anchorNode","anchorOffset","focusOffset","getIEOffsets","selection","selectedRange","createRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","startOffset","endOffset","getModernOffsets","rangeCount","currentRange","getRangeAt","isSelectionCollapsed","rangeLength","tempRange","cloneRange","selectNodeContents","setEnd","startContainer","isTempRangeCollapsed","endContainer","detectionRange","setStart","isBackward","collapsed","setIEOffsets","offsets","range","moveStart","moveEnd","setModernOffsets","extend","temp","startMarker","getNodeForCharacterOffset","endMarker","offset","removeAllRanges","addRange","useIEOffsets","ReactDOMSelection","getOffsets","setOffsets","./getNodeForCharacterOffset",90,"ReactDOMTextarea",91,"ReactDefaultBatchingStrategyTransaction","reinitializeTransaction","Transaction","RESET_BATCHED_UPDATES","initialize","close","ReactDefaultBatchingStrategy","isBatchingUpdates","FLUSH_BATCHED_UPDATES","flushBatchedUpdates","TRANSACTION_WRAPPERS","getTransactionWrappers","alreadyBatchingUpdates","./Transaction",92,"ReactInjection","EventEmitter","NativeComponent","injectGenericComponentClass","injectComponentClasses","createFullPageComponent","CompositeComponent","SVGDOMPropertyConfig","EmptyComponent","injectEmptyComponent","Updates","injectReconcileTransaction","injectBatchingStrategy","RootIndex","injectCreateReactRootIndex","ServerReactRootIndex","./BeforeInputEventPlugin","./ChangeEventPlugin","./ClientReactRootIndex","./CompositionEventPlugin","./DefaultEventPluginOrder","./EnterLeaveEventPlugin","./HTMLDOMPropertyConfig","./MobileSafariClickEventPlugin","./ReactComponentBrowserEnvironment","./ReactDOMButton","./ReactDOMForm","./ReactDOMImg","./ReactDOMInput","./ReactDOMOption","./ReactDOMSelect","./ReactDOMTextarea","./ReactDefaultBatchingStrategy","./ReactDefaultPerf","./ReactEventListener","./ReactInjection","./SVGDOMPropertyConfig","./SelectEventPlugin","./ServerReactRootIndex","./SimpleEventPlugin","./createFullPageComponent",93,"roundFloat","floor","addValue","ReactDefaultPerfAnalysis","performanceNow","ReactDefaultPerf","_allMeasurements","_mountStack","_injected","injectMeasure","enableMeasure","getLastMeasurements","printExclusive","measurements","getExclusiveSummary","Component class name","Total inclusive time (ms)","inclusive","Exclusive mount time (ms)","exclusive","Exclusive render time (ms)","Mount time per instance (ms)","Render time per instance (ms)","Instances","printInclusive","getInclusiveSummary","Owner > component","Inclusive time (ms)","getTotalTime","toFixed","getMeasurementsSummaryMap","Wasted time (ms)","printWasted","printDOM","getDOMSummary","args","_recordWrite","fnName","totalTime","writes","moduleName","$__0","$__1","rv","counts","displayNames","mountID","writeArgs","isRender","isMount","mountStack","entry","subMountTime","./ReactDefaultPerfAnalysis","./performanceNow",94,"measurement","items","write","DOM_OPERATION_TYPES","candidates","allIDs","arr","DONT_CARE_THRESHOLD","sort","onlyClean","inclusiveKey","cleanComponents","getUnchangedComponents","dirtyLeafIDs","isDirty",95,"RESERVED_PROPS","_isReactElement","config","childrenLength","childArray","factory","oldElement","newElement","isElement",96,"getCurrentOwnerDisplayName","validateExplicitKey","parentType","_store","validated","warnAndMonitorForKeyUse","validatePropertyKey","NUMERIC_PROPERTY_REGEX","warningID","ownerName","parentName","useName","memoizer","ownerHasKeyUseWarning","childOwnerName","monitorCodeUse","componentOwner","warn","monitorUseOfObjectMap","currentName","ownerHasMonitoredObjectMap","validateChildKeys","ex","loggedTypeFailures","react_key_warning","react_numeric_key_warning","ReactElementValidator","validatedFactory",97,"nullComponentIdsRegistry","ReactEmptyComponentInjection","emptyComponent",98,99,"runEventQueueInBatch",100,"findParent","nodeID","getReactRootIDFromNodeID","TopLevelCallbackBookKeeping","ancestors","handleTopLevelImpl","bookKeeping","getEventTarget","ancestor","_handleTopLevel","scrollValueMonitor","scrollPosition","getUnboundedScrollPosition","_enabled","dispatchEvent","./EventListener","./getEventTarget","./getUnboundedScrollPosition",101,"ReactNativeComponent","ReactRootIndex","Perf","./ReactNativeComponent","./ReactRootIndex",102,"isInDocument","containsNode","getActiveElement","hasSelectionCapabilities","getSelectionInformation","focusedElem","selectionRange","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","setSelection","selectionStart","selectionEnd","parentElement","createTextRange","collapse","./ReactDOMSelection","./containsNode","./getActiveElement",103,"getReactRootIDString","SEPARATOR","isBoundary","isValidID","isAncestorIDOf","ancestorID","descendantID","getParentID","lastIndexOf","getNextDescendantID","destinationID","SEPARATOR_LENGTH","getFirstCommonAncestorID","oneID","twoID","minLength","lastCommonMarkerIndex","longestCommonID","traverseParentPath","arg","skipFirst","skipLast","traverseUp","traverse","MAX_TREE_DEPTH","createReactRootID","createReactID","leaveID","enterID","upArg","downArg","traverseAncestors","_getFirstCommonAncestorID","_getNextDescendantID",104,"proxyStaticMethods","bound","LEGACY_MARKER","NON_LEGACY_MARKER","ReactLegacyElementFactory","legacyCreateFactory","isReactNonLegacyFactory","isReactLegacyFactory","legacyCreateElement","_isMockFunction","_mockedReactClassConstructor","legacyElementFactory","_isLegacyCallWarningEnabled",105,"adler32","CHECKSUM_ATTR_NAME","addChecksumToMarkup","checksum","existingChecksum","markupChecksum","./adler32",106,"getReactRootID","rootElement","internalGetID","nodeCache","cached","isValid","ATTR_NAME","setID","oldID","findReactNodeByID","findDeepestCachedAncestorImpl","deepestNodeSoFar","findDeepestCachedAncestor","foundNode","instancesByReactRootID","containersByReactRootID","findComponentRootReusableArray","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","nextComponent","_registerComponent","reactRootID","registerContainer","_renderNewRootComponent","componentInstance","reactRootElement","containerHasReactMarkup","isRenderedByReact","domNode","unmountComponentFromNode","lastChild","reactRoot","findComponentRoot","ancestorNode","firstChildren","childIndex","deepestAncestor","targetChild","childID","nextSibling",107,"enqueueMarkup","updateQueue","markupQueue","enqueueMove","enqueueRemove","enqueueTextContent","processQueue","clearQueue","flattenChildren","updateDepth","nestedChildren","_renderedChildren","childInstance","mountImage","_mountIndex","errorThrown","prevChildren","_unmountChildByName","setTextContent","nextNestedChildren","_updateChildren","lastIndex","prevChild","moveChild","nextChildInstance","_mountChildByNameAtIndex","renderedChildren","renderedChild","createChild","./flattenChildren",108,109,"createInstanceForTag","componentClass","tagToComponentClass","genericComponentClass","ReactNativeComponentInjection","componentClasses",110,"emptyObject","isValidOwner","attachRef","detachRef","./emptyObject",111,"_noMeasure","objName","storedMeasure",112,"createTransferStrategy","mergeStrategy","transferInto","thisKey","transferStrategy","TransferStrategies","joinClasses","transferStrategyMerge","mergeProps","oldProps","transferPropsTo","./joinClasses",113,"ReactPropTypeLocationNames",114,115,"createChainableTypeChecker","validate","checkType","ANONYMOUS","locationName","chainedCheckType","createPrimitiveTypeChecker","expectedType","propType","getPropType","preciseType","getPreciseType","createAnyTypeChecker","thatReturns","createArrayOfTypeChecker","typeChecker","createElementTypeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","createEnumTypeChecker","expectedValues","valuesString","createObjectOfTypeChecker","createUnionTypeChecker","arrayOfTypeCheckers","checker","createNodeChecker","isNode","createShapeTypeChecker","shapeTypes","elementTypeChecker","nodeTypeChecker","any","arrayOf","objectOf","oneOf","renderable",116,"ReactPutListenerQueue","listenersToPut","putListeners","listenerToPut",117,"reactMountReady","putListenerQueue","SELECTION_RESTORATION","EVENT_SUPPRESSION","currentlyEnabled","previouslyEnabled","ON_DOM_READY_QUEUEING","PUT_LISTENER_QUEUEING","./CallbackQueue","./ReactPutListenerQueue",118,"ReactRootIndexInjection","_createReactRootIndex",119,"ReactServerRenderingTransaction","./ReactServerRenderingTransaction",120,121,"escapedText","ReactTextComponentFactory",122,"ensureInjected","batchingStrategy","ReactUpdatesFlushTransaction","dirtyComponentsLength","callbackQueue","reconcileTransaction","mountDepthComparator","c1","c2","runBatchedUpdates","dirtyComponents","asapCallbackQueue","asapEnqueued","NESTED_UPDATES","splice","UPDATE_QUEUEING","ReactUpdatesInjection","ReconcileTransaction","_batchingStrategy",123,"cx","cy","d","dx","dy","fill","fx","fy","gradientTransform","gradientUnits","markerEnd","markerMid","markerStart","patternContentUnits","patternUnits","points","preserveAspectRatio","rx","ry","spreadMethod","stopColor","stopOpacity","stroke","strokeDasharray","strokeLinecap","strokeWidth","textAnchor","transform","viewBox","x1","x2","y1","y2",124,"boundingTop","left","boundingLeft","constructSelectEvent","mouseDown","currentSelection","lastSelection","shallowEqual","syntheticEvent","onSelect","onSelectCapture","./shallowEqual",125,"GLOBAL_MOUNT_POINT_MAX","pow","ceil",126,"SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticUIEvent","SyntheticWheelEvent","getEventCharCode","blur","onBlur","onBlurCapture","click","onContextMenu","onContextMenuCapture","copy","onCopy","onCopyCapture","cut","onCut","onCutCapture","doubleClick","drag","onDrag","onDragCapture","dragEnd","onDragEnd","onDragEndCapture","dragEnter","onDragEnter","onDragEnterCapture","dragExit","onDragExit","onDragExitCapture","dragLeave","onDragLeave","onDragLeaveCapture","dragOver","onDragOver","onDragOverCapture","dragStart","onDragStart","onDragStartCapture","drop","onDrop","onDropCapture","focus","onFocus","onFocusCapture","onInput","onInputCapture","keyDown","onKeyDown","onKeyDownCapture","keyPress","onKeyPress","onKeyPressCapture","keyUp","onKeyUp","onKeyUpCapture","load","onLoad","onLoadCapture","onErrorCapture","mouseMove","mouseOut","onMouseOut","onMouseOutCapture","mouseOver","onMouseOver","onMouseOverCapture","mouseUp","paste","onPaste","onPasteCapture","onReset","onResetCapture","scroll","onScroll","onScrollCapture","onSubmit","onSubmitCapture","touchCancel","onTouchCancel","onTouchCancelCapture","touchEnd","onTouchEnd","onTouchEndCapture","touchMove","onTouchMove","onTouchMoveCapture","touchStart","onTouchStart","onTouchStartCapture","wheel","onWheel","onWheelCapture","topLevelEventsToDispatchConfig","stopPropagation","EventConstructor","./SyntheticClipboardEvent","./SyntheticDragEvent","./SyntheticFocusEvent","./SyntheticKeyboardEvent","./SyntheticTouchEvent","./SyntheticUIEvent","./SyntheticWheelEvent","./getEventCharCode",127,"ClipboardEventInterface","clipboardData","augmentClass",128,"CompositionEventInterface",129,"DragEventInterface","dataTransfer",130,"Interface","normalize","isDefaultPrevented","thatReturnsTrue","thatReturnsFalse","EventInterface","thatReturnsNull","eventPhase","bubbles","cancelable","timeStamp","now","isTrusted","cancelBubble","persist","Class","Super",131,"FocusEventInterface",132,"InputEventInterface",133,"getEventKey","getEventModifierState","KeyboardEventInterface","repeat","locale","getModifierState","charCode","./getEventKey","./getEventModifierState",134,"MouseEventInterface","screenX","screenY","clientX","clientY","buttons","pageX","currentScrollLeft","pageY","currentScrollTop",135,"TouchEventInterface","touches","targetTouches","changedTouches",136,"UIEventInterface","view","detail",137,"WheelEventInterface","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode",138,"transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","c","initializeAll","closeAll","startIndex","wrapper","OBSERVED_ERROR","initData",139,140,"currentIsArray","nextIsArray",141,"MOD",142,"camelize","_hyphenPattern","character",143,"camelizeStyleName","msPattern","./camelize",144,"outerNode","innerNode","isTextNode","contains","compareDocumentPosition","./isTextNode",145,"hasArrayNature","createArrayFrom","toArray","./toArray",146,"elementFactory","FullPageComponent",147,"nodeNameMatch","nodeNamePattern","handleScript","dummyNode","wrap","wrapDepth","scripts","getElementsByTagName","nodes","./createArrayFrom",148,149,"isEmpty","isNonNumeric","trim",150,"namespace","oldName","newName","ctx","fn",151,"makeEmptyFunction","thatReturnsThis","thatReturnsArgument",152,153,"escaper","ESCAPE_LOOKUP","ESCAPE_REGEX","&",">","<","\"","'",154,"flattenSingleChildIntoContext","normalizedValue",155,156,157,158,159,"normalizeKey","translateToKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey",224,160,"modifierStateGetter","keyArg","keyProp","modifierKeyToProp","Alt","Control","Meta","Shift",161,162,"markupWrap","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","*",163,"getLeafNode","getSiblingNode","nodeStart","nodeEnd",164,165,"contentKey",166,"scrollable",167,"hyphenate","_uppercasePattern",168,"./hyphenate",169,"parentCompositeType",170,"condition","format","argIndex","framesToPop",171,"eventNameSuffix","isSupported","useHasFeature",172,"Node",173,"supportedInputTypes","color","date","datetime","datetime-local","email","month","password","tel","week",174,"./isNode",175,"nextClass","argLength","ii",176,177,"oneKeyObj",178,179,"cache",180,181,182,"performance","msPerformance","webkitPerformance",183,"./performance",184,"WHITESPACE_TEST","NONVISIBLE_TEST","textNode","deleteData",185,"objA","objB",186,187,188,"userProvidedKeyEscaper","userProvidedKeyEscaperLookup","getComponentKey","wrapUserProvidedKey","escapeUserProvidedKey","userProvidedKeyEscapeRegex","traverseAllChildrenImpl","SUBSEPARATOR","=",".",":","nameSoFar","indexSoFar","nextName","subtreeCount","isOnlyChild","storageName",189,190,"./lib/React",191,"Footer",192,"Header","retinafyImage","../config","../functions",193,"dev","retina","devicePixelRatio","cdn",194,"apps","itunes","screenshots","banner","desc","features","collaboration","publications","about","people","./functions",195,"extension","round","getTime","findByLink","./config",196,"Application","../components/footer.jsx","../components/header.jsx",197,"appList","app","appId","About","person","rawHTML","Index","../data",198,"Screenshot","listShots","sc","singleBanner","Features","listFeats","ft","Credits","Publication","listNews","news","Description","Page","appid",199,"./layout/application.jsx","./layout/index.jsx","./layout/page.jsx"],"mappings":"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","file":"app.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,}) *(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3]\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:__|[\\s\\S])+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += escape(this.smartypants(cap[0]));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/--/g, '\\u2014')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
'\n      + (escaped ? code : escape(code, true))\n      + '\\n
';\n }\n\n return '
'\n    + (escaped ? code : escape(code, true))\n    + '\\n
\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
\\n' + quote + '
\\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n return html.replace(/&([#\\w]+);/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],4:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Represents a cancellation caused by navigating away\n * before the previous transition has fully resolved.\n */\nfunction Cancellation() {}\n\nmodule.exports = Cancellation;\n},{}],5:[function(require,module,exports){\n\"use strict\";\n\nvar warning = require(\"react/lib/warning\");\nvar invariant = require(\"react/lib/invariant\");\n\nfunction checkPropTypes(componentName, propTypes, props) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, componentName);\n\n if (error instanceof Error) warning(false, error.message);\n }\n }\n}\n\nvar Configuration = {\n\n statics: {\n\n validateProps: function validateProps(props) {\n checkPropTypes(this.displayName, this.propTypes, props);\n }\n\n },\n\n render: function render() {\n invariant(false, \"%s elements are for router configuration only and should not be rendered\", this.constructor.displayName);\n }\n\n};\n\nmodule.exports = Configuration;\n},{\"react/lib/invariant\":170,\"react/lib/warning\":189}],6:[function(require,module,exports){\n\"use strict\";\n\nvar invariant = require(\"react/lib/invariant\");\nvar canUseDOM = require(\"react/lib/ExecutionEnvironment\").canUseDOM;\n\nvar History = {\n\n /**\n * The current number of entries in the history.\n *\n * Note: This property is read-only.\n */\n length: 1,\n\n /**\n * Sends the browser back one entry in the history.\n */\n back: function back() {\n invariant(canUseDOM, \"Cannot use History.back without a DOM\");\n\n // Do this first so that History.length will\n // be accurate in location change listeners.\n History.length -= 1;\n\n window.history.back();\n }\n\n};\n\nmodule.exports = History;\n},{\"react/lib/ExecutionEnvironment\":64,\"react/lib/invariant\":170}],7:[function(require,module,exports){\n\"use strict\";\n\nvar _prototypeProperties = function (child, staticProps, instanceProps) { if (staticProps) Object.defineProperties(child, staticProps); if (instanceProps) Object.defineProperties(child.prototype, instanceProps); };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\n/* jshint -W084 */\nvar PathUtils = require(\"./PathUtils\");\n\nfunction deepSearch(route, pathname, query) {\n // Check the subtree first to find the most deeply-nested match.\n var childRoutes = route.childRoutes;\n if (childRoutes) {\n var match, childRoute;\n for (var i = 0, len = childRoutes.length; i < len; ++i) {\n childRoute = childRoutes[i];\n\n if (childRoute.isDefault || childRoute.isNotFound) continue; // Check these in order later.\n\n if (match = deepSearch(childRoute, pathname, query)) {\n // A route in the subtree matched! Add this route and we're done.\n match.routes.unshift(route);\n return match;\n }\n }\n }\n\n // No child routes matched; try the default route.\n var defaultRoute = route.defaultRoute;\n if (defaultRoute && (params = PathUtils.extractParams(defaultRoute.path, pathname))) {\n return new Match(pathname, params, query, [route, defaultRoute]);\n } // Does the \"not found\" route match?\n var notFoundRoute = route.notFoundRoute;\n if (notFoundRoute && (params = PathUtils.extractParams(notFoundRoute.path, pathname))) {\n return new Match(pathname, params, query, [route, notFoundRoute]);\n } // Last attempt: check this route.\n var params = PathUtils.extractParams(route.path, pathname);\n if (params) {\n return new Match(pathname, params, query, [route]);\n }return null;\n}\n\nvar Match = (function () {\n function Match(pathname, params, query, routes) {\n _classCallCheck(this, Match);\n\n this.pathname = pathname;\n this.params = params;\n this.query = query;\n this.routes = routes;\n }\n\n _prototypeProperties(Match, {\n findMatch: {\n\n /**\n * Attempts to match depth-first a route in the given route's\n * subtree against the given path and returns the match if it\n * succeeds, null if no match can be made.\n */\n\n value: function findMatch(routes, path) {\n var pathname = PathUtils.withoutQuery(path);\n var query = PathUtils.extractQuery(path);\n var match = null;\n\n for (var i = 0, len = routes.length; match == null && i < len; ++i) match = deepSearch(routes[i], pathname, query);\n\n return match;\n },\n writable: true,\n configurable: true\n }\n });\n\n return Match;\n})();\n\nmodule.exports = Match;\n},{\"./PathUtils\":10}],8:[function(require,module,exports){\n\"use strict\";\n\nvar PropTypes = require(\"./PropTypes\");\n\n/**\n * A mixin for components that modify the URL.\n *\n * Example:\n *\n * var MyLink = React.createClass({\n * mixins: [ Router.Navigation ],\n * handleClick: function (event) {\n * event.preventDefault();\n * this.transitionTo('aRoute', { the: 'params' }, { the: 'query' });\n * },\n * render: function () {\n * return (\n *
    Click me!\n * );\n * }\n * });\n */\nvar Navigation = {\n\n contextTypes: {\n makePath: PropTypes.func.isRequired,\n makeHref: PropTypes.func.isRequired,\n transitionTo: PropTypes.func.isRequired,\n replaceWith: PropTypes.func.isRequired,\n goBack: PropTypes.func.isRequired\n },\n\n /**\n * Returns an absolute URL path created from the given route\n * name, URL parameters, and query values.\n */\n makePath: function makePath(to, params, query) {\n return this.context.makePath(to, params, query);\n },\n\n /**\n * Returns a string that may safely be used as the href of a\n * link to the route with the given name.\n */\n makeHref: function makeHref(to, params, query) {\n return this.context.makeHref(to, params, query);\n },\n\n /**\n * Transitions to the URL specified in the arguments by pushing\n * a new URL onto the history stack.\n */\n transitionTo: function transitionTo(to, params, query) {\n this.context.transitionTo(to, params, query);\n },\n\n /**\n * Transitions to the URL specified in the arguments by replacing\n * the current URL in the history stack.\n */\n replaceWith: function replaceWith(to, params, query) {\n this.context.replaceWith(to, params, query);\n },\n\n /**\n * Transitions to the previous URL.\n */\n goBack: function goBack() {\n return this.context.goBack();\n }\n\n};\n\nmodule.exports = Navigation;\n},{\"./PropTypes\":11}],9:[function(require,module,exports){\n\"use strict\";\n\nvar PropTypes = require(\"./PropTypes\");\n\n/**\n * Provides the router with context for Router.Navigation.\n */\nvar NavigationContext = {\n\n childContextTypes: {\n makePath: PropTypes.func.isRequired,\n makeHref: PropTypes.func.isRequired,\n transitionTo: PropTypes.func.isRequired,\n replaceWith: PropTypes.func.isRequired,\n goBack: PropTypes.func.isRequired\n },\n\n getChildContext: function getChildContext() {\n return {\n makePath: this.constructor.makePath.bind(this.constructor),\n makeHref: this.constructor.makeHref.bind(this.constructor),\n transitionTo: this.constructor.transitionTo.bind(this.constructor),\n replaceWith: this.constructor.replaceWith.bind(this.constructor),\n goBack: this.constructor.goBack.bind(this.constructor)\n };\n }\n\n};\n\nmodule.exports = NavigationContext;\n},{\"./PropTypes\":11}],10:[function(require,module,exports){\n\"use strict\";\n\nvar invariant = require(\"react/lib/invariant\");\nvar merge = require(\"qs/lib/utils\").merge;\nvar qs = require(\"qs\");\n\nvar paramCompileMatcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|[*.()\\[\\]\\\\+|{}^$]/g;\nvar paramInjectMatcher = /:([a-zA-Z_$][a-zA-Z0-9_$?]*[?]?)|[*]/g;\nvar paramInjectTrailingSlashMatcher = /\\/\\/\\?|\\/\\?\\/|\\/\\?/g;\nvar queryMatcher = /\\?(.+)/;\n\nvar _compiledPatterns = {};\n\nfunction compilePattern(pattern) {\n if (!(pattern in _compiledPatterns)) {\n var paramNames = [];\n var source = pattern.replace(paramCompileMatcher, function (match, paramName) {\n if (paramName) {\n paramNames.push(paramName);\n return \"([^/?#]+)\";\n } else if (match === \"*\") {\n paramNames.push(\"splat\");\n return \"(.*?)\";\n } else {\n return \"\\\\\" + match;\n }\n });\n\n _compiledPatterns[pattern] = {\n matcher: new RegExp(\"^\" + source + \"$\", \"i\"),\n paramNames: paramNames\n };\n }\n\n return _compiledPatterns[pattern];\n}\n\nvar PathUtils = {\n\n /**\n * Returns true if the given path is absolute.\n */\n isAbsolute: function isAbsolute(path) {\n return path.charAt(0) === \"/\";\n },\n\n /**\n * Joins two URL paths together.\n */\n join: function join(a, b) {\n return a.replace(/\\/*$/, \"/\") + b;\n },\n\n /**\n * Returns an array of the names of all parameters in the given pattern.\n */\n extractParamNames: function extractParamNames(pattern) {\n return compilePattern(pattern).paramNames;\n },\n\n /**\n * Extracts the portions of the given URL path that match the given pattern\n * and returns an object of param name => value pairs. Returns null if the\n * pattern does not match the given path.\n */\n extractParams: function extractParams(pattern, path) {\n var _compilePattern = compilePattern(pattern);\n\n var matcher = _compilePattern.matcher;\n var paramNames = _compilePattern.paramNames;\n\n var match = path.match(matcher);\n\n if (!match) {\n return null;\n }var params = {};\n\n paramNames.forEach(function (paramName, index) {\n params[paramName] = match[index + 1];\n });\n\n return params;\n },\n\n /**\n * Returns a version of the given route path with params interpolated. Throws\n * if there is a dynamic segment of the route path for which there is no param.\n */\n injectParams: function injectParams(pattern, params) {\n params = params || {};\n\n var splatIndex = 0;\n\n return pattern.replace(paramInjectMatcher, function (match, paramName) {\n paramName = paramName || \"splat\";\n\n // If param is optional don't check for existence\n if (paramName.slice(-1) === \"?\") {\n paramName = paramName.slice(0, -1);\n\n if (params[paramName] == null) return \"\";\n } else {\n invariant(params[paramName] != null, \"Missing \\\"%s\\\" parameter for path \\\"%s\\\"\", paramName, pattern);\n }\n\n var segment;\n if (paramName === \"splat\" && Array.isArray(params[paramName])) {\n segment = params[paramName][splatIndex++];\n\n invariant(segment != null, \"Missing splat # %s for path \\\"%s\\\"\", splatIndex, pattern);\n } else {\n segment = params[paramName];\n }\n\n return segment;\n }).replace(paramInjectTrailingSlashMatcher, \"/\");\n },\n\n /**\n * Returns an object that is the result of parsing any query string contained\n * in the given path, null if the path contains no query string.\n */\n extractQuery: function extractQuery(path) {\n var match = path.match(queryMatcher);\n return match && qs.parse(match[1]);\n },\n\n /**\n * Returns a version of the given path without the query string.\n */\n withoutQuery: function withoutQuery(path) {\n return path.replace(queryMatcher, \"\");\n },\n\n /**\n * Returns a version of the given path with the parameters in the given\n * query merged into the query string.\n */\n withQuery: function withQuery(path, query) {\n var existingQuery = PathUtils.extractQuery(path);\n\n if (existingQuery) query = query ? merge(existingQuery, query) : existingQuery;\n\n var queryString = qs.stringify(query, { indices: false });\n\n if (queryString) {\n return PathUtils.withoutQuery(path) + \"?\" + queryString;\n }return path;\n }\n\n};\n\nmodule.exports = PathUtils;\n},{\"qs\":39,\"qs/lib/utils\":43,\"react/lib/invariant\":170}],11:[function(require,module,exports){\n\"use strict\";\n\nvar assign = require(\"react/lib/Object.assign\");\nvar ReactPropTypes = require(\"react\").PropTypes;\n\nvar PropTypes = assign({\n\n /**\n * Requires that the value of a prop be falsy.\n */\n falsy: function falsy(props, propName, componentName) {\n if (props[propName]) {\n return new Error(\"<\" + componentName + \"> may not have a \\\"\" + propName + \"\\\" prop\");\n }\n }\n\n}, ReactPropTypes);\n\nmodule.exports = PropTypes;\n},{\"react\":190,\"react/lib/Object.assign\":69}],12:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Encapsulates a redirect to the given route.\n */\nfunction Redirect(to, params, query) {\n this.to = to;\n this.params = params;\n this.query = query;\n}\n\nmodule.exports = Redirect;\n},{}],13:[function(require,module,exports){\n\"use strict\";\n\nvar _prototypeProperties = function (child, staticProps, instanceProps) { if (staticProps) Object.defineProperties(child, staticProps); if (instanceProps) Object.defineProperties(child.prototype, instanceProps); };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\nvar assign = require(\"react/lib/Object.assign\");\nvar invariant = require(\"react/lib/invariant\");\nvar warning = require(\"react/lib/warning\");\nvar PathUtils = require(\"./PathUtils\");\n\nvar _currentRoute;\n\nvar Route = (function () {\n function Route(name, path, ignoreScrollBehavior, isDefault, isNotFound, onEnter, onLeave, handler) {\n _classCallCheck(this, Route);\n\n this.name = name;\n this.path = path;\n this.paramNames = PathUtils.extractParamNames(this.path);\n this.ignoreScrollBehavior = !!ignoreScrollBehavior;\n this.isDefault = !!isDefault;\n this.isNotFound = !!isNotFound;\n this.onEnter = onEnter;\n this.onLeave = onLeave;\n this.handler = handler;\n }\n\n _prototypeProperties(Route, {\n createRoute: {\n\n /**\n * Creates and returns a new route. Options may be a URL pathname string\n * with placeholders for named params or an object with any of the following\n * properties:\n *\n * - name The name of the route. This is used to lookup a\n * route relative to its parent route and should be\n * unique among all child routes of the same parent\n * - path A URL pathname string with optional placeholders\n * that specify the names of params to extract from\n * the URL when the path matches. Defaults to `/${name}`\n * when there is a name given, or the path of the parent\n * route, or /\n * - ignoreScrollBehavior True to make this route (and all descendants) ignore\n * the scroll behavior of the router\n * - isDefault True to make this route the default route among all\n * its siblings\n * - isNotFound True to make this route the \"not found\" route among\n * all its siblings\n * - onEnter A transition hook that will be called when the\n * router is going to enter this route\n * - onLeave A transition hook that will be called when the\n * router is going to leave this route\n * - handler A React component that will be rendered when\n * this route is active\n * - parentRoute The parent route to use for this route. This option\n * is automatically supplied when creating routes inside\n * the callback to another invocation of createRoute. You\n * only ever need to use this when declaring routes\n * independently of one another to manually piece together\n * the route hierarchy\n *\n * The callback may be used to structure your route hierarchy. Any call to\n * createRoute, createDefaultRoute, createNotFoundRoute, or createRedirect\n * inside the callback automatically uses this route as its parent.\n */\n\n value: function createRoute(options, callback) {\n options = options || {};\n\n if (typeof options === \"string\") options = { path: options };\n\n var parentRoute = _currentRoute;\n\n if (parentRoute) {\n warning(options.parentRoute == null || options.parentRoute === parentRoute, \"You should not use parentRoute with createRoute inside another route's child callback; it is ignored\");\n } else {\n parentRoute = options.parentRoute;\n }\n\n var name = options.name;\n var path = options.path || name;\n\n if (path && !(options.isDefault || options.isNotFound)) {\n if (PathUtils.isAbsolute(path)) {\n if (parentRoute) {\n invariant(parentRoute.paramNames.length === 0, \"You cannot nest path \\\"%s\\\" inside \\\"%s\\\"; the parent requires URL parameters\", path, parentRoute.path);\n }\n } else if (parentRoute) {\n // Relative paths extend their parent.\n path = PathUtils.join(parentRoute.path, path);\n } else {\n path = \"/\" + path;\n }\n } else {\n path = parentRoute ? parentRoute.path : \"/\";\n }\n\n if (options.isNotFound && !/\\*$/.test(path)) path += \"*\"; // Auto-append * to the path of not found routes.\n\n var route = new Route(name, path, options.ignoreScrollBehavior, options.isDefault, options.isNotFound, options.onEnter, options.onLeave, options.handler);\n\n if (parentRoute) {\n if (route.isDefault) {\n invariant(parentRoute.defaultRoute == null, \"%s may not have more than one default route\", parentRoute);\n\n parentRoute.defaultRoute = route;\n } else if (route.isNotFound) {\n invariant(parentRoute.notFoundRoute == null, \"%s may not have more than one not found route\", parentRoute);\n\n parentRoute.notFoundRoute = route;\n }\n\n parentRoute.appendChild(route);\n }\n\n // Any routes created in the callback\n // use this route as their parent.\n if (typeof callback === \"function\") {\n var currentRoute = _currentRoute;\n _currentRoute = route;\n callback.call(route, route);\n _currentRoute = currentRoute;\n }\n\n return route;\n },\n writable: true,\n configurable: true\n },\n createDefaultRoute: {\n\n /**\n * Creates and returns a route that is rendered when its parent matches\n * the current URL.\n */\n\n value: function createDefaultRoute(options) {\n return Route.createRoute(assign({}, options, { isDefault: true }));\n },\n writable: true,\n configurable: true\n },\n createNotFoundRoute: {\n\n /**\n * Creates and returns a route that is rendered when its parent matches\n * the current URL but none of its siblings do.\n */\n\n value: function createNotFoundRoute(options) {\n return Route.createRoute(assign({}, options, { isNotFound: true }));\n },\n writable: true,\n configurable: true\n },\n createRedirect: {\n\n /**\n * Creates and returns a route that automatically redirects the transition\n * to another route. In addition to the normal options to createRoute, this\n * function accepts the following options:\n *\n * - from An alias for the `path` option. Defaults to *\n * - to The path/route/route name to redirect to\n * - params The params to use in the redirect URL. Defaults\n * to using the current params\n * - query The query to use in the redirect URL. Defaults\n * to using the current query\n */\n\n value: function createRedirect(options) {\n return Route.createRoute(assign({}, options, {\n path: options.path || options.from || \"*\",\n onEnter: function onEnter(transition, params, query) {\n transition.redirect(options.to, options.params || params, options.query || query);\n }\n }));\n },\n writable: true,\n configurable: true\n }\n }, {\n appendChild: {\n\n /**\n * Appends the given route to this route's child routes.\n */\n\n value: function appendChild(route) {\n invariant(route instanceof Route, \"route.appendChild must use a valid Route\");\n\n if (!this.childRoutes) this.childRoutes = [];\n\n this.childRoutes.push(route);\n },\n writable: true,\n configurable: true\n },\n toString: {\n value: function toString() {\n var string = \"\";\n\n return string;\n },\n writable: true,\n configurable: true\n }\n });\n\n return Route;\n})();\n\nmodule.exports = Route;\n},{\"./PathUtils\":10,\"react/lib/Object.assign\":69,\"react/lib/invariant\":170,\"react/lib/warning\":189}],14:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\nvar assign = require(\"react/lib/Object.assign\");\nvar PropTypes = require(\"./PropTypes\");\n\nvar REF_NAME = \"__routeHandler__\";\n\nvar RouteHandlerMixin = {\n\n contextTypes: {\n getRouteAtDepth: PropTypes.func.isRequired,\n setRouteComponentAtDepth: PropTypes.func.isRequired,\n routeHandlers: PropTypes.array.isRequired\n },\n\n childContextTypes: {\n routeHandlers: PropTypes.array.isRequired\n },\n\n getChildContext: function getChildContext() {\n return {\n routeHandlers: this.context.routeHandlers.concat([this])\n };\n },\n\n componentDidMount: function componentDidMount() {\n this._updateRouteComponent(this.refs[REF_NAME]);\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._updateRouteComponent(this.refs[REF_NAME]);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._updateRouteComponent(null);\n },\n\n _updateRouteComponent: function _updateRouteComponent(component) {\n this.context.setRouteComponentAtDepth(this.getRouteDepth(), component);\n },\n\n getRouteDepth: function getRouteDepth() {\n return this.context.routeHandlers.length;\n },\n\n createChildRouteHandler: function createChildRouteHandler(props) {\n var route = this.context.getRouteAtDepth(this.getRouteDepth());\n return route ? React.createElement(route.handler, assign({}, props || this.props, { ref: REF_NAME })) : null;\n }\n\n};\n\nmodule.exports = RouteHandlerMixin;\n},{\"./PropTypes\":11,\"react\":190,\"react/lib/Object.assign\":69}],15:[function(require,module,exports){\n\"use strict\";\n\nvar invariant = require(\"react/lib/invariant\");\nvar canUseDOM = require(\"react/lib/ExecutionEnvironment\").canUseDOM;\nvar getWindowScrollPosition = require(\"./getWindowScrollPosition\");\n\nfunction shouldUpdateScroll(state, prevState) {\n if (!prevState) {\n return true;\n } // Don't update scroll position when only the query has changed.\n if (state.pathname === prevState.pathname) {\n return false;\n }var routes = state.routes;\n var prevRoutes = prevState.routes;\n\n var sharedAncestorRoutes = routes.filter(function (route) {\n return prevRoutes.indexOf(route) !== -1;\n });\n\n return !sharedAncestorRoutes.some(function (route) {\n return route.ignoreScrollBehavior;\n });\n}\n\n/**\n * Provides the router with the ability to manage window scroll position\n * according to its scroll behavior.\n */\nvar ScrollHistory = {\n\n statics: {\n\n /**\n * Records curent scroll position as the last known position for the given URL path.\n */\n recordScrollPosition: function recordScrollPosition(path) {\n if (!this.scrollHistory) this.scrollHistory = {};\n\n this.scrollHistory[path] = getWindowScrollPosition();\n },\n\n /**\n * Returns the last known scroll position for the given URL path.\n */\n getScrollPosition: function getScrollPosition(path) {\n if (!this.scrollHistory) this.scrollHistory = {};\n\n return this.scrollHistory[path] || null;\n }\n\n },\n\n componentWillMount: function componentWillMount() {\n invariant(this.constructor.getScrollBehavior() == null || canUseDOM, \"Cannot use scroll behavior without a DOM\");\n },\n\n componentDidMount: function componentDidMount() {\n this._updateScroll();\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n this._updateScroll(prevState);\n },\n\n _updateScroll: function _updateScroll(prevState) {\n if (!shouldUpdateScroll(this.state, prevState)) {\n return;\n }var scrollBehavior = this.constructor.getScrollBehavior();\n\n if (scrollBehavior) scrollBehavior.updateScrollPosition(this.constructor.getScrollPosition(this.state.path), this.state.action);\n }\n\n};\n\nmodule.exports = ScrollHistory;\n},{\"./getWindowScrollPosition\":30,\"react/lib/ExecutionEnvironment\":64,\"react/lib/invariant\":170}],16:[function(require,module,exports){\n\"use strict\";\n\nvar PropTypes = require(\"./PropTypes\");\n\n/**\n * A mixin for components that need to know the path, routes, URL\n * params and query that are currently active.\n *\n * Example:\n *\n * var AboutLink = React.createClass({\n * mixins: [ Router.State ],\n * render: function () {\n * var className = this.props.className;\n * \n * if (this.isActive('about'))\n * className += ' is-active';\n * \n * return React.DOM.a({ className: className }, this.props.children);\n * }\n * });\n */\nvar State = {\n\n contextTypes: {\n getCurrentPath: PropTypes.func.isRequired,\n getCurrentRoutes: PropTypes.func.isRequired,\n getCurrentPathname: PropTypes.func.isRequired,\n getCurrentParams: PropTypes.func.isRequired,\n getCurrentQuery: PropTypes.func.isRequired,\n isActive: PropTypes.func.isRequired\n },\n\n /**\n * Returns the current URL path.\n */\n getPath: function getPath() {\n return this.context.getCurrentPath();\n },\n\n /**\n * Returns an array of the routes that are currently active.\n */\n getRoutes: function getRoutes() {\n return this.context.getCurrentRoutes();\n },\n\n /**\n * Returns the current URL path without the query string.\n */\n getPathname: function getPathname() {\n return this.context.getCurrentPathname();\n },\n\n /**\n * Returns an object of the URL params that are currently active.\n */\n getParams: function getParams() {\n return this.context.getCurrentParams();\n },\n\n /**\n * Returns an object of the query params that are currently active.\n */\n getQuery: function getQuery() {\n return this.context.getCurrentQuery();\n },\n\n /**\n * A helper method to determine if a given route, params, and query\n * are active.\n */\n isActive: function isActive(to, params, query) {\n return this.context.isActive(to, params, query);\n }\n\n};\n\nmodule.exports = State;\n},{\"./PropTypes\":11}],17:[function(require,module,exports){\n\"use strict\";\n\nvar assign = require(\"react/lib/Object.assign\");\nvar PropTypes = require(\"./PropTypes\");\nvar PathUtils = require(\"./PathUtils\");\n\nfunction routeIsActive(activeRoutes, routeName) {\n return activeRoutes.some(function (route) {\n return route.name === routeName;\n });\n}\n\nfunction paramsAreActive(activeParams, params) {\n for (var property in params) if (String(activeParams[property]) !== String(params[property])) {\n return false;\n }return true;\n}\n\nfunction queryIsActive(activeQuery, query) {\n for (var property in query) if (String(activeQuery[property]) !== String(query[property])) {\n return false;\n }return true;\n}\n\n/**\n * Provides the router with context for Router.State.\n */\nvar StateContext = {\n\n /**\n * Returns the current URL path + query string.\n */\n getCurrentPath: function getCurrentPath() {\n return this.state.path;\n },\n\n /**\n * Returns a read-only array of the currently active routes.\n */\n getCurrentRoutes: function getCurrentRoutes() {\n return this.state.routes.slice(0);\n },\n\n /**\n * Returns the current URL path without the query string.\n */\n getCurrentPathname: function getCurrentPathname() {\n return this.state.pathname;\n },\n\n /**\n * Returns a read-only object of the currently active URL parameters.\n */\n getCurrentParams: function getCurrentParams() {\n return assign({}, this.state.params);\n },\n\n /**\n * Returns a read-only object of the currently active query parameters.\n */\n getCurrentQuery: function getCurrentQuery() {\n return assign({}, this.state.query);\n },\n\n /**\n * Returns true if the given route, params, and query are active.\n */\n isActive: function isActive(to, params, query) {\n if (PathUtils.isAbsolute(to)) {\n return to === this.state.path;\n }return routeIsActive(this.state.routes, to) && paramsAreActive(this.state.params, params) && (query == null || queryIsActive(this.state.query, query));\n },\n\n childContextTypes: {\n getCurrentPath: PropTypes.func.isRequired,\n getCurrentRoutes: PropTypes.func.isRequired,\n getCurrentPathname: PropTypes.func.isRequired,\n getCurrentParams: PropTypes.func.isRequired,\n getCurrentQuery: PropTypes.func.isRequired,\n isActive: PropTypes.func.isRequired\n },\n\n getChildContext: function getChildContext() {\n return {\n getCurrentPath: this.getCurrentPath,\n getCurrentRoutes: this.getCurrentRoutes,\n getCurrentPathname: this.getCurrentPathname,\n getCurrentParams: this.getCurrentParams,\n getCurrentQuery: this.getCurrentQuery,\n isActive: this.isActive\n };\n }\n\n};\n\nmodule.exports = StateContext;\n},{\"./PathUtils\":10,\"./PropTypes\":11,\"react/lib/Object.assign\":69}],18:[function(require,module,exports){\n\"use strict\";\n\n/* jshint -W058 */\n\nvar Cancellation = require(\"./Cancellation\");\nvar Redirect = require(\"./Redirect\");\n\n/**\n * Encapsulates a transition to a given path.\n *\n * The willTransitionTo and willTransitionFrom handlers receive\n * an instance of this class as their first argument.\n */\nfunction Transition(path, retry) {\n this.path = path;\n this.abortReason = null;\n // TODO: Change this to router.retryTransition(transition)\n this.retry = retry.bind(this);\n}\n\nTransition.prototype.abort = function (reason) {\n if (this.abortReason == null) this.abortReason = reason || \"ABORT\";\n};\n\nTransition.prototype.redirect = function (to, params, query) {\n this.abort(new Redirect(to, params, query));\n};\n\nTransition.prototype.cancel = function () {\n this.abort(new Cancellation());\n};\n\nTransition.from = function (transition, routes, components, callback) {\n routes.reduce(function (callback, route, index) {\n return function (error) {\n if (error || transition.abortReason) {\n callback(error);\n } else if (route.onLeave) {\n try {\n route.onLeave(transition, components[index], callback);\n\n // If there is no callback in the argument list, call it automatically.\n if (route.onLeave.length < 3) callback();\n } catch (e) {\n callback(e);\n }\n } else {\n callback();\n }\n };\n }, callback)();\n};\n\nTransition.to = function (transition, routes, params, query, callback) {\n routes.reduceRight(function (callback, route) {\n return function (error) {\n if (error || transition.abortReason) {\n callback(error);\n } else if (route.onEnter) {\n try {\n route.onEnter(transition, params, query, callback);\n\n // If there is no callback in the argument list, call it automatically.\n if (route.onEnter.length < 4) callback();\n } catch (e) {\n callback(e);\n }\n } else {\n callback();\n }\n };\n }, callback)();\n};\n\nmodule.exports = Transition;\n},{\"./Cancellation\":4,\"./Redirect\":12}],19:[function(require,module,exports){\n\"use strict\";\n\n/**\n * Actions that modify the URL.\n */\nvar LocationActions = {\n\n /**\n * Indicates a new location is being pushed to the history stack.\n */\n PUSH: \"push\",\n\n /**\n * Indicates the current location should be replaced.\n */\n REPLACE: \"replace\",\n\n /**\n * Indicates the most recent entry should be removed from the history stack.\n */\n POP: \"pop\"\n\n};\n\nmodule.exports = LocationActions;\n},{}],20:[function(require,module,exports){\n\"use strict\";\n\nvar LocationActions = require(\"../actions/LocationActions\");\n\n/**\n * A scroll behavior that attempts to imitate the default behavior\n * of modern browsers.\n */\nvar ImitateBrowserBehavior = {\n\n updateScrollPosition: function updateScrollPosition(position, actionType) {\n switch (actionType) {\n case LocationActions.PUSH:\n case LocationActions.REPLACE:\n window.scrollTo(0, 0);\n break;\n case LocationActions.POP:\n if (position) {\n window.scrollTo(position.x, position.y);\n } else {\n window.scrollTo(0, 0);\n }\n break;\n }\n }\n\n};\n\nmodule.exports = ImitateBrowserBehavior;\n},{\"../actions/LocationActions\":19}],21:[function(require,module,exports){\n\"use strict\";\n\n/**\n * A scroll behavior that always scrolls to the top of the page\n * after a transition.\n */\nvar ScrollToTopBehavior = {\n\n updateScrollPosition: function updateScrollPosition() {\n window.scrollTo(0, 0);\n }\n\n};\n\nmodule.exports = ScrollToTopBehavior;\n},{}],22:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\nvar Configuration = require(\"../Configuration\");\nvar PropTypes = require(\"../PropTypes\");\n\n/**\n * A component is a special kind of that\n * renders when its parent matches but none of its siblings do.\n * Only one such route may be used at any given level in the\n * route hierarchy.\n */\nvar DefaultRoute = React.createClass({\n\n displayName: \"DefaultRoute\",\n\n mixins: [Configuration],\n\n propTypes: {\n name: PropTypes.string,\n path: PropTypes.falsy,\n children: PropTypes.falsy,\n handler: PropTypes.func.isRequired\n }\n\n});\n\nmodule.exports = DefaultRoute;\n},{\"../Configuration\":5,\"../PropTypes\":11,\"react\":190}],23:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\nvar classSet = require(\"react/lib/cx\");\nvar assign = require(\"react/lib/Object.assign\");\nvar Navigation = require(\"../Navigation\");\nvar State = require(\"../State\");\nvar PropTypes = require(\"../PropTypes\");\nvar Route = require(\"../Route\");\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n/**\n * components are used to create an element that links to a route.\n * When that route is active, the link gets an \"active\" class name (or the\n * value of its `activeClassName` prop).\n *\n * For example, assuming you have the following route:\n *\n * \n *\n * You could use the following component to link to that route:\n *\n * \n *\n * In addition to params, links may pass along query string parameters\n * using the `query` prop.\n *\n * \n */\nvar Link = React.createClass({\n\n displayName: \"Link\",\n\n mixins: [Navigation, State],\n\n propTypes: {\n activeClassName: PropTypes.string.isRequired,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Route)]),\n params: PropTypes.object,\n query: PropTypes.object,\n activeStyle: PropTypes.object,\n onClick: PropTypes.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n activeClassName: \"active\"\n };\n },\n\n handleClick: function handleClick(event) {\n var allowTransition = true;\n var clickResult;\n\n if (this.props.onClick) clickResult = this.props.onClick(event);\n\n if (isModifiedEvent(event) || !isLeftClickEvent(event)) {\n return;\n }if (clickResult === false || event.defaultPrevented === true) allowTransition = false;\n\n event.preventDefault();\n\n if (allowTransition) this.transitionTo(this.props.to, this.props.params, this.props.query);\n },\n\n /**\n * Returns the value of the \"href\" attribute to use on the DOM element.\n */\n getHref: function getHref() {\n return this.makeHref(this.props.to, this.props.params, this.props.query);\n },\n\n /**\n * Returns the value of the \"class\" attribute to use on the DOM element, which contains\n * the value of the activeClassName property when this is active.\n */\n getClassName: function getClassName() {\n var classNames = {};\n\n if (this.props.className) classNames[this.props.className] = true;\n\n if (this.getActiveState()) classNames[this.props.activeClassName] = true;\n\n return classSet(classNames);\n },\n\n getActiveState: function getActiveState() {\n return this.isActive(this.props.to, this.props.params, this.props.query);\n },\n\n render: function render() {\n var props = assign({}, this.props, {\n href: this.getHref(),\n className: this.getClassName(),\n onClick: this.handleClick\n });\n\n if (props.activeStyle && this.getActiveState()) props.style = props.activeStyle;\n\n return React.DOM.a(props, this.props.children);\n }\n\n});\n\nmodule.exports = Link;\n},{\"../Navigation\":8,\"../PropTypes\":11,\"../Route\":13,\"../State\":16,\"react\":190,\"react/lib/Object.assign\":69,\"react/lib/cx\":148}],24:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\nvar Configuration = require(\"../Configuration\");\nvar PropTypes = require(\"../PropTypes\");\n\n/**\n * A is a special kind of that\n * renders when the beginning of its parent's path matches\n * but none of its siblings do, including any .\n * Only one such route may be used at any given level in the\n * route hierarchy.\n */\nvar NotFoundRoute = React.createClass({\n\n displayName: \"NotFoundRoute\",\n\n mixins: [Configuration],\n\n propTypes: {\n name: PropTypes.string,\n path: PropTypes.falsy,\n children: PropTypes.falsy,\n handler: PropTypes.func.isRequired\n }\n\n});\n\nmodule.exports = NotFoundRoute;\n},{\"../Configuration\":5,\"../PropTypes\":11,\"react\":190}],25:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\nvar Configuration = require(\"../Configuration\");\nvar PropTypes = require(\"../PropTypes\");\n\n/**\n * A component is a special kind of that always\n * redirects to another route when it matches.\n */\nvar Redirect = React.createClass({\n\n displayName: \"Redirect\",\n\n mixins: [Configuration],\n\n propTypes: {\n path: PropTypes.string,\n from: PropTypes.string, // Alias for path.\n to: PropTypes.string,\n handler: PropTypes.falsy\n }\n\n});\n\nmodule.exports = Redirect;\n},{\"../Configuration\":5,\"../PropTypes\":11,\"react\":190}],26:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\nvar Configuration = require(\"../Configuration\");\nvar PropTypes = require(\"../PropTypes\");\nvar RouteHandler = require(\"./RouteHandler\");\n/**\n * components specify components that are rendered to the page when the\n * URL matches a given pattern.\n *\n * Routes are arranged in a nested tree structure. When a new URL is requested,\n * the tree is searched depth-first to find a route whose path matches the URL.\n * When one is found, all routes in the tree that lead to it are considered\n * \"active\" and their components are rendered into the DOM, nested in the same\n * order as they are in the tree.\n *\n * The preferred way to configure a router is using JSX. The XML-like syntax is\n * a great way to visualize how routes are laid out in an application.\n *\n * var routes = [\n * \n * \n * \n * \n * \n * ];\n * \n * Router.run(routes, function (Handler) {\n * React.render(, document.body);\n * });\n *\n * Handlers for Route components that contain children can render their active\n * child route using a element.\n *\n * var App = React.createClass({\n * render: function () {\n * return (\n *
    \n * \n *
    \n * );\n * }\n * });\n *\n * If no handler is provided for the route, it will render a matched child route.\n */\nvar Route = React.createClass({\n\n displayName: \"Route\",\n\n mixins: [Configuration],\n\n propTypes: {\n name: PropTypes.string,\n path: PropTypes.string,\n handler: PropTypes.func,\n ignoreScrollBehavior: PropTypes.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n handler: RouteHandler\n };\n }\n\n});\n\nmodule.exports = Route;\n},{\"../Configuration\":5,\"../PropTypes\":11,\"./RouteHandler\":27,\"react\":190}],27:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\nvar RouteHandlerMixin = require(\"../RouteHandlerMixin\");\n\n/**\n * A component renders the active child route handler\n * when routes are nested.\n */\nvar RouteHandler = React.createClass({\n\n displayName: \"RouteHandler\",\n\n mixins: [RouteHandlerMixin],\n\n render: function render() {\n return this.createChildRouteHandler();\n }\n\n});\n\nmodule.exports = RouteHandler;\n},{\"../RouteHandlerMixin\":14,\"react\":190}],28:[function(require,module,exports){\n(function (process){\n\"use strict\";\n\n/* jshint -W058 */\nvar React = require(\"react\");\nvar warning = require(\"react/lib/warning\");\nvar invariant = require(\"react/lib/invariant\");\nvar canUseDOM = require(\"react/lib/ExecutionEnvironment\").canUseDOM;\nvar LocationActions = require(\"./actions/LocationActions\");\nvar ImitateBrowserBehavior = require(\"./behaviors/ImitateBrowserBehavior\");\nvar HashLocation = require(\"./locations/HashLocation\");\nvar HistoryLocation = require(\"./locations/HistoryLocation\");\nvar RefreshLocation = require(\"./locations/RefreshLocation\");\nvar StaticLocation = require(\"./locations/StaticLocation\");\nvar NavigationContext = require(\"./NavigationContext\");\nvar ScrollHistory = require(\"./ScrollHistory\");\nvar StateContext = require(\"./StateContext\");\nvar createRoutesFromReactChildren = require(\"./createRoutesFromReactChildren\");\nvar isReactChildren = require(\"./isReactChildren\");\nvar Transition = require(\"./Transition\");\nvar PropTypes = require(\"./PropTypes\");\nvar Redirect = require(\"./Redirect\");\nvar History = require(\"./History\");\nvar Cancellation = require(\"./Cancellation\");\nvar Match = require(\"./Match\");\nvar Route = require(\"./Route\");\nvar supportsHistory = require(\"./supportsHistory\");\nvar PathUtils = require(\"./PathUtils\");\n\n/**\n * The default location for new routers.\n */\nvar DEFAULT_LOCATION = canUseDOM ? HashLocation : \"/\";\n\n/**\n * The default scroll behavior for new routers.\n */\nvar DEFAULT_SCROLL_BEHAVIOR = canUseDOM ? ImitateBrowserBehavior : null;\n\nfunction hasProperties(object, properties) {\n for (var propertyName in properties) if (properties.hasOwnProperty(propertyName) && object[propertyName] !== properties[propertyName]) {\n return false;\n }return true;\n}\n\nfunction hasMatch(routes, route, prevParams, nextParams, prevQuery, nextQuery) {\n return routes.some(function (r) {\n if (r !== route) return false;\n\n var paramNames = route.paramNames;\n var paramName;\n\n // Ensure that all params the route cares about did not change.\n for (var i = 0, len = paramNames.length; i < len; ++i) {\n paramName = paramNames[i];\n\n if (nextParams[paramName] !== prevParams[paramName]) return false;\n }\n\n // Ensure the query hasn't changed.\n return hasProperties(prevQuery, nextQuery) && hasProperties(nextQuery, prevQuery);\n });\n}\n\nfunction addRoutesToNamedRoutes(routes, namedRoutes) {\n var route;\n for (var i = 0, len = routes.length; i < len; ++i) {\n route = routes[i];\n\n if (route.name) {\n invariant(namedRoutes[route.name] == null, \"You may not have more than one route named \\\"%s\\\"\", route.name);\n\n namedRoutes[route.name] = route;\n }\n\n if (route.childRoutes) addRoutesToNamedRoutes(route.childRoutes, namedRoutes);\n }\n}\n\n/**\n * Creates and returns a new router using the given options. A router\n * is a ReactComponent class that knows how to react to changes in the\n * URL and keep the contents of the page in sync.\n *\n * Options may be any of the following:\n *\n * - routes (required) The route config\n * - location The location to use. Defaults to HashLocation when\n * the DOM is available, \"/\" otherwise\n * - scrollBehavior The scroll behavior to use. Defaults to ImitateBrowserBehavior\n * when the DOM is available, null otherwise\n * - onError A function that is used to handle errors\n * - onAbort A function that is used to handle aborted transitions\n *\n * When rendering in a server-side environment, the location should simply\n * be the URL path that was used in the request, including the query string.\n */\nfunction createRouter(options) {\n options = options || {};\n\n if (isReactChildren(options)) options = { routes: options };\n\n var mountedComponents = [];\n var location = options.location || DEFAULT_LOCATION;\n var scrollBehavior = options.scrollBehavior || DEFAULT_SCROLL_BEHAVIOR;\n var state = {};\n var nextState = {};\n var pendingTransition = null;\n var dispatchHandler = null;\n\n if (typeof location === \"string\") location = new StaticLocation(location);\n\n if (location instanceof StaticLocation) {\n warning(!canUseDOM || process.env.NODE_ENV === \"test\", \"You should not use a static location in a DOM environment because \" + \"the router will not be kept in sync with the current URL\");\n } else {\n invariant(canUseDOM || location.needsDOM === false, \"You cannot use %s without a DOM\", location);\n }\n\n // Automatically fall back to full page refreshes in\n // browsers that don't support the HTML history API.\n if (location === HistoryLocation && !supportsHistory()) location = RefreshLocation;\n\n var Router = React.createClass({\n\n displayName: \"Router\",\n\n statics: {\n\n isRunning: false,\n\n cancelPendingTransition: function cancelPendingTransition() {\n if (pendingTransition) {\n pendingTransition.cancel();\n pendingTransition = null;\n }\n },\n\n clearAllRoutes: function clearAllRoutes() {\n this.cancelPendingTransition();\n this.namedRoutes = {};\n this.routes = [];\n },\n\n /**\n * Adds routes to this router from the given children object (see ReactChildren).\n */\n addRoutes: function addRoutes(routes) {\n if (isReactChildren(routes)) routes = createRoutesFromReactChildren(routes);\n\n addRoutesToNamedRoutes(routes, this.namedRoutes);\n\n this.routes.push.apply(this.routes, routes);\n },\n\n /**\n * Replaces routes of this router from the given children object (see ReactChildren).\n */\n replaceRoutes: function replaceRoutes(routes) {\n this.clearAllRoutes();\n this.addRoutes(routes);\n this.refresh();\n },\n\n /**\n * Performs a match of the given path against this router and returns an object\n * with the { routes, params, pathname, query } that match. Returns null if no\n * match can be made.\n */\n match: function match(path) {\n return Match.findMatch(this.routes, path);\n },\n\n /**\n * Returns an absolute URL path created from the given route\n * name, URL parameters, and query.\n */\n makePath: function makePath(to, params, query) {\n var path;\n if (PathUtils.isAbsolute(to)) {\n path = to;\n } else {\n var route = to instanceof Route ? to : this.namedRoutes[to];\n\n invariant(route instanceof Route, \"Cannot find a route named \\\"%s\\\"\", to);\n\n path = route.path;\n }\n\n return PathUtils.withQuery(PathUtils.injectParams(path, params), query);\n },\n\n /**\n * Returns a string that may safely be used as the href of a link\n * to the route with the given name, URL parameters, and query.\n */\n makeHref: function makeHref(to, params, query) {\n var path = this.makePath(to, params, query);\n return location === HashLocation ? \"#\" + path : path;\n },\n\n /**\n * Transitions to the URL specified in the arguments by pushing\n * a new URL onto the history stack.\n */\n transitionTo: function transitionTo(to, params, query) {\n var path = this.makePath(to, params, query);\n\n if (pendingTransition) {\n // Replace so pending location does not stay in history.\n location.replace(path);\n } else {\n location.push(path);\n }\n },\n\n /**\n * Transitions to the URL specified in the arguments by replacing\n * the current URL in the history stack.\n */\n replaceWith: function replaceWith(to, params, query) {\n location.replace(this.makePath(to, params, query));\n },\n\n /**\n * Transitions to the previous URL if one is available. Returns true if the\n * router was able to go back, false otherwise.\n *\n * Note: The router only tracks history entries in your application, not the\n * current browser session, so you can safely call this function without guarding\n * against sending the user back to some other site. However, when using\n * RefreshLocation (which is the fallback for HistoryLocation in browsers that\n * don't support HTML5 history) this method will *always* send the client back\n * because we cannot reliably track history length.\n */\n goBack: function goBack() {\n if (History.length > 1 || location === RefreshLocation) {\n location.pop();\n return true;\n }\n\n warning(false, \"goBack() was ignored because there is no router history\");\n\n return false;\n },\n\n handleAbort: options.onAbort || function (abortReason) {\n if (location instanceof StaticLocation) throw new Error(\"Unhandled aborted transition! Reason: \" + abortReason);\n\n if (abortReason instanceof Cancellation) {\n return;\n } else if (abortReason instanceof Redirect) {\n location.replace(this.makePath(abortReason.to, abortReason.params, abortReason.query));\n } else {\n location.pop();\n }\n },\n\n handleError: options.onError || function (error) {\n // Throw so we don't silently swallow async errors.\n throw error; // This error probably originated in a transition hook.\n },\n\n handleLocationChange: function handleLocationChange(change) {\n this.dispatch(change.path, change.type);\n },\n\n /**\n * Performs a transition to the given path and calls callback(error, abortReason)\n * when the transition is finished. If both arguments are null the router's state\n * was updated. Otherwise the transition did not complete.\n *\n * In a transition, a router first determines which routes are involved by beginning\n * with the current route, up the route tree to the first parent route that is shared\n * with the destination route, and back down the tree to the destination route. The\n * willTransitionFrom hook is invoked on all route handlers we're transitioning away\n * from, in reverse nesting order. Likewise, the willTransitionTo hook is invoked on\n * all route handlers we're transitioning to.\n *\n * Both willTransitionFrom and willTransitionTo hooks may either abort or redirect the\n * transition. To resolve asynchronously, they may use the callback argument. If no\n * hooks wait, the transition is fully synchronous.\n */\n dispatch: function dispatch(path, action) {\n this.cancelPendingTransition();\n\n var prevPath = state.path;\n var isRefreshing = action == null;\n\n if (prevPath === path && !isRefreshing) {\n return;\n } // Nothing to do!\n\n // Record the scroll position as early as possible to\n // get it before browsers try update it automatically.\n if (prevPath && action === LocationActions.PUSH) this.recordScrollPosition(prevPath);\n\n var match = this.match(path);\n\n warning(match != null, \"No route matches path \\\"%s\\\". Make sure you have somewhere in your routes\", path, path);\n\n if (match == null) match = {};\n\n var prevRoutes = state.routes || [];\n var prevParams = state.params || {};\n var prevQuery = state.query || {};\n\n var nextRoutes = match.routes || [];\n var nextParams = match.params || {};\n var nextQuery = match.query || {};\n\n var fromRoutes, toRoutes;\n if (prevRoutes.length) {\n fromRoutes = prevRoutes.filter(function (route) {\n return !hasMatch(nextRoutes, route, prevParams, nextParams, prevQuery, nextQuery);\n });\n\n toRoutes = nextRoutes.filter(function (route) {\n return !hasMatch(prevRoutes, route, prevParams, nextParams, prevQuery, nextQuery);\n });\n } else {\n fromRoutes = [];\n toRoutes = nextRoutes;\n }\n\n var transition = new Transition(path, this.replaceWith.bind(this, path));\n pendingTransition = transition;\n\n var fromComponents = mountedComponents.slice(prevRoutes.length - fromRoutes.length);\n\n Transition.from(transition, fromRoutes, fromComponents, function (error) {\n if (error || transition.abortReason) return dispatchHandler.call(Router, error, transition); // No need to continue.\n\n Transition.to(transition, toRoutes, nextParams, nextQuery, function (error) {\n dispatchHandler.call(Router, error, transition, {\n path: path,\n action: action,\n pathname: match.pathname,\n routes: nextRoutes,\n params: nextParams,\n query: nextQuery\n });\n });\n });\n },\n\n /**\n * Starts this router and calls callback(router, state) when the route changes.\n *\n * If the router's location is static (i.e. a URL path in a server environment)\n * the callback is called only once. Otherwise, the location should be one of the\n * Router.*Location objects (e.g. Router.HashLocation or Router.HistoryLocation).\n */\n run: function run(callback) {\n invariant(!this.isRunning, \"Router is already running\");\n\n dispatchHandler = function (error, transition, newState) {\n if (error) Router.handleError(error);\n\n if (pendingTransition !== transition) return;\n\n pendingTransition = null;\n\n if (transition.abortReason) {\n Router.handleAbort(transition.abortReason);\n } else {\n callback.call(this, this, nextState = newState);\n }\n };\n\n if (!(location instanceof StaticLocation)) {\n if (location.addChangeListener) location.addChangeListener(Router.handleLocationChange);\n\n this.isRunning = true;\n }\n\n // Bootstrap using the current path.\n this.refresh();\n },\n\n refresh: function refresh() {\n Router.dispatch(location.getCurrentPath(), null);\n },\n\n stop: function stop() {\n this.cancelPendingTransition();\n\n if (location.removeChangeListener) location.removeChangeListener(Router.handleLocationChange);\n\n this.isRunning = false;\n },\n\n getScrollBehavior: function getScrollBehavior() {\n return scrollBehavior;\n }\n\n },\n\n mixins: [NavigationContext, StateContext, ScrollHistory],\n\n propTypes: {\n children: PropTypes.falsy\n },\n\n childContextTypes: {\n getRouteAtDepth: React.PropTypes.func.isRequired,\n setRouteComponentAtDepth: React.PropTypes.func.isRequired,\n routeHandlers: React.PropTypes.array.isRequired\n },\n\n getChildContext: function getChildContext() {\n return {\n getRouteAtDepth: this.getRouteAtDepth,\n setRouteComponentAtDepth: this.setRouteComponentAtDepth,\n routeHandlers: [this]\n };\n },\n\n getInitialState: function getInitialState() {\n return state = nextState;\n },\n\n componentWillReceiveProps: function componentWillReceiveProps() {\n this.setState(state = nextState);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n Router.stop();\n },\n\n getLocation: function getLocation() {\n return location;\n },\n\n getRouteAtDepth: function getRouteAtDepth(depth) {\n var routes = this.state.routes;\n return routes && routes[depth];\n },\n\n setRouteComponentAtDepth: function setRouteComponentAtDepth(depth, component) {\n mountedComponents[depth] = component;\n },\n\n render: function render() {\n var route = this.getRouteAtDepth(0);\n return route ? React.createElement(route.handler, this.props) : null;\n }\n\n });\n\n Router.clearAllRoutes();\n\n if (options.routes) Router.addRoutes(options.routes);\n\n return Router;\n}\n\nmodule.exports = createRouter;\n}).call(this,require('_process'))\n},{\"./Cancellation\":4,\"./History\":6,\"./Match\":7,\"./NavigationContext\":9,\"./PathUtils\":10,\"./PropTypes\":11,\"./Redirect\":12,\"./Route\":13,\"./ScrollHistory\":15,\"./StateContext\":17,\"./Transition\":18,\"./actions/LocationActions\":19,\"./behaviors/ImitateBrowserBehavior\":20,\"./createRoutesFromReactChildren\":29,\"./isReactChildren\":32,\"./locations/HashLocation\":33,\"./locations/HistoryLocation\":34,\"./locations/RefreshLocation\":35,\"./locations/StaticLocation\":36,\"./supportsHistory\":38,\"_process\":2,\"react\":190,\"react/lib/ExecutionEnvironment\":64,\"react/lib/invariant\":170,\"react/lib/warning\":189}],29:[function(require,module,exports){\n\"use strict\";\n\n/* jshint -W084 */\n\nvar React = require(\"react\");\nvar assign = require(\"react/lib/Object.assign\");\nvar warning = require(\"react/lib/warning\");\nvar DefaultRouteType = require(\"./components/DefaultRoute\").type;\nvar NotFoundRouteType = require(\"./components/NotFoundRoute\").type;\nvar RedirectType = require(\"./components/Redirect\").type;\nvar Route = require(\"./Route\");\n\nfunction checkPropTypes(componentName, propTypes, props) {\n componentName = componentName || \"UnknownComponent\";\n\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, componentName);\n\n if (error instanceof Error) warning(false, error.message);\n }\n }\n}\n\nfunction createRouteOptions(props) {\n var options = assign({}, props);\n var handler = options.handler;\n\n if (handler) {\n options.onEnter = handler.willTransitionTo;\n options.onLeave = handler.willTransitionFrom;\n }\n\n return options;\n}\n\nfunction createRouteFromReactElement(element) {\n if (!React.isValidElement(element)) {\n return;\n }var type = element.type;\n var props = element.props;\n\n if (type.propTypes) checkPropTypes(type.displayName, type.propTypes, props);\n\n if (type === DefaultRouteType) {\n return Route.createDefaultRoute(createRouteOptions(props));\n }if (type === NotFoundRouteType) {\n return Route.createNotFoundRoute(createRouteOptions(props));\n }if (type === RedirectType) {\n return Route.createRedirect(createRouteOptions(props));\n }return Route.createRoute(createRouteOptions(props), function () {\n if (props.children) createRoutesFromReactChildren(props.children);\n });\n}\n\n/**\n * Creates and returns an array of routes created from the given\n * ReactChildren, all of which should be one of , ,\n * , or , e.g.:\n *\n * var { createRoutesFromReactChildren, Route, Redirect } = require('react-router');\n *\n * var routes = createRoutesFromReactChildren(\n * \n * \n * \n * \n * \n * \n * );\n */\nfunction createRoutesFromReactChildren(children) {\n var routes = [];\n\n React.Children.forEach(children, function (child) {\n if (child = createRouteFromReactElement(child)) routes.push(child);\n });\n\n return routes;\n}\n\nmodule.exports = createRoutesFromReactChildren;\n},{\"./Route\":13,\"./components/DefaultRoute\":22,\"./components/NotFoundRoute\":24,\"./components/Redirect\":25,\"react\":190,\"react/lib/Object.assign\":69,\"react/lib/warning\":189}],30:[function(require,module,exports){\n\"use strict\";\n\nvar invariant = require(\"react/lib/invariant\");\nvar canUseDOM = require(\"react/lib/ExecutionEnvironment\").canUseDOM;\n\n/**\n * Returns the current scroll position of the window as { x, y }.\n */\nfunction getWindowScrollPosition() {\n invariant(canUseDOM, \"Cannot get current scroll position without a DOM\");\n\n return {\n x: window.pageXOffset || document.documentElement.scrollLeft,\n y: window.pageYOffset || document.documentElement.scrollTop\n };\n}\n\nmodule.exports = getWindowScrollPosition;\n},{\"react/lib/ExecutionEnvironment\":64,\"react/lib/invariant\":170}],31:[function(require,module,exports){\n\"use strict\";\n\nexports.DefaultRoute = require(\"./components/DefaultRoute\");\nexports.Link = require(\"./components/Link\");\nexports.NotFoundRoute = require(\"./components/NotFoundRoute\");\nexports.Redirect = require(\"./components/Redirect\");\nexports.Route = require(\"./components/Route\");\nexports.RouteHandler = require(\"./components/RouteHandler\");\n\nexports.HashLocation = require(\"./locations/HashLocation\");\nexports.HistoryLocation = require(\"./locations/HistoryLocation\");\nexports.RefreshLocation = require(\"./locations/RefreshLocation\");\nexports.StaticLocation = require(\"./locations/StaticLocation\");\n\nexports.ImitateBrowserBehavior = require(\"./behaviors/ImitateBrowserBehavior\");\nexports.ScrollToTopBehavior = require(\"./behaviors/ScrollToTopBehavior\");\n\nexports.History = require(\"./History\");\nexports.Navigation = require(\"./Navigation\");\nexports.RouteHandlerMixin = require(\"./RouteHandlerMixin\");\nexports.State = require(\"./State\");\n\nexports.createRoute = require(\"./Route\").createRoute;\nexports.createDefaultRoute = require(\"./Route\").createDefaultRoute;\nexports.createNotFoundRoute = require(\"./Route\").createNotFoundRoute;\nexports.createRedirect = require(\"./Route\").createRedirect;\nexports.createRoutesFromReactChildren = require(\"./createRoutesFromReactChildren\");\nexports.create = require(\"./createRouter\");\nexports.run = require(\"./runRouter\");\n},{\"./History\":6,\"./Navigation\":8,\"./Route\":13,\"./RouteHandlerMixin\":14,\"./State\":16,\"./behaviors/ImitateBrowserBehavior\":20,\"./behaviors/ScrollToTopBehavior\":21,\"./components/DefaultRoute\":22,\"./components/Link\":23,\"./components/NotFoundRoute\":24,\"./components/Redirect\":25,\"./components/Route\":26,\"./components/RouteHandler\":27,\"./createRouter\":28,\"./createRoutesFromReactChildren\":29,\"./locations/HashLocation\":33,\"./locations/HistoryLocation\":34,\"./locations/RefreshLocation\":35,\"./locations/StaticLocation\":36,\"./runRouter\":37}],32:[function(require,module,exports){\n\"use strict\";\n\nvar React = require(\"react\");\n\nfunction isValidChild(object) {\n return object == null || React.isValidElement(object);\n}\n\nfunction isReactChildren(object) {\n return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n}\n\nmodule.exports = isReactChildren;\n},{\"react\":190}],33:[function(require,module,exports){\n\"use strict\";\n\nvar LocationActions = require(\"../actions/LocationActions\");\nvar History = require(\"../History\");\n\n/**\n * Returns the current URL path from the `hash` portion of the URL, including\n * query string.\n */\nfunction getHashPath() {\n return decodeURI(\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n window.location.href.split(\"#\")[1] || \"\");\n}\n\nvar _actionType;\n\nfunction ensureSlash() {\n var path = getHashPath();\n\n if (path.charAt(0) === \"/\") {\n return true;\n }HashLocation.replace(\"/\" + path);\n\n return false;\n}\n\nvar _changeListeners = [];\n\nfunction notifyChange(type) {\n if (type === LocationActions.PUSH) History.length += 1;\n\n var change = {\n path: getHashPath(),\n type: type\n };\n\n _changeListeners.forEach(function (listener) {\n listener(change);\n });\n}\n\nvar _isListening = false;\n\nfunction onHashChange() {\n if (ensureSlash()) {\n // If we don't have an _actionType then all we know is the hash\n // changed. It was probably caused by the user clicking the Back\n // button, but may have also been the Forward button or manual\n // manipulation. So just guess 'pop'.\n notifyChange(_actionType || LocationActions.POP);\n _actionType = null;\n }\n}\n\n/**\n * A Location that uses `window.location.hash`.\n */\nvar HashLocation = {\n\n addChangeListener: function addChangeListener(listener) {\n _changeListeners.push(listener);\n\n // Do this BEFORE listening for hashchange.\n ensureSlash();\n\n if (!_isListening) {\n if (window.addEventListener) {\n window.addEventListener(\"hashchange\", onHashChange, false);\n } else {\n window.attachEvent(\"onhashchange\", onHashChange);\n }\n\n _isListening = true;\n }\n },\n\n removeChangeListener: function removeChangeListener(listener) {\n _changeListeners = _changeListeners.filter(function (l) {\n return l !== listener;\n });\n\n if (_changeListeners.length === 0) {\n if (window.removeEventListener) {\n window.removeEventListener(\"hashchange\", onHashChange, false);\n } else {\n window.removeEvent(\"onhashchange\", onHashChange);\n }\n\n _isListening = false;\n }\n },\n\n push: function push(path) {\n _actionType = LocationActions.PUSH;\n window.location.hash = path;\n },\n\n replace: function replace(path) {\n _actionType = LocationActions.REPLACE;\n window.location.replace(window.location.pathname + window.location.search + \"#\" + path);\n },\n\n pop: function pop() {\n _actionType = LocationActions.POP;\n History.back();\n },\n\n getCurrentPath: getHashPath,\n\n toString: function toString() {\n return \"\";\n }\n\n};\n\nmodule.exports = HashLocation;\n},{\"../History\":6,\"../actions/LocationActions\":19}],34:[function(require,module,exports){\n\"use strict\";\n\nvar LocationActions = require(\"../actions/LocationActions\");\nvar History = require(\"../History\");\n\n/**\n * Returns the current URL path from `window.location`, including query string.\n */\nfunction getWindowPath() {\n return decodeURI(window.location.pathname + window.location.search);\n}\n\nvar _changeListeners = [];\n\nfunction notifyChange(type) {\n var change = {\n path: getWindowPath(),\n type: type\n };\n\n _changeListeners.forEach(function (listener) {\n listener(change);\n });\n}\n\nvar _isListening = false;\n\nfunction onPopState(event) {\n if (event.state === undefined) {\n return;\n } // Ignore extraneous popstate events in WebKit.\n\n notifyChange(LocationActions.POP);\n}\n\n/**\n * A Location that uses HTML5 history.\n */\nvar HistoryLocation = {\n\n addChangeListener: function addChangeListener(listener) {\n _changeListeners.push(listener);\n\n if (!_isListening) {\n if (window.addEventListener) {\n window.addEventListener(\"popstate\", onPopState, false);\n } else {\n window.attachEvent(\"onpopstate\", onPopState);\n }\n\n _isListening = true;\n }\n },\n\n removeChangeListener: function removeChangeListener(listener) {\n _changeListeners = _changeListeners.filter(function (l) {\n return l !== listener;\n });\n\n if (_changeListeners.length === 0) {\n if (window.addEventListener) {\n window.removeEventListener(\"popstate\", onPopState, false);\n } else {\n window.removeEvent(\"onpopstate\", onPopState);\n }\n\n _isListening = false;\n }\n },\n\n push: function push(path) {\n window.history.pushState({ path: path }, \"\", path);\n History.length += 1;\n notifyChange(LocationActions.PUSH);\n },\n\n replace: function replace(path) {\n window.history.replaceState({ path: path }, \"\", path);\n notifyChange(LocationActions.REPLACE);\n },\n\n pop: History.back,\n\n getCurrentPath: getWindowPath,\n\n toString: function toString() {\n return \"\";\n }\n\n};\n\nmodule.exports = HistoryLocation;\n},{\"../History\":6,\"../actions/LocationActions\":19}],35:[function(require,module,exports){\n\"use strict\";\n\nvar HistoryLocation = require(\"./HistoryLocation\");\nvar History = require(\"../History\");\n\n/**\n * A Location that uses full page refreshes. This is used as\n * the fallback for HistoryLocation in browsers that do not\n * support the HTML5 history API.\n */\nvar RefreshLocation = {\n\n push: function push(path) {\n window.location = path;\n },\n\n replace: function replace(path) {\n window.location.replace(path);\n },\n\n pop: History.back,\n\n getCurrentPath: HistoryLocation.getCurrentPath,\n\n toString: function toString() {\n return \"\";\n }\n\n};\n\nmodule.exports = RefreshLocation;\n},{\"../History\":6,\"./HistoryLocation\":34}],36:[function(require,module,exports){\n\"use strict\";\n\nvar _prototypeProperties = function (child, staticProps, instanceProps) { if (staticProps) Object.defineProperties(child, staticProps); if (instanceProps) Object.defineProperties(child.prototype, instanceProps); };\n\nvar _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } };\n\nvar invariant = require(\"react/lib/invariant\");\n\nfunction throwCannotModify() {\n invariant(false, \"You cannot modify a static location\");\n}\n\n/**\n * A location that only ever contains a single path. Useful in\n * stateless environments like servers where there is no path history,\n * only the path that was used in the request.\n */\n\nvar StaticLocation = (function () {\n function StaticLocation(path) {\n _classCallCheck(this, StaticLocation);\n\n this.path = path;\n }\n\n _prototypeProperties(StaticLocation, null, {\n getCurrentPath: {\n value: function getCurrentPath() {\n return this.path;\n },\n writable: true,\n configurable: true\n },\n toString: {\n value: function toString() {\n return \"\";\n },\n writable: true,\n configurable: true\n }\n });\n\n return StaticLocation;\n})();\n\n// TODO: Include these in the above class definition\n// once we can use ES7 property initializers.\nStaticLocation.prototype.push = throwCannotModify;\nStaticLocation.prototype.replace = throwCannotModify;\nStaticLocation.prototype.pop = throwCannotModify;\n\nmodule.exports = StaticLocation;\n},{\"react/lib/invariant\":170}],37:[function(require,module,exports){\n\"use strict\";\n\nvar createRouter = require(\"./createRouter\");\n\n/**\n * A high-level convenience method that creates, configures, and\n * runs a router in one shot. The method signature is:\n *\n * Router.run(routes[, location ], callback);\n *\n * Using `window.location.hash` to manage the URL, you could do:\n *\n * Router.run(routes, function (Handler) {\n * React.render(, document.body);\n * });\n * \n * Using HTML5 history and a custom \"cursor\" prop:\n * \n * Router.run(routes, Router.HistoryLocation, function (Handler) {\n * React.render(, document.body);\n * });\n *\n * Returns the newly created router.\n *\n * Note: If you need to specify further options for your router such\n * as error/abort handling or custom scroll behavior, use Router.create\n * instead.\n *\n * var router = Router.create(options);\n * router.run(function (Handler) {\n * // ...\n * });\n */\nfunction runRouter(routes, location, callback) {\n if (typeof location === \"function\") {\n callback = location;\n location = null;\n }\n\n var router = createRouter({\n routes: routes,\n location: location\n });\n\n router.run(callback);\n\n return router;\n}\n\nmodule.exports = runRouter;\n},{\"./createRouter\":28}],38:[function(require,module,exports){\n\"use strict\";\n\nfunction supportsHistory() {\n /*! taken from modernizr\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n var ua = navigator.userAgent;\n if ((ua.indexOf(\"Android 2.\") !== -1 || ua.indexOf(\"Android 4.0\") !== -1) && ua.indexOf(\"Mobile Safari\") !== -1 && ua.indexOf(\"Chrome\") === -1 && ua.indexOf(\"Windows Phone\") === -1) {\n return false;\n }\n return window.history && \"pushState\" in window.history;\n}\n\nmodule.exports = supportsHistory;\n},{}],39:[function(require,module,exports){\nmodule.exports = require('./lib/');\n\n},{\"./lib/\":40}],40:[function(require,module,exports){\n// Load modules\n\nvar Stringify = require('./stringify');\nvar Parse = require('./parse');\n\n\n// Declare internals\n\nvar internals = {};\n\n\nmodule.exports = {\n stringify: Stringify,\n parse: Parse\n};\n\n},{\"./parse\":41,\"./stringify\":42}],41:[function(require,module,exports){\n// Load modules\n\nvar Utils = require('./utils');\n\n\n// Declare internals\n\nvar internals = {\n delimiter: '&',\n depth: 5,\n arrayLimit: 20,\n parameterLimit: 1000\n};\n\n\ninternals.parseValues = function (str, options) {\n\n var obj = {};\n var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);\n\n for (var i = 0, il = parts.length; i < il; ++i) {\n var part = parts[i];\n var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;\n\n if (pos === -1) {\n obj[Utils.decode(part)] = '';\n }\n else {\n var key = Utils.decode(part.slice(0, pos));\n var val = Utils.decode(part.slice(pos + 1));\n\n if (!obj.hasOwnProperty(key)) {\n obj[key] = val;\n }\n else {\n obj[key] = [].concat(obj[key]).concat(val);\n }\n }\n }\n\n return obj;\n};\n\n\ninternals.parseObject = function (chain, val, options) {\n\n if (!chain.length) {\n return val;\n }\n\n var root = chain.shift();\n\n var obj = {};\n if (root === '[]') {\n obj = [];\n obj = obj.concat(internals.parseObject(chain, val, options));\n }\n else {\n var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;\n var index = parseInt(cleanRoot, 10);\n var indexString = '' + index;\n if (!isNaN(index) &&\n root !== cleanRoot &&\n indexString === cleanRoot &&\n index >= 0 &&\n index <= options.arrayLimit) {\n\n obj = [];\n obj[index] = internals.parseObject(chain, val, options);\n }\n else {\n obj[cleanRoot] = internals.parseObject(chain, val, options);\n }\n }\n\n return obj;\n};\n\n\ninternals.parseKeys = function (key, val, options) {\n\n if (!key) {\n return;\n }\n\n // The regex chunks\n\n var parent = /^([^\\[\\]]*)/;\n var child = /(\\[[^\\[\\]]*\\])/g;\n\n // Get the parent\n\n var segment = parent.exec(key);\n\n // Don't allow them to overwrite object prototype properties\n\n if (Object.prototype.hasOwnProperty(segment[1])) {\n return;\n }\n\n // Stash the parent if it exists\n\n var keys = [];\n if (segment[1]) {\n keys.push(segment[1]);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n\n ++i;\n if (!Object.prototype.hasOwnProperty(segment[1].replace(/\\[|\\]/g, ''))) {\n keys.push(segment[1]);\n }\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return internals.parseObject(keys, val, options);\n};\n\n\nmodule.exports = function (str, options) {\n\n if (str === '' ||\n str === null ||\n typeof str === 'undefined') {\n\n return {};\n }\n\n options = options || {};\n options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : internals.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit;\n\n var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str;\n var obj = {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0, il = keys.length; i < il; ++i) {\n var key = keys[i];\n var newObj = internals.parseKeys(key, tempObj[key], options);\n obj = Utils.merge(obj, newObj);\n }\n\n return Utils.compact(obj);\n};\n\n},{\"./utils\":43}],42:[function(require,module,exports){\n// Load modules\n\nvar Utils = require('./utils');\n\n\n// Declare internals\n\nvar internals = {\n delimiter: '&',\n indices: true\n};\n\n\ninternals.stringify = function (obj, prefix, options) {\n\n if (Utils.isBuffer(obj)) {\n obj = obj.toString();\n }\n else if (obj instanceof Date) {\n obj = obj.toISOString();\n }\n else if (obj === null) {\n obj = '';\n }\n\n if (typeof obj === 'string' ||\n typeof obj === 'number' ||\n typeof obj === 'boolean') {\n\n return [encodeURIComponent(prefix) + '=' + encodeURIComponent(obj)];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys = Object.keys(obj);\n for (var i = 0, il = objKeys.length; i < il; ++i) {\n var key = objKeys[i];\n if (!options.indices &&\n Array.isArray(obj)) {\n\n values = values.concat(internals.stringify(obj[key], prefix, options));\n }\n else {\n values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', options));\n }\n }\n\n return values;\n};\n\n\nmodule.exports = function (obj, options) {\n\n options = options || {};\n var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;\n options.indices = typeof options.indices === 'boolean' ? options.indices : internals.indices;\n\n var keys = [];\n\n if (typeof obj !== 'object' ||\n obj === null) {\n\n return '';\n }\n\n var objKeys = Object.keys(obj);\n for (var i = 0, il = objKeys.length; i < il; ++i) {\n var key = objKeys[i];\n keys = keys.concat(internals.stringify(obj[key], key, options));\n }\n\n return keys.join(delimiter);\n};\n\n},{\"./utils\":43}],43:[function(require,module,exports){\n// Load modules\n\n\n// Declare internals\n\nvar internals = {};\n\n\nexports.arrayToObject = function (source) {\n\n var obj = {};\n for (var i = 0, il = source.length; i < il; ++i) {\n if (typeof source[i] !== 'undefined') {\n\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\n\nexports.merge = function (target, source) {\n\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n }\n else {\n target[source] = true;\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n target = [target].concat(source);\n return target;\n }\n\n if (Array.isArray(target) &&\n !Array.isArray(source)) {\n\n target = exports.arrayToObject(target);\n }\n\n var keys = Object.keys(source);\n for (var k = 0, kl = keys.length; k < kl; ++k) {\n var key = keys[k];\n var value = source[key];\n\n if (!target[key]) {\n target[key] = value;\n }\n else {\n target[key] = exports.merge(target[key], value);\n }\n }\n\n return target;\n};\n\n\nexports.decode = function (str) {\n\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\n\nexports.compact = function (obj, refs) {\n\n if (typeof obj !== 'object' ||\n obj === null) {\n\n return obj;\n }\n\n refs = refs || [];\n var lookup = refs.indexOf(obj);\n if (lookup !== -1) {\n return refs[lookup];\n }\n\n refs.push(obj);\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var i = 0, il = obj.length; i < il; ++i) {\n if (typeof obj[i] !== 'undefined') {\n compacted.push(obj[i]);\n }\n }\n\n return compacted;\n }\n\n var keys = Object.keys(obj);\n for (i = 0, il = keys.length; i < il; ++i) {\n var key = keys[i];\n obj[key] = exports.compact(obj[key], refs);\n }\n\n return obj;\n};\n\n\nexports.isRegExp = function (obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\n\nexports.isBuffer = function (obj) {\n\n if (obj === null ||\n typeof obj === 'undefined') {\n\n return false;\n }\n\n return !!(obj.constructor &&\n obj.constructor.isBuffer &&\n obj.constructor.isBuffer(obj));\n};\n\n},{}],44:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AutoFocusMixin\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar focusNode = require(\"./focusNode\");\n\nvar AutoFocusMixin = {\n componentDidMount: function() {\n if (this.props.autoFocus) {\n focusNode(this.getDOMNode());\n }\n }\n};\n\nmodule.exports = AutoFocusMixin;\n\n},{\"./focusNode\":155}],45:[function(require,module,exports){\n/**\n * Copyright 2013 Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BeforeInputEventPlugin\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar EventConstants = require(\"./EventConstants\");\nvar EventPropagators = require(\"./EventPropagators\");\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\nvar SyntheticInputEvent = require(\"./SyntheticInputEvent\");\n\nvar keyOf = require(\"./keyOf\");\n\nvar canUseTextInputEvent = (\n ExecutionEnvironment.canUseDOM &&\n 'TextEvent' in window &&\n !('documentMode' in document || isPresto())\n);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return (\n typeof opera === 'object' &&\n typeof opera.version === 'function' &&\n parseInt(opera.version(), 10) <= 12\n );\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: keyOf({onBeforeInput: null}),\n captured: keyOf({onBeforeInputCapture: null})\n },\n dependencies: [\n topLevelTypes.topCompositionEnd,\n topLevelTypes.topKeyPress,\n topLevelTypes.topTextInput,\n topLevelTypes.topPaste\n ]\n }\n};\n\n// Track characters inserted via keypress and composition events.\nvar fallbackChars = null;\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (\n (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey)\n );\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n var chars;\n\n if (canUseTextInputEvent) {\n switch (topLevelType) {\n case topLevelTypes.topKeyPress:\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return;\n }\n\n hasSpaceKeypress = true;\n chars = SPACEBAR_CHAR;\n break;\n\n case topLevelTypes.topTextInput:\n // Record the characters to be added to the DOM.\n chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return;\n }\n\n // Otherwise, carry on.\n break;\n\n default:\n // For other native event types, do nothing.\n return;\n }\n } else {\n switch (topLevelType) {\n case topLevelTypes.topPaste:\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n fallbackChars = null;\n break;\n case topLevelTypes.topKeyPress:\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n fallbackChars = String.fromCharCode(nativeEvent.which);\n }\n break;\n case topLevelTypes.topCompositionEnd:\n fallbackChars = nativeEvent.data;\n break;\n }\n\n // If no changes have occurred to the fallback string, no relevant\n // event has fired and we're done.\n if (fallbackChars === null) {\n return;\n }\n\n chars = fallbackChars;\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return;\n }\n\n var event = SyntheticInputEvent.getPooled(\n eventTypes.beforeInput,\n topLevelTargetID,\n nativeEvent\n );\n\n event.data = chars;\n fallbackChars = null;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n},{\"./EventConstants\":58,\"./EventPropagators\":63,\"./ExecutionEnvironment\":64,\"./SyntheticInputEvent\":132,\"./keyOf\":177}],46:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSProperty\n */\n\n\"use strict\";\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n strokeOpacity: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function(prop) {\n prefixes.forEach(function(prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundImage: true,\n backgroundPosition: true,\n backgroundRepeat: true,\n backgroundColor: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n},{}],47:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSPropertyOperations\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar CSSProperty = require(\"./CSSProperty\");\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\n\nvar camelizeStyleName = require(\"./camelizeStyleName\");\nvar dangerousStyleValue = require(\"./dangerousStyleValue\");\nvar hyphenateStyleName = require(\"./hyphenateStyleName\");\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\nvar warning = require(\"./warning\");\n\nvar processStyleName = memoizeStringOnly(function(styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (\"production\" !== \"production\") {\n var warnedStyleNames = {};\n\n var warnHyphenatedStyleName = function(name) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n (\"production\" !== \"production\" ? warning(\n false,\n 'Unsupported style property ' + name + '. Did you mean ' +\n camelizeStyleName(name) + '?'\n ) : null);\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @return {?string}\n */\n createMarkupForStyles: function(styles) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (\"production\" !== \"production\") {\n if (styleName.indexOf('-') > -1) {\n warnHyphenatedStyleName(styleName);\n }\n }\n var styleValue = styles[styleName];\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n setValueForStyles: function(node, styles) {\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (\"production\" !== \"production\") {\n if (styleName.indexOf('-') > -1) {\n warnHyphenatedStyleName(styleName);\n }\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName]);\n if (styleName === 'float') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n},{\"./CSSProperty\":46,\"./ExecutionEnvironment\":64,\"./camelizeStyleName\":143,\"./dangerousStyleValue\":149,\"./hyphenateStyleName\":168,\"./memoizeStringOnly\":179,\"./warning\":189}],48:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CallbackQueue\n */\n\n\"use strict\";\n\nvar PooledClass = require(\"./PooledClass\");\n\nvar assign = require(\"./Object.assign\");\nvar invariant = require(\"./invariant\");\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\nfunction CallbackQueue() {\n this._callbacks = null;\n this._contexts = null;\n}\n\nassign(CallbackQueue.prototype, {\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n enqueue: function(callback, context) {\n this._callbacks = this._callbacks || [];\n this._contexts = this._contexts || [];\n this._callbacks.push(callback);\n this._contexts.push(context);\n },\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n notifyAll: function() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n if (callbacks) {\n (\"production\" !== \"production\" ? invariant(\n callbacks.length === contexts.length,\n \"Mismatched list of contexts in callback queue\"\n ) : invariant(callbacks.length === contexts.length));\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0, l = callbacks.length; i < l; i++) {\n callbacks[i].call(contexts[i]);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n },\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n reset: function() {\n this._callbacks = null;\n this._contexts = null;\n },\n\n /**\n * `PooledClass` looks for this.\n */\n destructor: function() {\n this.reset();\n }\n\n});\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;\n\n},{\"./Object.assign\":69,\"./PooledClass\":70,\"./invariant\":170}],49:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ChangeEventPlugin\n */\n\n\"use strict\";\n\nvar EventConstants = require(\"./EventConstants\");\nvar EventPluginHub = require(\"./EventPluginHub\");\nvar EventPropagators = require(\"./EventPropagators\");\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\nvar ReactUpdates = require(\"./ReactUpdates\");\nvar SyntheticEvent = require(\"./SyntheticEvent\");\n\nvar isEventSupported = require(\"./isEventSupported\");\nvar isTextInputElement = require(\"./isTextInputElement\");\nvar keyOf = require(\"./keyOf\");\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: keyOf({onChange: null}),\n captured: keyOf({onChangeCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topChange,\n topLevelTypes.topClick,\n topLevelTypes.topFocus,\n topLevelTypes.topInput,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyUp,\n topLevelTypes.topSelectionChange\n ]\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementID = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n return (\n elem.nodeName === 'SELECT' ||\n (elem.nodeName === 'INPUT' && elem.type === 'file')\n );\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (\n !('documentMode' in document) || document.documentMode > 8\n );\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(\n eventTypes.change,\n activeElementID,\n nativeEvent\n );\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue();\n}\n\nfunction startWatchingForChangeEventIE8(target, targetID) {\n activeElement = target;\n activeElementID = targetID;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementID = null;\n}\n\nfunction getTargetIDForChangeEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topChange) {\n return topLevelTargetID;\n }\n}\nfunction handleEventsForChangeEventIE8(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topFocus) {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(topLevelTarget, topLevelTargetID);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForChangeEventIE8();\n }\n}\n\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events\n isInputEventSupported = isEventSupported('input') && (\n !('documentMode' in document) || document.documentMode > 9\n );\n}\n\n/**\n * (For old IE.) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function() {\n return activeElementValueProp.get.call(this);\n },\n set: function(val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For old IE.) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetID) {\n activeElement = target;\n activeElementID = targetID;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(\n target.constructor.prototype,\n 'value'\n );\n\n Object.defineProperty(activeElement, 'value', newValueProp);\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For old IE.) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementID = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For old IE.) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetIDForInputEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topInput) {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return topLevelTargetID;\n }\n}\n\n// For IE8 and IE9.\nfunction handleEventsForInputEventIE(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topFocus) {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(topLevelTarget, topLevelTargetID);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetIDForInputEventIE(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topSelectionChange ||\n topLevelType === topLevelTypes.topKeyUp ||\n topLevelType === topLevelTypes.topKeyDown) {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementID;\n }\n }\n}\n\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return (\n elem.nodeName === 'INPUT' &&\n (elem.type === 'checkbox' || elem.type === 'radio')\n );\n}\n\nfunction getTargetIDForClickEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topClick) {\n return topLevelTargetID;\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n var getTargetIDFunc, handleEventFunc;\n if (shouldUseChangeEvent(topLevelTarget)) {\n if (doesChangeEventBubble) {\n getTargetIDFunc = getTargetIDForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(topLevelTarget)) {\n if (isInputEventSupported) {\n getTargetIDFunc = getTargetIDForInputEvent;\n } else {\n getTargetIDFunc = getTargetIDForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(topLevelTarget)) {\n getTargetIDFunc = getTargetIDForClickEvent;\n }\n\n if (getTargetIDFunc) {\n var targetID = getTargetIDFunc(\n topLevelType,\n topLevelTarget,\n topLevelTargetID\n );\n if (targetID) {\n var event = SyntheticEvent.getPooled(\n eventTypes.change,\n targetID,\n nativeEvent\n );\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(\n topLevelType,\n topLevelTarget,\n topLevelTargetID\n );\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n},{\"./EventConstants\":58,\"./EventPluginHub\":60,\"./EventPropagators\":63,\"./ExecutionEnvironment\":64,\"./ReactUpdates\":122,\"./SyntheticEvent\":130,\"./isEventSupported\":171,\"./isTextInputElement\":173,\"./keyOf\":177}],50:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ClientReactRootIndex\n * @typechecks\n */\n\n\"use strict\";\n\nvar nextReactRootIndex = 0;\n\nvar ClientReactRootIndex = {\n createReactRootIndex: function() {\n return nextReactRootIndex++;\n }\n};\n\nmodule.exports = ClientReactRootIndex;\n\n},{}],51:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CompositionEventPlugin\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar EventConstants = require(\"./EventConstants\");\nvar EventPropagators = require(\"./EventPropagators\");\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\nvar ReactInputSelection = require(\"./ReactInputSelection\");\nvar SyntheticCompositionEvent = require(\"./SyntheticCompositionEvent\");\n\nvar getTextContentAccessor = require(\"./getTextContentAccessor\");\nvar keyOf = require(\"./keyOf\");\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar useCompositionEvent = (\n ExecutionEnvironment.canUseDOM &&\n 'CompositionEvent' in window\n);\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. In Korean, for example,\n// the compositionend event contains only one character regardless of\n// how many characters have been composed since compositionstart.\n// We therefore use the fallback data while still using the native\n// events as triggers.\nvar useFallbackData = (\n !useCompositionEvent ||\n (\n 'documentMode' in document &&\n document.documentMode > 8 &&\n document.documentMode <= 11\n )\n);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\nvar currentComposition = null;\n\n// Events and their corresponding property names.\nvar eventTypes = {\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionEnd: null}),\n captured: keyOf({onCompositionEndCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionEnd,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionStart: null}),\n captured: keyOf({onCompositionStartCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionStart,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionUpdate: null}),\n captured: keyOf({onCompositionUpdateCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionUpdate,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n }\n};\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case topLevelTypes.topCompositionStart:\n return eventTypes.compositionStart;\n case topLevelTypes.topCompositionEnd:\n return eventTypes.compositionEnd;\n case topLevelTypes.topCompositionUpdate:\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackStart(topLevelType, nativeEvent) {\n return (\n topLevelType === topLevelTypes.topKeyDown &&\n nativeEvent.keyCode === START_KEYCODE\n );\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case topLevelTypes.topKeyUp:\n // Command keys insert or clear IME input.\n return (END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1);\n case topLevelTypes.topKeyDown:\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return (nativeEvent.keyCode !== START_KEYCODE);\n case topLevelTypes.topKeyPress:\n case topLevelTypes.topMouseDown:\n case topLevelTypes.topBlur:\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Helper class stores information about selection and document state\n * so we can figure out what changed at a later date.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this.root = root;\n this.startSelection = ReactInputSelection.getSelection(root);\n this.startValue = this.getText();\n}\n\n/**\n * Get current text of input.\n *\n * @return {string}\n */\nFallbackCompositionState.prototype.getText = function() {\n return this.root.value || this.root[getTextContentAccessor()];\n};\n\n/**\n * Text that has changed since the start of composition.\n *\n * @return {string}\n */\nFallbackCompositionState.prototype.getData = function() {\n var endValue = this.getText();\n var prefixLength = this.startSelection.start;\n var suffixLength = this.startValue.length - this.startSelection.end;\n\n return endValue.substr(\n prefixLength,\n endValue.length - suffixLength - prefixLength\n );\n};\n\n/**\n * This plugin creates `onCompositionStart`, `onCompositionUpdate` and\n * `onCompositionEnd` events on inputs, textareas and contentEditable\n * nodes.\n */\nvar CompositionEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n var eventType;\n var data;\n\n if (useCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (useFallbackData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = new FallbackCompositionState(topLevelTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n data = currentComposition.getData();\n currentComposition = null;\n }\n }\n }\n\n if (eventType) {\n var event = SyntheticCompositionEvent.getPooled(\n eventType,\n topLevelTargetID,\n nativeEvent\n );\n if (data) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = data;\n }\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n};\n\nmodule.exports = CompositionEventPlugin;\n\n},{\"./EventConstants\":58,\"./EventPropagators\":63,\"./ExecutionEnvironment\":64,\"./ReactInputSelection\":102,\"./SyntheticCompositionEvent\":128,\"./getTextContentAccessor\":165,\"./keyOf\":177}],52:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMChildrenOperations\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar Danger = require(\"./Danger\");\nvar ReactMultiChildUpdateTypes = require(\"./ReactMultiChildUpdateTypes\");\n\nvar getTextContentAccessor = require(\"./getTextContentAccessor\");\nvar invariant = require(\"./invariant\");\n\n/**\n * The DOM property to use when setting text content.\n *\n * @type {string}\n * @private\n */\nvar textContentAccessor = getTextContentAccessor();\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nfunction insertChildAt(parentNode, childNode, index) {\n // By exploiting arrays returning `undefined` for an undefined index, we can\n // rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. However, using `undefined` is not allowed by all\n // browsers so we must replace it with `null`.\n parentNode.insertBefore(\n childNode,\n parentNode.childNodes[index] || null\n );\n}\n\nvar updateTextContent;\nif (textContentAccessor === 'textContent') {\n /**\n * Sets the text content of `node` to `text`.\n *\n * @param {DOMElement} node Node to change\n * @param {string} text New text content\n */\n updateTextContent = function(node, text) {\n node.textContent = text;\n };\n} else {\n /**\n * Sets the text content of `node` to `text`.\n *\n * @param {DOMElement} node Node to change\n * @param {string} text New text content\n */\n updateTextContent = function(node, text) {\n // In order to preserve newlines correctly, we can't use .innerText to set\n // the contents (see #1080), so we empty the element then append a text node\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n if (text) {\n var doc = node.ownerDocument || document;\n node.appendChild(doc.createTextNode(text));\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,\n\n updateTextContent: updateTextContent,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @param {array} markupList List of markup strings.\n * @internal\n */\n processUpdates: function(updates, markupList) {\n var update;\n // Mapping from parent IDs to initial child orderings.\n var initialChildren = null;\n // List of children that will be moved or removed.\n var updatedChildren = null;\n\n for (var i = 0; update = updates[i]; i++) {\n if (update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING ||\n update.type === ReactMultiChildUpdateTypes.REMOVE_NODE) {\n var updatedIndex = update.fromIndex;\n var updatedChild = update.parentNode.childNodes[updatedIndex];\n var parentID = update.parentID;\n\n (\"production\" !== \"production\" ? invariant(\n updatedChild,\n 'processUpdates(): Unable to find child %s of element. This ' +\n 'probably means the DOM was unexpectedly mutated (e.g., by the ' +\n 'browser), usually due to forgetting a when using tables, ' +\n 'nesting tags like
    ,

    , or , or using non-SVG elements '+\n 'in an parent. Try inspecting the child nodes of the element ' +\n 'with React ID `%s`.',\n updatedIndex,\n parentID\n ) : invariant(updatedChild));\n\n initialChildren = initialChildren || {};\n initialChildren[parentID] = initialChildren[parentID] || [];\n initialChildren[parentID][updatedIndex] = updatedChild;\n\n updatedChildren = updatedChildren || [];\n updatedChildren.push(updatedChild);\n }\n }\n\n var renderedMarkup = Danger.dangerouslyRenderMarkup(markupList);\n\n // Remove updated children first so that `toIndex` is consistent.\n if (updatedChildren) {\n for (var j = 0; j < updatedChildren.length; j++) {\n updatedChildren[j].parentNode.removeChild(updatedChildren[j]);\n }\n }\n\n for (var k = 0; update = updates[k]; k++) {\n switch (update.type) {\n case ReactMultiChildUpdateTypes.INSERT_MARKUP:\n insertChildAt(\n update.parentNode,\n renderedMarkup[update.markupIndex],\n update.toIndex\n );\n break;\n case ReactMultiChildUpdateTypes.MOVE_EXISTING:\n insertChildAt(\n update.parentNode,\n initialChildren[update.parentID][update.fromIndex],\n update.toIndex\n );\n break;\n case ReactMultiChildUpdateTypes.TEXT_CONTENT:\n updateTextContent(\n update.parentNode,\n update.textContent\n );\n break;\n case ReactMultiChildUpdateTypes.REMOVE_NODE:\n // Already removed by the for-loop above.\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n},{\"./Danger\":55,\"./ReactMultiChildUpdateTypes\":108,\"./getTextContentAccessor\":165,\"./invariant\":170}],53:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMProperty\n * @typechecks static-only\n */\n\n/*jslint bitwise: true */\n\n\"use strict\";\n\nvar invariant = require(\"./invariant\");\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_ATTRIBUTE: 0x1,\n MUST_USE_PROPERTY: 0x2,\n HAS_SIDE_EFFECTS: 0x4,\n HAS_BOOLEAN_VALUE: 0x8,\n HAS_NUMERIC_VALUE: 0x10,\n HAS_POSITIVE_NUMERIC_VALUE: 0x20 | 0x10,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x40,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function(domPropertyConfig) {\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(\n domPropertyConfig.isCustomAttribute\n );\n }\n\n for (var propName in Properties) {\n (\"production\" !== \"production\" ? invariant(\n !DOMProperty.isStandardName.hasOwnProperty(propName),\n 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' +\n '\\'%s\\' which has already been injected. You may be accidentally ' +\n 'injecting the same DOM property config twice, or you may be ' +\n 'injecting two configs that have conflicting property names.',\n propName\n ) : invariant(!DOMProperty.isStandardName.hasOwnProperty(propName)));\n\n DOMProperty.isStandardName[propName] = true;\n\n var lowerCased = propName.toLowerCase();\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n DOMProperty.getAttributeName[propName] = attributeName;\n } else {\n DOMProperty.getAttributeName[propName] = lowerCased;\n }\n\n DOMProperty.getPropertyName[propName] =\n DOMPropertyNames.hasOwnProperty(propName) ?\n DOMPropertyNames[propName] :\n propName;\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n DOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];\n } else {\n DOMProperty.getMutationMethod[propName] = null;\n }\n\n var propConfig = Properties[propName];\n DOMProperty.mustUseAttribute[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_ATTRIBUTE);\n DOMProperty.mustUseProperty[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_PROPERTY);\n DOMProperty.hasSideEffects[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_SIDE_EFFECTS);\n DOMProperty.hasBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_BOOLEAN_VALUE);\n DOMProperty.hasNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_NUMERIC_VALUE);\n DOMProperty.hasPositiveNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);\n DOMProperty.hasOverloadedBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);\n\n (\"production\" !== \"production\" ? invariant(\n !DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName],\n 'DOMProperty: Cannot require using both attribute and property: %s',\n propName\n ) : invariant(!DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName]));\n (\"production\" !== \"production\" ? invariant(\n DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName],\n 'DOMProperty: Properties that have side effects must use property: %s',\n propName\n ) : invariant(DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName]));\n (\"production\" !== \"production\" ? invariant(\n !!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,\n 'DOMProperty: Value can be one of boolean, overloaded boolean, or ' +\n 'numeric value, but not a combination: %s',\n propName\n ) : invariant(!!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1));\n }\n }\n};\nvar defaultValueCache = {};\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n\n /**\n * Checks whether a property name is a standard property.\n * @type {Object}\n */\n isStandardName: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties.\n * @type {Object}\n */\n getPossibleStandardName: {},\n\n /**\n * Mapping from normalized names to attribute names that differ. Attribute\n * names are used when rendering markup or with `*Attribute()`.\n * @type {Object}\n */\n getAttributeName: {},\n\n /**\n * Mapping from normalized names to properties on DOM node instances.\n * (This includes properties that mutate due to external factors.)\n * @type {Object}\n */\n getPropertyName: {},\n\n /**\n * Mapping from normalized names to mutation methods. This will only exist if\n * mutation cannot be set simply by the property or `setAttribute()`.\n * @type {Object}\n */\n getMutationMethod: {},\n\n /**\n * Whether the property must be accessed and mutated as an object property.\n * @type {Object}\n */\n mustUseAttribute: {},\n\n /**\n * Whether the property must be accessed and mutated using `*Attribute()`.\n * (This includes anything that fails ` in `.)\n * @type {Object}\n */\n mustUseProperty: {},\n\n /**\n * Whether or not setting a value causes side effects such as triggering\n * resources to be loaded or text selection changes. We must ensure that\n * the value is only set if it has changed.\n * @type {Object}\n */\n hasSideEffects: {},\n\n /**\n * Whether the property should be removed when set to a falsey value.\n * @type {Object}\n */\n hasBooleanValue: {},\n\n /**\n * Whether the property must be numeric or parse as a\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasNumericValue: {},\n\n /**\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasPositiveNumericValue: {},\n\n /**\n * Whether the property can be used as a flag as well as with a value. Removed\n * when strictly equal to false; present without a value when strictly equal\n * to true; present with a value otherwise.\n * @type {Object}\n */\n hasOverloadedBooleanValue: {},\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Returns the default property value for a DOM property (i.e., not an\n * attribute). Most default values are '' or false, but not all. Worse yet,\n * some (in particular, `type`) vary depending on the type of element.\n *\n * TODO: Is it better to grab all the possible properties when creating an\n * element to avoid having to create the same element twice?\n */\n getDefaultValueForProperty: function(nodeName, prop) {\n var nodeDefaults = defaultValueCache[nodeName];\n var testElement;\n if (!nodeDefaults) {\n defaultValueCache[nodeName] = nodeDefaults = {};\n }\n if (!(prop in nodeDefaults)) {\n testElement = document.createElement(nodeName);\n nodeDefaults[prop] = testElement[prop];\n }\n return nodeDefaults[prop];\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n},{\"./invariant\":170}],54:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMPropertyOperations\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar DOMProperty = require(\"./DOMProperty\");\n\nvar escapeTextForBrowser = require(\"./escapeTextForBrowser\");\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\nvar warning = require(\"./warning\");\n\nfunction shouldIgnoreValue(name, value) {\n return value == null ||\n (DOMProperty.hasBooleanValue[name] && !value) ||\n (DOMProperty.hasNumericValue[name] && isNaN(value)) ||\n (DOMProperty.hasPositiveNumericValue[name] && (value < 1)) ||\n (DOMProperty.hasOverloadedBooleanValue[name] && value === false);\n}\n\nvar processAttributeNameAndPrefix = memoizeStringOnly(function(name) {\n return escapeTextForBrowser(name) + '=\"';\n});\n\nif (\"production\" !== \"production\") {\n var reactProps = {\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true\n };\n var warnedProperties = {};\n\n var warnUnknownProperty = function(name) {\n if (reactProps.hasOwnProperty(name) && reactProps[name] ||\n warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {\n return;\n }\n\n warnedProperties[name] = true;\n var lowerCasedName = name.toLowerCase();\n\n // data-* attributes should be lowercase; suggest the lowercase version\n var standardName = (\n DOMProperty.isCustomAttribute(lowerCasedName) ?\n lowerCasedName :\n DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ?\n DOMProperty.getPossibleStandardName[lowerCasedName] :\n null\n );\n\n // For now, only warn when we have a suggested correction. This prevents\n // logging too much when using transferPropsTo.\n (\"production\" !== \"production\" ? warning(\n standardName == null,\n 'Unknown DOM property ' + name + '. Did you mean ' + standardName + '?'\n ) : null);\n\n };\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function(id) {\n return processAttributeNameAndPrefix(DOMProperty.ID_ATTRIBUTE_NAME) +\n escapeTextForBrowser(id) + '\"';\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function(name, value) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n if (shouldIgnoreValue(name, value)) {\n return '';\n }\n var attributeName = DOMProperty.getAttributeName[name];\n if (DOMProperty.hasBooleanValue[name] ||\n (DOMProperty.hasOverloadedBooleanValue[name] && value === true)) {\n return escapeTextForBrowser(attributeName);\n }\n return processAttributeNameAndPrefix(attributeName) +\n escapeTextForBrowser(value) + '\"';\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return processAttributeNameAndPrefix(name) +\n escapeTextForBrowser(value) + '\"';\n } else if (\"production\" !== \"production\") {\n warnUnknownProperty(name);\n }\n return null;\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function(node, name, value) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n var mutationMethod = DOMProperty.getMutationMethod[name];\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(name, value)) {\n this.deleteValueForProperty(node, name);\n } else if (DOMProperty.mustUseAttribute[name]) {\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n node.setAttribute(DOMProperty.getAttributeName[name], '' + value);\n } else {\n var propName = DOMProperty.getPropertyName[name];\n // Must explicitly cast values for HAS_SIDE_EFFECTS-properties to the\n // property type before comparing; only `value` does and is string.\n if (!DOMProperty.hasSideEffects[name] ||\n ('' + node[propName]) !== ('' + value)) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propName] = value;\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n } else if (\"production\" !== \"production\") {\n warnUnknownProperty(name);\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function(node, name) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n var mutationMethod = DOMProperty.getMutationMethod[name];\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (DOMProperty.mustUseAttribute[name]) {\n node.removeAttribute(DOMProperty.getAttributeName[name]);\n } else {\n var propName = DOMProperty.getPropertyName[name];\n var defaultValue = DOMProperty.getDefaultValueForProperty(\n node.nodeName,\n propName\n );\n if (!DOMProperty.hasSideEffects[name] ||\n ('' + node[propName]) !== defaultValue) {\n node[propName] = defaultValue;\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n } else if (\"production\" !== \"production\") {\n warnUnknownProperty(name);\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n},{\"./DOMProperty\":53,\"./escapeTextForBrowser\":153,\"./memoizeStringOnly\":179,\"./warning\":189}],55:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Danger\n * @typechecks static-only\n */\n\n/*jslint evil: true, sub: true */\n\n\"use strict\";\n\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\n\nvar createNodesFromMarkup = require(\"./createNodesFromMarkup\");\nvar emptyFunction = require(\"./emptyFunction\");\nvar getMarkupWrap = require(\"./getMarkupWrap\");\nvar invariant = require(\"./invariant\");\n\nvar OPEN_TAG_NAME_EXP = /^(<[^ \\/>]+)/;\nvar RESULT_INDEX_ATTR = 'data-danger-index';\n\n/**\n * Extracts the `nodeName` from a string of markup.\n *\n * NOTE: Extracting the `nodeName` does not require a regular expression match\n * because we make assumptions about React-generated markup (i.e. there are no\n * spaces surrounding the opening tag and there is at least one attribute).\n *\n * @param {string} markup String of markup.\n * @return {string} Node name of the supplied markup.\n * @see http://jsperf.com/extract-nodename\n */\nfunction getNodeName(markup) {\n return markup.substring(1, markup.indexOf(' '));\n}\n\nvar Danger = {\n\n /**\n * Renders markup into an array of nodes. The markup is expected to render\n * into a list of root nodes. Also, the length of `resultList` and\n * `markupList` should be the same.\n *\n * @param {array} markupList List of markup strings to render.\n * @return {array} List of rendered nodes.\n * @internal\n */\n dangerouslyRenderMarkup: function(markupList) {\n (\"production\" !== \"production\" ? invariant(\n ExecutionEnvironment.canUseDOM,\n 'dangerouslyRenderMarkup(...): Cannot render markup in a worker ' +\n 'thread. Make sure `window` and `document` are available globally ' +\n 'before requiring React when unit testing or use ' +\n 'React.renderToString for server rendering.'\n ) : invariant(ExecutionEnvironment.canUseDOM));\n var nodeName;\n var markupByNodeName = {};\n // Group markup by `nodeName` if a wrap is necessary, else by '*'.\n for (var i = 0; i < markupList.length; i++) {\n (\"production\" !== \"production\" ? invariant(\n markupList[i],\n 'dangerouslyRenderMarkup(...): Missing markup.'\n ) : invariant(markupList[i]));\n nodeName = getNodeName(markupList[i]);\n nodeName = getMarkupWrap(nodeName) ? nodeName : '*';\n markupByNodeName[nodeName] = markupByNodeName[nodeName] || [];\n markupByNodeName[nodeName][i] = markupList[i];\n }\n var resultList = [];\n var resultListAssignmentCount = 0;\n for (nodeName in markupByNodeName) {\n if (!markupByNodeName.hasOwnProperty(nodeName)) {\n continue;\n }\n var markupListByNodeName = markupByNodeName[nodeName];\n\n // This for-in loop skips the holes of the sparse array. The order of\n // iteration should follow the order of assignment, which happens to match\n // numerical index order, but we don't rely on that.\n for (var resultIndex in markupListByNodeName) {\n if (markupListByNodeName.hasOwnProperty(resultIndex)) {\n var markup = markupListByNodeName[resultIndex];\n\n // Push the requested markup with an additional RESULT_INDEX_ATTR\n // attribute. If the markup does not start with a < character, it\n // will be discarded below (with an appropriate console.error).\n markupListByNodeName[resultIndex] = markup.replace(\n OPEN_TAG_NAME_EXP,\n // This index will be parsed back out below.\n '$1 ' + RESULT_INDEX_ATTR + '=\"' + resultIndex + '\" '\n );\n }\n }\n\n // Render each group of markup with similar wrapping `nodeName`.\n var renderNodes = createNodesFromMarkup(\n markupListByNodeName.join(''),\n emptyFunction // Do nothing special with

    ;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactCompositeComponentInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will available on the prototype.\n *\n * @interface ReactCompositeComponentInterface\n * @internal\n */\nvar ReactCompositeComponentInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: SpecPolicy.DEFINE_MANY,\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: SpecPolicy.DEFINE_MANY,\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
    Hello, {name}!
    ;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: SpecPolicy.DEFINE_ONCE,\n\n\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: SpecPolicy.DEFINE_MANY,\n\n\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: SpecPolicy.OVERRIDE_BASE\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n validateTypeDef(\n Constructor,\n childContextTypes,\n ReactPropTypeLocations.childContext\n );\n Constructor.childContextTypes = assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n validateTypeDef(\n Constructor,\n contextTypes,\n ReactPropTypeLocations.context\n );\n Constructor.contextTypes = assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n validateTypeDef(\n Constructor,\n propTypes,\n ReactPropTypeLocations.prop\n );\n Constructor.propTypes = assign(\n {},\n Constructor.propTypes,\n propTypes\n );\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n }\n};\n\nfunction getDeclarationErrorAddendum(component) {\n var owner = component._owner || null;\n if (owner && owner.constructor && owner.constructor.displayName) {\n return ' Check the render method of `' + owner.constructor.displayName +\n '`.';\n }\n return '';\n}\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n (\"production\" !== \"production\" ? invariant(\n typeof typeDef[propName] == 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactCompositeComponent',\n ReactPropTypeLocationNames[location],\n propName\n ) : invariant(typeof typeDef[propName] == 'function'));\n }\n }\n}\n\nfunction validateMethodOverride(proto, name) {\n var specPolicy = ReactCompositeComponentInterface.hasOwnProperty(name) ?\n ReactCompositeComponentInterface[name] :\n null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactCompositeComponentMixin.hasOwnProperty(name)) {\n (\"production\" !== \"production\" ? invariant(\n specPolicy === SpecPolicy.OVERRIDE_BASE,\n 'ReactCompositeComponentInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n ) : invariant(specPolicy === SpecPolicy.OVERRIDE_BASE));\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (proto.hasOwnProperty(name)) {\n (\"production\" !== \"production\" ? invariant(\n specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n 'ReactCompositeComponentInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n ) : invariant(specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED));\n }\n}\n\nfunction validateLifeCycleOnReplaceState(instance) {\n var compositeLifeCycleState = instance._compositeLifeCycleState;\n (\"production\" !== \"production\" ? invariant(\n instance.isMounted() ||\n compositeLifeCycleState === CompositeLifeCycle.MOUNTING,\n 'replaceState(...): Can only update a mounted or mounting component.'\n ) : invariant(instance.isMounted() ||\n compositeLifeCycleState === CompositeLifeCycle.MOUNTING));\n (\"production\" !== \"production\" ? invariant(\n ReactCurrentOwner.current == null,\n 'replaceState(...): Cannot update during an existing state transition ' +\n '(such as within `render`). Render methods should be a pure function ' +\n 'of props and state.'\n ) : invariant(ReactCurrentOwner.current == null));\n (\"production\" !== \"production\" ? invariant(compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING,\n 'replaceState(...): Cannot update while unmounting component. This ' +\n 'usually means you called setState() on an unmounted component.'\n ) : invariant(compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING));\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building `ReactCompositeComponent` classses.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n return;\n }\n\n (\"production\" !== \"production\" ? invariant(\n !ReactLegacyElement.isValidFactory(spec),\n 'ReactCompositeComponent: You\\'re attempting to ' +\n 'use a component class as a mixin. Instead, just use a regular object.'\n ) : invariant(!ReactLegacyElement.isValidFactory(spec)));\n (\"production\" !== \"production\" ? invariant(\n !ReactElement.isValidElement(spec),\n 'ReactCompositeComponent: You\\'re attempting to ' +\n 'use a component as a mixin. Instead, just use a regular object.'\n ) : invariant(!ReactElement.isValidElement(spec)));\n\n var proto = Constructor.prototype;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above\n continue;\n }\n\n var property = spec[name];\n validateMethodOverride(proto, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactCompositeComponent methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isCompositeComponentMethod =\n ReactCompositeComponentInterface.hasOwnProperty(name);\n var isAlreadyDefined = proto.hasOwnProperty(name);\n var markedDontBind = property && property.__reactDontBind;\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isCompositeComponentMethod &&\n !isAlreadyDefined &&\n !markedDontBind;\n\n if (shouldAutoBind) {\n if (!proto.__reactAutoBindMap) {\n proto.__reactAutoBindMap = {};\n }\n proto.__reactAutoBindMap[name] = property;\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactCompositeComponentInterface[name];\n\n // These cases should already be caught by validateMethodOverride\n (\"production\" !== \"production\" ? invariant(\n isCompositeComponentMethod && (\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED ||\n specPolicy === SpecPolicy.DEFINE_MANY\n ),\n 'ReactCompositeComponent: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n ) : invariant(isCompositeComponentMethod && (\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED ||\n specPolicy === SpecPolicy.DEFINE_MANY\n )));\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === SpecPolicy.DEFINE_MANY) {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (\"production\" !== \"production\") {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n (\"production\" !== \"production\" ? invariant(\n !isReserved,\n 'ReactCompositeComponent: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n ) : invariant(!isReserved));\n\n var isInherited = name in Constructor;\n (\"production\" !== \"production\" ? invariant(\n !isInherited,\n 'ReactCompositeComponent: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n ) : invariant(!isInherited));\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeObjectsWithNoDuplicateKeys(one, two) {\n (\"production\" !== \"production\" ? invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeObjectsWithNoDuplicateKeys(): Cannot merge non-objects'\n ) : invariant(one && two && typeof one === 'object' && typeof two === 'object'));\n\n mapObject(two, function(value, key) {\n (\"production\" !== \"production\" ? invariant(\n one[key] === undefined,\n 'mergeObjectsWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n ) : invariant(one[key] === undefined));\n one[key] = value;\n });\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n return mergeObjectsWithNoDuplicateKeys(a, b);\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * `ReactCompositeComponent` maintains an auxiliary life cycle state in\n * `this._compositeLifeCycleState` (which can be null).\n *\n * This is different from the life cycle state maintained by `ReactComponent` in\n * `this._lifeCycleState`. The following diagram shows how the states overlap in\n * time. There are times when the CompositeLifeCycle is null - at those times it\n * is only meaningful to look at ComponentLifeCycle alone.\n *\n * Top Row: ReactComponent.ComponentLifeCycle\n * Low Row: ReactComponent.CompositeLifeCycle\n *\n * +-------+---------------------------------+--------+\n * | UN | MOUNTED | UN |\n * |MOUNTED| | MOUNTED|\n * +-------+---------------------------------+--------+\n * | ^--------+ +-------+ +--------^ |\n * | | | | | | | |\n * | 0--|MOUNTING|-0-|RECEIVE|-0-| UN |--->0 |\n * | | | |PROPS | |MOUNTING| |\n * | | | | | | | |\n * | | | | | | | |\n * | +--------+ +-------+ +--------+ |\n * | | | |\n * +-------+---------------------------------+--------+\n */\nvar CompositeLifeCycle = keyMirror({\n /**\n * Components in the process of being mounted respond to state changes\n * differently.\n */\n MOUNTING: null,\n /**\n * Components in the process of being unmounted are guarded against state\n * changes.\n */\n UNMOUNTING: null,\n /**\n * Components that are mounted and receiving new props respond to state\n * changes differently.\n */\n RECEIVING_PROPS: null\n});\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponentMixin = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function(element) {\n // Children can be either an array or more than one argument\n ReactComponent.Mixin.construct.apply(this, arguments);\n ReactOwner.Mixin.construct.apply(this, arguments);\n\n this.state = null;\n this._pendingState = null;\n\n // This is the public post-processed context. The real context and pending\n // context lives on the element.\n this.context = null;\n\n this._compositeLifeCycleState = null;\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n return ReactComponent.Mixin.isMounted.call(this) &&\n this._compositeLifeCycleState !== CompositeLifeCycle.MOUNTING;\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {number} mountDepth number of components in the owner hierarchy\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: ReactPerf.measure(\n 'ReactCompositeComponent',\n 'mountComponent',\n function(rootID, transaction, mountDepth) {\n ReactComponent.Mixin.mountComponent.call(\n this,\n rootID,\n transaction,\n mountDepth\n );\n this._compositeLifeCycleState = CompositeLifeCycle.MOUNTING;\n\n if (this.__reactAutoBindMap) {\n this._bindAutoBindMethods();\n }\n\n this.context = this._processContext(this._currentElement._context);\n this.props = this._processProps(this.props);\n\n this.state = this.getInitialState ? this.getInitialState() : null;\n (\"production\" !== \"production\" ? invariant(\n typeof this.state === 'object' && !Array.isArray(this.state),\n '%s.getInitialState(): must return an object or null',\n this.constructor.displayName || 'ReactCompositeComponent'\n ) : invariant(typeof this.state === 'object' && !Array.isArray(this.state)));\n\n this._pendingState = null;\n this._pendingForceUpdate = false;\n\n if (this.componentWillMount) {\n this.componentWillMount();\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingState` without triggering a re-render.\n if (this._pendingState) {\n this.state = this._pendingState;\n this._pendingState = null;\n }\n }\n\n this._renderedComponent = instantiateReactComponent(\n this._renderValidatedComponent(),\n this._currentElement.type // The wrapping type\n );\n\n // Done with mounting, `setState` will now trigger UI changes.\n this._compositeLifeCycleState = null;\n var markup = this._renderedComponent.mountComponent(\n rootID,\n transaction,\n mountDepth + 1\n );\n if (this.componentDidMount) {\n transaction.getReactMountReady().enqueue(this.componentDidMount, this);\n }\n return markup;\n }\n ),\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function() {\n this._compositeLifeCycleState = CompositeLifeCycle.UNMOUNTING;\n if (this.componentWillUnmount) {\n this.componentWillUnmount();\n }\n this._compositeLifeCycleState = null;\n\n this._renderedComponent.unmountComponent();\n this._renderedComponent = null;\n\n ReactComponent.Mixin.unmountComponent.call(this);\n\n // Some existing components rely on this.props even after they've been\n // destroyed (in event handlers).\n // TODO: this.props = null;\n // TODO: this.state = null;\n },\n\n /**\n * Sets a subset of the state. Always use this or `replaceState` to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n setState: function(partialState, callback) {\n (\"production\" !== \"production\" ? invariant(\n typeof partialState === 'object' || partialState == null,\n 'setState(...): takes an object of state variables to update.'\n ) : invariant(typeof partialState === 'object' || partialState == null));\n if (\"production\" !== \"production\"){\n (\"production\" !== \"production\" ? warning(\n partialState != null,\n 'setState(...): You passed an undefined or null state object; ' +\n 'instead, use forceUpdate().'\n ) : null);\n }\n // Merge with `_pendingState` if it exists, otherwise with existing state.\n this.replaceState(\n assign({}, this._pendingState || this.state, partialState),\n callback\n );\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {object} completeState Next state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n replaceState: function(completeState, callback) {\n validateLifeCycleOnReplaceState(this);\n this._pendingState = completeState;\n if (this._compositeLifeCycleState !== CompositeLifeCycle.MOUNTING) {\n // If we're in a componentWillMount handler, don't enqueue a rerender\n // because ReactUpdates assumes we're in a browser context (which is wrong\n // for server rendering) and we're about to do a render anyway.\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState.\n ReactUpdates.enqueueUpdate(this, callback);\n }\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function(context) {\n var maskedContext = null;\n var contextTypes = this.constructor.contextTypes;\n if (contextTypes) {\n maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n if (\"production\" !== \"production\") {\n this._checkPropTypes(\n contextTypes,\n maskedContext,\n ReactPropTypeLocations.context\n );\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function(currentContext) {\n var childContext = this.getChildContext && this.getChildContext();\n var displayName = this.constructor.displayName || 'ReactCompositeComponent';\n if (childContext) {\n (\"production\" !== \"production\" ? invariant(\n typeof this.constructor.childContextTypes === 'object',\n '%s.getChildContext(): childContextTypes must be defined in order to ' +\n 'use getChildContext().',\n displayName\n ) : invariant(typeof this.constructor.childContextTypes === 'object'));\n if (\"production\" !== \"production\") {\n this._checkPropTypes(\n this.constructor.childContextTypes,\n childContext,\n ReactPropTypeLocations.childContext\n );\n }\n for (var name in childContext) {\n (\"production\" !== \"production\" ? invariant(\n name in this.constructor.childContextTypes,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n displayName,\n name\n ) : invariant(name in this.constructor.childContextTypes));\n }\n return assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Processes props by setting default values for unspecified props and\n * asserting that the props are valid. Does not mutate its argument; returns\n * a new props object with defaults merged in.\n *\n * @param {object} newProps\n * @return {object}\n * @private\n */\n _processProps: function(newProps) {\n if (\"production\" !== \"production\") {\n var propTypes = this.constructor.propTypes;\n if (propTypes) {\n this._checkPropTypes(propTypes, newProps, ReactPropTypeLocations.prop);\n }\n }\n return newProps;\n },\n\n /**\n * Assert that the props are valid\n *\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkPropTypes: function(propTypes, props, location) {\n // TODO: Stop validating prop types here and only use the element\n // validation.\n var componentName = this.constructor.displayName;\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error =\n propTypes[propName](props, propName, componentName, location);\n if (error instanceof Error) {\n // We may want to extend this logic for similar errors in\n // renderComponent calls, so I'm abstracting it away into\n // a function to minimize refactoring in the future\n var addendum = getDeclarationErrorAddendum(this);\n (\"production\" !== \"production\" ? warning(false, error.message + addendum) : null);\n }\n }\n }\n },\n\n /**\n * If any of `_pendingElement`, `_pendingState`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(transaction) {\n var compositeLifeCycleState = this._compositeLifeCycleState;\n // Do not trigger a state transition if we are in the middle of mounting or\n // receiving props because both of those will already be doing this.\n if (compositeLifeCycleState === CompositeLifeCycle.MOUNTING ||\n compositeLifeCycleState === CompositeLifeCycle.RECEIVING_PROPS) {\n return;\n }\n\n if (this._pendingElement == null &&\n this._pendingState == null &&\n !this._pendingForceUpdate) {\n return;\n }\n\n var nextContext = this.context;\n var nextProps = this.props;\n var nextElement = this._currentElement;\n if (this._pendingElement != null) {\n nextElement = this._pendingElement;\n nextContext = this._processContext(nextElement._context);\n nextProps = this._processProps(nextElement.props);\n this._pendingElement = null;\n\n this._compositeLifeCycleState = CompositeLifeCycle.RECEIVING_PROPS;\n if (this.componentWillReceiveProps) {\n this.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n this._compositeLifeCycleState = null;\n\n var nextState = this._pendingState || this.state;\n this._pendingState = null;\n\n var shouldUpdate =\n this._pendingForceUpdate ||\n !this.shouldComponentUpdate ||\n this.shouldComponentUpdate(nextProps, nextState, nextContext);\n\n if (\"production\" !== \"production\") {\n if (typeof shouldUpdate === \"undefined\") {\n console.warn(\n (this.constructor.displayName || 'ReactCompositeComponent') +\n '.shouldComponentUpdate(): Returned undefined instead of a ' +\n 'boolean value. Make sure to return true or false.'\n );\n }\n }\n\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(\n nextElement,\n nextProps,\n nextState,\n nextContext,\n transaction\n );\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state.\n this._currentElement = nextElement;\n this.props = nextProps;\n this.state = nextState;\n this.context = nextContext;\n\n // Owner cannot change because shouldUpdateReactComponent doesn't allow\n // it. TODO: Remove this._owner completely.\n this._owner = nextElement._owner;\n }\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _performComponentUpdate: function(\n nextElement,\n nextProps,\n nextState,\n nextContext,\n transaction\n ) {\n var prevElement = this._currentElement;\n var prevProps = this.props;\n var prevState = this.state;\n var prevContext = this.context;\n\n if (this.componentWillUpdate) {\n this.componentWillUpdate(nextProps, nextState, nextContext);\n }\n\n this._currentElement = nextElement;\n this.props = nextProps;\n this.state = nextState;\n this.context = nextContext;\n\n // Owner cannot change because shouldUpdateReactComponent doesn't allow\n // it. TODO: Remove this._owner completely.\n this._owner = nextElement._owner;\n\n this.updateComponent(\n transaction,\n prevElement\n );\n\n if (this.componentDidUpdate) {\n transaction.getReactMountReady().enqueue(\n this.componentDidUpdate.bind(this, prevProps, prevState, prevContext),\n this\n );\n }\n },\n\n receiveComponent: function(nextElement, transaction) {\n if (nextElement === this._currentElement &&\n nextElement._owner != null) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for a element created outside a composite to be\n // deeply mutated and reused.\n return;\n }\n\n ReactComponent.Mixin.receiveComponent.call(\n this,\n nextElement,\n transaction\n );\n },\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @internal\n * @overridable\n */\n updateComponent: ReactPerf.measure(\n 'ReactCompositeComponent',\n 'updateComponent',\n function(transaction, prevParentElement) {\n ReactComponent.Mixin.updateComponent.call(\n this,\n transaction,\n prevParentElement\n );\n\n var prevComponentInstance = this._renderedComponent;\n var prevElement = prevComponentInstance._currentElement;\n var nextElement = this._renderValidatedComponent();\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n prevComponentInstance.receiveComponent(nextElement, transaction);\n } else {\n // These two IDs are actually the same! But nothing should rely on that.\n var thisID = this._rootNodeID;\n var prevComponentID = prevComponentInstance._rootNodeID;\n prevComponentInstance.unmountComponent();\n this._renderedComponent = instantiateReactComponent(\n nextElement,\n this._currentElement.type\n );\n var nextMarkup = this._renderedComponent.mountComponent(\n thisID,\n transaction,\n this._mountDepth + 1\n );\n ReactComponent.BackendIDOperations.dangerouslyReplaceNodeWithMarkupByID(\n prevComponentID,\n nextMarkup\n );\n }\n }\n ),\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldUpdateComponent`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n forceUpdate: function(callback) {\n var compositeLifeCycleState = this._compositeLifeCycleState;\n (\"production\" !== \"production\" ? invariant(\n this.isMounted() ||\n compositeLifeCycleState === CompositeLifeCycle.MOUNTING,\n 'forceUpdate(...): Can only force an update on mounted or mounting ' +\n 'components.'\n ) : invariant(this.isMounted() ||\n compositeLifeCycleState === CompositeLifeCycle.MOUNTING));\n (\"production\" !== \"production\" ? invariant(\n compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING &&\n ReactCurrentOwner.current == null,\n 'forceUpdate(...): Cannot force an update while unmounting component ' +\n 'or within a `render` function.'\n ) : invariant(compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING &&\n ReactCurrentOwner.current == null));\n this._pendingForceUpdate = true;\n ReactUpdates.enqueueUpdate(this, callback);\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: ReactPerf.measure(\n 'ReactCompositeComponent',\n '_renderValidatedComponent',\n function() {\n var renderedComponent;\n var previousContext = ReactContext.current;\n ReactContext.current = this._processChildContext(\n this._currentElement._context\n );\n ReactCurrentOwner.current = this;\n try {\n renderedComponent = this.render();\n if (renderedComponent === null || renderedComponent === false) {\n renderedComponent = ReactEmptyComponent.getEmptyComponent();\n ReactEmptyComponent.registerNullComponentID(this._rootNodeID);\n } else {\n ReactEmptyComponent.deregisterNullComponentID(this._rootNodeID);\n }\n } finally {\n ReactContext.current = previousContext;\n ReactCurrentOwner.current = null;\n }\n (\"production\" !== \"production\" ? invariant(\n ReactElement.isValidElement(renderedComponent),\n '%s.render(): A valid ReactComponent must be returned. You may have ' +\n 'returned undefined, an array or some other invalid object.',\n this.constructor.displayName || 'ReactCompositeComponent'\n ) : invariant(ReactElement.isValidElement(renderedComponent)));\n return renderedComponent;\n }\n ),\n\n /**\n * @private\n */\n _bindAutoBindMethods: function() {\n for (var autoBindKey in this.__reactAutoBindMap) {\n if (!this.__reactAutoBindMap.hasOwnProperty(autoBindKey)) {\n continue;\n }\n var method = this.__reactAutoBindMap[autoBindKey];\n this[autoBindKey] = this._bindAutoBindMethod(ReactErrorUtils.guard(\n method,\n this.constructor.displayName + '.' + autoBindKey\n ));\n }\n },\n\n /**\n * Binds a method to the component.\n *\n * @param {function} method Method to be bound.\n * @private\n */\n _bindAutoBindMethod: function(method) {\n var component = this;\n var boundMethod = method.bind(component);\n if (\"production\" !== \"production\") {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis ) {for (var args=[],$__0=1,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n monitorCodeUse('react_bind_warning', { component: componentName });\n console.warn(\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See ' + componentName\n );\n } else if (!args.length) {\n monitorCodeUse('react_bind_warning', { component: componentName });\n console.warn(\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See ' + componentName\n );\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n};\n\nvar ReactCompositeComponentBase = function() {};\nassign(\n ReactCompositeComponentBase.prototype,\n ReactComponent.Mixin,\n ReactOwner.Mixin,\n ReactPropTransferer.Mixin,\n ReactCompositeComponentMixin\n);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactCompositeComponent\n * @extends ReactComponent\n * @extends ReactOwner\n * @extends ReactPropTransferer\n */\nvar ReactCompositeComponent = {\n\n LifeCycle: CompositeLifeCycle,\n\n Base: ReactCompositeComponentBase,\n\n /**\n * Creates a composite component class given a class specification.\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function(spec) {\n var Constructor = function(props) {\n // This constructor is overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted. This will later be used\n // by the stand-alone class implementation.\n };\n Constructor.prototype = new ReactCompositeComponentBase();\n Constructor.prototype.constructor = Constructor;\n\n injectedMixins.forEach(\n mixSpecIntoComponent.bind(null, Constructor)\n );\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n (\"production\" !== \"production\" ? invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n ) : invariant(Constructor.prototype.render));\n\n if (\"production\" !== \"production\") {\n if (Constructor.prototype.componentShouldUpdate) {\n monitorCodeUse(\n 'react_component_should_update_warning',\n { component: spec.displayName }\n );\n console.warn(\n (spec.displayName || 'A component') + ' has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.'\n );\n }\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactCompositeComponentInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n if (\"production\" !== \"production\") {\n return ReactLegacyElement.wrapFactory(\n ReactElementValidator.createFactory(Constructor)\n );\n }\n return ReactLegacyElement.wrapFactory(\n ReactElement.createFactory(Constructor)\n );\n },\n\n injection: {\n injectMixin: function(mixin) {\n injectedMixins.push(mixin);\n }\n }\n};\n\nmodule.exports = ReactCompositeComponent;\n\n},{\"./Object.assign\":69,\"./ReactComponent\":75,\"./ReactContext\":78,\"./ReactCurrentOwner\":79,\"./ReactElement\":95,\"./ReactElementValidator\":96,\"./ReactEmptyComponent\":97,\"./ReactErrorUtils\":98,\"./ReactLegacyElement\":104,\"./ReactOwner\":110,\"./ReactPerf\":111,\"./ReactPropTransferer\":112,\"./ReactPropTypeLocationNames\":113,\"./ReactPropTypeLocations\":114,\"./ReactUpdates\":122,\"./instantiateReactComponent\":169,\"./invariant\":170,\"./keyMirror\":176,\"./keyOf\":177,\"./mapObject\":178,\"./monitorCodeUse\":180,\"./shouldUpdateReactComponent\":186,\"./warning\":189}],78:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n\"use strict\";\n\nvar assign = require(\"./Object.assign\");\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: {},\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return
    {children}
    ;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array}\n */\n withContext: function(newContext, scopedCallback) {\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n\n},{\"./Object.assign\":69}],79:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n\"use strict\";\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n},{}],80:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOM\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar ReactElement = require(\"./ReactElement\");\nvar ReactElementValidator = require(\"./ReactElementValidator\");\nvar ReactLegacyElement = require(\"./ReactLegacyElement\");\n\nvar mapObject = require(\"./mapObject\");\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @param {string} tag Tag name (e.g. `div`).\n * @private\n */\nfunction createDOMFactory(tag) {\n if (\"production\" !== \"production\") {\n return ReactLegacyElement.markNonLegacyFactory(\n ReactElementValidator.createFactory(tag)\n );\n }\n return ReactLegacyElement.markNonLegacyFactory(\n ReactElement.createFactory(tag)\n );\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOM = mapObject({\n a: 'a',\n abbr: 'abbr',\n address: 'address',\n area: 'area',\n article: 'article',\n aside: 'aside',\n audio: 'audio',\n b: 'b',\n base: 'base',\n bdi: 'bdi',\n bdo: 'bdo',\n big: 'big',\n blockquote: 'blockquote',\n body: 'body',\n br: 'br',\n button: 'button',\n canvas: 'canvas',\n caption: 'caption',\n cite: 'cite',\n code: 'code',\n col: 'col',\n colgroup: 'colgroup',\n data: 'data',\n datalist: 'datalist',\n dd: 'dd',\n del: 'del',\n details: 'details',\n dfn: 'dfn',\n dialog: 'dialog',\n div: 'div',\n dl: 'dl',\n dt: 'dt',\n em: 'em',\n embed: 'embed',\n fieldset: 'fieldset',\n figcaption: 'figcaption',\n figure: 'figure',\n footer: 'footer',\n form: 'form',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n head: 'head',\n header: 'header',\n hr: 'hr',\n html: 'html',\n i: 'i',\n iframe: 'iframe',\n img: 'img',\n input: 'input',\n ins: 'ins',\n kbd: 'kbd',\n keygen: 'keygen',\n label: 'label',\n legend: 'legend',\n li: 'li',\n link: 'link',\n main: 'main',\n map: 'map',\n mark: 'mark',\n menu: 'menu',\n menuitem: 'menuitem',\n meta: 'meta',\n meter: 'meter',\n nav: 'nav',\n noscript: 'noscript',\n object: 'object',\n ol: 'ol',\n optgroup: 'optgroup',\n option: 'option',\n output: 'output',\n p: 'p',\n param: 'param',\n picture: 'picture',\n pre: 'pre',\n progress: 'progress',\n q: 'q',\n rp: 'rp',\n rt: 'rt',\n ruby: 'ruby',\n s: 's',\n samp: 'samp',\n script: 'script',\n section: 'section',\n select: 'select',\n small: 'small',\n source: 'source',\n span: 'span',\n strong: 'strong',\n style: 'style',\n sub: 'sub',\n summary: 'summary',\n sup: 'sup',\n table: 'table',\n tbody: 'tbody',\n td: 'td',\n textarea: 'textarea',\n tfoot: 'tfoot',\n th: 'th',\n thead: 'thead',\n time: 'time',\n title: 'title',\n tr: 'tr',\n track: 'track',\n u: 'u',\n ul: 'ul',\n 'var': 'var',\n video: 'video',\n wbr: 'wbr',\n\n // SVG\n circle: 'circle',\n defs: 'defs',\n ellipse: 'ellipse',\n g: 'g',\n line: 'line',\n linearGradient: 'linearGradient',\n mask: 'mask',\n path: 'path',\n pattern: 'pattern',\n polygon: 'polygon',\n polyline: 'polyline',\n radialGradient: 'radialGradient',\n rect: 'rect',\n stop: 'stop',\n svg: 'svg',\n text: 'text',\n tspan: 'tspan'\n\n}, createDOMFactory);\n\nmodule.exports = ReactDOM;\n\n},{\"./ReactElement\":95,\"./ReactElementValidator\":96,\"./ReactLegacyElement\":104,\"./mapObject\":178}],81:[function(require,module,exports){\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMButton\n */\n\n\"use strict\";\n\nvar AutoFocusMixin = require(\"./AutoFocusMixin\");\nvar ReactBrowserComponentMixin = require(\"./ReactBrowserComponentMixin\");\nvar ReactCompositeComponent = require(\"./ReactCompositeComponent\");\nvar ReactElement = require(\"./ReactElement\");\nvar ReactDOM = require(\"./ReactDOM\");\n\nvar keyMirror = require(\"./keyMirror\");\n\n// Store a reference to the