diff --git a/article.js b/article.js index 27a74ab7..2bd5a3c4 100644 --- a/article.js +++ b/article.js @@ -1,4 +1,4 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(9)},,,,,,,,,function(e,t,n){"use strict";var r=n(10),a=n(167),o=n(168);n(212),a.render(r.createElement(o,null),document.getElementById("article"),function(){if(window.location.hash){var e=window.location.hash;window.location.hash=e}})},function(e,t,n){"use strict";e.exports=n(11)},function(e,t,n){"use strict";var r=n(12),a=n(157),o=n(161),i=n(48),s=n(166),l={};i(l,o),i(l,{findDOMNode:s("findDOMNode","ReactDOM","react-dom",r,r.findDOMNode),render:s("render","ReactDOM","react-dom",r,r.render),unmountComponentAtNode:s("unmountComponentAtNode","ReactDOM","react-dom",r,r.unmountComponentAtNode),renderToString:s("renderToString","ReactDOMServer","react-dom/server",a,a.renderToString),renderToStaticMarkup:s("renderToStaticMarkup","ReactDOMServer","react-dom/server",a,a.renderToStaticMarkup)}),l.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=r,l.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=a,e.exports=l},function(e,t,n){(function(t){"use strict";var r=n(14),a=n(15),o=n(80),i=n(54),s=n(37),l=n(27),c=n(59),u=n(63),h=n(155),d=n(100),p=n(156),m=n(34);o.inject();var f=l.measure("React","render",s.render),g={findDOMNode:d,render:f,unmountComponentAtNode:s.unmountComponentAtNode,version:h,unstable_batchedUpdates:u.batchedUpdates,unstable_renderSubtreeIntoContainer:p};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({CurrentOwner:r,InstanceHandles:i,Mount:s,Reconciler:c,TextComponent:a}),"production"!==t.env.NODE_ENV){var v=n(18);if(v.canUseDOM&&window.top===window.self){"undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&(navigator.userAgent.indexOf("Chrome")>-1&&-1===navigator.userAgent.indexOf("Edge")||navigator.userAgent.indexOf("Firefox")>-1)&&console.debug("Download the React DevTools for a better development experience: https://fb.me/react-devtools");var y=document.documentMode&&document.documentMode<8;"production"!==t.env.NODE_ENV?m(!y,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: '):void 0;for(var w=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,Object.create,Object.freeze],b=0;b1)for(var n=1;n"+h+""},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var a=i.getNode(this._rootNodeID);r.updateTextContent(a,n)}}},unmountComponent:function(){o.unmountIDFromEnvironment(this._rootNodeID)}}),e.exports=h}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(e,t,n){var r=n>=e.childNodes.length?null:e.childNodes.item(n);e.insertBefore(t,r)}var a=n(17),o=n(25),i=n(27),s=n(28),l=n(29),c=n(22),u={dangerouslyReplaceNodeWithMarkup:a.dangerouslyReplaceNodeWithMarkup,updateTextContent:l,processUpdates:function(e,n){for(var i,u=null,h=null,d=0;d when using tables, nesting tags like
,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",p,f):c(!1),u=u||{},u[f]=u[f]||[],u[f][p]=m,h=h||[],h.push(m)}var g;if(g=n.length&&"string"==typeof n[0]?a.dangerouslyRenderMarkup(n):n,h)for(var v=0;v]+)/,u="data-danger-index",h={dangerouslyRenderMarkup:function(e){a.canUseDOM?void 0:"production"!==t.env.NODE_ENV?l(!1,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString for server rendering."):l(!1);for(var n,h={},d=0;d node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString()."):l(!1):void 0;var r;r="string"==typeof n?o(n,i)[0]:n,e.parentNode.replaceChild(r,e)}};e.exports=h}).call(t,n(13))},function(e,t){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t,n){(function(t){"use strict";function r(e){var t=e.match(u);return t&&t[1].toLowerCase()}function a(e,n){var a=c;c?void 0:"production"!==t.env.NODE_ENV?l(!1,"createNodesFromMarkup dummy not initialized"):l(!1);var o=r(e),u=o&&s(o);if(u){a.innerHTML=u[1]+e+u[2];for(var h=u[0];h--;)a=a.lastChild}else a.innerHTML=e;var d=a.getElementsByTagName("script");d.length&&(n?void 0:"production"!==t.env.NODE_ENV?l(!1,"createNodesFromMarkup(...): Unexpected ","
"],u=[3,"","
"],h=[1,'',""],d={"*":[1,"?

","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:l,option:l,caption:c,colgroup:c,tbody:c,tfoot:c,thead:c,td:u,th:u},p=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];p.forEach(function(e){d[e]=h,s[e]=!0}),e.exports=r}).call(t,n(13))},function(e,t){"use strict";function n(e){return function(){return e}}function r(){}r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},function(e,t,n){"use strict";var r=n(26),a=r({INSERT_MARKUP:null,MOVE_EXISTING:null,REMOVE_NODE:null,SET_MARKUP:null,TEXT_CONTENT:null});e.exports=a},function(e,t,n){(function(t){"use strict";var r=n(22),a=function(e){var n,a={};e instanceof Object&&!Array.isArray(e)?void 0:"production"!==t.env.NODE_ENV?r(!1,"keyMirror(...): Argument must be an object."):r(!1);for(n in e)e.hasOwnProperty(n)&&(a[n]=n);return a};e.exports=a}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function n(e,t,n){return n}var r={enableMeasure:!1,storedMeasure:n,measureMethods:function(e,n,a){if("production"!==t.env.NODE_ENV)for(var o in a)a.hasOwnProperty(o)&&(e[o]=r.measure(n,a[o],e[o]))},measure:function(e,n,a){if("production"!==t.env.NODE_ENV){var o=null,i=function(){return r.enableMeasure?(o||(o=r.storedMeasure(e,n,a)),o.apply(this,arguments)):a.apply(this,arguments)};return i.displayName=e+"_"+n,i}return a},injection:{injectMeasure:function(e){r.storedMeasure=e}}};e.exports=r}).call(t,n(13))},function(e,t,n){"use strict";var r=n(18),a=/^[ \r\n\t\f]/,o=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,i=function(e,t){e.innerHTML=t};if("undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction&&(i=function(e,t){MSApp.execUnsafeLocalFunction(function(){e.innerHTML=t})}),r.canUseDOM){var s=document.createElement("div");s.innerHTML=" ",""===s.innerHTML&&(i=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&o.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t})}e.exports=i},function(e,t,n){"use strict";var r=n(18),a=n(30),o=n(28),i=function(e,t){e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(i=function(e,t){o(e,a(t))})),e.exports=i},function(e,t){"use strict";function n(e){return a[e]}function r(e){return(""+e).replace(o,n)}var a={"&":"&",">":">","<":"<",'"':""","'":"'"},o=/[&><"']/g;e.exports=r},function(e,t,n){(function(t){"use strict";function r(e){return h.hasOwnProperty(e)?!0:u.hasOwnProperty(e)?!1:c.test(e)?(h[e]=!0,!0):(u[e]=!0,"production"!==t.env.NODE_ENV?l(!1,"Invalid attribute name: `%s`",e):void 0,!1)}function a(e,t){return null==t||e.hasBooleanValue&&!t||e.hasNumericValue&&isNaN(t)||e.hasPositiveNumericValue&&1>t||e.hasOverloadedBooleanValue&&t===!1}var o=n(32),i=n(27),s=n(33),l=n(34),c=/^[a-zA-Z_][\w\.\-]*$/,u={},h={};if("production"!==t.env.NODE_ENV)var d={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0},p={},m=function(e){if(!(d.hasOwnProperty(e)&&d[e]||p.hasOwnProperty(e)&&p[e])){p[e]=!0;var n=e.toLowerCase(),r=o.isCustomAttribute(n)?n:o.getPossibleStandardName.hasOwnProperty(n)?o.getPossibleStandardName[n]:null;"production"!==t.env.NODE_ENV?l(null==r,"Unknown DOM property %s. Did you mean %s?",e,r):void 0}};var f={createMarkupForID:function(e){return o.ID_ATTRIBUTE_NAME+"="+s(e)},setAttributeForID:function(e,t){e.setAttribute(o.ID_ATTRIBUTE_NAME,t)},createMarkupForProperty:function(e,n){var r=o.properties.hasOwnProperty(e)?o.properties[e]:null;if(r){if(a(r,n))return"";var i=r.attributeName;return r.hasBooleanValue||r.hasOverloadedBooleanValue&&n===!0?i+'=""':i+"="+s(n)}return o.isCustomAttribute(e)?null==n?"":e+"="+s(n):("production"!==t.env.NODE_ENV&&m(e),null)},createMarkupForCustomAttribute:function(e,t){return r(e)&&null!=t?e+"="+s(t):""},setValueForProperty:function(e,n,r){var i=o.properties.hasOwnProperty(n)?o.properties[n]:null;if(i){var s=i.mutationMethod;if(s)s(e,r);else if(a(i,r))this.deleteValueForProperty(e,n);else if(i.mustUseAttribute){var l=i.attributeName,c=i.attributeNamespace;c?e.setAttributeNS(c,l,""+r):i.hasBooleanValue||i.hasOverloadedBooleanValue&&r===!0?e.setAttribute(l,""):e.setAttribute(l,""+r)}else{var u=i.propertyName;i.hasSideEffects&&""+e[u]==""+r||(e[u]=r)}}else o.isCustomAttribute(n)?f.setValueForAttribute(e,n,r):"production"!==t.env.NODE_ENV&&m(n)},setValueForAttribute:function(e,t,n){r(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))},deleteValueForProperty:function(e,n){var r=o.properties.hasOwnProperty(n)?o.properties[n]:null;if(r){var a=r.mutationMethod;if(a)a(e,void 0);else if(r.mustUseAttribute)e.removeAttribute(r.attributeName);else{var i=r.propertyName,s=o.getDefaultValueForProperty(e.nodeName,i);r.hasSideEffects&&""+e[i]===s||(e[i]=s)}}else o.isCustomAttribute(n)?e.removeAttribute(n):"production"!==t.env.NODE_ENV&&m(n)}};i.measureMethods(f,"DOMPropertyOperations",{setValueForProperty:"setValueForProperty",setValueForAttribute:"setValueForAttribute",deleteValueForProperty:"deleteValueForProperty"}),e.exports=f}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(e,t){return(e&t)===t}var a=n(22),o={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_SIDE_EFFECTS:4,HAS_BOOLEAN_VALUE:8,HAS_NUMERIC_VALUE:16,HAS_POSITIVE_NUMERIC_VALUE:48,HAS_OVERLOADED_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(e){var n=o,i=e.Properties||{},l=e.DOMAttributeNamespaces||{},c=e.DOMAttributeNames||{},u=e.DOMPropertyNames||{},h=e.DOMMutationMethods||{};e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var d in i){s.properties.hasOwnProperty(d)?"production"!==t.env.NODE_ENV?a(!1,"injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.",d):a(!1):void 0;var p=d.toLowerCase(),m=i[d],f={attributeName:p,attributeNamespace:null,propertyName:d,mutationMethod:null,mustUseAttribute:r(m,n.MUST_USE_ATTRIBUTE),mustUseProperty:r(m,n.MUST_USE_PROPERTY),hasSideEffects:r(m,n.HAS_SIDE_EFFECTS),hasBooleanValue:r(m,n.HAS_BOOLEAN_VALUE),hasNumericValue:r(m,n.HAS_NUMERIC_VALUE),hasPositiveNumericValue:r(m,n.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:r(m,n.HAS_OVERLOADED_BOOLEAN_VALUE)};if(f.mustUseAttribute&&f.mustUseProperty?"production"!==t.env.NODE_ENV?a(!1,"DOMProperty: Cannot require using both attribute and property: %s",d):a(!1):void 0,!f.mustUseProperty&&f.hasSideEffects?"production"!==t.env.NODE_ENV?a(!1,"DOMProperty: Properties that have side effects must use property: %s",d):a(!1):void 0,f.hasBooleanValue+f.hasNumericValue+f.hasOverloadedBooleanValue<=1?void 0:"production"!==t.env.NODE_ENV?a(!1,"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s",d):a(!1),"production"!==t.env.NODE_ENV&&(s.getPossibleStandardName[p]=d),c.hasOwnProperty(d)){var g=c[d];f.attributeName=g,"production"!==t.env.NODE_ENV&&(s.getPossibleStandardName[g]=d)}l.hasOwnProperty(d)&&(f.attributeNamespace=l[d]),u.hasOwnProperty(d)&&(f.propertyName=u[d]),h.hasOwnProperty(d)&&(f.mutationMethod=h[d]),s.properties[d]=f}}},i={},s={ID_ATTRIBUTE_NAME:"data-reactid",properties:{},getPossibleStandardName:"production"!==t.env.NODE_ENV?{}:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t2?n-2:0),a=2;n>a;a++)r[a-2]=arguments[a];if(void 0===t)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(0!==t.indexOf("Failed Composite propType: ")&&!e){var o=0,i="Warning: "+t.replace(/%s/g,function(){return r[o++]});"undefined"!=typeof console&&console.error(i);try{throw new Error(i)}catch(s){}}}),e.exports=a}).call(t,n(13))},function(e,t,n){"use strict";var r=n(36),a=n(37),o={processChildrenUpdates:r.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkupByID:r.dangerouslyReplaceNodeWithMarkupByID,unmountIDFromEnvironment:function(e){a.purgeID(e)}};e.exports=o},function(e,t,n){(function(t){"use strict";var r=n(16),a=n(31),o=n(37),i=n(27),s=n(22),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},c={updatePropertyByID:function(e,n,r){var i=o.getNode(e);l.hasOwnProperty(n)?"production"!==t.env.NODE_ENV?s(!1,"updatePropertyByID(...): %s",l[n]):s(!1):void 0,null!=r?a.setValueForProperty(i,n,r):a.deleteValueForProperty(i,n)},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=o.getNode(e);r.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;nr;r++)if(e.charAt(r)!==t.charAt(r))return r;return e.length===t.length?-1:n}function a(e){return e?e.nodeType===G?e.documentElement:e.firstChild:null}function o(e){var t=a(e);return t&&ee.getID(t)}function i(e){var n=s(e);if(n)if(q.hasOwnProperty(n)){var r=q[n];r!==e&&(h(r,n)?"production"!==t.env.NODE_ENV?V(!1,"ReactMount: Two valid but unequal nodes with the same `%s`: %s",F,n):V(!1):void 0,q[n]=e)}else q[n]=e;return n}function s(e){return e&&e.getAttribute&&e.getAttribute(F)||""}function l(e,t){var n=s(e);n!==t&&delete q[n],e.setAttribute(F,t),q[t]=e}function c(e){return q.hasOwnProperty(e)&&h(q[e],e)||(q[e]=ee.findReactNodeByID(e)),q[e]}function u(e){var t=D.get(e)._rootNodeID;return k.isNullComponentID(t)?null:(q.hasOwnProperty(t)&&h(q[t],t)||(q[t]=ee.findReactNodeByID(t)),q[t])}function h(e,n){if(e){s(e)!==n?"production"!==t.env.NODE_ENV?V(!1,"ReactMount: Unexpected modification of `%s`",F):V(!1):void 0;var r=ee.findReactContainerForID(n);if(r&&L(r,e))return!0}return!1}function d(e){delete q[e]}function p(e){var t=q[e];return t&&h(t,e)?void($=t):!1}function m(e){$=null,_.traverseAncestors(e,p);var t=$;return $=null,t}function f(e,n,r,a,o,i){if(C.useCreateElement&&(i=I({},i),r.nodeType===G?i[K]=r:i[K]=r.ownerDocument),"production"!==t.env.NODE_ENV){i===R&&(i={});var s=r.nodeName.toLowerCase();i[j.ancestorInfoContextKey]=j.updatedAncestorInfo(null,s,null)}var l=O.mountComponent(e,n,a,i);e._renderedComponent._topLevelWrapper=e,ee._mountImageIntoNode(l,r,o,a)}function g(e,t,n,r,a){var o=P.ReactReconcileTransaction.getPooled(r);o.perform(f,null,e,t,n,o,r,a),P.ReactReconcileTransaction.release(o)}function v(e,t){for(O.unmountComponent(e),t.nodeType===G&&(t=t.documentElement);t.lastChild;)t.removeChild(t.lastChild)}function y(e){var t=o(e);return t?t!==_.getReactRootIDFromNodeID(t):!1}function w(e){for(;e&&e.parentNode!==e;e=e.parentNode)if(1===e.nodeType){var t=s(e);if(t){var n,r=_.getReactRootIDFromNodeID(t),a=e;do if(n=s(a),a=a.parentNode,null==a)return null;while(n!==r);if(a===Y[r])return e}}return null}var b=n(32),E=n(38),x=n(14),C=n(50),N=n(51),k=n(53),_=n(54),D=n(56),T=n(57),S=n(27),O=n(59),M=n(62),P=n(63),I=n(48),R=n(67),L=n(68),A=n(71),V=n(22),B=n(28),z=n(76),j=n(79),U=n(34),F=b.ID_ATTRIBUTE_NAME,q={},W=1,G=9,X=11,K="__ReactMount_ownerDocument$"+Math.random().toString(36).slice(2),H={},Y={};if("production"!==t.env.NODE_ENV)var Q={};var J=[],$=null,Z=function(){};Z.prototype.isReactComponent={},"production"!==t.env.NODE_ENV&&(Z.displayName="TopLevelWrapper"),Z.prototype.render=function(){return this.props};var ee={TopLevelWrapper:Z,_instancesByReactRootID:H,scrollMonitor:function(e,t){t()},_updateRootComponent:function(e,n,r,i){return ee.scrollMonitor(r,function(){M.enqueueElementInternal(e,n),i&&M.enqueueCallbackInternal(e,i)}),"production"!==t.env.NODE_ENV&&(Q[o(r)]=a(r)),e},_registerComponent:function(e,n){!n||n.nodeType!==W&&n.nodeType!==G&&n.nodeType!==X?"production"!==t.env.NODE_ENV?V(!1,"_registerComponent(...): Target container is not a DOM element."):V(!1):void 0,E.ensureScrollValueMonitoring();var r=ee.registerContainer(n);return H[r]=e,r},_renderNewRootComponent:function(e,n,r,o){"production"!==t.env.NODE_ENV?U(null==x.current,"_renderNewRootComponent(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate. Check the render method of %s.",x.current&&x.current.getName()||"ReactCompositeComponent"):void 0;var i=A(e,null),s=ee._registerComponent(i,n);return P.batchedUpdates(g,i,s,n,r,o),"production"!==t.env.NODE_ENV&&(Q[s]=a(n)),i},renderSubtreeIntoContainer:function(e,n,r,a){return null==e||null==e._reactInternalInstance?"production"!==t.env.NODE_ENV?V(!1,"parentComponent must be a valid React Component"):V(!1):void 0,ee._renderSubtreeIntoContainer(e,n,r,a)},_renderSubtreeIntoContainer:function(e,n,r,i){N.isValidElement(n)?void 0:"production"!==t.env.NODE_ENV?V(!1,"ReactDOM.render(): Invalid component element.%s","string"==typeof n?" Instead of passing an element string, make sure to instantiate it by passing it to React.createElement.":"function"==typeof n?" Instead of passing a component class, make sure to instantiate it by passing it to React.createElement.":null!=n&&void 0!==n.props?" This may be caused by unintentionally loading two independent copies of React.":""):V(!1),"production"!==t.env.NODE_ENV?U(!r||!r.tagName||"BODY"!==r.tagName.toUpperCase(),"render(): Rendering components directly into document.body is discouraged, since its children are often manipulated by third-party scripts and browser extensions. This may lead to subtle reconciliation issues. Try rendering into a container element created for your app."):void 0;var l=new N(Z,null,null,null,null,null,n),c=H[o(r)];if(c){var u=c._currentElement,h=u.props;if(z(h,n)){var d=c._renderedComponent.getPublicInstance(),p=i&&function(){i.call(d)};return ee._updateRootComponent(c,l,r,p),d}ee.unmountComponentAtNode(r)}var m=a(r),f=m&&!!s(m),g=y(r);if("production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?U(!g,"render(...): Replacing React-rendered children with a new root component. If you intended to update the children of this node, you should instead have the existing children update their state and render the new components instead of calling ReactDOM.render."):void 0,!f||m.nextSibling))for(var v=m;v;){if(s(v)){"production"!==t.env.NODE_ENV?U(!1,"render(): Target node has markup rendered by React, but there are unrelated nodes as well. This is most commonly caused by white-space inserted around server-rendered markup."):void 0;break}v=v.nextSibling}var w=f&&!c&&!g,b=ee._renderNewRootComponent(l,r,w,null!=e?e._reactInternalInstance._processChildContext(e._reactInternalInstance._context):R)._renderedComponent.getPublicInstance();return i&&i.call(b),b},render:function(e,t,n){return ee._renderSubtreeIntoContainer(null,e,t,n)},registerContainer:function(e){var t=o(e);return t&&(t=_.getReactRootIDFromNodeID(t)),t||(t=_.createReactRootID()),Y[t]=e,t},unmountComponentAtNode:function(e){"production"!==t.env.NODE_ENV?U(null==x.current,"unmountComponentAtNode(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate. Check the render method of %s.",x.current&&x.current.getName()||"ReactCompositeComponent"):void 0,!e||e.nodeType!==W&&e.nodeType!==G&&e.nodeType!==X?"production"!==t.env.NODE_ENV?V(!1,"unmountComponentAtNode(...): Target container is not a DOM element."):V(!1):void 0;var n=o(e),r=H[n];if(!r){var a=y(e),i=s(e),l=i&&i===_.getReactRootIDFromNodeID(i);return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?U(!a,"unmountComponentAtNode(): The node you're attempting to unmount was rendered by React and is not a top-level container. %s",l?"You may have accidentally passed in a React root node instead of its container.":"Instead, have the parent component update its state and rerender in order to remove this component."):void 0),!1}return P.batchedUpdates(v,r,e),delete H[n],delete Y[n],"production"!==t.env.NODE_ENV&&delete Q[n],!0},findReactContainerForID:function(e){var n=_.getReactRootIDFromNodeID(e),r=Y[n];if("production"!==t.env.NODE_ENV){var a=Q[n];if(a&&a.parentNode!==r){"production"!==t.env.NODE_ENV?U(s(a)===n,"ReactMount: Root element ID differed from reactRootID."):void 0;var o=r.firstChild;o&&n===s(o)?Q[n]=o:"production"!==t.env.NODE_ENV?U(!1,"ReactMount: Root element has been removed from its original container. New container: %s",a.parentNode):void 0}}return r},findReactNodeByID:function(e){var t=ee.findReactContainerForID(e);return ee.findComponentRoot(t,e)},getFirstReactDOM:function(e){return w(e)},findComponentRoot:function(e,n){var r=J,a=0,o=m(n)||e;for("production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?U(null!=o,"React can't find the root component node for data-reactid value `%s`. If you're seeing this message, it probably means that you've loaded two copies of React on the page. At this time, only a single copy of React can be loaded at a time.",n):void 0),r[0]=o.firstChild,r.length=1;a when using tables, nesting tags like ,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",n,ee.getID(e)):V(!1)},_mountImageIntoNode:function(e,n,o,i){if(!n||n.nodeType!==W&&n.nodeType!==G&&n.nodeType!==X?"production"!==t.env.NODE_ENV?V(!1,"mountComponentIntoNode(...): Target container is not valid."):V(!1):void 0,o){var s=a(n);if(T.canReuseMarkup(e,s))return;var l=s.getAttribute(T.CHECKSUM_ATTR_NAME);s.removeAttribute(T.CHECKSUM_ATTR_NAME);var c=s.outerHTML;s.setAttribute(T.CHECKSUM_ATTR_NAME,l);var u=e;if("production"!==t.env.NODE_ENV){var h;n.nodeType===W?(h=document.createElement("div"),h.innerHTML=e,u=h.innerHTML):(h=document.createElement("iframe"),document.body.appendChild(h),h.contentDocument.write(e),u=h.contentDocument.documentElement.outerHTML,document.body.removeChild(h))}var d=r(u,c),p=" (client) "+u.substring(d-20,d+20)+"\n (server) "+c.substring(d-20,d+20);n.nodeType===G?"production"!==t.env.NODE_ENV?V(!1,"You're trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s",p):V(!1):void 0,"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?U(!1,"React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:\n%s",p):void 0); +!function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(9)},,,,,,,,,function(e,t,n){"use strict";var r=n(10),a=n(167),o=n(168);n(213),a.render(r.createElement(o,null),document.getElementById("article"),function(){if(window.location.hash){var e=window.location.hash;window.location.hash=e}})},function(e,t,n){"use strict";e.exports=n(11)},function(e,t,n){"use strict";var r=n(12),a=n(157),o=n(161),i=n(48),s=n(166),l={};i(l,o),i(l,{findDOMNode:s("findDOMNode","ReactDOM","react-dom",r,r.findDOMNode),render:s("render","ReactDOM","react-dom",r,r.render),unmountComponentAtNode:s("unmountComponentAtNode","ReactDOM","react-dom",r,r.unmountComponentAtNode),renderToString:s("renderToString","ReactDOMServer","react-dom/server",a,a.renderToString),renderToStaticMarkup:s("renderToStaticMarkup","ReactDOMServer","react-dom/server",a,a.renderToStaticMarkup)}),l.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=r,l.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=a,e.exports=l},function(e,t,n){(function(t){"use strict";var r=n(14),a=n(15),o=n(80),i=n(54),s=n(37),l=n(27),c=n(59),u=n(63),h=n(155),d=n(100),p=n(156),m=n(34);o.inject();var f=l.measure("React","render",s.render),g={findDOMNode:d,render:f,unmountComponentAtNode:s.unmountComponentAtNode,version:h,unstable_batchedUpdates:u.batchedUpdates,unstable_renderSubtreeIntoContainer:p};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({CurrentOwner:r,InstanceHandles:i,Mount:s,Reconciler:c,TextComponent:a}),"production"!==t.env.NODE_ENV){var v=n(18);if(v.canUseDOM&&window.top===window.self){"undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&(navigator.userAgent.indexOf("Chrome")>-1&&-1===navigator.userAgent.indexOf("Edge")||navigator.userAgent.indexOf("Firefox")>-1)&&console.debug("Download the React DevTools for a better development experience: https://fb.me/react-devtools");var y=document.documentMode&&document.documentMode<8;"production"!==t.env.NODE_ENV?m(!y,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: '):void 0;for(var w=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,Object.create,Object.freeze],b=0;b1)for(var n=1;n"+h+""},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var a=i.getNode(this._rootNodeID);r.updateTextContent(a,n)}}},unmountComponent:function(){o.unmountIDFromEnvironment(this._rootNodeID)}}),e.exports=h}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(e,t,n){var r=n>=e.childNodes.length?null:e.childNodes.item(n);e.insertBefore(t,r)}var a=n(17),o=n(25),i=n(27),s=n(28),l=n(29),c=n(22),u={dangerouslyReplaceNodeWithMarkup:a.dangerouslyReplaceNodeWithMarkup,updateTextContent:l,processUpdates:function(e,n){for(var i,u=null,h=null,d=0;d when using tables, nesting tags like ,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",p,f):c(!1),u=u||{},u[f]=u[f]||[],u[f][p]=m,h=h||[],h.push(m)}var g;if(g=n.length&&"string"==typeof n[0]?a.dangerouslyRenderMarkup(n):n,h)for(var v=0;v]+)/,u="data-danger-index",h={dangerouslyRenderMarkup:function(e){a.canUseDOM?void 0:"production"!==t.env.NODE_ENV?l(!1,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString for server rendering."):l(!1);for(var n,h={},d=0;d node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString()."):l(!1):void 0;var r;r="string"==typeof n?o(n,i)[0]:n,e.parentNode.replaceChild(r,e)}};e.exports=h}).call(t,n(13))},function(e,t){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t,n){(function(t){"use strict";function r(e){var t=e.match(u);return t&&t[1].toLowerCase()}function a(e,n){var a=c;c?void 0:"production"!==t.env.NODE_ENV?l(!1,"createNodesFromMarkup dummy not initialized"):l(!1);var o=r(e),u=o&&s(o);if(u){a.innerHTML=u[1]+e+u[2];for(var h=u[0];h--;)a=a.lastChild}else a.innerHTML=e;var d=a.getElementsByTagName("script");d.length&&(n?void 0:"production"!==t.env.NODE_ENV?l(!1,"createNodesFromMarkup(...): Unexpected ","
"],u=[3,"","
"],h=[1,'',""],d={"*":[1,"?

","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:l,option:l,caption:c,colgroup:c,tbody:c,tfoot:c,thead:c,td:u,th:u},p=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];p.forEach(function(e){d[e]=h,s[e]=!0}),e.exports=r}).call(t,n(13))},function(e,t){"use strict";function n(e){return function(){return e}}function r(){}r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},function(e,t,n){"use strict";var r=n(26),a=r({INSERT_MARKUP:null,MOVE_EXISTING:null,REMOVE_NODE:null,SET_MARKUP:null,TEXT_CONTENT:null});e.exports=a},function(e,t,n){(function(t){"use strict";var r=n(22),a=function(e){var n,a={};e instanceof Object&&!Array.isArray(e)?void 0:"production"!==t.env.NODE_ENV?r(!1,"keyMirror(...): Argument must be an object."):r(!1);for(n in e)e.hasOwnProperty(n)&&(a[n]=n);return a};e.exports=a}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function n(e,t,n){return n}var r={enableMeasure:!1,storedMeasure:n,measureMethods:function(e,n,a){if("production"!==t.env.NODE_ENV)for(var o in a)a.hasOwnProperty(o)&&(e[o]=r.measure(n,a[o],e[o]))},measure:function(e,n,a){if("production"!==t.env.NODE_ENV){var o=null,i=function(){return r.enableMeasure?(o||(o=r.storedMeasure(e,n,a)),o.apply(this,arguments)):a.apply(this,arguments)};return i.displayName=e+"_"+n,i}return a},injection:{injectMeasure:function(e){r.storedMeasure=e}}};e.exports=r}).call(t,n(13))},function(e,t,n){"use strict";var r=n(18),a=/^[ \r\n\t\f]/,o=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,i=function(e,t){e.innerHTML=t};if("undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction&&(i=function(e,t){MSApp.execUnsafeLocalFunction(function(){e.innerHTML=t})}),r.canUseDOM){var s=document.createElement("div");s.innerHTML=" ",""===s.innerHTML&&(i=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&o.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t})}e.exports=i},function(e,t,n){"use strict";var r=n(18),a=n(30),o=n(28),i=function(e,t){e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(i=function(e,t){o(e,a(t))})),e.exports=i},function(e,t){"use strict";function n(e){return a[e]}function r(e){return(""+e).replace(o,n)}var a={"&":"&",">":">","<":"<",'"':""","'":"'"},o=/[&><"']/g;e.exports=r},function(e,t,n){(function(t){"use strict";function r(e){return h.hasOwnProperty(e)?!0:u.hasOwnProperty(e)?!1:c.test(e)?(h[e]=!0,!0):(u[e]=!0,"production"!==t.env.NODE_ENV?l(!1,"Invalid attribute name: `%s`",e):void 0,!1)}function a(e,t){return null==t||e.hasBooleanValue&&!t||e.hasNumericValue&&isNaN(t)||e.hasPositiveNumericValue&&1>t||e.hasOverloadedBooleanValue&&t===!1}var o=n(32),i=n(27),s=n(33),l=n(34),c=/^[a-zA-Z_][\w\.\-]*$/,u={},h={};if("production"!==t.env.NODE_ENV)var d={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0},p={},m=function(e){if(!(d.hasOwnProperty(e)&&d[e]||p.hasOwnProperty(e)&&p[e])){p[e]=!0;var n=e.toLowerCase(),r=o.isCustomAttribute(n)?n:o.getPossibleStandardName.hasOwnProperty(n)?o.getPossibleStandardName[n]:null;"production"!==t.env.NODE_ENV?l(null==r,"Unknown DOM property %s. Did you mean %s?",e,r):void 0}};var f={createMarkupForID:function(e){return o.ID_ATTRIBUTE_NAME+"="+s(e)},setAttributeForID:function(e,t){e.setAttribute(o.ID_ATTRIBUTE_NAME,t)},createMarkupForProperty:function(e,n){var r=o.properties.hasOwnProperty(e)?o.properties[e]:null;if(r){if(a(r,n))return"";var i=r.attributeName;return r.hasBooleanValue||r.hasOverloadedBooleanValue&&n===!0?i+'=""':i+"="+s(n)}return o.isCustomAttribute(e)?null==n?"":e+"="+s(n):("production"!==t.env.NODE_ENV&&m(e),null)},createMarkupForCustomAttribute:function(e,t){return r(e)&&null!=t?e+"="+s(t):""},setValueForProperty:function(e,n,r){var i=o.properties.hasOwnProperty(n)?o.properties[n]:null;if(i){var s=i.mutationMethod;if(s)s(e,r);else if(a(i,r))this.deleteValueForProperty(e,n);else if(i.mustUseAttribute){var l=i.attributeName,c=i.attributeNamespace;c?e.setAttributeNS(c,l,""+r):i.hasBooleanValue||i.hasOverloadedBooleanValue&&r===!0?e.setAttribute(l,""):e.setAttribute(l,""+r)}else{var u=i.propertyName;i.hasSideEffects&&""+e[u]==""+r||(e[u]=r)}}else o.isCustomAttribute(n)?f.setValueForAttribute(e,n,r):"production"!==t.env.NODE_ENV&&m(n)},setValueForAttribute:function(e,t,n){r(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))},deleteValueForProperty:function(e,n){var r=o.properties.hasOwnProperty(n)?o.properties[n]:null;if(r){var a=r.mutationMethod;if(a)a(e,void 0);else if(r.mustUseAttribute)e.removeAttribute(r.attributeName);else{var i=r.propertyName,s=o.getDefaultValueForProperty(e.nodeName,i);r.hasSideEffects&&""+e[i]===s||(e[i]=s)}}else o.isCustomAttribute(n)?e.removeAttribute(n):"production"!==t.env.NODE_ENV&&m(n)}};i.measureMethods(f,"DOMPropertyOperations",{setValueForProperty:"setValueForProperty",setValueForAttribute:"setValueForAttribute",deleteValueForProperty:"deleteValueForProperty"}),e.exports=f}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(e,t){return(e&t)===t}var a=n(22),o={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_SIDE_EFFECTS:4,HAS_BOOLEAN_VALUE:8,HAS_NUMERIC_VALUE:16,HAS_POSITIVE_NUMERIC_VALUE:48,HAS_OVERLOADED_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(e){var n=o,i=e.Properties||{},l=e.DOMAttributeNamespaces||{},c=e.DOMAttributeNames||{},u=e.DOMPropertyNames||{},h=e.DOMMutationMethods||{};e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var d in i){s.properties.hasOwnProperty(d)?"production"!==t.env.NODE_ENV?a(!1,"injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.",d):a(!1):void 0;var p=d.toLowerCase(),m=i[d],f={attributeName:p,attributeNamespace:null,propertyName:d,mutationMethod:null,mustUseAttribute:r(m,n.MUST_USE_ATTRIBUTE),mustUseProperty:r(m,n.MUST_USE_PROPERTY),hasSideEffects:r(m,n.HAS_SIDE_EFFECTS),hasBooleanValue:r(m,n.HAS_BOOLEAN_VALUE),hasNumericValue:r(m,n.HAS_NUMERIC_VALUE),hasPositiveNumericValue:r(m,n.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:r(m,n.HAS_OVERLOADED_BOOLEAN_VALUE)};if(f.mustUseAttribute&&f.mustUseProperty?"production"!==t.env.NODE_ENV?a(!1,"DOMProperty: Cannot require using both attribute and property: %s",d):a(!1):void 0,!f.mustUseProperty&&f.hasSideEffects?"production"!==t.env.NODE_ENV?a(!1,"DOMProperty: Properties that have side effects must use property: %s",d):a(!1):void 0,f.hasBooleanValue+f.hasNumericValue+f.hasOverloadedBooleanValue<=1?void 0:"production"!==t.env.NODE_ENV?a(!1,"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s",d):a(!1),"production"!==t.env.NODE_ENV&&(s.getPossibleStandardName[p]=d),c.hasOwnProperty(d)){var g=c[d];f.attributeName=g,"production"!==t.env.NODE_ENV&&(s.getPossibleStandardName[g]=d)}l.hasOwnProperty(d)&&(f.attributeNamespace=l[d]),u.hasOwnProperty(d)&&(f.propertyName=u[d]),h.hasOwnProperty(d)&&(f.mutationMethod=h[d]),s.properties[d]=f}}},i={},s={ID_ATTRIBUTE_NAME:"data-reactid",properties:{},getPossibleStandardName:"production"!==t.env.NODE_ENV?{}:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t2?n-2:0),a=2;n>a;a++)r[a-2]=arguments[a];if(void 0===t)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(0!==t.indexOf("Failed Composite propType: ")&&!e){var o=0,i="Warning: "+t.replace(/%s/g,function(){return r[o++]});"undefined"!=typeof console&&console.error(i);try{throw new Error(i)}catch(s){}}}),e.exports=a}).call(t,n(13))},function(e,t,n){"use strict";var r=n(36),a=n(37),o={processChildrenUpdates:r.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkupByID:r.dangerouslyReplaceNodeWithMarkupByID,unmountIDFromEnvironment:function(e){a.purgeID(e)}};e.exports=o},function(e,t,n){(function(t){"use strict";var r=n(16),a=n(31),o=n(37),i=n(27),s=n(22),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},c={updatePropertyByID:function(e,n,r){var i=o.getNode(e);l.hasOwnProperty(n)?"production"!==t.env.NODE_ENV?s(!1,"updatePropertyByID(...): %s",l[n]):s(!1):void 0,null!=r?a.setValueForProperty(i,n,r):a.deleteValueForProperty(i,n)},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=o.getNode(e);r.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;nr;r++)if(e.charAt(r)!==t.charAt(r))return r;return e.length===t.length?-1:n}function a(e){return e?e.nodeType===G?e.documentElement:e.firstChild:null}function o(e){var t=a(e);return t&&ee.getID(t)}function i(e){var n=s(e);if(n)if(q.hasOwnProperty(n)){var r=q[n];r!==e&&(h(r,n)?"production"!==t.env.NODE_ENV?V(!1,"ReactMount: Two valid but unequal nodes with the same `%s`: %s",U,n):V(!1):void 0,q[n]=e)}else q[n]=e;return n}function s(e){return e&&e.getAttribute&&e.getAttribute(U)||""}function l(e,t){var n=s(e);n!==t&&delete q[n],e.setAttribute(U,t),q[t]=e}function c(e){return q.hasOwnProperty(e)&&h(q[e],e)||(q[e]=ee.findReactNodeByID(e)),q[e]}function u(e){var t=D.get(e)._rootNodeID;return k.isNullComponentID(t)?null:(q.hasOwnProperty(t)&&h(q[t],t)||(q[t]=ee.findReactNodeByID(t)),q[t])}function h(e,n){if(e){s(e)!==n?"production"!==t.env.NODE_ENV?V(!1,"ReactMount: Unexpected modification of `%s`",U):V(!1):void 0;var r=ee.findReactContainerForID(n);if(r&&R(r,e))return!0}return!1}function d(e){delete q[e]}function p(e){var t=q[e];return t&&h(t,e)?void($=t):!1}function m(e){$=null,_.traverseAncestors(e,p);var t=$;return $=null,t}function f(e,n,r,a,o,i){if(C.useCreateElement&&(i=I({},i),r.nodeType===G?i[K]=r:i[K]=r.ownerDocument),"production"!==t.env.NODE_ENV){i===L&&(i={});var s=r.nodeName.toLowerCase();i[F.ancestorInfoContextKey]=F.updatedAncestorInfo(null,s,null)}var l=O.mountComponent(e,n,a,i);e._renderedComponent._topLevelWrapper=e,ee._mountImageIntoNode(l,r,o,a)}function g(e,t,n,r,a){var o=P.ReactReconcileTransaction.getPooled(r);o.perform(f,null,e,t,n,o,r,a),P.ReactReconcileTransaction.release(o)}function v(e,t){for(O.unmountComponent(e),t.nodeType===G&&(t=t.documentElement);t.lastChild;)t.removeChild(t.lastChild)}function y(e){var t=o(e);return t?t!==_.getReactRootIDFromNodeID(t):!1}function w(e){for(;e&&e.parentNode!==e;e=e.parentNode)if(1===e.nodeType){var t=s(e);if(t){var n,r=_.getReactRootIDFromNodeID(t),a=e;do if(n=s(a),a=a.parentNode,null==a)return null;while(n!==r);if(a===Q[r])return e}}return null}var b=n(32),E=n(38),x=n(14),C=n(50),N=n(51),k=n(53),_=n(54),D=n(56),T=n(57),S=n(27),O=n(59),M=n(62),P=n(63),I=n(48),L=n(67),R=n(68),A=n(71),V=n(22),B=n(28),z=n(76),F=n(79),j=n(34),U=b.ID_ATTRIBUTE_NAME,q={},W=1,G=9,X=11,K="__ReactMount_ownerDocument$"+Math.random().toString(36).slice(2),H={},Q={};if("production"!==t.env.NODE_ENV)var Y={};var J=[],$=null,Z=function(){};Z.prototype.isReactComponent={},"production"!==t.env.NODE_ENV&&(Z.displayName="TopLevelWrapper"),Z.prototype.render=function(){return this.props};var ee={TopLevelWrapper:Z,_instancesByReactRootID:H,scrollMonitor:function(e,t){t()},_updateRootComponent:function(e,n,r,i){return ee.scrollMonitor(r,function(){M.enqueueElementInternal(e,n),i&&M.enqueueCallbackInternal(e,i)}),"production"!==t.env.NODE_ENV&&(Y[o(r)]=a(r)),e},_registerComponent:function(e,n){!n||n.nodeType!==W&&n.nodeType!==G&&n.nodeType!==X?"production"!==t.env.NODE_ENV?V(!1,"_registerComponent(...): Target container is not a DOM element."):V(!1):void 0,E.ensureScrollValueMonitoring();var r=ee.registerContainer(n);return H[r]=e,r},_renderNewRootComponent:function(e,n,r,o){"production"!==t.env.NODE_ENV?j(null==x.current,"_renderNewRootComponent(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate. Check the render method of %s.",x.current&&x.current.getName()||"ReactCompositeComponent"):void 0;var i=A(e,null),s=ee._registerComponent(i,n);return P.batchedUpdates(g,i,s,n,r,o),"production"!==t.env.NODE_ENV&&(Y[s]=a(n)),i},renderSubtreeIntoContainer:function(e,n,r,a){return null==e||null==e._reactInternalInstance?"production"!==t.env.NODE_ENV?V(!1,"parentComponent must be a valid React Component"):V(!1):void 0,ee._renderSubtreeIntoContainer(e,n,r,a)},_renderSubtreeIntoContainer:function(e,n,r,i){N.isValidElement(n)?void 0:"production"!==t.env.NODE_ENV?V(!1,"ReactDOM.render(): Invalid component element.%s","string"==typeof n?" Instead of passing an element string, make sure to instantiate it by passing it to React.createElement.":"function"==typeof n?" Instead of passing a component class, make sure to instantiate it by passing it to React.createElement.":null!=n&&void 0!==n.props?" This may be caused by unintentionally loading two independent copies of React.":""):V(!1),"production"!==t.env.NODE_ENV?j(!r||!r.tagName||"BODY"!==r.tagName.toUpperCase(),"render(): Rendering components directly into document.body is discouraged, since its children are often manipulated by third-party scripts and browser extensions. This may lead to subtle reconciliation issues. Try rendering into a container element created for your app."):void 0;var l=new N(Z,null,null,null,null,null,n),c=H[o(r)];if(c){var u=c._currentElement,h=u.props;if(z(h,n)){var d=c._renderedComponent.getPublicInstance(),p=i&&function(){i.call(d)};return ee._updateRootComponent(c,l,r,p),d}ee.unmountComponentAtNode(r)}var m=a(r),f=m&&!!s(m),g=y(r);if("production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?j(!g,"render(...): Replacing React-rendered children with a new root component. If you intended to update the children of this node, you should instead have the existing children update their state and render the new components instead of calling ReactDOM.render."):void 0,!f||m.nextSibling))for(var v=m;v;){if(s(v)){"production"!==t.env.NODE_ENV?j(!1,"render(): Target node has markup rendered by React, but there are unrelated nodes as well. This is most commonly caused by white-space inserted around server-rendered markup."):void 0;break}v=v.nextSibling}var w=f&&!c&&!g,b=ee._renderNewRootComponent(l,r,w,null!=e?e._reactInternalInstance._processChildContext(e._reactInternalInstance._context):L)._renderedComponent.getPublicInstance();return i&&i.call(b),b},render:function(e,t,n){return ee._renderSubtreeIntoContainer(null,e,t,n)},registerContainer:function(e){var t=o(e);return t&&(t=_.getReactRootIDFromNodeID(t)),t||(t=_.createReactRootID()),Q[t]=e,t},unmountComponentAtNode:function(e){"production"!==t.env.NODE_ENV?j(null==x.current,"unmountComponentAtNode(): Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate. Check the render method of %s.",x.current&&x.current.getName()||"ReactCompositeComponent"):void 0,!e||e.nodeType!==W&&e.nodeType!==G&&e.nodeType!==X?"production"!==t.env.NODE_ENV?V(!1,"unmountComponentAtNode(...): Target container is not a DOM element."):V(!1):void 0;var n=o(e),r=H[n];if(!r){var a=y(e),i=s(e),l=i&&i===_.getReactRootIDFromNodeID(i);return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?j(!a,"unmountComponentAtNode(): The node you're attempting to unmount was rendered by React and is not a top-level container. %s",l?"You may have accidentally passed in a React root node instead of its container.":"Instead, have the parent component update its state and rerender in order to remove this component."):void 0),!1}return P.batchedUpdates(v,r,e),delete H[n],delete Q[n],"production"!==t.env.NODE_ENV&&delete Y[n],!0},findReactContainerForID:function(e){var n=_.getReactRootIDFromNodeID(e),r=Q[n];if("production"!==t.env.NODE_ENV){var a=Y[n];if(a&&a.parentNode!==r){"production"!==t.env.NODE_ENV?j(s(a)===n,"ReactMount: Root element ID differed from reactRootID."):void 0;var o=r.firstChild;o&&n===s(o)?Y[n]=o:"production"!==t.env.NODE_ENV?j(!1,"ReactMount: Root element has been removed from its original container. New container: %s",a.parentNode):void 0}}return r},findReactNodeByID:function(e){var t=ee.findReactContainerForID(e);return ee.findComponentRoot(t,e)},getFirstReactDOM:function(e){return w(e)},findComponentRoot:function(e,n){var r=J,a=0,o=m(n)||e;for("production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?j(null!=o,"React can't find the root component node for data-reactid value `%s`. If you're seeing this message, it probably means that you've loaded two copies of React on the page. At this time, only a single copy of React can be loaded at a time.",n):void 0),r[0]=o.firstChild,r.length=1;a when using tables, nesting tags like ,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",n,ee.getID(e)):V(!1)},_mountImageIntoNode:function(e,n,o,i){if(!n||n.nodeType!==W&&n.nodeType!==G&&n.nodeType!==X?"production"!==t.env.NODE_ENV?V(!1,"mountComponentIntoNode(...): Target container is not valid."):V(!1):void 0,o){var s=a(n);if(T.canReuseMarkup(e,s))return;var l=s.getAttribute(T.CHECKSUM_ATTR_NAME);s.removeAttribute(T.CHECKSUM_ATTR_NAME);var c=s.outerHTML;s.setAttribute(T.CHECKSUM_ATTR_NAME,l);var u=e;if("production"!==t.env.NODE_ENV){var h;n.nodeType===W?(h=document.createElement("div"),h.innerHTML=e,u=h.innerHTML):(h=document.createElement("iframe"),document.body.appendChild(h),h.contentDocument.write(e),u=h.contentDocument.documentElement.outerHTML,document.body.removeChild(h))}var d=r(u,c),p=" (client) "+u.substring(d-20,d+20)+"\n (server) "+c.substring(d-20,d+20);n.nodeType===G?"production"!==t.env.NODE_ENV?V(!1,"You're trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s",p):V(!1):void 0,"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?j(!1,"React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:\n%s",p):void 0); }if(n.nodeType===G?"production"!==t.env.NODE_ENV?V(!1,"You're trying to render a component to the document but you didn't use server rendering. We can't do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering."):V(!1):void 0,i.useCreateElement){for(;n.lastChild;)n.removeChild(n.lastChild);n.appendChild(e)}else B(n,e)},ownerDocumentContextKey:K,getReactRootID:o,getID:i,setID:l,getNode:c,getNodeFromInstance:u,isValid:h,purgeID:d};S.measureMethods(ee,"ReactMount",{_renderNewRootComponent:"_renderNewRootComponent",_mountImageIntoNode:"_mountImageIntoNode"}),e.exports=ee}).call(t,n(13))},function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,g)||(e[g]=m++,d[e[g]]={}),d[e[g]]}var a=n(39),o=n(40),i=n(41),s=n(46),l=n(27),c=n(47),u=n(48),h=n(49),d={},p=!1,m=0,f={topAbort:"abort",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},g="_reactListenersID"+String(Math.random()).slice(2),v=u({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,o=r(n),s=i.registrationNameDependencies[e],l=a.topLevelTypes,c=0;c-1?void 0:"production"!==t.env.NODE_ENV?i(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):i(!1),!c.plugins[r]){n.extractEvents?void 0:"production"!==t.env.NODE_ENV?i(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):i(!1),c.plugins[r]=n;var o=n.eventTypes;for(var u in o)a(o[u],n,u)?void 0:"production"!==t.env.NODE_ENV?i(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",u,e):i(!1)}}}function a(e,n,r){c.eventNameDispatchConfigs.hasOwnProperty(r)?"production"!==t.env.NODE_ENV?i(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",r):i(!1):void 0,c.eventNameDispatchConfigs[r]=e;var a=e.phasedRegistrationNames;if(a){for(var s in a)if(a.hasOwnProperty(s)){var l=a[s];o(l,n,r)}return!0}return e.registrationName?(o(e.registrationName,n,r),!0):!1}function o(e,n,r){c.registrationNameModules[e]?"production"!==t.env.NODE_ENV?i(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):i(!1):void 0,c.registrationNameModules[e]=n,c.registrationNameDependencies[e]=n.eventTypes[r].dependencies}var i=n(22),s=null,l={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(e){s?"production"!==t.env.NODE_ENV?i(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):i(!1):void 0,s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var n=!1;for(var a in e)if(e.hasOwnProperty(a)){var o=e[a];l.hasOwnProperty(a)&&l[a]===o||(l[a]?"production"!==t.env.NODE_ENV?i(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",a):i(!1):void 0,l[a]=o,n=!0)}n&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=c.registrationNameModules[t.phasedRegistrationNames[n]];if(r)return r}return null},_resetEventPlugins:function(){s=null;for(var e in l)l.hasOwnProperty(e)&&delete l[e];c.plugins.length=0;var t=c.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=c.registrationNameModules;for(var a in r)r.hasOwnProperty(a)&&delete r[a]}};e.exports=c}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(e){return e===y.topMouseUp||e===y.topTouchEnd||e===y.topTouchCancel}function a(e){return e===y.topMouseMove||e===y.topTouchMove}function o(e){return e===y.topMouseDown||e===y.topTouchStart}function i(e,t,n,r){var a=e.type||"unknown-event";e.currentTarget=v.Mount.getNode(r),t?m.invokeGuardedCallbackWithCatch(a,n,e,r):m.invokeGuardedCallback(a,n,e,r),e.currentTarget=null}function s(e,n){var r=e._dispatchListeners,a=e._dispatchIDs;if("production"!==t.env.NODE_ENV&&d(e),Array.isArray(r))for(var o=0;o1){for(var p=Array(d),m=0;d>m;m++)p[m]=arguments[m+2];o.children=p}if(e&&e.defaultProps){var f=e.defaultProps;for(a in f)"undefined"==typeof o[a]&&(o[a]=f[a])}return l(e,i,c,u,h,r.current,o)},l.createFactory=function(e){var t=l.createElement.bind(null,e);return t.type=e,t},l.cloneAndReplaceKey=function(e,t){var n=l(e.type,t,e.ref,e._self,e._source,e._owner,e.props);return n},l.cloneAndReplaceProps=function(e,n){var r=l(e.type,e.key,e.ref,e._self,e._source,e._owner,n);return"production"!==t.env.NODE_ENV&&(r._store.validated=e._store.validated),r},l.cloneElement=function(e,t,n){var o,i=a({},e.props),c=e.key,u=e.ref,h=e._self,d=e._source,p=e._owner;if(null!=t){void 0!==t.ref&&(u=t.ref,p=r.current),void 0!==t.key&&(c=""+t.key);for(o in t)t.hasOwnProperty(o)&&!s.hasOwnProperty(o)&&(i[o]=t[o])}var m=arguments.length-2;if(1===m)i.children=n;else if(m>1){for(var f=Array(m),g=0;m>g;g++)f[g]=arguments[g+2];i.children=f}return l(e.type,c,u,h,d,p,i)},l.isValidElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===i},e.exports=l}).call(t,n(13))},function(e,t,n){(function(t){"use strict";var n=!1;if("production"!==t.env.NODE_ENV)try{Object.defineProperty({},"x",{get:function(){}}),n=!0}catch(r){}e.exports=n}).call(t,n(13))},function(e,t){"use strict";function n(e){return!!o[e]}function r(e){o[e]=!0}function a(e){delete o[e]}var o={},i={isNullComponentID:n,registerNullComponentID:r,deregisterNullComponentID:a};e.exports=i},function(e,t,n){(function(t){"use strict";function r(e){return p+e.toString(36)}function a(e,t){return e.charAt(t)===p||t===e.length}function o(e){return""===e||e.charAt(0)===p&&e.charAt(e.length-1)!==p}function i(e,t){return 0===t.indexOf(e)&&a(t,e.length)}function s(e){return e?e.substr(0,e.lastIndexOf(p)):""}function l(e,n){if(o(e)&&o(n)?void 0:"production"!==t.env.NODE_ENV?d(!1,"getNextDescendantID(%s, %s): Received an invalid React DOM ID.",e,n):d(!1),i(e,n)?void 0:"production"!==t.env.NODE_ENV?d(!1,"getNextDescendantID(...): React has made an invalid assumption about the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.",e,n):d(!1),e===n)return e;var r,s=e.length+m;for(r=s;r=s;s++)if(a(e,s)&&a(n,s))i=s;else if(e.charAt(s)!==n.charAt(s))break;var l=e.substr(0,i);return o(l)?void 0:"production"!==t.env.NODE_ENV?d(!1,"getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s",e,n,l):d(!1),l}function u(e,n,r,a,o,c){e=e||"",n=n||"",e===n?"production"!==t.env.NODE_ENV?d(!1,"traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.",e):d(!1):void 0;var u=i(n,e);u||i(e,n)?void 0:"production"!==t.env.NODE_ENV?d(!1,"traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do not have a parent path.",e,n):d(!1);for(var h=0,p=u?s:l,m=e;;m=p(m,n)){var g;if(o&&m===e||c&&m===n||(g=r(m,u,a)),g===!1||m===n)break;h++1){var t=e.indexOf(p,1);return t>-1?e.substr(0,t):e}return null},traverseEnterLeave:function(e,t,n,r,a){var o=c(e,t);o!==e&&u(e,o,n,r,!1,!0),o!==t&&u(o,t,n,a,!0,!1)},traverseTwoPhase:function(e,t,n){e&&(u("",e,t,n,!0,!1),u(e,"",t,n,!1,!0))},traverseTwoPhaseSkipTarget:function(e,t,n){e&&(u("",e,t,n,!0,!0),u(e,"",t,n,!0,!0))},traverseAncestors:function(e,t,n){u("",e,t,n,!0,!1)},getFirstCommonAncestorID:c,_getNextDescendantID:l,isAncestorIDOf:i,SEPARATOR:p};e.exports=g}).call(t,n(13))},function(e,t){"use strict";var n={injectCreateReactRootIndex:function(e){r.createReactRootIndex=e}},r={createReactRootIndex:null,injection:n};e.exports=r},function(e,t){"use strict";var n={remove:function(e){e._reactInternalInstance=void 0},get:function(e){return e._reactInternalInstance},has:function(e){return void 0!==e._reactInternalInstance},set:function(e,t){e._reactInternalInstance=t}};e.exports=n},function(e,t,n){"use strict";var r=n(58),a=/\/?>/,o={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(e){var t=r(e);return e.replace(a," "+o.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(o.CHECKSUM_ATTR_NAME);n=n&&parseInt(n,10);var a=r(e);return a===n}};e.exports=o},function(e,t){"use strict";function n(e){for(var t=1,n=0,a=0,o=e.length,i=-4&o;i>a;){for(;aa;a++)n+=t+=e.charCodeAt(a);return t%=r,n%=r,t|n<<16}var r=65521;e.exports=n},function(e,t,n){"use strict";function r(){a.attachRefs(this,this._currentElement)}var a=n(60),o={mountComponent:function(e,t,n,a){var o=e.mountComponent(t,n,a);return e._currentElement&&null!=e._currentElement.ref&&n.getReactMountReady().enqueue(r,e),o},unmountComponent:function(e){a.detachRefs(e,e._currentElement),e.unmountComponent()},receiveComponent:function(e,t,n,o){var i=e._currentElement;if(t!==i||o!==e._context){var s=a.shouldUpdateRefs(i,t);s&&a.detachRefs(e,i),e.receiveComponent(t,n,o),s&&e._currentElement&&null!=e._currentElement.ref&&n.getReactMountReady().enqueue(r,e)}},performUpdateIfNecessary:function(e,t){e.performUpdateIfNecessary(t)}};e.exports=o},function(e,t,n){"use strict";function r(e,t,n){"function"==typeof e?e(t.getPublicInstance()):o.addComponentAsRefTo(t,e,n)}function a(e,t,n){"function"==typeof e?e(null):o.removeComponentAsRefFrom(t,e,n)}var o=n(61),i={};i.attachRefs=function(e,t){if(null!==t&&t!==!1){var n=t.ref;null!=n&&r(n,e,t._owner)}},i.shouldUpdateRefs=function(e,t){var n=null===e||e===!1,r=null===t||t===!1;return n||r||t._owner!==e._owner||t.ref!==e.ref},i.detachRefs=function(e,t){if(null!==t&&t!==!1){var n=t.ref;null!=n&&a(n,e,t._owner)}},e.exports=i},function(e,t,n){(function(t){"use strict";var r=n(22),a={isValidOwner:function(e){return!(!e||"function"!=typeof e.attachRef||"function"!=typeof e.detachRef)},addComponentAsRefTo:function(e,n,o){a.isValidOwner(o)?void 0:"production"!==t.env.NODE_ENV?r(!1,"addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner)."):r(!1),o.attachRef(n,e)},removeComponentAsRefFrom:function(e,n,o){a.isValidOwner(o)?void 0:"production"!==t.env.NODE_ENV?r(!1,"removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component's `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner)."):r(!1),o.getPublicInstance().refs[n]===e.getPublicInstance()&&o.detachRef(n)}};e.exports=a}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(e){l.enqueueUpdate(e)}function a(e,n){var r=s.get(e);return r?("production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?h(null==o.current,"%s(...): Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.",n):void 0),r):("production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?h(!n,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,e.constructor.displayName):void 0),null)}var o=n(14),i=n(51),s=n(56),l=n(63),c=n(48),u=n(22),h=n(34),d={isMounted:function(e){if("production"!==t.env.NODE_ENV){var n=o.current;null!==n&&("production"!==t.env.NODE_ENV?h(n._warnedAboutRefsInRender,"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",n.getName()||"A component"):void 0,n._warnedAboutRefsInRender=!0)}var r=s.get(e);return r?!!r._renderedComponent:!1},enqueueCallback:function(e,n){"function"!=typeof n?"production"!==t.env.NODE_ENV?u(!1,"enqueueCallback(...): You called `setProps`, `replaceProps`, `setState`, `replaceState`, or `forceUpdate` with a callback that isn't callable."):u(!1):void 0;var o=a(e);return o?(o._pendingCallbacks?o._pendingCallbacks.push(n):o._pendingCallbacks=[n],void r(o)):null},enqueueCallbackInternal:function(e,n){"function"!=typeof n?"production"!==t.env.NODE_ENV?u(!1,"enqueueCallback(...): You called `setProps`, `replaceProps`, `setState`, `replaceState`, or `forceUpdate` with a callback that isn't callable."):u(!1):void 0,e._pendingCallbacks?e._pendingCallbacks.push(n):e._pendingCallbacks=[n],r(e)},enqueueForceUpdate:function(e){var t=a(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,r(t))},enqueueReplaceState:function(e,t){var n=a(e,"replaceState");n&&(n._pendingStateQueue=[t],n._pendingReplaceState=!0,r(n))},enqueueSetState:function(e,t){var n=a(e,"setState");if(n){var o=n._pendingStateQueue||(n._pendingStateQueue=[]);o.push(t),r(n)}},enqueueSetProps:function(e,t){var n=a(e,"setProps");n&&d.enqueueSetPropsInternal(n,t)},enqueueSetPropsInternal:function(e,n){var a=e._topLevelWrapper;a?void 0:"production"!==t.env.NODE_ENV?u(!1,"setProps(...): You called `setProps` on a component with a parent. This is an anti-pattern since props will get reactively updated when rendered. Instead, change the owner's `render` method to pass the correct value as props to the component where it is created."):u(!1);var o=a._pendingElement||a._currentElement,s=o.props,l=c({},s.props,n);a._pendingElement=i.cloneAndReplaceProps(o,i.cloneAndReplaceProps(s,l)),r(a)},enqueueReplaceProps:function(e,t){var n=a(e,"replaceProps");n&&d.enqueueReplacePropsInternal(n,t)},enqueueReplacePropsInternal:function(e,n){var a=e._topLevelWrapper;a?void 0:"production"!==t.env.NODE_ENV?u(!1,"replaceProps(...): You called `replaceProps` on a component with a parent. This is an anti-pattern since props will get reactively updated when rendered. Instead, change the owner's `render` method to pass the correct value as props to the component where it is created."):u(!1);var o=a._pendingElement||a._currentElement,s=o.props;a._pendingElement=i.cloneAndReplaceProps(o,i.cloneAndReplaceProps(s,n)),r(a)},enqueueElementInternal:function(e,t){e._pendingElement=t,r(e)}};e.exports=d}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(){_.ReactReconcileTransaction&&b?void 0:"production"!==t.env.NODE_ENV?g(!1,"ReactUpdates: must inject a reconcile transaction class and batching strategy"):g(!1)}function a(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=u.getPooled(),this.reconcileTransaction=_.ReactReconcileTransaction.getPooled(!1)}function o(e,t,n,a,o,i){r(),b.batchedUpdates(e,t,n,a,o,i)}function i(e,t){return e._mountOrder-t._mountOrder}function s(e){var n=e.dirtyComponentsLength;n!==v.length?"production"!==t.env.NODE_ENV?g(!1,"Expected flush transaction's stored dirty-components length (%s) to match dirty-components array length (%s).",n,v.length):g(!1):void 0,v.sort(i);for(var r=0;n>r;r++){var a=v[r],o=a._pendingCallbacks;if(a._pendingCallbacks=null,p.performUpdateIfNecessary(a,e.reconcileTransaction),o)for(var s=0;su&&b[u]===E[u];u++)C=u;var N="(unknown)",k=b.slice(C+1).map(function(e){return e.getName()||N}),_=E.slice(C+1).map(function(e){return e.getName()||N}),D=[].concat(-1!==C?b[C].getName()||N:[],_,d,l?["..."]:[],k,e).join(" > "),T=!!s+"|"+e+"|"+d+"|"+D;if(g[T])return;if(g[T]=!0,s){var S="";"table"===d&&"tr"===e&&(S+=" Add a to your code to match the DOM tree generated by the browser."),"production"!==t.env.NODE_ENV?o(!1,"validateDOMNesting(...): <%s> cannot appear as a child of <%s>. See %s.%s",e,d,D,S):void 0}else"production"!==t.env.NODE_ENV?o(!1,"validateDOMNesting(...): <%s> cannot appear as a descendant of <%s>. See %s.",e,d,D):void 0}},i.ancestorInfoContextKey="__validateDOMNesting_ancestorInfo$"+Math.random().toString(36).slice(2),i.updatedAncestorInfo=d,i.isTagValidInContext=function(e,t){t=t||h;var n=t.parentTag,r=n&&n.tag;return p(e,r)&&!m(e,t)}}e.exports=i}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(){if(!k&&(k=!0,v.EventEmitter.injectReactEventListener(g),v.EventPluginHub.injectEventPluginOrder(s),v.EventPluginHub.injectInstanceHandle(y),v.EventPluginHub.injectMount(w),v.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:C,EnterLeaveEventPlugin:l,ChangeEventPlugin:o,SelectEventPlugin:E,BeforeInputEventPlugin:a}),v.NativeComponent.injectGenericComponentClass(m),v.NativeComponent.injectTextComponentClass(f),v.Class.injectMixin(h),v.DOMProperty.injectDOMPropertyConfig(u),v.DOMProperty.injectDOMPropertyConfig(N),v.EmptyComponent.injectEmptyComponent("noscript"),v.Updates.injectReconcileTransaction(b),v.Updates.injectBatchingStrategy(p),v.RootIndex.injectCreateReactRootIndex(c.canUseDOM?i.createReactRootIndex:x.createReactRootIndex),v.Component.injectEnvironment(d),"production"!==t.env.NODE_ENV)){var e=c.canUseDOM&&window.location.href||"";if(/[?&]react_perf\b/.test(e)){var r=n(151);r.start()}}}var a=n(81),o=n(89),i=n(92),s=n(93),l=n(94),c=n(18),u=n(98),h=n(99),d=n(35),p=n(101),m=n(102),f=n(15),g=n(127),v=n(130),y=n(54),w=n(37),b=n(134),E=n(139),x=n(140),C=n(141),N=n(150),k=!1;e.exports={inject:r}}).call(t,n(13))},function(e,t,n){"use strict";function r(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}function a(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function o(e){switch(e){case T.topCompositionStart:return S.compositionStart;case T.topCompositionEnd:return S.compositionEnd;case T.topCompositionUpdate:return S.compositionUpdate}}function i(e,t){return e===T.topKeyDown&&t.keyCode===E}function s(e,t){switch(e){case T.topKeyUp:return-1!==b.indexOf(t.keyCode);case T.topKeyDown:return t.keyCode!==E;case T.topKeyPress:case T.topMouseDown:case T.topBlur:return!0;default:return!1}}function l(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function c(e,t,n,r,a){var c,u;if(x?c=o(e):M?s(e,r)&&(c=S.compositionEnd):i(e,r)&&(c=S.compositionStart),!c)return null;k&&(M||c!==S.compositionStart?c===S.compositionEnd&&M&&(u=M.getData()):M=g.getPooled(t));var h=v.getPooled(c,n,r,a);if(u)h.data=u;else{var d=l(r);null!==d&&(h.data=d)}return m.accumulateTwoPhaseDispatches(h),h}function u(e,t){switch(e){case T.topCompositionEnd:return l(t);case T.topKeyPress:var n=t.which;return n!==_?null:(O=!0,D);case T.topTextInput:var r=t.data;return r===D&&O?null:r;default:return null}}function h(e,t){if(M){if(e===T.topCompositionEnd||s(e,t)){var n=M.getData();return g.release(M),M=null,n}return null}switch(e){case T.topPaste:return null;case T.topKeyPress:return t.which&&!a(t)?String.fromCharCode(t.which):null;case T.topCompositionEnd:return k?null:t.data;default:return null}}function d(e,t,n,r,a){var o;if(o=N?u(e,r):h(e,r),!o)return null;var i=y.getPooled(S.beforeInput,n,r,a);return i.data=o,m.accumulateTwoPhaseDispatches(i),i}var p=n(39),m=n(82),f=n(18),g=n(83),v=n(85),y=n(87),w=n(88),b=[9,13,27,32],E=229,x=f.canUseDOM&&"CompositionEvent"in window,C=null;f.canUseDOM&&"documentMode"in document&&(C=document.documentMode);var N=f.canUseDOM&&"TextEvent"in window&&!C&&!r(),k=f.canUseDOM&&(!x||C&&C>8&&11>=C),_=32,D=String.fromCharCode(_),T=p.topLevelTypes,S={beforeInput:{phasedRegistrationNames:{bubbled:w({onBeforeInput:null}),captured:w({onBeforeInputCapture:null})},dependencies:[T.topCompositionEnd,T.topKeyPress,T.topTextInput,T.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:w({onCompositionEnd:null}),captured:w({onCompositionEndCapture:null})},dependencies:[T.topBlur,T.topCompositionEnd,T.topKeyDown,T.topKeyPress,T.topKeyUp,T.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:w({onCompositionStart:null}),captured:w({onCompositionStartCapture:null})},dependencies:[T.topBlur,T.topCompositionStart,T.topKeyDown,T.topKeyPress,T.topKeyUp,T.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:w({onCompositionUpdate:null}),captured:w({onCompositionUpdateCapture:null})},dependencies:[T.topBlur,T.topCompositionUpdate,T.topKeyDown,T.topKeyPress,T.topKeyUp,T.topMouseDown]}},O=!1,M=null,P={eventTypes:S,extractEvents:function(e,t,n,r,a){return[c(e,t,n,r,a),d(e,t,n,r,a)]}};e.exports=P},function(e,t,n){(function(t){"use strict";function r(e,t,n){var r=t.dispatchConfig.phasedRegistrationNames[n];return w(e,r)}function a(e,n,a){"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?f(e,"Dispatching id must not be null"):void 0);var o=n?y.bubbled:y.captured,i=r(e,a,o);i&&(a._dispatchListeners=g(a._dispatchListeners,i),a._dispatchIDs=g(a._dispatchIDs,e))}function o(e){e&&e.dispatchConfig.phasedRegistrationNames&&m.injection.getInstanceHandle().traverseTwoPhase(e.dispatchMarker,a,e)}function i(e){e&&e.dispatchConfig.phasedRegistrationNames&&m.injection.getInstanceHandle().traverseTwoPhaseSkipTarget(e.dispatchMarker,a,e)}function s(e,t,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,a=w(e,r);a&&(n._dispatchListeners=g(n._dispatchListeners,a),n._dispatchIDs=g(n._dispatchIDs,e))}}function l(e){e&&e.dispatchConfig.registrationName&&s(e.dispatchMarker,null,e)}function c(e){v(e,o)}function u(e){v(e,i)}function h(e,t,n,r){m.injection.getInstanceHandle().traverseEnterLeave(n,r,s,e,t)}function d(e){v(e,l)}var p=n(39),m=n(40),f=n(34),g=n(44),v=n(45),y=p.PropagationPhases,w=m.getListener,b={accumulateTwoPhaseDispatches:c,accumulateTwoPhaseDispatchesSkipTarget:u,accumulateDirectDispatches:d,accumulateEnterLeaveDispatches:h};e.exports=b}).call(t,n(13))},function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var a=n(65),o=n(48),i=n(84);o(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[i()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,a=this.getText(),o=a.length;for(e=0;r>e&&n[e]===a[e];e++);var i=r-e;for(t=1;i>=t&&n[r-t]===a[o-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=a.slice(e,s),this._fallbackText}}),a.addPoolingTo(r),e.exports=r},function(e,t,n){"use strict";function r(){return!o&&a.canUseDOM&&(o="textContent"in document.documentElement?"textContent":"innerText"),o}var a=n(18),o=null;e.exports=r},function(e,t,n){"use strict";function r(e,t,n,r){a.call(this,e,t,n,r)}var a=n(86),o={data:null};a.augmentClass(r,o),e.exports=r},function(e,t,n){(function(t){"use strict";function r(e,t,n,r){this.dispatchConfig=e,this.dispatchMarker=t,this.nativeEvent=n,this.target=r,this.currentTarget=r;var a=this.constructor.Interface;for(var o in a)if(a.hasOwnProperty(o)){var s=a[o];s?this[o]=s(n):this[o]=n[o]}var l=null!=n.defaultPrevented?n.defaultPrevented:n.returnValue===!1;l?this.isDefaultPrevented=i.thatReturnsTrue:this.isDefaultPrevented=i.thatReturnsFalse,this.isPropagationStopped=i.thatReturnsFalse}var a=n(65),o=n(48),i=n(24),s=n(34),l={type:null,currentTarget:i.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};o(r.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?s(e,"This synthetic event is reused for performance reasons. If you're seeing this, you're calling `preventDefault` on a released/nullified synthetic event. This is a no-op. See https://fb.me/react-event-pooling for more information."):void 0),e&&(e.preventDefault?e.preventDefault():e.returnValue=!1,this.isDefaultPrevented=i.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?s(e,"This synthetic event is reused for performance reasons. If you're seeing this, you're calling `stopPropagation` on a released/nullified synthetic event. This is a no-op. See https://fb.me/react-event-pooling for more information."):void 0),e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,this.isPropagationStopped=i.thatReturnsTrue)},persist:function(){this.isPersistent=i.thatReturnsTrue},isPersistent:i.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var t in e)this[t]=null;this.dispatchConfig=null,this.dispatchMarker=null,this.nativeEvent=null}}),r.Interface=l,r.augmentClass=function(e,t){var n=this,r=Object.create(n.prototype);o(r,e.prototype),e.prototype=r,e.prototype.constructor=e,e.Interface=o({},n.Interface,t),e.augmentClass=n.augmentClass,a.addPoolingTo(e,a.fourArgumentPooler)},a.addPoolingTo(r,a.fourArgumentPooler),e.exports=r}).call(t,n(13))},function(e,t,n){"use strict";function r(e,t,n,r){a.call(this,e,t,n,r)}var a=n(86),o={data:null};a.augmentClass(r,o),e.exports=r},function(e,t){"use strict";var n=function(e){var t;for(t in e)if(e.hasOwnProperty(t))return t;return null};e.exports=n},function(e,t,n){"use strict";function r(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function a(e){var t=C.getPooled(S.change,M,e,N(e));b.accumulateTwoPhaseDispatches(t),x.batchedUpdates(o,t)}function o(e){w.enqueueEvents(e),w.processEventQueue(!1)}function i(e,t){O=e,M=t,O.attachEvent("onchange",a)}function s(){O&&(O.detachEvent("onchange",a),O=null,M=null)}function l(e,t,n){return e===T.topChange?n:void 0}function c(e,t,n){e===T.topFocus?(s(),i(t,n)):e===T.topBlur&&s()}function u(e,t){O=e,M=t,P=e.value,I=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(O,"value",A),O.attachEvent("onpropertychange",d)}function h(){O&&(delete O.value,O.detachEvent("onpropertychange",d),O=null,M=null,P=null,I=null)}function d(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==P&&(P=t,a(e))}}function p(e,t,n){return e===T.topInput?n:void 0}function m(e,t,n){e===T.topFocus?(h(),u(t,n)):e===T.topBlur&&h()}function f(e,t,n){return e!==T.topSelectionChange&&e!==T.topKeyUp&&e!==T.topKeyDown||!O||O.value===P?void 0:(P=O.value,M)}function g(e){return e.nodeName&&"input"===e.nodeName.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function v(e,t,n){return e===T.topClick?n:void 0}var y=n(39),w=n(40),b=n(82),E=n(18),x=n(63),C=n(86),N=n(90),k=n(49),_=n(91),D=n(88),T=y.topLevelTypes,S={change:{phasedRegistrationNames:{bubbled:D({onChange:null}),captured:D({onChangeCapture:null})},dependencies:[T.topBlur,T.topChange,T.topClick,T.topFocus,T.topInput,T.topKeyDown,T.topKeyUp,T.topSelectionChange]}},O=null,M=null,P=null,I=null,R=!1;E.canUseDOM&&(R=k("change")&&(!("documentMode"in document)||document.documentMode>8));var L=!1;E.canUseDOM&&(L=k("input")&&(!("documentMode"in document)||document.documentMode>9));var A={get:function(){return I.get.call(this)},set:function(e){P=""+e,I.set.call(this,e)}},V={eventTypes:S,extractEvents:function(e,t,n,a,o){var i,s;if(r(t)?R?i=l:s=c:_(t)?L?i=p:(i=f,s=m):g(t)&&(i=v),i){var u=i(e,t,n);if(u){var h=C.getPooled(S.change,u,a,o);return h.type="change",b.accumulateTwoPhaseDispatches(h),h}}s&&s(e,t,n)}};e.exports=V},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return 3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t){"use strict";function n(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&r[e.type]||"textarea"===t)}var r={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=n},function(e,t){"use strict";var n=0,r={createReactRootIndex:function(){return n++}};e.exports=r},function(e,t,n){"use strict";var r=n(88),a=[r({ResponderEventPlugin:null}),r({SimpleEventPlugin:null}),r({TapEventPlugin:null}),r({EnterLeaveEventPlugin:null}),r({ChangeEventPlugin:null}),r({SelectEventPlugin:null}),r({BeforeInputEventPlugin:null})];e.exports=a},function(e,t,n){"use strict";var r=n(39),a=n(82),o=n(95),i=n(37),s=n(88),l=r.topLevelTypes,c=i.getFirstReactDOM,u={mouseEnter:{registrationName:s({onMouseEnter:null}),dependencies:[l.topMouseOut,l.topMouseOver]},mouseLeave:{registrationName:s({onMouseLeave:null}),dependencies:[l.topMouseOut,l.topMouseOver]}},h=[null,null],d={eventTypes:u,extractEvents:function(e,t,n,r,s){if(e===l.topMouseOver&&(r.relatedTarget||r.fromElement))return null;if(e!==l.topMouseOut&&e!==l.topMouseOver)return null;var d;if(t.window===t)d=t;else{var p=t.ownerDocument;d=p?p.defaultView||p.parentWindow:window}var m,f,g="",v="";if(e===l.topMouseOut?(m=t,g=n,f=c(r.relatedTarget||r.toElement),f?v=i.getID(f):f=d,f=f||d):(m=d,f=t,v=n),m===f)return null;var y=o.getPooled(u.mouseLeave,g,r,s);y.type="mouseleave",y.target=m,y.relatedTarget=f;var w=o.getPooled(u.mouseEnter,v,r,s);return w.type="mouseenter",w.target=f,w.relatedTarget=m,a.accumulateEnterLeaveDispatches(y,w,g,v),h[0]=y,h[1]=w,h}};e.exports=d},function(e,t,n){"use strict";function r(e,t,n,r){a.call(this,e,t,n,r)}var a=n(96),o=n(47),i=n(97),s={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:i,button:function(e){var t=e.button;return"which"in e?t:2===t?2:4===t?1:0},buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},pageX:function(e){return"pageX"in e?e.pageX:e.clientX+o.currentScrollLeft},pageY:function(e){return"pageY"in e?e.pageY:e.clientY+o.currentScrollTop}};a.augmentClass(r,s),e.exports=r},function(e,t,n){"use strict";function r(e,t,n,r){a.call(this,e,t,n,r)}var a=n(86),o=n(90),i={view:function(e){if(e.view)return e.view;var t=o(e);if(null!=t&&t.window===t)return t;var n=t.ownerDocument;return n?n.defaultView||n.parentWindow:window},detail:function(e){return e.detail||0}};a.augmentClass(r,i),e.exports=r},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=a[e];return r?!!n[r]:!1}function r(e){return n}var a={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t,n){"use strict";var r,a=n(32),o=n(18),i=a.injection.MUST_USE_ATTRIBUTE,s=a.injection.MUST_USE_PROPERTY,l=a.injection.HAS_BOOLEAN_VALUE,c=a.injection.HAS_SIDE_EFFECTS,u=a.injection.HAS_NUMERIC_VALUE,h=a.injection.HAS_POSITIVE_NUMERIC_VALUE,d=a.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(o.canUseDOM){var p=document.implementation;r=p&&p.hasFeature&&p.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var m={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:i|l,allowTransparency:i,alt:null,async:l,autoComplete:null,autoPlay:l,capture:i|l,cellPadding:null,cellSpacing:null,charSet:i,challenge:i,checked:s|l,classID:i,className:r?i:s,cols:i|h,colSpan:null,content:null,contentEditable:null,contextMenu:i,controls:s|l,coords:null,crossOrigin:null,data:null,dateTime:i,"default":l,defer:l,dir:null,disabled:i|l,download:d,draggable:null,encType:null,form:i,formAction:i,formEncType:i,formMethod:i,formNoValidate:l,formTarget:i,frameBorder:i,headers:null,height:i,hidden:i|l,high:null,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:s,inputMode:i,integrity:null,is:i,keyParams:i,keyType:i,kind:null,label:null,lang:null,list:i,loop:s|l,low:null,manifest:i,marginHeight:null,marginWidth:null,max:null,maxLength:i,media:i,mediaGroup:null,method:null,min:null,minLength:i,multiple:s|l,muted:s|l,name:null,nonce:i,noValidate:l,open:l,optimum:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:s|l,rel:null,required:l,reversed:l,role:i,rows:i|h,rowSpan:null,sandbox:null,scope:null,scoped:l,scrolling:null,seamless:i|l,selected:s|l,shape:null,size:i|h,sizes:i,span:h,spellCheck:null,src:null,srcDoc:s,srcLang:null,srcSet:i,start:u,step:null,style:null,summary:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:s|c,width:i,wmode:i,wrap:null,about:i,datatype:i,inlist:i,prefix:i,property:i,resource:i,"typeof":i,vocab:i,autoCapitalize:i,autoCorrect:i,autoSave:null,color:null,itemProp:i,itemScope:i|l,itemType:i,itemID:i,itemRef:i,results:null,security:i,unselectable:i},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoComplete:"autocomplete",autoFocus:"autofocus",autoPlay:"autoplay",autoSave:"autosave",encType:"encoding",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};e.exports=m},function(e,t,n){(function(t){"use strict";var r=n(56),a=n(100),o=n(34),i="_getDOMNodeDidWarn",s={getDOMNode:function(){return"production"!==t.env.NODE_ENV?o(this.constructor[i],"%s.getDOMNode(...) is deprecated. Please use ReactDOM.findDOMNode(instance) instead.",r.get(this).getName()||this.tagName||"Unknown"):void 0,this.constructor[i]=!0,a(this)}};e.exports=s}).call(t,n(13))},function(e,t,n){(function(t){"use strict";function r(e){if("production"!==t.env.NODE_ENV){var n=a.current;null!==n&&("production"!==t.env.NODE_ENV?l(n._warnedAboutRefsInRender,"%s is accessing getDOMNode or findDOMNode inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",n.getName()||"A component"):void 0,n._warnedAboutRefsInRender=!0)}return null==e?null:1===e.nodeType?e:o.has(e)?i.getNodeFromInstance(e):(null!=e.render&&"function"==typeof e.render?"production"!==t.env.NODE_ENV?s(!1,"findDOMNode was called on an unmounted component."):s(!1):void 0,void("production"!==t.env.NODE_ENV?s(!1,"Element appears to be neither ReactComponent nor DOMNode (keys: %s)",Object.keys(e)):s(!1)))}var a=n(14),o=n(56),i=n(37),s=n(22),l=n(34);e.exports=r}).call(t,n(13))},function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var a=n(63),o=n(66),i=n(48),s=n(24),l={initialize:s,close:function(){d.isBatchingUpdates=!1}},c={initialize:s,close:a.flushBatchedUpdates.bind(a)},u=[c,l];i(r.prototype,o.Mixin,{getTransactionWrappers:function(){return u}});var h=new r,d={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,a,o){var i=d.isBatchingUpdates;d.isBatchingUpdates=!0,i?e(t,n,r,a,o):h.perform(e,null,t,n,r,a,o)}};e.exports=d},function(e,t,n){(function(t){"use strict";function r(e){if(e){var t=e._currentElement._owner||null;if(t){var n=t.getName();if(n)return" This DOM node was rendered by `"+n+"`."}}return""}function a(){if("production"!==t.env.NODE_ENV){var e=this._reactInternalComponent;"production"!==t.env.NODE_ENV?H(!1,"ReactDOMComponent: Do not access .getDOMNode() of a DOM node; instead, use the node directly.%s",r(e)):void 0}return this}function o(){var e=this._reactInternalComponent;return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?H(!1,"ReactDOMComponent: Do not access .isMounted() of a DOM node.%s",r(e)):void 0),!!e}function i(){if("production"!==t.env.NODE_ENV){var e=this._reactInternalComponent;"production"!==t.env.NODE_ENV?H(!1,"ReactDOMComponent: Do not access .setState(), .replaceState(), or .forceUpdate() of a DOM node. This is a no-op.%s",r(e)):void 0}}function s(e,n){var a=this._reactInternalComponent;"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?H(!1,"ReactDOMComponent: Do not access .setProps() of a DOM node. Instead, call ReactDOM.render again at the top level.%s",r(a)):void 0),a&&(V.enqueueSetPropsInternal(a,e),n&&V.enqueueCallbackInternal(a,n))}function l(e,n){var a=this._reactInternalComponent;"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?H(!1,"ReactDOMComponent: Do not access .replaceProps() of a DOM node. Instead, call ReactDOM.render again at the top level.%s",r(a)):void 0),a&&(V.enqueueReplacePropsInternal(a,e),n&&V.enqueueCallbackInternal(a,n))}function c(e){if("object"==typeof e){if(Array.isArray(e))return"["+e.map(c).join(", ")+"]";var t=[];for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=/^[a-z$_][\w$_]*$/i.test(n)?n:JSON.stringify(n);t.push(r+": "+c(e[n]))}return"{"+t.join(", ")+"}"}return"string"==typeof e?JSON.stringify(e):"function"==typeof e?"[function object]":String(e)}function u(e,n,r){if(null!=e&&null!=n&&!X(e,n)){var a,o=r._tag,i=r._currentElement._owner;i&&(a=i.getName());var s=a+"|"+o;re.hasOwnProperty(s)||(re[s]=!0,"production"!==t.env.NODE_ENV?H(!1,"`%s` was passed a style object that has previously been mutated. Mutating `style` is deprecated. Consider cloning it beforehand. Check the `render` %s. Previous style: %s. Mutated style: %s.",o,i?"of `"+a+"`":"using <"+o+">",c(e),c(n)):void 0)}}function h(e,n){n&&("production"!==t.env.NODE_ENV&&se[e._tag]&&("production"!==t.env.NODE_ENV?H(null==n.children&&null==n.dangerouslySetInnerHTML,"%s is a void element tag and must not have `children` or use `props.dangerouslySetInnerHTML`.%s",e._tag,e._currentElement._owner?" Check the render method of "+e._currentElement._owner.getName()+".":""):void 0),null!=n.dangerouslySetInnerHTML&&(null!=n.children?"production"!==t.env.NODE_ENV?U(!1,"Can only set one of `children` or `props.dangerouslySetInnerHTML`."):U(!1):void 0,"object"==typeof n.dangerouslySetInnerHTML&&te in n.dangerouslySetInnerHTML?void 0:"production"!==t.env.NODE_ENV?U(!1,"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information."):U(!1)),"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?H(null==n.innerHTML,"Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`."):void 0,"production"!==t.env.NODE_ENV?H(!n.contentEditable||null==n.children,"A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional."):void 0),null!=n.style&&"object"!=typeof n.style?"production"!==t.env.NODE_ENV?U(!1,"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.%s",r(e)):U(!1):void 0)}function d(e,n,r,a){"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?H("onScroll"!==n||F("scroll",!0),"This browser doesn't support the `onScroll` event"):void 0);var o=R.findReactContainerForID(e);if(o){var i=o.nodeType===ne?o.ownerDocument:o;Q(n,i)}a.getReactMountReady().enqueue(p,{id:e,registrationName:n,listener:r})}function p(){var e=this;D.putListener(e.id,e.registrationName,e.listener)}function m(){var e=this;e._rootNodeID?void 0:"production"!==t.env.NODE_ENV?U(!1,"Must be mounted to trap events"):U(!1);var n=R.getNode(e._rootNodeID);switch(n?void 0:"production"!==t.env.NODE_ENV?U(!1,"trapBubbledEvent(...): Requires node to be rendered."):U(!1),e._tag){case"iframe":e._wrapperState.listeners=[D.trapBubbledEvent(_.topLevelTypes.topLoad,"load",n)];break;case"video":case"audio":e._wrapperState.listeners=[];for(var r in ae)ae.hasOwnProperty(r)&&e._wrapperState.listeners.push(D.trapBubbledEvent(_.topLevelTypes[r],ae[r],n));break;case"img":e._wrapperState.listeners=[D.trapBubbledEvent(_.topLevelTypes.topError,"error",n),D.trapBubbledEvent(_.topLevelTypes.topLoad,"load",n)];break;case"form":e._wrapperState.listeners=[D.trapBubbledEvent(_.topLevelTypes.topReset,"reset",n),D.trapBubbledEvent(_.topLevelTypes.topSubmit,"submit",n)]}}function f(){O.mountReadyWrapper(this)}function g(){P.postUpdateWrapper(this)}function v(e){ue.call(ce,e)||(le.test(e)?void 0:"production"!==t.env.NODE_ENV?U(!1,"Invalid tag: %s",e):U(!1),ce[e]=!0)}function y(e,t){e=B({},e);var n=e[K.ancestorInfoContextKey];return e[K.ancestorInfoContextKey]=K.updatedAncestorInfo(n,t._tag,t),e}function w(e,t){return e.indexOf("-")>=0||null!=t.is}function b(e){v(e),this._tag=e.toLowerCase(),this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._rootNodeID=null,this._wrapperState=null,this._topLevelWrapper=null,this._nodeWithLegacyProperties=null,"production"!==t.env.NODE_ENV&&(this._unprocessedContextDev=null,this._processedContextDev=null)}var E,x=n(103),C=n(105),N=n(32),k=n(31),_=n(39),D=n(38),T=n(35),S=n(113),O=n(114),M=n(118),P=n(121),I=n(122),R=n(37),L=n(123),A=n(27),V=n(62),B=n(48),z=n(52),j=n(30),U=n(22),F=n(49),q=n(88),W=n(28),G=n(29),X=n(126),K=n(79),H=n(34),Y=D.deleteListener,Q=D.listenTo,J=D.registrationNameModules,$={string:!0,number:!0},Z=q({children:null}),ee=q({style:null}),te=q({__html:null}),ne=1;"production"!==t.env.NODE_ENV&&(E={props:{enumerable:!1,get:function(){var e=this._reactInternalComponent;return"production"!==t.env.NODE_ENV?H(!1,"ReactDOMComponent: Do not access .props of a DOM node; instead, recreate the props as `render` did originally or read the DOM properties/attributes directly from this node (e.g., this.refs.box.className).%s",r(e)):void 0,e._currentElement.props}}});var re={},ae={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled", -topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},oe={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},ie={listing:!0,pre:!0,textarea:!0},se=B({menuitem:!0},oe),le=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ce={},ue={}.hasOwnProperty;b.displayName="ReactDOMComponent",b.Mixin={construct:function(e){this._currentElement=e},mountComponent:function(e,n,r){this._rootNodeID=e;var a=this._currentElement.props;switch(this._tag){case"iframe":case"img":case"form":case"video":case"audio":this._wrapperState={listeners:null},n.getReactMountReady().enqueue(m,this);break;case"button":a=S.getNativeProps(this,a,r);break;case"input":O.mountWrapper(this,a,r),a=O.getNativeProps(this,a,r);break;case"option":M.mountWrapper(this,a,r),a=M.getNativeProps(this,a,r);break;case"select":P.mountWrapper(this,a,r),a=P.getNativeProps(this,a,r),r=P.processChildContext(this,a,r);break;case"textarea":I.mountWrapper(this,a,r),a=I.getNativeProps(this,a,r)}h(this,a),"production"!==t.env.NODE_ENV&&r[K.ancestorInfoContextKey]&&K(this._tag,this,r[K.ancestorInfoContextKey]),"production"!==t.env.NODE_ENV&&(this._unprocessedContextDev=r,this._processedContextDev=y(r,this),r=this._processedContextDev);var o;if(n.useCreateElement){var i=r[R.ownerDocumentContextKey],s=i.createElement(this._currentElement.type);k.setAttributeForID(s,this._rootNodeID),R.getID(s),this._updateDOMProperties({},a,n,s),this._createInitialChildren(n,a,r,s),o=s}else{var l=this._createOpenTagMarkupAndPutListeners(n,a),c=this._createContentMarkup(n,a,r);o=!c&&oe[this._tag]?l+"/>":l+">"+c+""}switch(this._tag){case"input":n.getReactMountReady().enqueue(f,this);case"button":case"select":case"textarea":a.autoFocus&&n.getReactMountReady().enqueue(x.focusDOMComponent,this)}return o},_createOpenTagMarkupAndPutListeners:function(e,n){var r="<"+this._currentElement.type;for(var a in n)if(n.hasOwnProperty(a)){var o=n[a];if(null!=o)if(J.hasOwnProperty(a))o&&d(this._rootNodeID,a,o,e);else{a===ee&&(o&&("production"!==t.env.NODE_ENV&&(this._previousStyle=o),o=this._previousStyleCopy=B({},n.style)),o=C.createMarkupForStyles(o));var i=null;null!=this._tag&&w(this._tag,n)?a!==Z&&(i=k.createMarkupForCustomAttribute(a,o)):i=k.createMarkupForProperty(a,o),i&&(r+=" "+i)}}if(e.renderToStaticMarkup)return r;var s=k.createMarkupForID(this._rootNodeID);return r+" "+s},_createContentMarkup:function(e,t,n){var r="",a=t.dangerouslySetInnerHTML;if(null!=a)null!=a.__html&&(r=a.__html);else{var o=$[typeof t.children]?t.children:null,i=null!=o?null:t.children;if(null!=o)r=j(o);else if(null!=i){var s=this.mountChildren(i,e,n);r=s.join("")}}return ie[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var a=t.dangerouslySetInnerHTML;if(null!=a)null!=a.__html&&W(r,a.__html);else{var o=$[typeof t.children]?t.children:null,i=null!=o?null:t.children;if(null!=o)G(r,o);else if(null!=i)for(var s=this.mountChildren(i,e,n),l=0;l tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg , , and ) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.",this._tag):U(!1)}if(this.unmountChildren(),D.deleteAllListeners(this._rootNodeID),T.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null,this._wrapperState=null,this._nodeWithLegacyProperties){var r=this._nodeWithLegacyProperties;r._reactInternalComponent=null,this._nodeWithLegacyProperties=null}},getPublicInstance:function(){if(!this._nodeWithLegacyProperties){var e=R.getNode(this._rootNodeID);e._reactInternalComponent=this,e.getDOMNode=a,e.isMounted=o,e.setState=i,e.replaceState=i,e.forceUpdate=i,e.setProps=s,e.replaceProps=l,"production"!==t.env.NODE_ENV&&z?Object.defineProperties(e,E):e.props=this._currentElement.props,this._nodeWithLegacyProperties=e}return this._nodeWithLegacyProperties}},A.measureMethods(b,"ReactDOMComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent"}),B(b.prototype,b.Mixin,L.Mixin),e.exports=b}).call(t,n(13))},function(e,t,n){"use strict";var r=n(37),a=n(100),o=n(104),i={componentDidMount:function(){this.props.autoFocus&&o(a(this))}},s={Mixin:i,focusDOMComponent:function(){o(r.getNode(this._rootNodeID))}};e.exports=s},function(e,t){"use strict";function n(e){try{e.focus()}catch(t){}}e.exports=n},function(e,t,n){(function(t){"use strict";var r=n(106),a=n(18),o=n(27),i=n(107),s=n(109),l=n(110),c=n(112),u=n(34),h=c(function(e){return l(e)}),d=!1,p="cssFloat";if(a.canUseDOM){var m=document.createElement("div").style;try{m.font=""}catch(f){d=!0}void 0===document.documentElement.style.cssFloat&&(p="styleFloat")}if("production"!==t.env.NODE_ENV)var g=/^(?:webkit|moz|o)[A-Z]/,v=/;\s*$/,y={},w={},b=function(e){y.hasOwnProperty(e)&&y[e]||(y[e]=!0,"production"!==t.env.NODE_ENV?u(!1,"Unsupported style property %s. Did you mean %s?",e,i(e)):void 0)},E=function(e){y.hasOwnProperty(e)&&y[e]||(y[e]=!0,"production"!==t.env.NODE_ENV?u(!1,"Unsupported vendor-prefixed style property %s. Did you mean %s?",e,e.charAt(0).toUpperCase()+e.slice(1)):void 0)},x=function(e,n){w.hasOwnProperty(n)&&w[n]||(w[n]=!0,"production"!==t.env.NODE_ENV?u(!1,'Style property values shouldn\'t contain a semicolon. Try "%s: %s" instead.',e,n.replace(v,"")):void 0)},C=function(e,t){e.indexOf("-")>-1?b(e):g.test(e)?E(e):v.test(t)&&x(e,t)};var N={createMarkupForStyles:function(e){var n="";for(var r in e)if(e.hasOwnProperty(r)){var a=e[r];"production"!==t.env.NODE_ENV&&C(r,a),null!=a&&(n+=h(r)+":",n+=s(r,a)+";")}return n||null},setValueForStyles:function(e,n){var a=e.style;for(var o in n)if(n.hasOwnProperty(o)){"production"!==t.env.NODE_ENV&&C(o,n[o]);var i=s(o,n[o]);if("float"===o&&(o=p),i)a[o]=i;else{var l=d&&r.shorthandPropertyExpansions[o];if(l)for(var c in l)a[c]="";else a[o]=""}}}};o.measureMethods(N,"CSSPropertyOperations",{setValueForStyles:"setValueForStyles"}),e.exports=N}).call(t,n(13))},function(e,t){"use strict";function n(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var r={animationIterationCount:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,stopOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0},a=["Webkit","ms","Moz","O"];Object.keys(r).forEach(function(e){a.forEach(function(t){r[n(t,e)]=r[e]})});var o={background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}},i={isUnitlessNumber:r,shorthandPropertyExpansions:o};e.exports=i},function(e,t,n){"use strict";function r(e){return a(e.replace(o,"ms-"))}var a=n(108),o=/^-ms-/;e.exports=r},function(e,t){"use strict";function n(e){return e.replace(r,function(e,t){return t.toUpperCase()})}var r=/-(.)/g;e.exports=n},function(e,t,n){"use strict";function r(e,t){var n=null==t||"boolean"==typeof t||""===t;if(n)return"";var r=isNaN(t);return r||0===t||o.hasOwnProperty(e)&&o[e]?""+t:("string"==typeof t&&(t=t.trim()),t+"px")}var a=n(106),o=a.isUnitlessNumber;e.exports=r},function(e,t,n){"use strict";function r(e){return a(e).replace(o,"-ms-")}var a=n(111),o=/^ms-/;e.exports=r},function(e,t){"use strict";function n(e){return e.replace(r,"-$1").toLowerCase()}var r=/([A-Z])/g;e.exports=n},function(e,t){"use strict";function n(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=n},function(e,t){"use strict";var n={onClick:!0,onDoubleClick:!0,onMouseDown:!0,onMouseMove:!0,onMouseUp:!0,onClickCapture:!0,onDoubleClickCapture:!0,onMouseDownCapture:!0,onMouseMoveCapture:!0,onMouseUpCapture:!0},r={getNativeProps:function(e,t,r){if(!t.disabled)return t;var a={};for(var o in t)t.hasOwnProperty(o)&&!n[o]&&(a[o]=t[o]);return a}};e.exports=r},function(e,t,n){(function(t){"use strict";function r(){this._rootNodeID&&d.updateWrapper(this)}function a(e){var n=this._currentElement.props,a=i.executeOnChange(n,e);l.asap(r,this);var o=n.name;if("radio"===n.type&&null!=o){for(var c=s.getNode(this._rootNodeID),d=c;d.parentNode;)d=d.parentNode;for(var p=d.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),m=0;m>"}var y=n(51),w=n(75),b=n(24),E=n(117),x="<>",C={array:a("array"),bool:a("boolean"),func:a("function"),number:a("number"),object:a("object"),string:a("string"),any:o(),arrayOf:i,element:s(),instanceOf:l,node:d(),objectOf:u,oneOf:c,oneOfType:h,shape:p};e.exports=C},function(e,t){"use strict";function n(e){var t=e&&(r&&e[r]||e[a]);return"function"==typeof t?t:void 0}var r="function"==typeof Symbol&&Symbol.iterator,a="@@iterator";e.exports=n},function(e,t,n){(function(t){"use strict";var r=n(119),a=n(121),o=n(48),i=n(34),s=a.valueContextKey,l={mountWrapper:function(e,n,r){"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?i(null==n.selected,"Use the `defaultValue` or `value` props on must be a scalar value if `multiple` is false.%s",i,a(r)):void 0)}}function i(e,t,n){var r,a,o=c.getNode(e._rootNodeID).options;if(t){for(r={},a=0;a."):c(!1):void 0;var a=l({},n,{defaultValue:void 0,value:void 0,children:e._wrapperState.initialValue,onChange:e._wrapperState.onChange});return a},mountWrapper:function(e,n){"production"!==t.env.NODE_ENV&&o.checkPropTypes("textarea",n,e._currentElement._owner);var r=n.defaultValue,i=n.children;null!=i&&("production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?u(!1,"Use the `defaultValue` or `value` props instead of setting children on + +

As you can see, quadratic curves are particularly ill-suited for poly-Bézier curves, as all the control points are effectively linked. Move one of them, and you move all of them. This means @@ -104,66 +300,40 @@ var PolyBezier = React.createClass({ that the derivatives are linked means we can't manipulate curves as well as we might if we relaxed the constraints a little.

-

So: let's relax them!

+

So: let's relax the requirement a little.

-

We can change the constraint so that we still preserve the angle of the derivatives across - sections (so transitions from one section to the next will still look natural), but give up - the requirement that they should also have the same vector length. Doing so will give us - a much more a useful kind of poly-Bézier curve:

+

We can change the constraint so that we still preserve the angle of the derivatives across + sections (so transitions from one section to the next will still look natural), but give up the + requirement that they should also have the same vector length. Doing so will give us a much + more useful kind of poly-Bézier curve:

- +

Cubic curves are now better behaved when it comes to dragging control points around, but the + quadratic poly-Bézier has a problem: in the example shape, moving one control points will move + the control points around it properly, but they in turn define "the next" control point and they + do so in incompatible ways! This is one of the many reasons why quadratic curves are not really + useful to work with.

- - -

Quadratic curves are still silly, but cubic curves are now much more controllable.

- -

If we want even more control, we could just abandon the derivative constraints entirely, - and simply assure that the end point of one section is the same as the start point of the next section, - and then keep it at that. This gives us the greatest degree of freedom when it comes to modelling - shapes, but also means that our poly-Bézier constructs are no longer continuous curves. Sometimes - this is exactly what you want (because it lets you add corners to a shape, while still only using - Bézier curves).

- - - - - -

When doing any kind of modelling, you generally don't want a poly-Bézier that will only let you - pick one of the three forms for all your points; most graphics applications that deal with Bézier - curves will actually let you pick, per on-curve point, how to deal with the control points around it: - fully constrained, loosely constrained, or completely unconstrained. The best shape modelling comes - from having a curve that will let you pick what you need, when you need it, without having to start - a new poly-Bézier curve.

+ + +

Again, we see that cubic curves are now rather nice to work with, but quadratic curves have a + serious problem: we can move an on-curve point in such a way that we can't compute what needs to + "happen next". Move the top point down, below the left and right points, for instance. There + is no way to preserve correct control points without a kink at the bottom point. Quadratic curves: + just not that good...

+

A final improvement is to offer fine-level control over which points behave which, so that you can + have "kinks" or individually controlled segments when you need them, with nicely well-behaved curves + for the rest of the path. Implementing that, is left as an excercise for the reader.

); } diff --git a/components/sections/projections/index.js b/components/sections/projections/index.js index ac0b54de..62652da5 100644 --- a/components/sections/projections/index.js +++ b/components/sections/projections/index.js @@ -46,6 +46,7 @@ var Projections = React.createClass({ api.drawCurve(curve); if (api.mousePt) { api.setColor("red"); + api.setFill("red"); api.drawCircle(api.mousePt, 3); // naive t value var t = this.findClosest(api._lut, api.mousePt, api.utils.dist); @@ -53,6 +54,7 @@ var Projections = React.createClass({ var p = curve.get(t); api.drawLine(p, api.mousePt); api.drawCircle(p, 3); + api.text("t = "+api.utils.round(t,2), p, {x:10, y:3}); } }, diff --git a/images/latex/2fb1287989c59780ba3c9db8af20ed1438dd3db7.svg b/images/latex/2fb1287989c59780ba3c9db8af20ed1438dd3db7.svg new file mode 100644 index 00000000..da0a15b7 --- /dev/null +++ b/images/latex/2fb1287989c59780ba3c9db8af20ed1438dd3db7.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/latex/65b818f3b5f44da349d9b4e157374e9f1d500ab5.svg b/images/latex/65b818f3b5f44da349d9b4e157374e9f1d500ab5.svg new file mode 100644 index 00000000..9ce95490 --- /dev/null +++ b/images/latex/65b818f3b5f44da349d9b4e157374e9f1d500ab5.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file